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 12:51 pm (UTC)(link)
Ruby, C#, Go

[identity profile] permea-kra.livejournal.com 2015-08-13 02:36 pm (UTC)(link)
Руби - это язык, в котором компонент настройки конфигурации может (динамически) решить пропатчить класс строки, сломав при этом, например, компонент доступа к БД. Когда я вижу проект на руби, у меня возникает огромное уважение к профессионализму тимлида, который проворачивает трюк сродни кроссу на одноколесном велосипеде. Но пользоваться этим самому? Накуй.

C# является прямым аналогом джавы, там никогда не было и не будет ADT и паттерн-матчинга, это значит, что обход древовидных структур на них превращается в боль. Это не обсуждая слабой системы типов и прочих проблем, который поциэнт унаследовал от джавы.

Go - все те же проблемы, что и у C# как минимум.

[identity profile] permea-kra.livejournal.com 2015-08-13 02:40 pm (UTC)(link)
Кто б мне объяснил, зачем нужна IDE...

[identity profile] jdudzik.livejournal.com 2015-08-13 03:05 pm (UTC)(link)
Кто б мне объяснил, зачем нужны трактора, если есть проверенная веками палка-копалка....

[identity profile] jdudzik.livejournal.com 2015-08-13 03:07 pm (UTC)(link)
Зато на них есть вакансии (привет, Хаскелл). библиотеки (эге-гей, Эрланг) и либо удобная отладка, либо мощнейшее IDE (хи-хи, Scala)

[identity profile] permea-kra.livejournal.com 2015-08-13 03:16 pm (UTC)(link)
Базовые библиотеки (xml/json/yaml, веб, гуй, многопоточность) есть и под хаскель со скалой и эрлангом, а чего нет, то пишется не приходя в сознание.

IDE не нужны. Средства отладки по крайней мере под хаскель есть (правда, необходимости в них нет)

[identity profile] thedeemon.livejournal.com 2015-08-13 04:16 pm (UTC)(link)
Я потому и говорю про новые проекты. Если не превращать их в легаси с первого дня, то постепенно жить станет проще. А сейчас, в эпоху микросервисов, многие "приложения" можно и вовсе по частям обновлять, на другие языки переводить.

[identity profile] thedeemon.livejournal.com 2015-08-13 04:20 pm (UTC)(link)
Чтоб переименовывать сущности не через поиск строк грепом. Чтоб find usages был годный. Чтоб автокомплит был умный, type-aware, а не лексический.

[identity profile] thedeemon.livejournal.com 2015-08-13 04:27 pm (UTC)(link)
>никогда не было и не будет ADT и паттерн-матчинга

Ходят слухи, что не за горами уже они. C# все ж от джавы далеко ушел и активно развивается.
Кстати, есть пример удачного вписывания ADT и паттерн-матчинга в C#-подобный язык - Haxe. Так что.. шансы есть.

[identity profile] permea-kra.livejournal.com 2015-08-13 04:39 pm (UTC)(link)
Никогда не чувствовал необходимости.

Впрочем, у меня кода редко больше 500 строк набегает в один прожект (ну не программист я, не программист)

[identity profile] thedeemon.livejournal.com 2015-08-13 04:50 pm (UTC)(link)
Необходимости нет, разумеется, можно ж и на перфокартах все делать. Но уровень удобства разный, и кто один раз к такому привыкнет, потом уже без этого так некомфортно, что аж кушать не могут.

[identity profile] metaclass.livejournal.com 2015-08-13 04:56 pm (UTC)(link)
>Замыкания в C# замыкают не значения, а ссылки на переменные!

Ооо, это известный прикол. "Вышел из цикла, и все переменные указывают на значение в последней итерации".
причем что-то вроде int j=i; внутри цикла от этого помогает.

[identity profile] thedeemon.livejournal.com 2015-08-13 04:57 pm (UTC)(link)
А где замыкания с _мутабельными_ переменными работают иначе?
Разве что в С++, где можно явно выбирать между ссылкой и копией.

[identity profile] metaclass.livejournal.com 2015-08-13 04:59 pm (UTC)(link)
Нужна, чтобы продать язык менеджерам и команде.
Хороший инструментарий сразу дает много очков.
Я вот обнаружил что rust не умеет делать и использовать отладочные символы под виндой - это гарантированные проблемы в будущем, когда надо будет в сдохший продакшен тупить.

[identity profile] metaclass.livejournal.com 2015-08-13 05:12 pm (UTC)(link)
Там же и работают. Только переменную внутри тела цикла или делегата переприсвоить надо :)

[identity profile] thedeemon.livejournal.com 2015-08-13 05:20 pm (UTC)(link)
Это не "иначе", необходимость в ручном копировании есть следсвие замыкания-по-ссылке.

[identity profile] jdudzik.livejournal.com 2015-08-13 05:34 pm (UTC)(link)
Да-да-да, у заказчика бесконечные деньги, он готов оплачивать разработку велосипедов, библиотек для элементарных вещей и прочее прочее прочее

Языки без IDE не нужны. Нет IDE и библиотек - нет языка.

[identity profile] berezovsky.livejournal.com 2015-08-13 05:46 pm (UTC)(link)
Технологии развиваются не объективно, а субъективно. Это целенаправленный курс, начатый в средние века, чтобы обеспечить постоянный рост экономической модели.

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

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

[identity profile] vp.livejournal.com 2015-08-13 06:11 pm (UTC)(link)
Неправильная аналогия. Зачем нужны трактора, если есть плуг и седельный тягач.

[identity profile] jdudzik.livejournal.com 2015-08-13 06:41 pm (UTC)(link)
Так не заводится ваш тягач.

[identity profile] permea-kra.livejournal.com 2015-08-13 06:47 pm (UTC)(link)
Я ничего не знаю про ваших заказчиков, но для говносайтов в хаскеле все есть, для говносервисов с РЕСТ АПИ тоже все есть.

Если для использования языка нужна ИДЕ - это плохой, негодный язык, который не нужен. Ну кроме как для оправдания маркетинговых бюджетов и пложения эмагаров.

[identity profile] jdudzik.livejournal.com 2015-08-13 06:58 pm (UTC)(link)
ИДЕ нужна для двух вещей:

- удобство
- скорость
Edited 2015-08-13 18:59 (UTC)

[identity profile] permea-kra.livejournal.com 2015-08-13 07:08 pm (UTC)(link)
Вот если язык настолько неудобный, что для него нужна ИДЕ - то нафиг нужен такой язык?

[identity profile] jdudzik.livejournal.com 2015-08-13 07:16 pm (UTC)(link)
Я пробовал и Скалу. и Хаскел. И могу авторитетно сказать - не нужны нафиг.

Скала была бы нужна, если бы был IDE. Но ни один из двух существующих не умеет запустить Hello world. Командная строка не умеет запустить программу из > 1 файла.

Хаскелл не умеет в наследование. Simula 67 умела, а Haskell 2015 уже не умеет. Прогресссссссс

[identity profile] metaclass.livejournal.com 2015-08-13 08:03 pm (UTC)(link)
Наследование в хаскеле вроде бы невозможно, типовыводилка не разрешает. Если сделать наследование - получится многословно и с обязательными аннотациями, как в скале.

Page 3 of 8