возможность делать i=i+1 подразумевает наличие изменяемой памяти, чего в Эрланге пытались избежать всю историю его создания(с 89го года).
наличие изменяемой памяти даже лишь в контексте одного процесса может потянуть за собой побочные эффекты уже на самом низком уровне вашей программы.
а в математике в операторе сумма или произведение ничего не изменяется в контексте блока по которому итерируемся — значение i всегда одинаково во всей формуле.
весь этот пост и есть предисловием к серии статей об Эрланге и это можна понять с первых слов топика. субьективизм я пытался свести к минимуму — об этом можно подискутировать.
вы считаете многопоточное программирование в императивной парадигме интуитивно понятным и простым?
отсутствие технических деталей обьясняеться легко. просто прочитайте топик еще раз. первые 10 слов…
собственно говоря архитектура и возможности Erlang/OTP вас никак не ограничивают в этом, существуют успешные клиентские программы которые даже конкуррентности там не используют, но странен сам факт выбора этого ЯП для таких целей
просто эрланг так не работает… эрланг это виртуальная машина и каждое эрланг-приложение может использовать одну или больше виртуальных машин в зависимости от аппаратного окружения. зачем же изолировать приложение в один узел? или наоборот — зачем изолировать целый узел лишь для одного приложения?
собственно и у меня опыта не очень много: дипломный проект + делаю эмулятор сервера ворлд оф варкрафт. итого по времени чуть больше года. но язык я считаю очень перспективным и интересным и уж точно достойным обсуждения на хабре.
Scheme посмотрю. Собственно Erlang начал учить после выхода знаменитой книги Армстронга именно из-за его конкурентности, но это был и первый успешный опыт с функциональностью чем я очень доволен(до Erlang'а пробовал освоить Haskell — терпения не хватило :)).
В остальном(OTP, fault-tolerance, смена кода) — согласен, но такие темы нужно поднимать после освещения всей функциональности языка, без чего добиться успехов в конкуррентности было бы трудно.
ну, использовать процессы совсем необязательно, в то же время использовать ФП в эрланге очень просто. мое мнение таково, что чем проще синтаксис, тем проще обучающемуся понять базовые понятия языка и нагляднее можно продемонстрировать решение задач с помощью етих понятий, главное чтоб парадигма совпадала.
наличие изменяемой памяти даже лишь в контексте одного процесса может потянуть за собой побочные эффекты уже на самом низком уровне вашей программы.
а в математике в операторе сумма или произведение ничего не изменяется в контексте блока по которому итерируемся — значение i всегда одинаково во всей формуле.
> Каждый процесс изолирован и не имеет доступа к памяти других процессов
> если нет общей памяти то нет проблемы с доступом к этой памяти
процесс — читайте трэд или нить.
обещаю расписать обо всем подробнее в следующих топиках :)
вы считаете многопоточное программирование в императивной парадигме интуитивно понятным и простым?
отсутствие технических деталей обьясняеться легко. просто прочитайте топик еще раз. первые 10 слов…
В остальном(OTP, fault-tolerance, смена кода) — согласен, но такие темы нужно поднимать после освещения всей функциональности языка, без чего добиться успехов в конкуррентности было бы трудно.
Скооперироваться — очень даже буду рад :)
насчет почему эрланг лучший для знакомства с ФП — чисто субьективная точка зрения. вкратце — у эрланга синтаксис попроще хаскела.