metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2015-08-12 10:56 am

Запретить жабу, дотнет, пхп, перл и крестики, только ФП, только хардкор

https://medium.com/@yelbota/%D0%BA%D1%80%D1%83%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D0%BE%D1%82-%D1%83%D0%BD%D1%8B%D0%BB%D1%8B%D1%85-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%BE%D0%B2-612c72738d04

Пройдет время, некоторым не повезет, и они встретят кризис среднего возраста в одиночестве, платя алименты ушедшей жене. Когда-то давно она прочитала в Космо, что программисты — это новые рок-звезды, но ушла, когда узнала что ее муж, унылый похапешник, не комитит на гитхаб. Другим повезет: они смогут проскочить в тимлиды, и руководство заткнет ими купленный слот на отраслевой конференции. Там они самоутвердятся, рассказав молодым, что унылыми быть круто. И спираль уныния выйдет на новый виток, засосав еще больше классных ребят.

Как я уже неоднократно писал - все эти "интересы бизнеса" и "проверенные инженерные решения" - это отмазки неосиляторов, унылых кольчатых червей-менеджеров и повышение откато-попилоемкости проекта.

[identity profile] jdudzik.livejournal.com 2015-08-13 08:40 pm (UTC)(link)
Вот я и об этом Я - программист и я хочу, чтобы Хаскелл сделал мне типы с подтипами. А Хаскелл отвечает - "я экспериментальный язык, делай как Я СКАЗАЛ".

Очевидно, что это ненормально.

[identity profile] etoeos.livejournal.com 2015-08-13 08:43 pm (UTC)(link)
> 1 . В нормальной компании за попытку начать новый проект на новом языке больно бьют.

Ну так и не работайте в нормальных компаниях, если хотите функциональщину продвигать. В чем проблема?

[identity profile] pupsikk.livejournal.com 2015-08-14 05:44 am (UTC)(link)
Люди поклоняющиеся наследованию и ООП вообще - убоги так же, как и посетители концертов Петросяна.
Поэтому и Скала тоже немного отвратительна, ибо желание Одерского одной ногой топать по функциональщине, а другой наступать в Жаву - вызывает непонимание и желание обьяснить это то ли глупостью, то ли коммерческими соображениями, то ли ... глупостью.

[identity profile] lispnik.livejournal.com 2015-08-14 06:00 am (UTC)(link)
В лиспе точно такие же замыкания.

[identity profile] pupsikk.livejournal.com 2015-08-14 06:05 am (UTC)(link)
и действительно - зачем?
Си/С++ уделывают всех по скоростям.
Если б у них был еще вменяемый способ мультитрединга, хорошее средство для доказательства корректности, и дворник хороший, и сборка легкая, и поддержка мультиязычности человеческая, и репл, и богатый набор библиотек (а не сраных фреймворков) - вообще бы цены не было.
И хаскел оставался бы развлечением для скучающих математиков, а скала - унылым франкенштейном.
И Жава, сука, никогда б даже не родилась.
И все было б заебись.
К сожалению, Си, как ассемблер с человеческим лицом уже никуда развиваться не будет, а Си с крестами изначально пошел по уродскому пути развития и скатился в говно.
Извините, если обидел, ваш блог я читаю с удовольствием.

[identity profile] pupsikk.livejournal.com 2015-08-14 06:10 am (UTC)(link)
Бизнес живет плохо потому что асп.нет?

[identity profile] pupsikk.livejournal.com 2015-08-14 06:15 am (UTC)(link)
В таком случае рискуете остаться в гордом одиночестве.
Или в компании яваскриптодрочеров, что ненамного лучше.

[identity profile] permea-kra.livejournal.com 2015-08-14 06:17 am (UTC)(link)
>Хаскелл не умеет в наследование.

Зачем бы ему это уметь?

>Скала была бы нужна, если бы был IDE.

Вы до сих пор не объяснили, зачем нужна ИДЕ.

[identity profile] pupsikk.livejournal.com 2015-08-14 06:32 am (UTC)(link)
----- Как я уже неоднократно писал - все эти "интересы бизнеса" и "проверенные инженерные решения" - это отмазки неосиляторов, унылых кольчатых червей-менеджеров и повышение откато-попилоемкости проекта


Далана.
Причем тут неосиляторство?
Вы ж сами наверно работаете в команде.
Что проще - использовать оди/два ну 3 языка, для всей команды, или чтоб каждый писал на чем захочет, с миллионом фреймворков, с разными показателями перформанса?
Вы ж сами понимаете - в команде все вопросы по поводу новых языков, пакетов, фреймворков НИКОГДА не будут решены мгновенно и безболезненно.
Всегда надо обучить всех, проконтролировать что никто не гадит сверх меры, что есть кем заменить утраченного бойца. Лицензии закупить.
И что самое главное - как это скажется на клиенте? Надо ли будет ему установить еще один рантайм, еще один монитор чего-то там, еще одну инструкцию разработать. А если он сука железо поменяет? А если операционку? А если 100500 солитеров откроет? А если у него принципиальные требования по оводу перформанса, или аптайма, или корректности, или отзывчивости? Ну и так далее.
Многие люди хотели бы иметь феррари, но мало кто из них способен оценить технологические преимущества. Едет? Быстро едет? Вррум делает? Красиво? Престижно? Отлично. А то что там под капотом серийный мотор, а не вручную профессорами Гарварда собранный в одном экземпляре с квадратными цилиндрами - кому это критично?

[identity profile] pupsikk.livejournal.com 2015-08-14 06:39 am (UTC)(link)
Чтоб было удобнее редактировать текст, ориентироваться среди файлов, управлять зависимостями, компилировать, собирать и дебажить.
АйДиИ уровня Вижуал Студио или Х-Код - это все таки айс.

[identity profile] jdudzik.livejournal.com 2015-08-14 06:43 am (UTC)(link)
А зачем языку вообще что-то уметь, правда? Давайте все на Brainfuck писать - он тьюринг-полный и кросс-платформенный

[identity profile] jdudzik.livejournal.com 2015-08-14 06:47 am (UTC)(link)
> Люди поклоняющиеся наследованию и ООП вообще

Ко-ко-ко.

Люди, которые используют наследования и ООП, знают, что их программы работают, пишутся и поддерживаются в разы проще, а оплачиваются - в разы лучше. Всё, что было выдающегося в функциональных языках, давно стало нормой даже в C++,

Весь секрет привлекательности ФП - написание на нём занимает так много времени и требует таких ненужных навыков, что получившийся Hello World тысячу раз переписан, пока запустится. Что-то мало-мальски сложное на ФП либо превращается в ООП другим синтаксисом, либо работает с черепашьей скоростью.

[identity profile] theaspect.livejournal.com 2015-08-14 06:48 am (UTC)(link)
>Си/С++ уделывают всех по скоростям.
Городские легенды

[identity profile] permea-kra.livejournal.com 2015-08-14 06:48 am (UTC)(link)
>удобнее редактировать текст
На счет появилась хоть одна ИДЕ с встроенным редактором уровня хотя бы vim ? По-моему, нет.

> ориентироваться среди файлов
Это каким же безголовым надо быть, чтобы потеряться в правильно разложенных по директориям нескольким сотням файлов?

>компилировать, собирать
Это один черт должен делать аналог make.

>дебажить
Господи, зачем? Чем отладочноая печать-то с реплом не устраивают?
Я могу еще понять пользу от перехвата ввода-вывода (в т.ч. сетевого) и дампа состояния, но это явно делается не так.

[identity profile] thesz.livejournal.com 2015-08-14 06:52 am (UTC)(link)
Я срочнейшим образом поменял своё мнение о Лиспе на "никогда вообще". Питон со скобками, блин.

[identity profile] permea-kra.livejournal.com 2015-08-14 06:54 am (UTC)(link)
Ладно, давайте серьезно.

Единственный осмысленный случай применения наследования - перекрытие реализации по умолчанию - в хаскеле есть. Больше там говна этого нет, поскольку это не ООП-язык (и слава богу), и тащить туда ООП могут только больные ООП головного мозга.

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

[identity profile] jdudzik.livejournal.com 2015-08-14 06:56 am (UTC)(link)
> На счет появилась хоть одна ИДЕ с встроенным редактором уровня хотя бы vim ? По-моему, нет.

vim - характерный пример инопланетной технологии. Он в принципе контринтуитивен, Создать файл, написать текст, сохранить в нём - невозможно без чтения справки. В общении с vim машина - главный, а человек - слуга.

Правильный подход - emacs, notepad и где угодно ещё. Где есть текст и есть отдельно работа с текстом и можно работать, не зная ни одной горячей клавиши.

> Это каким же безголовым надо быть, чтобы потеряться в правильно разложенных по директориям нескольким сотням файлов?

Желаю успеха в переименовании одного класса в проекте из > 500 файлов.

> Это один черт должен делать аналог make.

Желаю успеха в выучивании 100500 команд ant, maven, sbt и всего прочего зоопарка.

> Господи, зачем? Чем отладочноая печать-то с реплом не устраивают?

Для компилируемых (хотя бы в байткод) языков - практически всем.

[identity profile] pupsikk.livejournal.com 2015-08-14 06:57 am (UTC)(link)
Возможно в вашем городе.

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

[identity profile] lispnik.livejournal.com 2015-08-14 07:00 am (UTC)(link)
Дело твоё, какое мнение о чём иметь, конечно, но это единственная вменяемое поведение для языка с присваиванием.

[identity profile] jdudzik.livejournal.com 2015-08-14 07:00 am (UTC)(link)
> Единственный осмысленный случай применения наследования - перекрытие реализации по умолчанию

Неверно. Наследование нужно, чтобы тысячу раз не писать один и тот же код.

Реализовывать можно по разному. Можно жёсткое, как в C++/Java. Можно duck typing, как в Go. Можно как в Python. Можно через прототип как в JavaScript. Но везде одно и то же преимущество: можно унаследовать, использовать родительский код и не задумываясь создать в любом месте программы.

В Haskell этого нет и не будет. В каждом случае надо отдельно ломать голову - как бы это написать, чтобы уважаемый язык соизволил понять, какой тип в данном случае нужен.

[identity profile] pupsikk.livejournal.com 2015-08-14 07:11 am (UTC)(link)
Если вы такое пишете, вы явно ничего более серьезного чем хелловорлд на ООПогани не писали.
На больших проектах вся эта срань мгновенно превращается в тыкву, большую и неподьемную, аж компиляторы плачут. В особенности благодаря не в меру ретивым выпускникам универов, которых дефлорировали джавой, с тех пор у них возникает фиксация на этой дряни.
ООП - тупая, окостеневшая, ограниченная идеология, раздутая и разрекламированная сверх всякой меры, с кучей парадоксов, которые разрешить можно только остервенелым костылением. Я бы не имел к ней претензий если б она оставалась примерно в том формате, в котором она живет в Обьектив-Си - сообщения, инкапсуляция и позднее связывание, но в остальном мире она просто вылезла за все мыслимые границы, особенно с с массовым нашествием программистов от сохи. Как говорил один поэт, идея брошенная в массы, она как девка брошенная в полк. Вот именно.

[identity profile] thedeemon.livejournal.com 2015-08-14 07:12 am (UTC)(link)
Тут я не смог понять - вы за белых или за красных? :)

[identity profile] thesz.livejournal.com 2015-08-14 07:16 am (UTC)(link)
Нет, и Haskell тому пример.

[identity profile] permea-kra.livejournal.com 2015-08-14 07:17 am (UTC)(link)
>Наследование нужно, чтобы тысячу раз не писать один и тот же код.

Чтобы не писать один и тот же код, нужен полиморфный код. Т.е. код, максимально абстрагированный от конкретики внутреннего устройства входных данных, опирающийся на переданный словарь. Наследование - это один из способов реализации полиморфизма, и далеко не самый удобный. Полиморфизм и неявная передача словаря в хаскеле есть - чего ж больше?

Даже в С++ для написания реюзабельного кода гораздо удобней использовать генерики на шаблонах, чем наследование.

> В каждом случае надо отдельно ломать голову - как бы это написать, чтобы уважаемый язык соизволил понять, какой тип в данном случае нужен.

Это просто ложь. Нужно ломать голову, чтобы сказать что-то осмысленное - ну так это везде так. Скажите спасибо компилятору, что он (в отличии от руби, например) может отловить, когда вы говорите явную глупость.

[identity profile] jdudzik.livejournal.com 2015-08-14 07:19 am (UTC)(link)
Разумеется, я писал на ООП достаточно большие проекты. Ни в какую тыкву они не превратились. Хотя бы потому, что для ООП есть IDE и хорошие паттерны проектирования.

И разумеется, я видел исходники библиотек на функциональных языках. Там каждый изобретает свой язык, а кучу элементарных вещей "надо писать самому". Итог - непредсказуемое поведение, лютые тормоза, куча времени, убитого на преодоление особенностей языка. Erlang за 20 лет так и не определился, какой библиотекой ходить по HTTP, а нормально работающего драйвера для mySQL не было и нет.

В программах, где где приходится взаимодействовать с пользователем - приходится эмулировать ООП, ведь без него окошки нормально не нарисуешь.

Все примеры "удачных решений на ФП" - написаные роботами программы для роботов.
Edited 2015-08-14 07:20 (UTC)

Page 4 of 8