metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2011-10-28 06:34 pm

Интересное мнение про Haskell

http://neugierig.org/software/blog/2011/10/why-not-haskell.html
http://www.reddit.com/r/programming/comments/lfm1k/why_not_haskell/

У меня на данный момент с хаскелем забавный мозговой тупик: не совсем понимаю, как писать идиоматический код.

Т.е. например, разговор с девайсом по RS232 я могу написать в лоб, со сплошным IO, могу оформить с кошерными iteratees (хотя от типов и там и в coroutines глаза кровоточат), по идее, если покопаться, можно придумать еще несколько способов "красиво, строго, надежно" оформить разговор по известному протоколу, но в итоге то, что подразумевает повторное использование и статические гарантии, выглядит как ад из типов, а то что понятно - выглядит точно так же, как эта самая программа написанная на другом языке, с точностью до синтаксиса )

Вообще, от софта хочется простого: кроссплатформенность(винда/линукс), никаких JRE/Mono/CLI/интерпретаторов питонов/рубей, минимум зависимостей, отсутствие ручной работы с выделением-удалением памяти, нормальные строки, более-менее строгие типы.

[identity profile] theiced.livejournal.com 2011-10-29 08:47 am (UTC)(link)
аргументируйте.

* кроссплатформенность(винда/линукс) - чек
* никаких JRE/Mono/CLI/интерпретаторов питонов/рубей - чек
* минимум зависимостей - чек
* отсутствие ручной работы с выделением-удалением памяти - чек
* нормальные строки - чек
* более-менее строгие типы - чек

вроде всему запрошенному удовлетворяет.

[identity profile] avnik.livejournal.com 2011-10-29 08:49 am (UTC)(link)
Не противоречит тому, что он не нужен.

На самом деле -- задачи ребе решаются питоном, притом примерно за вечер.

[identity profile] theiced.livejournal.com 2011-10-29 08:51 am (UTC)(link)
питоном решаются задачи увеличения кол-ва говно во вселенной. хуже питона может быть только перл.

[identity profile] avnik.livejournal.com 2011-10-29 08:52 am (UTC)(link)
Аргументируйте.

[identity profile] theiced.livejournal.com 2011-10-29 09:04 am (UTC)(link)
для начала назовите что нибудь хорошее эндюзерское писанное на пистоне. далее, я уже приводил этот аргумент многократно, гвидо ван пидороссум собственно тупой пидорас. и табы и пробелы можно использовать в одном файле одновременно. всё.

[identity profile] metaclass.livejournal.com 2011-10-29 09:07 am (UTC)(link)
Табы+пробелы - уже ад :)

[identity profile] metaclass.livejournal.com 2011-10-29 09:08 am (UTC)(link)
А, ну еще то, что файл ломается на ошибочно введенной буковке только когда при исполнении доберется до него, я настолько туп и ленив в плане QA, что на таких языках писать не могу :)

[identity profile] theiced.livejournal.com 2011-10-29 09:09 am (UTC)(link)
это собсно не минус - оно даёт другие плюсы ;] дак тайпинги там например.

[identity profile] avnik.livejournal.com 2011-10-29 09:10 am (UTC)(link)
eve-online написано на пистоне чуть менее чем полностью. Куда уж более эндюзерское то?
Уебпроекты пишутся на пистоне тоже вполне заебательски.
Вот гуй на пистоне я пейсать не пробовал, тут не знаю.

[identity profile] theiced.livejournal.com 2011-10-29 09:12 am (UTC)(link)
именно поэтому там переодически начинаются слайдшоу при некоторых условиях, ага.
хуйтам. никто не пишет. есть руби жеж.
весь гуй говно. народная примета, если гуйня выглядит как говно, тупит постоянно и переодически падает нахуя - в 9 из 10 случаев она писана на пистоне.

[identity profile] avnik.livejournal.com 2011-10-29 09:13 am (UTC)(link)
Для QA есть юниттесты.
Юниттесты на пистоне (прогон) вполне сопоставимы с временем компиляции тех же плюсов. (если не быстрее)

Ну и кто тебе скажет заранее --
foo.baz это опечатка, или у тебя "baz" где-то ловится внутри __getattr__

[identity profile] theiced.livejournal.com 2011-10-29 09:16 am (UTC)(link)
>Юниттесты на пистоне (прогон) вполне сопоставимы с временем компиляции тех же плюсов. (если не быстрее)

пионерский бред. к одному нашему проекту юнит тесты работали примерно 3-4 часа. около 100К ассертов. привет.

>foo.baz это опечатка, или у тебя "baz" где-то ловится внутри __getattr__

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

[identity profile] avnik.livejournal.com 2011-10-29 09:17 am (UTC)(link)
Cлайдшоу там от оверблоба же ;)

Вот я не видел практически гуя на пистоне.
(впрочем охотно верю -- гуй то ты тестами не покроешь)
У меня впрочем из гуя только rxvt, браузер да емакс (а он то точно на православном лиспе)

[identity profile] avnik.livejournal.com 2011-10-29 09:21 am (UTC)(link)
пионерский бред. к одному нашему проекту юнит тесты работали примерно 3-4 часа. около 100К ассертов. привет.

Плонь что ли? ;)
(ну или что-то соразмерное)

[identity profile] metaclass.livejournal.com 2011-10-29 09:22 am (UTC)(link)
Да, вот на юниттесты у меня редко хватает терпения. :)

[identity profile] cp-poster.livejournal.com 2011-10-29 09:25 am (UTC)(link)
Аскет.

Gajim, Exaile примеры GUI на петоне.

[identity profile] avnik.livejournal.com 2011-10-29 09:26 am (UTC)(link)
А без юниттестов (ну или хотя бы функциональных) в какой-то момент почти любое изменение начинает давать регрессию ;(

[identity profile] avnik.livejournal.com 2011-10-29 09:30 am (UTC)(link)
Угумс. Я последнее время тяготею к аскетизму.
Мне mpg123 в качестве плеера музыки вполне хватает.
IM тоже как-то centerim -- привык к нему (хотя он и убогий местами)

[identity profile] theiced.livejournal.com 2011-10-29 09:33 am (UTC)(link)
вот эксайл охуенный пример. крэшится нахуй раз в час, ага.

[identity profile] cp-poster.livejournal.com 2011-10-29 09:39 am (UTC)(link)
Ну, у меня вроде не крашился. Но он не умеет cue, так что селяви.

Gajim хороший.

[identity profile] tzirechnoy.livejournal.com 2011-10-29 10:14 am (UTC)(link)
Хм. Ну, возьмите C.
Я, кстати, серьёзен -- с типами из пристойного и работающего остались C, Haskell и ocaml. Ах, ну да, говорят, ещё scala есть -- я её не пробовал, очень возможно, что оно того стоит (но под Вашы критэрии не подходит).

Только, рэбе, зачем Вам типы?

PS А идиоматический код пишэтся примерно как везде. Сначала ты идиоматически пишэшь, что тебе нужно (возможно, дажэ без привязки к языку). Потом идиоматически дополняешь это какими-нибудь уточнениями (можно с операторами любимого языка, кстати) до такого, чтобы было понятно и однозначно при чтении человеком. Потом приводишь примерно к синтаксису твоего языка, производя наиболее тривиальные замены слов и операторов на существующие (включая всякий pattern-matching или template generators, если это применимо и удобно). Потом в отдельных файлах дописываешь такие подпорки, чтобы всё остальное, что ещё не компилируется -- было тривиально заменить на вызовы этих подпорок, чтобы оно компилировалось.

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

В общем, по сумме: Хаскель сложэн. Для меня сложэн. Вот такой вот я негениальный программист, чо там.

[identity profile] anatoly borodin (from livejournal.com) 2011-10-29 10:20 am (UTC)(link)
Picard ишо.

[identity profile] tzirechnoy.livejournal.com 2011-10-29 10:20 am (UTC)(link)
Тут надо заметить, что программы на питоне, по факту, весьма отстойны. Ну, вот как-то так неизменно выходит.

От рубей меня Ш-шпанчик миловал -- но, учитывая, что мы говорим руби, а подразумеваем рельсы, а рельсы -- это фрэймворк для веба, а фреймворки, особенно с ручной правкой автогенерированного кода я считаю сумасшэствием, а веб мне сейчас не нужэн -- получается, что руби для меня и не существует.

Так вот, по сравнению с остальными обычными cliдесктопными динамическими языками (erlang,perl,tcl,lua,lisp) питон -- это тупой, падучий, тормозной отстой с кривыми синтаксисом и херовой исторической совместимостью. Так что попробуйте что-нибудь ещё.

[identity profile] metaclass.livejournal.com 2011-10-29 10:20 am (UTC)(link)
По хаскелю все так и есть, увлечение определением операторов до добра не доводит.

[identity profile] tzirechnoy.livejournal.com 2011-10-29 10:37 am (UTC)(link)
Я так и не понял, что ты имел в виду, приводя пример безсмысленного перлового кода.

Page 4 of 7