Size: a a a

Elm Lang сообщество разработчиков

2017 October 26

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Go это внутренняя разработка Гугла для покрытия своих нужд, которую он не постеснялись выставить наружу
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Elm изначально создавался, чтобы "круги по центру окна брайзера рисовать боз боли", Эван сам про это говорил
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Именно поэтому раньше не было всего этого - HTML, TEA. Были сигналы и graphics
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
И было прекрасно - это была настоящая изоляция от мира Web, где можно было сказать colored Red <| text "foo" и просто получить красный текст
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Но в итоге всё скатилось в HTML/CSS и "шоб попроще"
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
И тайпклассы нынче считаются "ненужной" штукой, хотя на деле Эван просто их не осилил сделать нормально. Он хотя бы отказался делать плохо, что похвально, но считаль это великой идеей - глупо
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
И сравнивать сообщество Эльма и Го вполне правомочно: и там и тут куча народу, который еле-еле разбирается в теме, уже но устал от предыдущего языка (Python/Ruby в случае Го и JS в случае Elm), и которому продали идею "тут у нас ничего знать не надо, у нас всё просто, все сложные решения за вас уже приняли". И "пипл хавает". Но коль скоро пиар кампания была довольно агрессивной - буквально на каждом шагу кричат "у нас всё просто, а тем у кого сложно - плохо" - неудивительно, что любая критика воспринимается в штыки.
Меж тем любой, кто до Elm осилил хотя бы SML, или ту же Scala - но именно осилил, а не прикоснулся - понимает ограничения Elm, которые действительно мешают писать что-то достаточно сложное эффективно. И проблема тут в том, что нет инструментов повышения уровня абстракции, а ведь это главный рычаг для управления сложностью! Отобрать его - всё равно что крылья подрезать! И все, кто увидел Эльм после нормальных языков в его нише, считают Эльм объективно бедным языком. Это факт
источник

ZK

Zheka Kozlov in Elm Lang сообщество разработчиков
Повышение уровня абстракции имеет довольно посредственное отношение к управлению сложности.
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Вы что правда так думаете?
источник

ZK

Zheka Kozlov in Elm Lang сообщество разработчиков
Я не говорю, что оно не влияет. Я говорю, что это не главный фактор
источник

ZK

Zheka Kozlov in Elm Lang сообщество разработчиков
Вот, например, иммутабельность данных важнее намного
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Что? о_О Иммутабельность данных, это и есть абстракция! Программист абстрагирован от рантайма, где мутации происходят и прочая машинерия для обеспечения приемлимых характеристик для этих самых структур данных.
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
И PFDT очень сложные внутри, чтобы снаружи казаться простыми. Это и есть абстракция. И если язык не позволяет новые структуры данных писать обеспечивая такой же уровень абстракции, какой присущ встроенным List/Dict, то это беда!
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
И если очевидно обобщаемые вещи типа map/filter/append приходится изобретать каждый раз, вместо того чтобы абстрагировать, растёт сложность, увеличивается кол-во ошибок, нарастает когнитивная нагрузка в конце концов
источник

ZK

Zheka Kozlov in Elm Lang сообщество разработчиков
Иммутабельность - это способ реализации структуры данных, причём тут абстрагирование
источник

ZK

Zheka Kozlov in Elm Lang сообщество разработчиков
Короче, поинт в том, что если выбирать более высокий уровень абстракции, но без гарантий чистых функций и иммутабельности (например, как в Scala) или более низкий уровень, но с гарантией (Elm), то я выберу второе.
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
В скале гарантия иммутабельности есть - все PFDT иммутабельные и никак иначе
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Но прочие сайд эффекты не допускаются - IO то же. Это не очень хорошо.
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Кароч, в эльме нельза написать свой Dict из-за магического comparable - это фейл
источник

ZK

Zheka Kozlov in Elm Lang сообщество разработчиков
Aleksei (astynax) Pirogov
И PFDT очень сложные внутри, чтобы снаружи казаться простыми. Это и есть абстракция. И если язык не позволяет новые структуры данных писать обеспечивая такой же уровень абстракции, какой присущ встроенным List/Dict, то это беда!
Чтобы более-менее удобно работать с PFDT, не нужны ни классы типов, ни HKT. Т.е. там вовсе не нужен такой лютый уровень абстракции. Достаточно чтобы просто доступ к полям был сокрыт, что можно даже в Go сделать
источник