Erlang vs Clojure

топ 100 блогов maxim21.09.2013
Haskell, Scala могут чморить всех.
OCaml может чморить всех кроме Haskell и Scala.
Erlang и Clojure могут чморить всех кроме Haskell, Scala, OCaml.


Я помню когда и из института молодой зеленый устроился на работу писать ORM на .NET и автоматические генераторы форм для документооборота. Там я познакомился с двумя лисперами, один из который был Примадонной а второй реально-упоротым мне чуваком казался. Он постоянно говорил что ООП хуйня, вы гавно, пишете хуйню, сам все задачи на Delphi делал за пол часа, а все остальное время писал робота игры Го. Естественно он долго не протянул, ушел создал свою компанию и пишет какой-то банковский софт на лиспе для бритов. Но, что меня удивляет с перспективы сегоднешнего дня (сейчас то я и сам могу накинуть с три ведра на ООП, ОРМ и GoF), так это то что он голосовал за зека на выборах 2004 года. Казалоось бы, что общего у Лиспа и Януковича. Это был первый звоночек связаный с лиспом для меня :-)

Второй чувак в компании был Пиля. Он конечно вроде как и пытался упростить C# лапшу которая была у нас в коде, но получалось только хуже. Но самое интересное началось когда мы начали писать свой ЛИСП для .NET и на нем скриптовать формы (я на тот момент уже написал пару компиляторов), позже мы работали в другой компании и там Пиля пытался создавать целый свой мир на LISP на .NET. Все это было намного сложнее чем просто накидать пару форм на WPF. Сейчас Пиля пишет на JavaScript и посматривает в сторону Эрланг.

Вообще говоря по-поповоду лисперов я начитался много хуйни. Этот весь ANSI CL, там есть все. СLOS, CLIM, с которого мы черпали идеи при построении UI все это мне казалось довольно переусложненным. И я с болшим интересом смотрел на Scheme мне казалось что сама суть ЛИСПА там больше выражена:

МИНИМАЛИЗМ, БЫСТРОТА ПРОТОТИПИРОВАНИЯ, УПРАВЛЯЕМОСТЬ, ПРОСТОТА


Есть только один язык который может соревноваться с LISP в этом плане -- это Erlang. Хотя он и вышел из Пролога, Армстрон при его разработке руководствовался именно этими правилами. Это 4 столпа технологии с которой я вряд ли уйду на что-то другое, и минимилизм и простоту я потеряю на ML-языках. Есть у меня запасной вариант правда свою систему типов для Erlang сделать, но это зарелизится не в этом году.

Много ли я знаю лисперов которые используют Лисп в этом стиле, да нет. Все пишут обычный гавнокод на лиспе. Я теперь вообще думаю, что это не связано с языком а связано с уровнем просветления, сколько кода генерирует человек. Да, на джаве все равно получается лапша, но некторые умудряются и на ней писать компактно без все этой хуйни GoF. Но это обычно люди которые знают Хаскель, Лисп как минимум, а как максимум видели и другие языки.

Дисклеймер: я счас буду набрасывать на лисперов которых я видел, так я сразу хочу сказать, что это не относится к чувакам Erlang vs Clojure si14, Erlang vs Clojure p1r4nh4, Erlang vs Clojure tonsky и другие чуваки которые пишут в том числе и на кложе.

Сами лисперы, обычно CL, обладают другой хуйней, они почему что считают что они обладаю каким-то уникальным знанием. Например когда им говорят, что серьезные приложения не построишь и нужна система типов, они с упоростью начинают генерировать какие-то core.typed, Qi, забывают иногда о 4 принципах на которых покоится лисп и начинают генерировать тонны кода, так рождаются всякие CLOS, CLIM. Я не знаю, кто сильно желает работать с лисперами но у нас тут считается что лучше уже уйти в лямбда-бомжи и учить теоркат на выходное пособие, чем сесть на лисп :-) Ни один чувак с улицы не придет и не начнет писать на лиспе, нужно именно сильно упороться что бы писать в открытом AST. Быть хорошим лиспером -- это как постоянно курсировать по лезвию бритвы, всегда нужно оглядываться не поехала ли у тебя крыша и не размываются ли гриницы адекватности.

С эрлангом намного проще, каждый кто написал 10 строк на Эрланге врубается сразу и пишет у себя в резюме Distributed Systems, High-Load Projects, Pi-calculus и Concurrency Master. После Эрланга становися сразу ясно почему Akka, Okku, Quazar, Kilim, Go, Итераты вместе с Клауд Хаскелем сосут прричмокивая. То где другим языкам нужно написать 100 кб кода для определения стратегии yied в скедюлер (memory/message threshold), в Эрланге делает одним условием

IF (REDUCTIONS > THRESHOLD) SWITCH;


Вот что такое соблюдение принципов простоты в дизайне VM. И такая хуйня была в ЛИСП мире долго. Пока Рич Хики не взялся давать пизды всем этим упоротым лисперам и не начал напоминать им, что писать компактно БЕЗ ХУЙНИ -- это самая суть. Так появились мемы Хуяк Хуяк и в продакшин и начался ренесанс Лиспа в виде Clojure с новыми холиварами и новыми упоротыми. И тут началось все че-то уверовали, что лисп это потолок. Никакой это не потолок -- это язык для быстрого прототипировать и создания минималистических программ. У вас два выбора если вас устраивает JVM или есть бабки на Azul и устраивюат скобочки вы пишете на Clojure, если вы олдфаг упоролись по бинарным протоколам и вы делаете свой Xen Cloud и не идете на компромисы вы выбираете Эрланг.

Теперь перейдем к содержательной части поста. Приведем пример нашего продакшин Erlang стека который полностью совместим с Xen уже сегодня:

Project Size (KB) LOC
Emacs-like Editor 170 5600
N2O (Web Framework) 148 3329
KAI Amazon Dynamo Impl 80 2100
KVS (DB: Riak/Mnesia/Kai) 80 2000
CI Server 40 1000
MQS (RabbitMQ lib) 28 500
AVZ (FB/G+/TW/GH/MS) 20 400
Erlang JavaScript 10 150
toy_leader (Echo Task) 4.8 70


Сравните это со своими проектами на Clojure :-) Как видно полноценная имплементация Амазон Динамо на Эрланге занимает 80КБ, Jenkins можно заменить 40 килобайтами, веб фреймворк похожий на Lift, Meteor, можно заменить 3 тысячами строк и 150КБ, а поддержать все виды KV Баз с секондари индексами обойдется вам в продакшине в 80КБ. При большое желании этот код можно выучить наизуть, так его мало. Самый масшбатный проект который я делал когда-либо на Эрланге -- это текстовый Emacs-like редактор, он занял аж 170КБ и занимает чуть меньше 6000 строк. Мой Erlang JavaScript компилятор занимает 10КБ и этого уже достаточно что бы реализовать язык необходимый для компиляции наших серверных страниц на стороне клиента, для сравнения core.cljs занимает 220КБ.

Если у вас есть цифры, которые показывают лучше принцип Хуяк Хуяк и в Продакшин я хочу их увидеь.

Цель Этого поста вовсе не показать что Эрланг лучше соотвествует принципам минимализма, быстроты прототипирования, управляемости и простоты, это и так очевидно, к тому же вы можете набрать ПХП-бомжей которые вам будут делать сайты, как это делаем мы. Целью даного поста было показать, что даже если на своем пути встретите упоротого лиспера, который отобьет у вас желание писать на лиспе, не реагируйте на него. Это не повод изучить Clojure есть у вас хоть как-то сердце бьется в резонанс со скобочками. Я хоть и писал на лиспе, но скобочки вот не принял. Зато теперь на Xen деплоюсь :-)

Говорите открыто и смело прямо в лицо: МИНИМАЛИЗМ, БЫСТРОТА ПРОТОТИПИРОВАНИЯ, УПРАВЛЯЕМОСТЬ, ПРОСТОТА.

Оставить комментарий

Архив записей в блогах:
Юлька спрашивала, что мне подарить на День Святого Валентина. А у меня все есть. А чего нет, то мне вредно или не нужно. Или к нему запчасти дорогие. И я попросил Юлю нажарить мне картошки с грибами. И она приготовила полную мультиварку. Картошки с грибами. Как я люблю. И как доктор не ...
Главный вопрос : Не могли бы Вы назвать примерные сроки ввода Т-62А и поднятия уровня Батчата? Хотя бы к физике успеете? SerB: Патч 0.7.5, до физики и нового рендера. Е-50М * Танк немного удлинили и башню переместили вперёд. За счёт этого трансмиссия ...
Здрасьте, у меня вопрос к тем, кто с руками. В зале у меня висят вот такие вот ролль-шторы: На самом большом окне штора уже ослабла и норовит не задерживаться в верхнем положении, когда я её поднимаю- а медленно сползти вниз. Пока медленно. Со временем процесс, я думаю, будет ...
Ну вот скажите мне, вы, все, кто занимается собой и кипс фит, вот вы, да. Что мотивирует вас быть в форме? Я легко пойму тех, кто когда-то был тощим: в молодости, при первом замужестве, до беременности, на выпускном, в первом классе и тп. То есть ...
Какой костюм для любовных игр самый востребованный? Почему в России анальной смазки продается больше, чем в во всей Европе? Актуальны ли сейчас леопардовые стринги? Корреспондент НедоСМИ расширил свой эротический кругозор, посетив одно ...