LINUX.ORG.RU

Краткое введение в синтаксис языка Erlang

 ,


0

0

Краткий ознакомительный обзор синтаксиса функционального языка Erlang.

Обзор начинается с рассмотрения таких вещей, как числа, символы, списки, строки, атомы и др. Далее идут примеры сопоставления с шаблоном (pattern matching), обзор логических, арифметических, условных и операторов сравнения.

В конце приводится пример написания собственной функции с использованием других функций.

>>> Подробности



Проверено: svu ()

на rsdn.ru давно лежит уже несколько статей по эрлангу. там объем "введения" немного побольше будет

pahank
()
Ответ на: комментарий от AVL2

>>господа, вы просто не поняли.Этот язык изначально ориентирован на параллельное исполнение. Отсюда и непривычный синтаксис.

Тоесть ето ocaml с непривычным синтаксисом?

anonymous
()
Ответ на: комментарий от pahank

> на rsdn.ru давно лежит уже несколько статей по эрлангу.

s/статей/переводов/ (судя по тому, что притащили студенты)

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

> но кодерам (не путать с дотнетчиками) это нужно знать хотябы для того чтобы посмотреть на программирование с немножко другой колокольни (это касается не только ерланга, но ерланг проще понятнее и концептуальней чем тотже лисп, хаскель и ему подобные)

+1

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

use termite luke! у схемы достаточно богатые библиотеки

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

>Хаскелл мне больше нравится как язык с более богатыми возможностями, но Эрланг понравился из-за паралелизма. Кстати сам язык очень простой и любому программисту стоит ознакомиться с тем как изящно в нем реализована многопоточность.

А чем плоха многопоточность в Хаскелле? Тут вам и Software transactional memory и Data Nested Parallelism, только GC тормозит все треды, но это не так страшно когда мало тредов и много памяти, и я думаю это вопрос времени...

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

> чтобы посмотреть на программирование с немножко другой колокольни

Если сравнить Эрланг с камлем, хаскелем и схемой, то он по набору фишек самый скромный. Его особенность - другой подход к программированию. Создатель языка назвал его process-oriented.

Вместо обычных тредов, виртуальная машина позволяет создавать кучу легковесных процессов. И уже сама на свое усмотрение использует нужное количество системных потоков или ядер. При таком подходе добиться равномерного распределения нагрузки в многоядерных системах намного проще.

Вторая фича - это распределенность. По-сути любой процесс Эрланга может достучаться до другой виртуальной машины Эрланга как на одной машине, так и по сети. Есть возможность настроить прозрачное взаимодействие различных ресурсов.

Третье - это набор готовых архитектур для создания сервисов. Это можно рассматривать как целую охапку design-patterns проверенных временем.

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

Особенно понравились возможности отладки. На любую ВМ можно зайти удаленно и получить консоль. После этого есть возможность просмотреть все запущенные процессы. Взять бектрейсы любого потока и посмотреть где что запущенно и работает ли оно нормально.

captcha: winher !!!

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

>Вместо обычных тредов, виртуальная машина позволяет создавать кучу легковесных процессов. И уже сама на свое усмотрение использует нужное количество системных потоков или ядер. При таком подходе добиться равномерного распределения нагрузки в многоядерных системах намного проще.

И в Хаскелле так же...

>Вторая фича - это распределенность. По-сути любой процесс Эрланга может достучаться до другой виртуальной машины Эрланга как на одной машине, так и по сети. Есть возможность настроить прозрачное взаимодействие различных ресурсов.

Есть в принципе Distributed Haskell - даже 2 - один Ports Based и еще один Erlang-style, правда им обоим пока далеко до Production Quality

> На любую ВМ можно зайти удаленно и получить консоль.

А как там с безопасностью?

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

> А чем плоха многопоточность в Хаскелле? Тут вам и Software transactional memory и Data Nested Parallelism, только GC тормозит все треды

Она не плохая, она другая. Сильные пойнты Эрланга я назвал чуть выше(уже в другом посте). Имхо, Хаскелл и Эрланг не конкуренты. Собственно я вообще не вижу конкурентов Эрлангу. Сделать всю архитектуру OTP, поддержку разных крос-сетевых механизмов взаимодействия и добавить ряд отладочных механизмов и все из коробки.

Хаскелл - язык общего назначения и врядли в нем будут точить эрланг-like многопоточность на уровне виртуальной машины. Да и не хотелось бы этого. Зачем делать боян? Пусть лучше дальше эксперементируют с другими идеями.

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

anonymous
()
Ответ на: комментарий от imp

> Есть в принципе Distributed Haskell - даже 2 - один Ports Based и еще один Erlang-style, правда им обоим пока далеко до Production Quality

Смысл в таких системах есть только тогда, когда есть команда программистов на Хаскеле и не хочется учить Эрланг. На самом деле было бы интереснее чтобы сделали реализацию эрланговской ноды на Хаскелле. Тогда сложные логические части можно делать как сервис для сетевых эрланговских нод и иметь все преимущества сетевого стека Эрланга.

> На любую ВМ можно зайти удаленно и получить консоль. > А как там с безопасностью?

При подъеме консоли (или уже при запущенной) нужно установить кукисы. Кукисы должны совпадать для разных машин, чтобы можно было с ними прозрачно общаться.

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

Некоторое время назад выбирал себе язык. Хотел:
1. Удобный синтаксис
2. Скорость
3. Отсутствие проблем с threading'ом.

Сначала склонялся к Erlang'у - но все таки выбрал Haskell, потому как: 1. больше фишек в синтаксисе и проще писать (может только мне)
2. быстрее работает без лишних телодвижений, компилится в нативный бинарь и не зависит от VM + несколько реализаций имеется.
3. С thread'ами все довольно неплохо оказалось для моих задач. Thread'ы там как в Erlang'е кстати но нет VM, есть N реальных осевых thread'ов между которыми раскидываются легковесные Хаскеллевские thread'ы...

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

> Сначала склонялся к Erlang'у - но все таки выбрал Haskell, потому как: > 1. больше фишек в синтаксисе и проще писать (может только мне)

Дык если выбирать язык для всех задач, то тут из функциональных нужно брать или Хаскелл или оКамль. Эрланг хорош для сетевых сервисов, писать на нем гуевую программу нужно только при очень специфических задачах(http://www.wings3d.com).

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

>Эрланг хорош для сетевых сервисов, писать на нем гуевую программу нужно только при очень специфических задачах(http://www.wings3d.com).

Дык негуевая у меня задача, а счетная. Просто есть 2 компа - оба двухядерники, и хотелось бы использовать оба по максимуму...

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

так и запишем - шутки не оценил.

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

>оно разве не сдохло еще?

Ну наконец-то анонимус обратился к себе правильно ("оно") и задал о себе правильный вопрос!

Led ★★★☆☆
()

действительно, на ЛОРе куча детей.

Задавать вопросы "зачем оно если есть Перл" "зачем оно если есть С++" демонстрируют полнейшую безграмотность...

Сравнивать во-первых с императивными языками, во-вторых со статически типизированными (С++) это .... - я ржал как тронутый)

anonymous
()
Ответ на: комментарий от r

Хех, мне кажется я шёл русле предудущих шуток, можут зашёл поздновато.
Так что чувство юмора нужно развивать не мне :)

NonHuman ★★★
()

Про basic забыли :)

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