Сравнение Лиспа и Эрланга.

Apr 04, 2009 14:12

Оценки: 0 - отсутствует (или плохо по моему мнению), 1 - имеется в ограниченном масштабе (или умеренно по моему мнению), 2 - присутствует (или отлично по моему мнению).
  • Синтаксис
    • Лисп: 1. Скобки-скобки-скобки-скобки
    • Эрланг: 1. Синтаксис а-ля ML, но многословней и менее регулярный.
  • Строгая типизация
    • Лисп: 1. Есть Qi. Мощный, но им никто не пользуется.

Эрланг, сравнение, забавное, Лисп

Leave a comment

Comments 91

anonymous April 4 2009, 12:13:12 UTC
не совсем логично, по-моему, сравнивать реализацию (Erlang) с просто языком (Lisp), ведь у Lisp реализаций много и у них могут быть эти плюсы и минусы, а могут и не быть.

Reply

thesz April 4 2009, 13:07:02 UTC
Пусть сделают много реализаций. ;)

Reply

thesz April 4 2009, 13:07:42 UTC
Я в том смысле, что - "а пока вот так". ;)

Reply


antilamer April 4 2009, 12:14:06 UTC
Метапрограммирование - ну, в эрланге все-таки есть parse_transform ;)

Reply

thesz April 4 2009, 13:10:55 UTC
Ну, будет 1, вместо 0. Будет перевес в 4 очка.

Reply


ex_juan_gan April 4 2009, 13:01:04 UTC
О, спасибо. Вывод типов и возможности метапрограммирования, конечно, перевешивают многое. Я всегда с подозрением относился к Элрангу (вечно там актёров показывают, как они репликами перебрасываются - а где язык?). Спасибо.

Reply

thesz April 4 2009, 13:11:41 UTC
Я попытался описать то, что остаётся при выходе за пределы OTP.

Остаётся мало.

Reply

nealar April 4 2009, 13:34:14 UTC
OTP?

Reply

thesz April 4 2009, 13:45:51 UTC
Open Telecom Platform - в основном, библиотеки.

Reply


chumpa April 4 2009, 13:29:09 UTC
Недавно с коллегой (в области применения Хаскеля) тешили душу сравнивая оный на http://shootout.alioth.debian.org/ с остальными. Были приятно ошарашены такой темой как скорость работы с тредами, но и в остальных категориях как правило Эрланг выглядит хуже по опубликованным тестам.

Reply

thesz April 4 2009, 13:56:29 UTC
Меня больше интересует качество языка, чем качество компилятора.

Мне надо быстро решать разнообразные задачи, производительность слегка вторична.

Reply

chumpa April 4 2009, 14:24:33 UTC
по source size всё тоже хорошо, а если меряться по full source size (все задействованные библиотеки) то думаю что будет ещё лучше.

Reply


prikrutil April 4 2009, 13:33:51 UTC
Спасибо за интересный пост. Я специально зарегистрировался в ЖЖ, чтобы написать вам ответ =)

Опыта работы с Лиспом у меня нет, поэтому постараюсь касаться только Эрланга.

Скорость работы программ
* Эрланг: 1. Особо не оптимизирует.

а) Если от Эрланга нужна скорость, то нужно обязательно посмотреть на HiPE. Можно ожидать 2-5 кратного увеличения скорости выполнения вашего кода (разумеется, ускорить таким образом работу с сетевым/дисковым вводом-выводом не получится).

В случаях, где HiPE малополезен (тот же сетевой ввод-вывод) вы, скорее всего, получите адекватную производительность сразу. Например, мой http-сервер, написанный исключительно для раздачи статики, сейчас отстает от nginx'а всего на 15% (мерял с помощью ab). Надеюсь в R13, в котором:

"Significant improvements of SMP and multi-core performance mainly because of multiple run-queues but also a number of other optimizations."

+ одна маленькая выклянченная мною у разработчиков Erlang'а оптимизация

все будет работать еще быстрее =)

Отвоевал единичку Эрлангу?

... )

Reply

thesz April 4 2009, 13:54:35 UTC
Я учитывал HiPE при выставлении оценки. Так что - нет. ;)

REPL - это не только chroot. Это ещё и справочник по текущему и библиотечному коду. В Хаскеле документацией служат команды ghci :t (типы выражения) и :i (информация о символах). В Лиспе есть просто документация.

В Эрланге есть интерпретатор, и всё. Поэтому у Эрланга всего 1. И 2 не будет, пока не будет либо типов, либо документации.

Для меня REPL важен. Составлял сравнение я.

Насчёт распределённых вычислений - если реализовать библиотеку легко, то, значит, ими можно воспользоваться. Вообще, если это легко реализовать, то в языке это есть, можно считать. Так что Лиспу я меньше двойки не опущу.

Но при этом с мелким параллелизмом без ручного управления у Эрланга туго.

Про parse_transform мне сказали. Ну, будет перевес в 4 балла.

Всё равно Эрланг, как язык, так себе.

Reply

lionet April 4 2009, 17:30:38 UTC
HiPE? Фигня. Перформанса никакого, а геморроя (падает в продакшне!) - выше крыши.

http://lionet.livejournal.com/29844.html

(цифры с присказкой "Native" - это HiPE).

Reply

prikrutil April 4 2009, 18:11:25 UTC
Цифры 2-5 получились, когда я замерял влияние HiPE'а на свои несложные потрошилки строк и бинарей. Но т.к. типичная система на эрланге редко упирается в разбор строк (чаще в ввод/вывод), то кумулятивный эффект получается не очень убедительным.

HiPE действительно иногда падает :/ Я даже написал два багрепорта (оба бага были исправлены очень быстро):

Раз: http://erlang.org/pipermail/erlang-bugs/2009-January/001162.html
Два: http://erlang.org/pipermail/erlang-bugs/2009-February/001204.html

Reply


Leave a comment

Up