LINUX.ORG.RU

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

 ,


0

0

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

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

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

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



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

>Erlang - единственный язык, у которого нет проблем с многопоточностью. (правда куча других проблем, но не о том речь)

Заметьте что Haskell в вашем тесте идет вторым (а еще совсем недавно я смотрел он был первым, до того как реализацию на erlang'е поднаточили) При этом у него заметно меньше "кучи других проблем", и синтаксис получше (переменные с маленькой буквы например (вопрос вкуса), не надо точки в конце определения функции писать и количество параметров через / )

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

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

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

> Заметьте что Haskell в вашем тесте идет вторым

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

У Эрланга есть своя ниша - это создание сетевых и распределенных сервисов. Его сильная сторона - это "коробочность". Тоесть уже есть набор готовых OTP-архитектур(gen_server, gen_fsm, ...). Есть отличная модель паралельности(нынче пиарящаяся в Scala как Actor). Есть ряд механизмов для поддержания распределенности и надежности(ETS, DETS, Mnesia). В этом плане Эрланг даже глобальнее и надежнее ПХП :).

Кроме того у него уже есть отличная success-story: EJabberd.

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

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

ЗЫ: синтаксис сначала тоже пугал(даже после Хаскелла). Сейчас читаю исходники EJabberd, уже не замечается.

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

> Как пример, можно в любой эрланговский сервис зайти удаленно через erl-консоль

какой простор для фантазии. а мы ругаем бедную ms за то, что их сервисы стоят "жепой ко входу".

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

> какой простор для фантазии. а мы ругаем бедную ms за то, что их сервисы стоят "жепой ко входу".

Михаил, хочешь говна?

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

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

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

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

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

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

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

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

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 ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.