Page Summary
sassa-nf.livejournal.com - (no subject)
vit-r.livejournal.com - (no subject)
fatoff.livejournal.com - (no subject)
anton-solovyev.livejournal.com - (no subject)
blackyblack.livejournal.com - (no subject)
archaicos.livejournal.com - (no subject)
sab123.livejournal.com - (no subject)
yigal_s - (no subject)
zyxman.livejournal.com - (no subject)
http://users.livejournal.com/_xacid_/ - (no subject)
Active Entries
Style Credit
- Style: Neutral Good for Practicality by
Expand Cut Tags
No cut tags
no subject
Date: 2014-06-09 06:13 pm (UTC)no subject
Date: 2014-06-09 06:36 pm (UTC)Не, честное слово, этот поиск Надёжного Средства для Всех Идиотов и привёл индустрию софтописания туда, где она сейчас находится.
no subject
Date: 2014-06-10 12:08 am (UTC)Не могли бы Вы просветить и поделиться ссылкой на упоминаемые вами результаты? Очень бы хотелось изучить. Заранее спасибо.
no subject
Date: 2014-06-10 05:52 am (UTC)no subject
Date: 2014-06-10 12:01 pm (UTC)Вот это самое: "Шыллор с Мыллором нифига не знали про эти сложнейшие траблы и без проблем придумали, как генерить параллельный софт прямо из объектно-ориентированных моделей."
О какой именно работе Shlaer-Mellor идет речь? И да, эта самая генерация параллельного софта, она что, решает проблемы построения thread-safe системы?
no subject
Date: 2014-06-10 12:09 pm (UTC)Да, решает. Как можно иметь параллельный и не thread-safe?
Работ дофига. В том числе в Мыллор внёс свою лепту в исправление убожества UML.
no subject
Date: 2014-06-11 02:04 am (UTC)Разумеется. Я сейчас объясню, что имею в виду:
Характерные проблемы/ошибки при разработке многопоточного софта - т.н. race conditions и дедлоки. Собственно, мне и было интересно, решает ли их автоматически методология Shlaer-Mellor и если решает, то как именно и в каких конкретно статьях это описано.
Т.е. вот это самое решение race conditions и дедлоков, оно должно быть обеспечено одной из двух альтернатив:
а) в самой объектно-ориентированной модели, трудами дизайнеров и аналитиков
б) объектно-ориентированная модель о такой ерунде не заботится, зато генератор авторства Shlaer-Mellor, что генерит софт из объектно-ориентированной мдели умеет все эти проблемы разрешать (не создавать) и на выходе мы получаем прекрасный безопасный мультитредный код.
Мне кажется, то, что вы описываете - это альтернатива (б) и сие чрезвычайно интересно. Если бы вы могли дать ссылку на конкретную работу Shlaer-Mellor, описывающую технические подробности данного решения, свободного от дедлоков и race conditions, это было бы чрезвычайно интересно.
no subject
Date: 2014-06-11 05:09 am (UTC)Когда в софте есть слова embedded и mission critical, все элементарные проблемы решаются из коробки, но отвечать на вопрос также интересно как и на что-то вроде "В какой статье Буч доказал, что объекты инкапсулируют данные?"
no subject
Date: 2014-06-11 12:11 pm (UTC)no subject
Date: 2014-06-11 12:42 pm (UTC)no subject
Date: 2014-06-09 06:38 pm (UTC)Also watched the one where he teaches Haskel to ones who know C++.
The guy who published C++ 11 async feature online course does know there drawbacks. But with just C programming the same tasks as he showed in his course, such as Map Reduce it is many degrees of magnitude more difficult.
Works like a charm and who cares, let the object talk to another object via some messages. If the messaging mechanism is Ok and shared resources are safe, why not do multithreading with C++ 11 objects? Doing that right now...
no subject
Date: 2014-06-09 08:56 pm (UTC)всё подлежащее, понятное дело, реализовано на обычных языках, но к строительству енвайронментов для своих языков immutable люди относятся примерно как водители к дорожным рабочим — х_й какой водитель мерседеса бенца сумеет проложить хоть метр дороги, что ни разу не мешает ему ехать мимо с задранным носом.
если смотреть на вселенную через телескоп fp-людей, oo-код постоянно решает невыполнимую задачу мониторинга переменчивого и следовательно непредсказуемого состояния своих "объектов". вызовы методов - рассадник "side effect'ов" — большое "no-no" с точки зрения fp…
no subject
Date: 2014-06-09 09:11 pm (UTC)no subject
Date: 2014-06-09 10:11 pm (UTC)no subject
Date: 2014-06-09 10:53 pm (UTC)no subject
Date: 2014-06-09 11:14 pm (UTC)no subject
Date: 2014-06-09 11:45 pm (UTC)no subject
Date: 2014-06-10 05:55 am (UTC)К сожалению, в наше время это только проповеди и я не видел ни одного доказательства в реальных цифрах на реальных проектах.
Переход на новую парадигму банально переносит источник проблем в другие области.
no subject
Date: 2014-06-10 06:22 am (UTC)"Я не видел значит его нет" это какой-то уж черезчур эмпирический подход. Главврач этого журнала вон какое-то дело жизни производит вообще на Скале и не жалуется на дефектность товара.
no subject
Date: 2014-06-10 06:41 am (UTC)Разница между фирмами в производстве софта - двадцатикратная. (Если считать, что ДеМарко эксперименты ставил честно.) Так что культура забивает все мелочи, включая технологии.
Главврач этого журнала - игрок соло, к тому же в стартапе. Тут производительность пофиг и размеры проекта смешные. Нет такой технологии, которая бы не работала в руках кудесника. Вот, если после финансирования фирма начнёт расти взрывообразно, можно будет сказать, в коня корм или нет.
no subject
Date: 2014-06-10 02:52 pm (UTC)no subject
Date: 2014-06-10 05:03 am (UTC)no subject
Date: 2014-06-11 01:25 pm (UTC)no subject
Date: 2014-06-09 07:11 pm (UTC)no subject
Date: 2014-06-09 07:34 pm (UTC)no subject
Date: 2014-06-09 07:35 pm (UTC)no subject
Date: 2014-06-09 07:57 pm (UTC)no subject
Date: 2014-06-09 07:48 pm (UTC)no subject
Date: 2014-06-09 08:34 pm (UTC)no subject
Date: 2014-06-10 12:05 am (UTC)Data-race-free именно что composable, мало того, существует элементарнейший алгоритм как сделать любой код data-race-free - а именно, обернуть каждое чтение и каждую запись в конкретную разделяемую ячейку памяти - мютексом, ну, или как нынче модно, сделать доступ к ней атомарным.
Вообще, я б хотел увидеть того гения, который напишет два объекта, каждый из которых будет data-race-free, а их композиция - не будет. )))
no subject
Date: 2014-06-10 12:36 am (UTC)Положим, вам надо в объекте поменять два поля согласованно. Что вы будете оборачивать?
А если два поля меняются независимыми методами объекта?
А если между вызовом первого их этих методов и второго надо вставить некоторое не очень короткое вычисление?
Не то чтобы всё это невозможно было решить — но "элементарным" я бы такое решение не назвал. Решение "в лоб" в третьем случае чревато потерей ещё и перформанса.
no subject
Date: 2014-06-10 12:42 am (UTC)no subject
Date: 2014-06-10 12:43 am (UTC)Та проблема, о которой говорите Вы - это "race condition" общего типа - ровно то, что заботит обычных прикладны программистов, и действительно, являющееся при композиции "thread-safe" объектов, написанных, скажем, с помощью блокировок, крайне серьезной проблемой.
"race condition" и "data race" - разные вещи.
no subject
Date: 2014-06-10 01:01 am (UTC)no subject
Date: 2014-06-10 01:05 am (UTC)"data race" - это вполне уже сфера интереса программистов, вот скажем спецификации модели памяти С++ этот термин должны использовать, и я предполагаю, что стандарт С++ пишется для программистов.
no subject
Date: 2014-06-10 07:19 pm (UTC)Действительно, data race при доступе к тому, что логически описано как атомарное, триваильно решается устройством синхронизации вокруг точки доступа.
А вопрос мой относился именно к композиции (где race conitions, deadlocks и прочие радости), про которую исходный пост, но не ваш коммент.
no subject
Date: 2014-06-10 12:37 am (UTC)С оборачиванием есть ещё более стрёмная проблема - на основании как угодно атоммарно прочитанного значения обёрнутого поля нельзя сделать никаких модификаций чего бы то ни было, потому что прочитанное прямо в момент прочтения становится неверным. А обернуть все потенциальные мутации весьма сложно.
no subject
Date: 2014-06-10 12:49 am (UTC)"Let me quote the definition of data race: Two or more threads accessing the same piece of memory at the same time, at least one of them writing."
Это определение касается одной ячейки памяти, и только.
Если б Милевский просто написал "data race" и начал говорить после этого про банковские операции, т.е. о "race conditions" общего типа - это бы означало, что он то ли не знает смысла этого термина, то ли ошибся. Сие простительно. Но, увы, он не только привел термин, но и дал его определение. Тут уж приходится предполагать, что он чего-то крепко не понимает.
no subject
Date: 2014-06-10 01:01 am (UTC)Я предложил решение data races, а не всех race conditions ;-)
no subject
Date: 2014-06-10 03:49 am (UTC)no subject
Date: 2014-06-10 02:50 pm (UTC)no subject
Date: 2014-06-11 03:57 am (UTC)no subject
Date: 2014-06-11 05:13 am (UTC)no subject
Date: 2014-06-10 03:37 am (UTC)- Естественно, если объекты используют типы данных, дозволяющие фривольности употребления себя и при этом не имеющие защиты, так будут проблемы.
А фактически, всего навсего нужно эти объекты пересобрать с concurency-safe типом данных.
Кстати, это можно сделать и при позднем связывании, хотя конечно это уже будет не нейтивный код, а язык с++ внутри виртмашины.
Да, я буквально имею в виду, что в pure ФП языках всего навсего отказались от классического аппаратного типа данных, а вместо него использовали тип данных высокого уровня, ну и соответственно, уже далее надстройки - вместо прямого шаринга небезопасного типа, в одних языках сообщения, в других транзакционная память (каждый из двух вариантов имеет свои преимущества и недостатки, лично мне, как любителю отказоустойчивых систем, больше нравятся сообщения).
no subject
Date: 2014-06-10 03:43 am (UTC)PPS Проблема, что после записи одним, чтение другого уже должно делать дополнительные телодвижения по синхронизации, от кривости архитектуры объектов.
no subject
Date: 2014-06-10 05:02 am (UTC)no subject
Date: 2014-06-10 05:12 am (UTC)no subject
Date: 2014-06-10 05:17 am (UTC)if(!result) alert();
call - синхронная отправка сообщения.
no subject
Date: 2014-06-10 05:27 am (UTC)no subject
Date: 2014-06-10 05:35 am (UTC)Но есть ведь и асинхронные сообщения.
no subject
Date: 2014-06-11 03:55 am (UTC)no subject
Date: 2014-06-10 06:05 am (UTC)no subject
Date: 2014-06-10 11:32 am (UTC)no subject
Date: 2014-06-10 11:35 am (UTC)no subject
Date: 2014-06-10 08:29 pm (UTC)обьектную парадигму нужно реализовывать средствами функциональной (парадигмы же).
и ни в коем случае не наоборот (как это делают сейчас, иногда).