LINUX.ORG.RU
решено ФорумTalks

Где бы почитать про лушие реализации многопоточности/параллелизма в языках программирования?

 , , ,


2

7

Последнее время натыкаюсь на утверждения якобы в некоторых языках(Haskell, Rust, Go, D, Erlang) хорошая реализация многопоточности/параллелизма. И что там чуть ли не исключена возможность data race и тому подобное.
К примеру для меня стало неожиданостью того что в D оказывается данные между потоками надо расшаривать.
Времени на изучения всех особенностей этих языков нету, а вот сжатую информацию про архитектурные достижения этих языков хотелось бы почитать.

★★

Ответ на: комментарий от tailgunner

Приличных архитектур параллелизма сего две: CSP (Rust, Go) и STM (Haskell).

О вот это интересно, спасибо.

V1KT0P ★★
() автор топика

там чуть ли не исключена возможность data race и тому подобное.

Ещё бы, в хаскеле практически всё иммутабельно :).

true_admin ★★★★★
()
Ответ на: комментарий от vromanov

Такой большой, а в сказки веришь :)

Не то чтобы верю, просто хочу для личных проектов выбрать подходящий язык который максимально лишен недостатков C++. Что-то простое, эффективное, нативно компилируемое.
Вот к примеру вроде Rust создается с оглядкой на недостатки прежних языков. Но открываю код и вижу кучу тильд, '->', '=>' и т.д. Неужели нельзя было по проще сделать. Вот к примеру охрененная строчка:

None => None
Я даже теряюсь в догадках какой смысл она несет. Прям отпало желание связываться с этим языком.
И такого там полно:
None => ()
None => {}
С плюсов на него наверно будет сложно перейти.

V1KT0P ★★
() автор топика
Ответ на: комментарий от V1KT0P

дай угадаю, это pattern-matching и возвращение нужного типа, причем в строчке None => None у None разные типы (монадкой конечно это бы выглядело проще). //документацию по rust не смотрел ни разу в жизни.

qnikst ★★★★★
()
Последнее исправление: qnikst (всего исправлений: 1)
Ответ на: комментарий от V1KT0P

Решил узнать таки что значат эти строчки, заглянул в документацию. Там примерно вот такие конструкции:

let point = &@~Point { x: 10f, y: 20f };
И этим они хотят заменить плюсы...

V1KT0P ★★
() автор топика
Ответ на: комментарий от V1KT0P

открываю код и вижу кучу тильд, '->', '=>' и т.д. Неужели нельзя было по проще сделать. Вот к примеру охрененная строчка:

None => None

Я даже теряюсь в догадках какой смысл она несет

Это потому, что ты плохо образован...

Прям отпало желание связываться с этим языком.

...и не стремишься исправить ситуацию.

tailgunner ★★★★★
()
Ответ на: комментарий от V1KT0P

адрес (чего-то-там) объекта типа Point созданного в куче с полями = x 10::Float и y = 20::Float?

/me пошёл смотреть в документацию, что значит @.

P.S. всё немного не так, свой комментарий оставляю, чтобы был в истории, но проблем в адресе owned managed box для Point я не вижу..

qnikst ★★★★★
()
Последнее исправление: qnikst (всего исправлений: 1)
Ответ на: комментарий от qnikst

ну это ж дело привычек.

Мало у кого есть привычка понимания кода на Хаскелле %)

tailgunner ★★★★★
()
Ответ на: комментарий от V1KT0P

Что-то простое, эффективное, нативно компилируемое.

Go, как минимум два из трех условий выполняются.

Deleted
()
Ответ на: комментарий от cdshines

на него естественно :) т.е. если покопаться дальше, то может ещё много интересного можно найти, но мне даже смотреть внимательнее не хочется.

qnikst ★★★★★
()

Где бы почитать про лушие реализации многопоточности/параллелизма в языках программирования?

В википедии. В статьях про Futures and Promises, параллельные коллекции и лямбды, и про map-reduce.

shahid ★★★★★
()
Последнее исправление: shahid (всего исправлений: 1)

Всем спасибо за ссылки на метериалы.

V1KT0P ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.