thedeemon: (Default)
[personal profile] thedeemon
Поразжигал немного в комментах у ребе Б. рознь к социальной группе "ленивые авторы языков". Чтобы не излагать свою позицию каждый раз заново, сохраню сюда.

Знаете, некоторые печальные даты надолго остаются в памяти людей: 11 сентября, 17 августа, 1917-й год, 1941-й. К ним стоит добавить 1995-й - год появления JavaScript, PHP, Ruby, ну и Java тоже. Кому-то захотелось по-быстрому добавить динамизма в веб-странички, и он за пару недель наговнякал интерпретатор, встроив его в браузер Netscape. Кому-то захотелось оживить свою домашнюю страничку, добавить счетчик посетителей, еще что-то, и он на коленке сделал такой вот изменятель страничек на стороне сервера. О больших проектах тогда никто не думал, personal home page назывался тот изменятель. А когда делаешь интерпретатор, проще всего сделать его на динамической типизации. Это банально очень просто. О системе типов вообще можно не задумываться, не говоря уже об их выводе. К сожалению, на фоне тогдашнего мейнстрима (Си, ранние плюсы, что там еще было?) эти скриптовые языки выглядели очень выигрышно, писать мелкие куски кода на них было намного проще. Что такое нормальная система типов тогда мало кто знал: хаскель был еще в пеленках, ML'и традиционно не выходили из университетов. Так что люди эти скрипты подхватили, стали добавлять все новые функции. Менять систему типов стало поздно. В итоге выросло то, что выросло. С тех пор одна масса людей занята тем, чтобы делать все более сложные интерпретаторы, которые бы не так тормозили, другая масса придумывает 121-й способ добавить в JS типы, а третья на динамических языках пишет и плачет в бложиках о том, как грустно им делается. И проблема не только и не столько в скорости, сколько в maintainability кода и усилиях на необходимые тестирование и отладку при росте проектов.

Единственная реальная причина появления динамически типизированных языков - лень и недальновидность авторов. Эволюционно динамические языки - тупиковая ветвь, хоть они и обречены рождаться вновь и вновь просто потому что их делать проще, а делать языки люди любят. Сегодняшняя популярность некоторых из них - случайность, исторический казус, следствие контраста между этими языками и мейнстримом начала 90-х. То, что много идиотов используют идиотские языки, говорит лишь о том, что идиотов много. Сегодня, когда есть языки с нормальной статической системой типов, никаких реальных преимуществ у динамической больше нет. Только я имею в виду действительно нормальные статически типизированные языки - как минимум с параметрическим и ad hoc полиморфизмами, с выводом типов. Не Си с джавой. Хаскель, окамл, скала - такого уровня. У этих конкретных языков могут быть свои проблемы, часто инфраструктурные, но речь сейчас не о них, речь о динамической vs. статической типизации в целом.

Date: 2012-10-11 11:57 am (UTC)
From: [identity profile] maxim.livejournal.com
Нельзя сказать что Эрланг спроектированая на коленке поеботина. Ну никак :-)
Добавить по трубе в процесс для каждого типа и вот она статическая типизация в эрланге.

Date: 2012-10-11 11:59 am (UTC)
From: [identity profile] dmzlj.livejournal.com
причем здесь? возможно, но некоторые фичи эрланга в принципе не сочетаются со статической типизацией. понять так это или нет --- это целая нахрен наука. да они и не собирались же использовать статические типы, верно?

Date: 2012-10-11 12:37 pm (UTC)
From: [identity profile] maxim.livejournal.com
добавление типов увеличило бы количество процессов в системе. для сохранения максимальной простоты и решения конкретных задач была выбрана динамическая типизация.

Date: 2012-10-11 12:43 pm (UTC)
From: [identity profile] thedeemon.livejournal.com
А кто мешает по одному каналу принимать разные типы и матчить их, как это сделано в D? Получится в канале простой sum type, при желании можно даже статически его проверить. Общей статической типизации остального кода не мешает.

Date: 2012-10-11 02:43 pm (UTC)
From: [identity profile] dmzlj.livejournal.com
а можно как-то раскрыть связь между типами и числом процессов? мне неочевидно, не знаю, может всем остальным очевидно

Date: 2012-10-11 01:23 pm (UTC)
From: [identity profile] thesz.livejournal.com
http://www.youtube.com/watch?v=1jJ2paFuErM

21:59 - "when in doubt, do what Erlang people do Укдфтп зущзду thinks Erlang ought to do"

Вторая версия Эрланга под названием Cloud Haskell не только имеет строгую статическую типизацию, но и исправляет ошибки реализации первой версии!

Как я понимаю, let it fail сыграло здесь свою роль.

Кстати, труба для каждого типа не позволяет иметь порядок сообщений.

Date: 2012-10-12 10:04 am (UTC)
From: [identity profile] vinslivins.livejournal.com
можно спросить, какой компилирующейся библиотекой в хаскеле мне воспользоваться, чтобы задать порядок сообщений для чат-сервера, если протокол состоит только из сообщения "привет", логина, какого-то количества приёмов и передач сообщений "ChatPost", и последнего сообщения "пока"?

или хотя бы как это выразить правильно в системе типов?

Date: 2012-10-12 11:50 am (UTC)
From: [identity profile] thesz.livejournal.com
Разнообразные инкарнации session types?

Date: 2012-10-12 01:06 pm (UTC)
From: [identity profile] si14.livejournal.com
Рекомендую хотя бы ознакомиться перед тем, как рекомендовать. Cloud Haskell — ресёрч проект, документация через коня, примеров кода рабочего нет, никакой горячей перезагрузки и интроспекции нет (поправите мне в рантайме содержимое какого-нибудь списка страктов в шаренном TVar'е так же легко, как это делается для ETS?). Проектов уровня Cowboy/Ranch (сервер для всего со сверхинтуитивным API плюс поддержка HTTP, HTTPS, REST state diagram, WebSockets, sendfile, SPDY на продакшн-уровне, а не на «ой мы тут налабали говняшечку, которая curl'у отвечает, но HTTP 100 нормально пользоваться не умеет») для хаскеля в целом нет. Но да, я в курсе, что для вас это не аргументы, потому что агитировать за то, на чём сам в продакшн не пишешь, очень легко и приятно.

Date: 2012-10-12 04:42 pm (UTC)
From: [identity profile] thesz.livejournal.com
Сам Хаскель - исследовательский проект. Как я понимаю, вы им пользуетесь, не так ли? Риск повыше, чем с библиотекой.

Я согласен, что без остановки в вашем случае не обойтись. Мне не жалко. Вы так сформулировали вашу задачу и ее решение, что не обойтись и я не вижу причин, почему бы мне не принять вашу формулировку.

Мне интересно, будет ли вам жалко признать полезность Cloud Hakell в проектах, отличных от вашего. Например, в проекте, где не может быть неправильных данных, ибо типы помощнее. Или скорость нужна. Или работа с GPGPU. Ведь мир не ограничивается веб серверами.

Или ограничивается?

Date: 2012-10-12 05:54 pm (UTC)
From: [identity profile] si14.livejournal.com
Пффт. Что ж вы так извиваетесь-то?
>Вторая версия Эрланга под названием Cloud Haskell
>исправляет ошибки реализации первой версии!
>let it fail сыграло здесь свою роль
Чего б не продолжить гнать беспочвенный пафос? «Klarna срочно переносит свой бизнес на Cloud Haskell», «OTP team посмотрела на успешный проект Cloud Haskell (https://github.com/jepst/CloudHaskell/commits/master) с 4 коммитами за год и совершила обряд ритуального самосожжения», ещё что-нибудь такое же смешное. Право же, всегда забавно смотреть на ваши экспертные заключения, не подкреплённые практическим опытом или какими-либо аргументами, кроме, собственно, экспертизы.

Date: 2012-10-12 07:30 pm (UTC)
From: [identity profile] thesz.livejournal.com
А, так вы не в курсе. Я думал, вы в курсе. Я думал, что вы не реагировали рефлекторно на текст комментария, я посмотрели видео, ссылка на который там содержится (и указано время, когда говорится об исправлении ошибок). Почитали блог Well Typed, где есть ссылка на вторую версию CH, под названием distributed process. Вот его репозиторий.

После всего этого я думаю, что нашим читателям будет одинаково забавно читать наши комментарии. Как минимум одинаково.

Date: 2012-10-12 08:06 pm (UTC)
From: [identity profile] si14.livejournal.com
Т.е. проект без документации, официально в бете (с коррекцией на привычки хаскель-коммьюнити это означает «преальфа»), с ровно 1 активным разработчиком, без продакшн-опыта это «вторая версия Erlang'а с исправленными ошибками, Erlang failed»? Мило.

Date: 2012-10-12 08:16 pm (UTC)
From: [identity profile] thesz.livejournal.com
По-моему, вы специально читаете так, чтобы считать меня дураком. Хуже, что вы пытаетесь так писать. Ну, меня не затруднит разъяснить, чтобы наши будущие читатели могли более обстоятельно решить, дурак ли я.

Я сказал, что Cloud Haskell исправляет семантику Erlang'а (и это есть в видео), и что, по-моему, в неправильной семантике (возможная пропажа сообщений) виноват подход let it fail. Не более и не менее.

Первая версия Эрланга разрабатывалась не так, чтобы уж очень большой командой. Меня не смущает количество разработчиков.

Date: 2012-10-12 09:10 pm (UTC)
From: [identity profile] si14.livejournal.com
>вы специально читаете так, чтобы считать меня дураком
Что я читаю? Я цитирую ваши слова:
>Вторая версия Эрланга под названием Cloud Haskell
>исправляет ошибки реализации первой версии!
>let it fail сыграло здесь свою роль
Кроме того, вот эта ваша фраза
>в неправильной семантике (возможная пропажа сообщений)
показывает одновременно:
-полное непонимание «семантики Erlang'а»;
-безапеляционно-экспертное мнение про её «неправильность»;
-веру в фей, единорогов и код без багов.
В принципе, насколько я могу судить по вашему блогу, это логично вытекает из отсутствия опыта написания чего-либо в продакшн как на том, так и на другом языке. Как это может сочетаться с непререкаемо-менторским тоном там и тут, я не совсем понимаю, равно как и не понимаю это ваше стремление к театральности с постоянным упоминанием неких читателей/зрителей из вашей головы.

Date: 2012-10-12 09:39 pm (UTC)
From: [identity profile] thesz.livejournal.com
Оставлю критику ваших цитат, перейду к чему-либо поинтересней.

Насчёт production. Я считаю, что волен рассказывать столько о своей работе, сколько хочу. И ещё. Как вы думаете, есть ли такая вещь, как NDA? Могу ли я быть ей связан?

Насчёт семантики сообщений я сам не хочу с вами спорить. Поспорьте лучше с Duncan Coutts.

Я основываю своё понимание семантики передачи сообщений Эрлангом на информации Duncan Coutts (плюс то, что читал до этого). Он, в свою очередь, основывался на чтении документации Эрланга, чтении исходного кода его системы времени выполнения и общении с разработчиками Эрланга. Вы сможете опровергнуть его слова? Время в докладе 20:35. Процесс, которому послали m1, m2 и m3 может получить и m1, m3 (без m2).

Я также процитировал Duncan Coutts, когда говорил о неправильности семантики Эрланга. Вы сможете опровергнуть его слова? Это уже упомянутое выше время 20:35 и 21:25, где говорится о новой, более правильной семантике посылки сообщений.

Я считаю, что способность Эрланга жить с такой реализацией передачи сообщений была гарантирована только подходом let it fail. Это не fail самого Эрланга. Не то, чтобы наоборот, но это отодвинуло необходимость в изменениях на длительное время. Сыграло свою роль в выборе реализации.

И наконец, вы же не считаете, что мы тут с вами только вдвоём общаемся? Моё мнение, что нас будут читать и перечитывать, именно поэтому я стараюсь писать с учётом будущих читателей. А упоминаю я их, чтобы вы не восприняли мои слова, как обидные и направленные именно вам. Мне просто надо донести своё мнение до читателей.

Date: 2012-10-12 10:33 pm (UTC)
From: [identity profile] si14.livejournal.com
>Насчёт семантики сообщений я сам не хочу с вами спорить. Поспорьте лучше с Duncan Coutts.
Зачем тогда вы написали весь этот шмат рассуждений после этой фразы? Если это опять игра на публику, а «поспорьте лучше с...» должно как бы заткнуть меня, то зачем там внутри расставлены вопросы якобы ко мне? Я просто не могу определиться, стоит ли мне отвечать или нет. Вы же не Duncan Coutts, вроде.

>И наконец, вы же не считаете, что мы тут с вами только вдвоём общаемся?
Нет, конечно. Тут рядом со мной сидят Наполеон и Эйнштейн, ну и Иисус на огонёк зашёл. Мне кажется, что, если вы отвечаете на мой комментарий, то предполагать, что ваш ответ направлен именно мне, нормально. Если же вы хотите доносить мнение до каких-то читателей, то зачем вам для этого комментарии? У вас для этого вроде блог есть.

Date: 2012-10-12 10:47 pm (UTC)
From: [identity profile] thesz.livejournal.com
Выше я просто опираюсь на авторитет. Я привёл его и его рассуждения. Если вы способны опровергнуть выводы D. Coutts, то и мне полезно будет, и будущим читателям, да и прогрессу нашей отрасли в целом.

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

Date: 2012-10-12 11:22 pm (UTC)
From: [identity profile] si14.livejournal.com
Проблема в том, что, «опираясь на авторитет», вы, по всей видимости, сознательно недоговариваете, что в приличном обществе приравнивается к прямой лжи.
>Процесс, которому послали m1, m2 и m3 может получить и m1, m3 (без m2).
...если это сообщение, посланное между нодами по сети, причём m2 попадёт на момент реконнекта между нодами по причине фейла сети.
Нужно ли пояснять то различие восприятия вероятности подобного события, которое возникает из опущеной вами подробности? Мне с трудом верится, что вы, явно пересмотрев это видео несколько раз (в конце концов, вряд ли вы запомнили эти цифры времени с первого раза), не обратили внимания на эту «мелкую деталь». Добавляет же идиотизма изначальной претензии решение, которое предлагается на следующем слайде: дожидаться ответа для важных сообщений, гарантируя их доставку. Конечно же, никто в Erlang community не додумался до этого, это невозможно сделать средствами Erlang и поэтому нужно срочно переписать всё на Cloud Haskell, который принципиально улучшит семантику сообщений.

Кстати, упомянутый Duncan Coutts:
-не писал на Erlang'е сам;
-судя по http://www.well-typed.com/people/duncan, не имеет production опыта, исключительно academy+opensource.
Поэтому приводить его в качестве авторитета относительно профессионального применения Erlang или Haskell достаточно странно.

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

Date: 2012-10-13 12:25 am (UTC)
From: [identity profile] thesz.livejournal.com
О, упоминание хамства это почти что Годвин в общении со мной. Вы, наверное, не очень понимаете значение термина "хамство". "Хамство" значит "поведение или поступки хама". "Хам," в свою очередь, это презрительное обращение дворян к низшим сословиям. Мне и тут не стыдно признаться в рабоче-крестьянском происхождении. Однако чтобы я мог как-то негативно прореагировать на вашу реплику мне необходимо знать, что вы дворянин.

Итак, дворянин ли вы?

Другое значение "хама" - преклоняющийся перед властью и тп. Не думаю, что это мой случай. Как и остальные.

Вы как-то уж очень напираете на production опыт. Мне напомнить, что Эрланг создавался в компьютерной лаборатории высоколобыми учёными? Я подозреваю, что у Джо Армстронга на момент создания Эрланга не было production опыта. Есть ли у вас опровергающие моё подозрение факты?

Я предпочитаю опираться на ум и опыт разработчика, желательно, чтобы опыт был обширен. Эрланг создавался умными людьми, так и создатели Cloud Haskell не хуже. С обоими я знаком лично, правда, в разной степени. Jeff Epstein работает в Parallel Scientific, соответственно, я общался с ним много больше.

Поэтому я смотрю на CH много оптимистичней, чем вы.

У меня широкий production опыт встраиваемых систем, от шумомера до банкомата. Более 16 лет в сумме. Я не люблю ошибки, ибо поправить их я, обычно, не мог и они стоили больших денег работодателям. Я также не люблю ошибки, ибо мне "лень" их править - цена исправления пропорциональна времени между внесением и обнаружением, поэтому чем позже ошибка обнаружена, чем тяжелее придётся трудиться. "Лень" в кавычках, конечно, ибо я исправлю свою ошибку, и чужую тоже. Просто мне нравится их не допускать, есть в этом что-то такое, даже вы, я думаю, согласитесь.

Я думаю, вам просто нравится адреналин "исправления после тестирования на зеркале production системы". Так, чтобы заметно было, чтобы все восторгались вокруг, какой вы молодец.

Ибо я не вижу других причин в хвастовстве пропущенной ошибкой, кроме как повторения столь приятного воспоминания. В её исправлении как можно более быстрым способом также нет никакой особой доблести. И рассказ об этом также несёт исключительно психологическую нагрузку. И уж совсем нет вашей заслуги в том, что вы воспользовались при этом Эрлангом. Как нет заслуги Эрланга во всей этой феерии, ибо он всего лишь инструмент.

Broken window fallacy, вот ближайшее понятие, которое приходит на ум при чтении историй о горячей подмене кода.

(no subject)

From: [identity profile] si14.livejournal.com - Date: 2012-10-13 12:42 am (UTC) - Expand

(no subject)

From: [identity profile] thesz.livejournal.com - Date: 2012-10-13 12:48 am (UTC) - Expand

(no subject)

From: [identity profile] sassa-nf.livejournal.com - Date: 2012-10-14 09:54 am (UTC) - Expand

(no subject)

From: [identity profile] si14.livejournal.com - Date: 2012-10-24 01:35 pm (UTC) - Expand

(no subject)

From: [identity profile] sassa-nf.livejournal.com - Date: 2012-10-24 07:48 pm (UTC) - Expand

(no subject)

From: [identity profile] si14.livejournal.com - Date: 2012-10-24 10:22 pm (UTC) - Expand

(no subject)

From: [identity profile] thesz.livejournal.com - Date: 2012-10-25 12:37 am (UTC) - Expand

(no subject)

From: [identity profile] si14.livejournal.com - Date: 2012-10-25 08:39 am (UTC) - Expand

(no subject)

From: [identity profile] thesz.livejournal.com - Date: 2012-10-25 11:47 am (UTC) - Expand

(no subject)

From: [identity profile] si14.livejournal.com - Date: 2012-10-25 12:07 pm (UTC) - Expand

(no subject)

From: [identity profile] thesz.livejournal.com - Date: 2012-10-25 12:20 pm (UTC) - Expand

(no subject)

From: [identity profile] si14.livejournal.com - Date: 2012-10-25 01:50 pm (UTC) - Expand

(no subject)

From: [identity profile] thesz.livejournal.com - Date: 2012-10-25 06:41 pm (UTC) - Expand

(no subject)

From: [identity profile] thesz.livejournal.com - Date: 2012-10-25 12:24 pm (UTC) - Expand

(no subject)

From: [identity profile] si14.livejournal.com - Date: 2012-10-25 02:03 pm (UTC) - Expand

(no subject)

From: [identity profile] thesz.livejournal.com - Date: 2012-10-25 07:35 pm (UTC) - Expand

(no subject)

From: [identity profile] si14.livejournal.com - Date: 2012-10-25 10:48 pm (UTC) - Expand

(no subject)

From: [identity profile] thesz.livejournal.com - Date: 2012-10-25 11:31 pm (UTC) - Expand

(no subject)

From: [identity profile] si14.livejournal.com - Date: 2012-10-26 12:12 am (UTC) - Expand

(no subject)

From: [identity profile] thesz.livejournal.com - Date: 2012-10-26 12:49 am (UTC) - Expand

(no subject)

From: [identity profile] voidex.livejournal.com - Date: 2012-12-01 03:30 am (UTC) - Expand

(no subject)

From: [identity profile] si14.livejournal.com - Date: 2012-12-01 09:55 am (UTC) - Expand

(no subject)

From: [identity profile] voidex.livejournal.com - Date: 2012-12-01 10:59 am (UTC) - Expand

(no subject)

From: [identity profile] si14.livejournal.com - Date: 2012-12-01 01:16 pm (UTC) - Expand

(no subject)

From: [identity profile] voidex.livejournal.com - Date: 2012-12-01 02:17 pm (UTC) - Expand

(no subject)

From: [identity profile] si14.livejournal.com - Date: 2012-12-02 09:05 am (UTC) - Expand

(no subject)

From: [identity profile] voidex.livejournal.com - Date: 2012-12-02 11:02 am (UTC) - Expand

(no subject)

From: [identity profile] si14.livejournal.com - Date: 2012-12-02 11:20 am (UTC) - Expand

(no subject)

From: [identity profile] voidex.livejournal.com - Date: 2012-12-02 12:01 pm (UTC) - Expand

(no subject)

From: [identity profile] geekyfox.livejournal.com - Date: 2012-12-02 01:00 pm (UTC) - Expand

(no subject)

From: [identity profile] sassa-nf.livejournal.com - Date: 2012-10-25 08:20 am (UTC) - Expand

(no subject)

From: [identity profile] si14.livejournal.com - Date: 2012-10-25 09:01 am (UTC) - Expand

(no subject)

From: [identity profile] sassa-nf.livejournal.com - Date: 2012-10-25 12:23 pm (UTC) - Expand

(no subject)

From: [identity profile] thesz.livejournal.com - Date: 2014-09-24 12:05 pm (UTC) - Expand

(no subject)

From: [identity profile] sassa-nf.livejournal.com - Date: 2012-10-25 08:51 am (UTC) - Expand

(no subject)

From: [identity profile] si14.livejournal.com - Date: 2012-10-25 09:02 am (UTC) - Expand

Date: 2012-11-30 01:31 pm (UTC)
From: [identity profile] zamotivator.livejournal.com
Так вы дурак и есть,и последовательно это доказываете в разных дискуссиях.
Из интереса пошёл посмотреть, за что это si14 забанили (куда более въедливого и внимательного, чем я), и не сдержался.

Это не я или si14 читаем так, чтобы вас дураком видеть, вы есть конченный дурак, не вылезающий за пределы своей нишы и работы вообще.

Уж куда быть более дураком, чем рассуждая про формирование зарплат в Москве без учёта стоимости аренды и предложения/спроса.

Тьфу. Дурак! Идите качайтесь, а в ЖЖ не пишите.

Date: 2012-11-30 01:39 pm (UTC)
From: [identity profile] thesz.livejournal.com
Я вот думаю, стал бы мир лучше, если бы вы умели читать?..

Date: 2012-11-30 01:41 pm (UTC)
From: [identity profile] zamotivator.livejournal.com
Вас уже носом в ваши собственные слова тыкают - а вам все своё видется.
Про таких говорят "хоть ссы в глаза - всё божья роса".
И этот человек мне про эмпатию ещё лечит что-то, а.

Date: 2012-11-30 01:44 pm (UTC)
From: [identity profile] thesz.livejournal.com
Как вы думаете, есть ли на свете люди, имеющие мнение, отличное от вашего или поддерживаемого вами?..

(no subject)

From: [identity profile] thesz.livejournal.com - Date: 2012-11-30 01:56 pm (UTC) - Expand

(no subject)

From: [identity profile] zamotivator.livejournal.com - Date: 2012-11-30 02:00 pm (UTC) - Expand

(no subject)

From: [identity profile] thesz.livejournal.com - Date: 2012-11-30 02:06 pm (UTC) - Expand

(no subject)

From: [identity profile] zamotivator.livejournal.com - Date: 2012-11-30 02:09 pm (UTC) - Expand

(no subject)

From: [identity profile] thesz.livejournal.com - Date: 2012-11-30 02:31 pm (UTC) - Expand

(no subject)

From: [identity profile] zamotivator.livejournal.com - Date: 2012-11-30 03:10 pm (UTC) - Expand

(no subject)

From: [identity profile] thesz.livejournal.com - Date: 2012-11-30 03:31 pm (UTC) - Expand

(no subject)

From: [identity profile] gineer.livejournal.com - Date: 2012-12-01 10:34 am (UTC) - Expand

Profile

thedeemon: (Default)
Dmitry Popov

December 2025

S M T W T F S
 12 3456
789101112 13
14151617181920
21222324252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 30th, 2026 06:09 pm
Powered by Dreamwidth Studios