Оценки: 0 - отсутствует (или плохо по моему мнению), 1 - имеется в ограниченном масштабе (или умеренно по моему мнению), 2 - присутствует (или отлично по моему мнению).
- Синтаксис
- Лисп: 1. Скобки-скобки-скобки-скобки
- Эрланг: 1. Синтаксис а-ля ML, но многословней и менее регулярный.
- Строгая типизация
- Лисп: 1. Есть Qi. Мощный, но им никто не пользуется.
Опыта работы с Лиспом у меня нет, поэтому постараюсь касаться только Эрланга.
Скорость работы программ
* Эрланг: 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'а оптимизация
все будет работать еще быстрее =)
Отвоевал единичку Эрлангу?
Метапрограммирование
* Лисп: 2. Здесь всё хорошо.
* Эрланг: 0. Нет. Более того, всё сделано так, чтобы помешать его использовать.
У Эрланга есть parse transforms. Не могу сказать, что пользоваться этим удобно, но единичку определенно можно поставить. 3 : 1 в пользу Лиспа.
Распределённые вычисления
* Лисп: 2. Есть в виде библиотек (1, 2, 3, есть ещё много), скорость сравнима с Эрлангом.
* Эрланг: 2. Вотчина, так сказать.
По-моему, "Вотчина, так сказать" >> "Есть в виде библиотек", но оценку вы поставили одинаковую. Имхо, здесь 3 : 1 в пользу Эрланга.
"2" (Distel) это скорее в плюс Эрлангу: http://xtalk.msk.su/~ott/ru/writings/emacs-devenv/EmacsErlang.html#sec8
Библиотеки 1 и 3 давно не обновляются, но для 1-и достаточно.
REPL
* Лисп: 2. Если не типы, то просто документация по функциям доступна в интерпретаторе.
* Эрланг: 1. Есть интерпретатор. Информации о функциях он не предоставляет.
Этот пункт, по-моему, лишний ввиду своей несущественности. Есть REPL - и ладно. Но, если вы настаиваете, то из эрланговского шелла можно делать "chroot" в любую ноду. +1 Эрлангу? 2:2.
--
Строгая типизация и вывод типов - это супер-здорово. Поэтому, следующий в моем todo - Haskell (а когда-нибудь дойдет дело и до Окамла с Лиспом)!
Reply
REPL - это не только chroot. Это ещё и справочник по текущему и библиотечному коду. В Хаскеле документацией служат команды ghci :t (типы выражения) и :i (информация о символах). В Лиспе есть просто документация.
В Эрланге есть интерпретатор, и всё. Поэтому у Эрланга всего 1. И 2 не будет, пока не будет либо типов, либо документации.
Для меня REPL важен. Составлял сравнение я.
Насчёт распределённых вычислений - если реализовать библиотеку легко, то, значит, ими можно воспользоваться. Вообще, если это легко реализовать, то в языке это есть, можно считать. Так что Лиспу я меньше двойки не опущу.
Но при этом с мелким параллелизмом без ручного управления у Эрланга туго.
Про parse_transform мне сказали. Ну, будет перевес в 4 балла.
Всё равно Эрланг, как язык, так себе.
Reply
http://lionet.livejournal.com/29844.html
(цифры с присказкой "Native" - это HiPE).
Reply
HiPE действительно иногда падает :/ Я даже написал два багрепорта (оба бага были исправлены очень быстро):
Раз: http://erlang.org/pipermail/erlang-bugs/2009-January/001162.html
Два: http://erlang.org/pipermail/erlang-bugs/2009-February/001204.html
Reply
Reply
Reply
Leave a comment