LINUX.ORG.RU

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

 ,


0

0

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

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

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

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



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

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

зачем эрланг луа хаскель жаба с++ камль питон руби смолтолк и прочее когда есть lisp?

ну начинайте.

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

За<вц> фразы типа "зачем нужен xxx, когда есть yyy"

Чего только не приходилось слышать. И "зачем нужна опера, когда есть фаерфокс" и "зачем нужен кде, когда есть гном", и "зачем нужен bluetooth, когда есть wi-fi"!

Erlang нужен по тому, что http://shootout.alioth.debian.org/debian/benchmark.php?test=threadring&la...

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

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

зачем эрланг луа хаскель жаба с++ камль питон руби смолтолк и прочее когда есть lisp?

ну начинайте.

про лисп ты меня опередил :(

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

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

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

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

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

anonymous
()

<quote> Строки — это на самом деле просто списки символов. Поэтому памяти они занимают немало — в общей сложности 8 байт на один символ строки (на 32-битной машине). </quote>

я плакалъ...

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

> <quote> Строки — это на самом деле просто списки символов. Поэтому памяти они занимают немало — в общей сложности 8 байт на один символ строки (на 32-битной машине). </quote>

> я плакалъ...

Йа пошел вешаццо... Т.к. ваще-та (если нормально подходить к вопросу) 8 байт - моветон (4 - на указатель, и 4 - на символ). Все мы прекрасно понимаем, что должно быть 32 байта на символ (в x86_x64 или как его там).

ппц... на моем первом компутере (Б3-34) регистров было меньше... а всего ОЗУ по новым раскладкам - 3 символа... А я еще ракету на Луну садил при этом...

Как страшно жить - коллеги не находят?..

anonymous
()

To shutdown the Erlang system and the Erlang shell type Control-C. You will see the following output:
BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
(v)ersion (k)ill (D)b-tables (d)istribution
a
%

красота...

AVL2 ★★★★★
()

>примеры паттерн матчинга

Неправильно! Правильно будет "экзампл паттерн-матчинга"

anonymous
()

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

anonymous
()

Кривоватый язык, к сожалению. И синтаксис, и библиотека.

Идея хорошая, но надо ждать, пока он эволюционирует.

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

вы все не шарите!! Есть глобальный и надежный язык, и вы его знаете! :)

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

>ппц... на моем первом компутере (Б3-34) регистров было меньше... а всего ОЗУ по новым раскладкам - 3 символа... А я еще ракету на Луну садил при этом...

>Как страшно жить - коллеги не находят?..

Да

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

> ему уже 20 лет 8)

У каждого свой темп эволюции :)

anonymous
()

господа, вы просто не поняли.

Этот язык изначально ориентирован на параллельное исполнение.

Отсюда и непривычный синтаксис.

Вы бы на параллельном фортране попрограммировали...

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

все в фтопку!
чтобы пофлеймить, хватит великого и могучего)

grimp3ur
()

А что конкретно не так у Erlang с синтаксисом?

А еще там встроенная нереляционная распределенная DB :P

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

> Отсюда и непривычный синтаксис.

Кому непривычный? Я всю жизнь писал на императивщине (разной степени дубовости, от дельфей до питона), тем не менее синтаксис ерланга мне кажется вполне нормальным и симпатичным. А, правда я Promela еще знаю. Возможно, это после нее :)

sv75 ★★★★★
()

поздно.. пришлось читкать Joe Armstrong "Concurrent Programming in Erlang"...

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

> BrainFuck лучший язык.

Brainfuck хорош тем, что на нем можно (и не спорьте) написать компилятор C, на котором в свою очередь можно написать компиляторы других хороших языков.

А мне больше нравится Befunge =P

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

> /me роет окоп и в ужосе прячеццо

Хмм, а у меня на работе есть чувак, который до сих пор заявляет, что PICK - Ъ, не то что эти новомодные джойны... ^_^

Кстати, свободный клон пика есть?

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

> у меня на работе есть чувак, который до сих пор заявляет, что PICK - Ъ, не то что эти новомодные джойны...

Ну такие фаны есть у любой технологии...

> Кстати, свободный клон пика есть?

ХЗ. Надеюсь, что нет.

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

> > Кстати, свободный клон пика есть? > ХЗ. Надеюсь, что нет.

есть, но дохлый. http://www.maverick-dbms.org/

вот интересно, формально mnesia - multivalued DBMS? Вроде бы вполне.

sv75 ★★★★★
()

Поверхностно, но, в качестве введения, полезно.. Оформнение, правдо, не ахти..

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

За такие слова необходимо бить клавиатурой по пальцам, также как за ынтырпрайз-код.

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

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

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

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

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

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

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

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

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

> <quote> Строки — это на самом деле просто списки символов. Поэтому памяти они занимают немало — в общей сложности 8 байт на один символ строки (на 32-битной машине). </quote>

> я плакалъ...

Это очень хороший результат. Скажу по секрету, например, в хаскеле(ghc) на один символ уходит 12 байт на каждый Char, если строку представлять как список Char'ов.

balodja ★★★
()

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

анонимусы и пхписты - я вапще не понимаю зачем вы это читаете, это не для средних умов

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

сходил по ссылке... мдя... не стоит судить о языке после прочтения одного плохого поста.. стыдно должно быть аффтару

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

> Это очень хороший результат. Скажу по секрету, например, в хаскеле(ghc) на один символ уходит 12 байт на каждый Char, если строку представлять как список Char'ов.

как выражается мой сынишка, ты делаешь меня плакать опять

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

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

все очень просто. есть понятие эффективности. можно и на пых-пых писать init-скрипты... я, ксати, заработал немало денег продавая битые дискеты размером со сковородку (да, были и такие) под видом "графической библиотеки для fortran" в 1988 году... "да, были люди в наше время. не то, что нынешнее племя...". кого кинул, не обессудьте. сами знаете, какое время было...

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

> Паскаль всех вас переживёт

"покуда есть на свете дураки, обманом жить нам, стало быть, сруки"

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

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

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

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

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

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

anonymous
()

Есть же Perl... зачем огород городить? =)

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