Запретить жабу, дотнет, пхп, перл и крестики, только ФП, только хардкор
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
Пройдет время, некоторым не повезет, и они встретят кризис среднего возраста в одиночестве, платя алименты ушедшей жене. Когда-то давно она прочитала в Космо, что программисты — это новые рок-звезды, но ушла, когда узнала что ее муж, унылый похапешник, не комитит на гитхаб. Другим повезет: они смогут проскочить в тимлиды, и руководство заткнет ими купленный слот на отраслевой конференции. Там они самоутвердятся, рассказав молодым, что унылыми быть круто. И спираль уныния выйдет на новый виток, засосав еще больше классных ребят.
Как я уже неоднократно писал - все эти "интересы бизнеса" и "проверенные инженерные решения" - это отмазки неосиляторов, унылых кольчатых червей-менеджеров и повышение откато-попилоемкости проекта.
Пройдет время, некоторым не повезет, и они встретят кризис среднего возраста в одиночестве, платя алименты ушедшей жене. Когда-то давно она прочитала в Космо, что программисты — это новые рок-звезды, но ушла, когда узнала что ее муж, унылый похапешник, не комитит на гитхаб. Другим повезет: они смогут проскочить в тимлиды, и руководство заткнет ими купленный слот на отраслевой конференции. Там они самоутвердятся, рассказав молодым, что унылыми быть круто. И спираль уныния выйдет на новый виток, засосав еще больше классных ребят.
Как я уже неоднократно писал - все эти "интересы бизнеса" и "проверенные инженерные решения" - это отмазки неосиляторов, унылых кольчатых червей-менеджеров и повышение откато-попилоемкости проекта.
no subject
Неверно. Наследование нужно, чтобы тысячу раз не писать один и тот же код.
Реализовывать можно по разному. Можно жёсткое, как в C++/Java. Можно duck typing, как в Go. Можно как в Python. Можно через прототип как в JavaScript. Но везде одно и то же преимущество: можно унаследовать, использовать родительский код и не задумываясь создать в любом месте программы.
В Haskell этого нет и не будет. В каждом случае надо отдельно ломать голову - как бы это написать, чтобы уважаемый язык соизволил понять, какой тип в данном случае нужен.
no subject
Чтобы не писать один и тот же код, нужен полиморфный код. Т.е. код, максимально абстрагированный от конкретики внутреннего устройства входных данных, опирающийся на переданный словарь. Наследование - это один из способов реализации полиморфизма, и далеко не самый удобный. Полиморфизм и неявная передача словаря в хаскеле есть - чего ж больше?
Даже в С++ для написания реюзабельного кода гораздо удобней использовать генерики на шаблонах, чем наследование.
> В каждом случае надо отдельно ломать голову - как бы это написать, чтобы уважаемый язык соизволил понять, какой тип в данном случае нужен.
Это просто ложь. Нужно ломать голову, чтобы сказать что-то осмысленное - ну так это везде так. Скажите спасибо компилятору, что он (в отличии от руби, например) может отловить, когда вы говорите явную глупость.
no subject
А вот и не всегда
> Это просто ложь. Нужно ломать голову, чтобы сказать что-то осмысленное - ну так это везде так. Скажите спасибо компилятору, что он (в отличии от руби, например) может отловить, когда вы говорите явную глупость.
Нужно, что машина подчинялась, а я - приказывал. И чтобы я мог быстро сесть и написать что надо из предметной области, не размышляя, как же мне монаду за лямбду завести.
no subject
Если машина при этом не будет делать должных проверок, получится как обычно в JS, питоне и подобных: миллионы человекочасов втыкания в Undefined is not a function.
no subject
Параметрический полиморфизм и тайпклассы (в которых таки есть наследование) в хаскеле вроде неплохо с этим справляются. В отличие от того же Go, про хаскель я как-то не встречал жалоб "о, надо один и тот же код писать много раз".
no subject
no subject
no subject
Ну да, программист не должен работать над предметной областью. Программист наверное должен язык задрачивать годами. Потому что главное в проекте не заказчик, а компилятор
no subject
no subject
В случае Хаскелла - отдельная долботня с каждой библиотекой.
Вообще, сравнивать языки - гиблое дело, их уже сравнили рынок и индустрия. C++, C#, Go, Rust, Python, Java, JavaScript - заняли свою нишу. Чистые ФП не были нужны 10 лет назад и не будут нужны сейчас.
Даже SICP уже давно на Python. Как оказалось, Scheme там был нужен не потому, что LISP круче, а потому что простой и компиляторы были чуть ли не под Spectrum
no subject
Да, в этом случае кое-что написать можно.