Date: 2014-06-09 06:13 pm (UTC)
From: [identity profile] sassa-nf.livejournal.com
he has a point, but we define races differently (people should be expelled from the Guild for saying "at the same time").
Edited Date: 2014-06-09 06:35 pm (UTC)

Date: 2014-06-09 06:36 pm (UTC)
From: [identity profile] vit-r.livejournal.com
Какой ужас. Оказывается Шыллор с Мыллором нифига не знали про эти сложнейшие траблы и без проблем придумали, как генерить параллельный софт прямо из объектно-ориентированных моделей.

Не, честное слово, этот поиск Надёжного Средства для Всех Идиотов и привёл индустрию софтописания туда, где она сейчас находится.

Date: 2014-06-10 12:08 am (UTC)
yigal_s: (Default)
From: [personal profile] yigal_s
* без проблем придумали, как генерить параллельный софт прямо из объектно-ориентированных моделей.

Не могли бы Вы просветить и поделиться ссылкой на упоминаемые вами результаты? Очень бы хотелось изучить. Заранее спасибо.

Date: 2014-06-10 05:52 am (UTC)
From: [identity profile] vit-r.livejournal.com
Результаты чего? Софт генерённый - он во встроенных системах в основном, и не знаю, кто им делиться будет. Просто информацию можно найти сейчас по ключевым словам Executable UML и частично по словам Action Language UML

(no subject)

From: [personal profile] yigal_s - Date: 2014-06-10 12:01 pm (UTC) - Expand

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2014-06-10 12:09 pm (UTC) - Expand

(no subject)

From: [personal profile] yigal_s - Date: 2014-06-11 02:04 am (UTC) - Expand

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2014-06-11 05:09 am (UTC) - Expand

(no subject)

From: [personal profile] yigal_s - Date: 2014-06-11 12:11 pm (UTC) - Expand

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2014-06-11 12:42 pm (UTC) - Expand

Date: 2014-06-09 06:38 pm (UTC)
From: [identity profile] fatoff.livejournal.com
Oh, I watched his videos "C++ 11 async programming" like 2 years ago.
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...

Date: 2014-06-09 08:56 pm (UTC)
From: [identity profile] badula.livejournal.com
суть сообщения не в том что c++ ужасен, хотя люди с религиозной одержимостью проповедуют и это, наряду с любой другой __йнёй, а в том что races вызываются переменчивостью "объектов". что, собственно, очевидно и о чём можно в двадцать первом веке уже и не поминать. языки типа эрланга сделанные с самого начала для параллельной работы никакой mutability не допускают, прямого управления параллельностью в них нет, все перемены локализованы в нитях и производятся метанием сообщений.
всё подлежащее, понятное дело, реализовано на обычных языках, но к строительству енвайронментов для своих языков immutable люди относятся примерно как водители к дорожным рабочим — х_й какой водитель мерседеса бенца сумеет проложить хоть метр дороги, что ни разу не мешает ему ехать мимо с задранным носом.

если смотреть на вселенную через телескоп fp-людей, oo-код постоянно решает невыполнимую задачу мониторинга переменчивого и следовательно непредсказуемого состояния своих "объектов". вызовы методов - рассадник "side effect'ов" — большое "no-no" с точки зрения fp…
Edited Date: 2014-06-09 09:08 pm (UTC)

Date: 2014-06-09 09:11 pm (UTC)
From: [identity profile] fatoff.livejournal.com
Что интересно, тот же самый Милюски читает вполне внятные лекции про C++ 11 и как на нём реализовать разные типы многопоточных задач.

(no subject)

From: [identity profile] badula.livejournal.com - Date: 2014-06-09 10:11 pm (UTC) - Expand

(no subject)

From: [identity profile] fatoff.livejournal.com - Date: 2014-06-09 10:53 pm (UTC) - Expand

(no subject)

From: [identity profile] badula.livejournal.com - Date: 2014-06-09 11:14 pm (UTC) - Expand

(no subject)

From: [identity profile] fatoff.livejournal.com - Date: 2014-06-09 11:45 pm (UTC) - Expand

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2014-06-10 05:55 am (UTC) - Expand

(no subject)

From: [identity profile] badula.livejournal.com - Date: 2014-06-10 06:22 am (UTC) - Expand

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2014-06-10 06:41 am (UTC) - Expand

(no subject)

From: [identity profile] ivan-gandhi.livejournal.com - Date: 2014-06-10 02:52 pm (UTC) - Expand

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2014-06-10 05:03 am (UTC) - Expand

(no subject)

From: [identity profile] helvegr.livejournal.com - Date: 2014-06-11 01:25 pm (UTC) - Expand

Date: 2014-06-09 07:11 pm (UTC)

Date: 2014-06-09 07:34 pm (UTC)
From: [identity profile] blackyblack.livejournal.com
Где это они "hide sharing"? Наоборот, они должны инкапсулировать данные. Организация многопоточного доступа соответственно на совести программиста. Да, было бы удобно иметь встроенную в язык поддержку аннотаций, мол класс thread-safe или нет. Но и так жить можно.

Date: 2014-06-09 07:35 pm (UTC)
From: [identity profile] archaicos.livejournal.com
So, where's the news?

Date: 2014-06-09 07:57 pm (UTC)
From: [identity profile] fatoff.livejournal.com
No news. The guy forgot to mention an adequate messaging mechanism which makes everything working like a charm.

Date: 2014-06-09 07:48 pm (UTC)
From: [identity profile] sab123.livejournal.com
Captain Obvious?

Date: 2014-06-09 08:34 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Да кому как, похоже.

Date: 2014-06-10 12:05 am (UTC)
yigal_s: (Default)
From: [personal profile] yigal_s
Возможно, автор данной цитаты имел в виду сказать что-то умное, но сказал он полнейшую чушь, что, учитывая те сферы, в которых он летает и в целом его хардкорно техническую, а не бизнес ориентацию, абсолютно непростительно.

Data-race-free именно что composable, мало того, существует элементарнейший алгоритм как сделать любой код data-race-free - а именно, обернуть каждое чтение и каждую запись в конкретную разделяемую ячейку памяти - мютексом, ну, или как нынче модно, сделать доступ к ней атомарным.

Вообще, я б хотел увидеть того гения, который напишет два объекта, каждый из которых будет data-race-free, а их композиция - не будет. )))
Edited Date: 2014-06-10 12:19 am (UTC)

Date: 2014-06-10 12:36 am (UTC)
nine_k: A stream of colors expanding from brain (Default)
From: [personal profile] nine_k
Это ваше высказывание меня удивляет.

Положим, вам надо в объекте поменять два поля согласованно. Что вы будете оборачивать?
А если два поля меняются независимыми методами объекта?
А если между вызовом первого их этих методов и второго надо вставить некоторое не очень короткое вычисление?

Не то чтобы всё это невозможно было решить — но "элементарным" я бы такое решение не назвал. Решение "в лоб" в третьем случае чревато потерей ещё и перформанса.

Date: 2014-06-10 12:42 am (UTC)
From: [identity profile] badula.livejournal.com
Два поля можно завернуть в один метод с двумя параметрами. Хрен с ним что не изящно, синхронизация остаётся внутри метода. Вставить вычисление можно добавив параметры которые его произведут. Лямбду какую-нибудь. Когда объектов становится больше одного начинается вынос синхронизации из объектов. Что впрочем неизбежно, просто Хаскел это скрывает от, не к столу будет сказано, программиста.
Edited Date: 2014-06-10 12:42 am (UTC)

Date: 2014-06-10 12:43 am (UTC)
yigal_s: (Default)
From: [personal profile] yigal_s
существует понятие "data race", Милевски дал его вполне внятное определение, вполне соответствующее общепринятому, и, судя по прочему его тексту именно это имеет в виду. Это понятие вообще никоим образом не связано с тем, чтобы "поменять два поля согласовано", ибо говорит о доступе к единичным ячейкам памяти.

Та проблема, о которой говорите Вы - это "race condition" общего типа - ровно то, что заботит обычных прикладны программистов, и действительно, являющееся при композиции "thread-safe" объектов, написанных, скажем, с помощью блокировок, крайне серьезной проблемой.

"race condition" и "data race" - разные вещи.
Edited Date: 2014-06-10 12:45 am (UTC)

(no subject)

From: [identity profile] badula.livejournal.com - Date: 2014-06-10 01:01 am (UTC) - Expand

(no subject)

From: [personal profile] yigal_s - Date: 2014-06-10 01:05 am (UTC) - Expand

(no subject)

From: [personal profile] nine_k - Date: 2014-06-10 07:19 pm (UTC) - Expand

Date: 2014-06-10 12:37 am (UTC)
From: [identity profile] badula.livejournal.com
Он там внутри статьи приводит прямой как штырь пример с переносом денег между счетами — нет одной "разделяемой ячейки". Практических решений для таких проблем навалом, но все они требуют отделения синхронизации от перемены каждого отдельного объекта.

С оборачиванием есть ещё более стрёмная проблема - на основании как угодно атоммарно прочитанного значения обёрнутого поля нельзя сделать никаких модификаций чего бы то ни было, потому что прочитанное прямо в момент прочтения становится неверным. А обернуть все потенциальные мутации весьма сложно.
Edited Date: 2014-06-10 12:46 am (UTC)

Date: 2014-06-10 12:49 am (UTC)
yigal_s: (Default)
From: [personal profile] yigal_s
перенос денег никакого отношения к data-race не имеет.

"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" общего типа - это бы означало, что он то ли не знает смысла этого термина, то ли ошибся. Сие простительно. Но, увы, он не только привел термин, но и дал его определение. Тут уж приходится предполагать, что он чего-то крепко не понимает.
Edited Date: 2014-06-10 12:56 am (UTC)

Date: 2014-06-10 01:01 am (UTC)
yigal_s: (Default)
From: [personal profile] yigal_s
*С оборачиванием есть ещё более стрёмная проблема

Я предложил решение data races, а не всех race conditions ;-)

Date: 2014-06-10 03:49 am (UTC)
From: [identity profile] zyxman.livejournal.com
В функциональном мире уже есть инструмент для автоматизации оборачивания потенциальных мутаций - реактивное программирование.

(no subject)

From: [identity profile] ivan-gandhi.livejournal.com - Date: 2014-06-10 02:50 pm (UTC) - Expand

(no subject)

From: [identity profile] stanklimoff.livejournal.com - Date: 2014-06-11 03:57 am (UTC) - Expand

(no subject)

From: [identity profile] ivan-gandhi.livejournal.com - Date: 2014-06-11 05:13 am (UTC) - Expand

Date: 2014-06-10 03:37 am (UTC)
From: [identity profile] zyxman.livejournal.com
Ну что еще можно ожидать от ассемблера высокого уровня? :P

- Естественно, если объекты используют типы данных, дозволяющие фривольности употребления себя и при этом не имеющие защиты, так будут проблемы.
А фактически, всего навсего нужно эти объекты пересобрать с concurency-safe типом данных.
Кстати, это можно сделать и при позднем связывании, хотя конечно это уже будет не нейтивный код, а язык с++ внутри виртмашины.

Да, я буквально имею в виду, что в pure ФП языках всего навсего отказались от классического аппаратного типа данных, а вместо него использовали тип данных высокого уровня, ну и соответственно, уже далее надстройки - вместо прямого шаринга небезопасного типа, в одних языках сообщения, в других транзакционная память (каждый из двух вариантов имеет свои преимущества и недостатки, лично мне, как любителю отказоустойчивых систем, больше нравятся сообщения).

Date: 2014-06-10 03:43 am (UTC)
From: [identity profile] zyxman.livejournal.com
PS ИМХО, проблема уровня спора "чья культура древнее"
PPS Проблема, что после записи одним, чтение другого уже должно делать дополнительные телодвижения по синхронизации, от кривости архитектуры объектов.

Date: 2014-06-10 05:02 am (UTC)
From: [identity profile] blackyblack.livejournal.com
Проблема в том, что концепция вызовов методов объектов вместо передачи сообщений подрывает весь ОО подход. Сделали бы в C++ обмен сообщениями по дефолту, всем стало бы легче.

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2014-06-10 05:12 am (UTC) - Expand

(no subject)

From: [identity profile] blackyblack.livejournal.com - Date: 2014-06-10 05:17 am (UTC) - Expand

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2014-06-10 05:27 am (UTC) - Expand

(no subject)

From: [identity profile] blackyblack.livejournal.com - Date: 2014-06-10 05:35 am (UTC) - Expand

(no subject)

From: [identity profile] stanklimoff.livejournal.com - Date: 2014-06-11 03:55 am (UTC) - Expand

(no subject)

From: [identity profile] badula.livejournal.com - Date: 2014-06-10 06:05 am (UTC) - Expand

(no subject)

From: [identity profile] zyxman.livejournal.com - Date: 2014-06-10 11:32 am (UTC) - Expand

(no subject)

From: [identity profile] zyxman.livejournal.com - Date: 2014-06-10 11:35 am (UTC) - Expand

Date: 2014-06-10 08:29 pm (UTC)
From: [identity profile] http://users.livejournal.com/_xacid_/
мое личное мнение (возможно ошибочное) -
обьектную парадигму нужно реализовывать средствами функциональной (парадигмы же).

и ни в коем случае не наоборот (как это делают сейчас, иногда).

Profile

juan_gandhi: (Default)
Juan-Carlos Gandhi

June 2025

S M T W T F S
1 2345 6 7
8 9 10 11 121314
15161718 1920 21
22232425262728
2930     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 27th, 2025 07:59 pm
Powered by Dreamwidth Studios