Эрланг и вечная новизна фундамента

Бытует устойчивое мнение, что в разработке ПО жизнь технологии отражает принцип «живи быстро, умри молодым», и если что-то не привлекло внимание публики с самого начала, то оно обречено на забвение. К счастью, в фундаментальных вещах это не так. Один из ярких примеров — Erlang.

Erlang, как язык, впервые был предоставлен публике в 1988 году (то есть за 7 лет до появления Java). Он создавался как «нечто высокоуровневое, без неявного перебора вариантов с возвратами, со встроенными средствами параллелизма и восстановления после сбоев». Основная первоначальная область применения — программирование начинки телекоммуникационного оборудования.

Этот язык знаменит чистой реализацией следующих концепций:

  • lightweight ‘shared-nothing’ concurrency — процессы в Эрланге не имеют общей памяти и обмениваются между собой сообщениями.
  • hot-swapping — мы можем заменить часть программы во время выполнения без ее останова.
  • distributed execution — программа выполняется на множестве нод, на которых исполняются процессы. Процесс на одной ноде может запустить себя (или другой процесс) на другой ноде и начать обмениваться данными с соседями.

Сейчас внимание к Ерланг-подобным языкам возрастает, а реализованная в нем модель организации параллельного выполнения (Actors) принята как основная в современных языках следующей волны, таких как Scala или IO.

Я хочу привлечь внимание к визиту в Киев Льва Валкина, во время которого произойдет два мероприятия:

Все про українське ІТ в телеграмі — підписуйтеся на канал DOU

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn



13 коментарів

Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.
UPD: follow-ups в блоге Романа Ворушина
Эрланг: vorushin.ru/...talk-follow-up

Бизнес-сторона: vorushin.ru/...onovuyu-dolinu

спасибо всем, кто пришел сегодня — по списку на входе получилось 77 человек!

В процессорах Интел и АМД у ядер есть общая память. Есть ли реализация Ерланга для многоголовых процессоров, да ещё с использованием интеловской имитации многопроцессорности?

Как же процессы

lightweight ‘shared-nothing’ concurrency

наверное есть ещё процесс, который и раздаёт, и собирает сообщения, так ведь?

наверное есть ещё процесс, который и раздаёт, и собирает сообщения, так ведь?

Ну процессы Эрланга это ’гораздо меньше’ чем процесс в ОС (и меньше чем thread). Управляет этими процессами виртуальная машина Эрланга (BEAM), внутри которой находится управляющий процесс.

. Есть ли реализация Ерланга для многоголовых процессоров, да ещё с использованием интеловской имитации многопроцессорности?

www.erlang.org/...mentations.html

Обычно главную имплементацию подпиливают под распространенные процессоры, как обстоит дело именно сейчас — не знаю.

Дело в том, что

виртуальная машина
раздачи и приёма сообщений есть почти кругом, от Windows до Linux. Даже в каждом промышленном контроллере есть цикл опроса, своего рода подобие такой виртуальной машины.
Вот если бы автоматически во время исполнения виртуальная машина «перетекала» на все незанятые головы, или ещё круче, обнаружив неисправность в голове, перескакивала на другие головы, или на другие компьютеры.
Или то же самое, но по причине требования больших ресурсов. Когда возникли заказы по ресурсам — возьми и используй больше процессоров, доступных на мамке или в сети (облако).
Возможно это я имел ввиду, задавая вопрос:
модель организации параллельного выполнения (Actors)
?
Завис. Спросил Валкина, вот его комментарий:

А я не понял вопрос Иванова сам :) Я не понимаю, что именно он хочет узнать. Может ли эрланг работать с несколькими процессорами? Может. Может ли перестать использовать один процессор, если он занят чем-то другим? Может. Может ли он перестать использовать процессор, если тот сбоит? Нет, не может.

От себя добавлю — в приницпе можно представить себе автоматической распределение задач в облаке на Эрланге, out of the box такого нет, на первый взгляд сделать это несложно.

Не зависай. Андрей Иванов умеет задавать синтаксически корректные и семантически бесмысленные вопросы, см. профиль. :) Вот и вас «подловил».

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

Отличный пример проекта на Erlang — Erlyvideo.

это из русских проектов. Из более известного — почти весь gprs работает на Эрланге

Валкин нереально крут. Идти надо обязательно. Спасибо за указание.

Этот язык знаменит чистой реализацией следующих концепций:

еще крутая штука — это легкие потоки.

да. (точнее все-таки легкие процессы — помню в каком-то тесте на границы, получалось соотношения что-то типа 30 erlang processes на 1 Java thread.) Сейчас, кстати, формулировку подправлю.

Підписатись на коментарі