metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2013-09-14 08:17 am

Хаскельное

http://vit-r.livejournal.com/679524.html?thread=3691364#t3691364
решили на прошлой работе трое таки попробовать Хаскель, для неспешной задачи. генерация DDL, DML c скриптами SQL. Бились, бились, - но сделали, и был восторг! Потом, затянула обычная работа, через месяцок нужно было добавить кое-чего... и никто из троих не смог понять как оно работает, и как же добавить.

Звучит похоже на правду. Хотя у меня и F# и Clojure в подобных задачах живут и развиваются без проблем.

[identity profile] trueblacker.livejournal.com 2013-09-14 05:55 am (UTC)(link)
использование хаскеля сродни отказу от хранения исходников - все равно их никто не сможет дорабатывать.

(это резюме поста, а не личная позиция, если что)

[identity profile] metaclass.livejournal.com 2013-09-14 06:06 am (UTC)(link)
Да смогут, никуда не денутся.
Если во всяких С, фокспро, абапах и 1с дорабатывают - то хаскель намного логичнее всего этого.

[identity profile] vit-r.livejournal.com 2013-09-14 07:01 am (UTC)(link)
Люди в С и фокспро привыкли писать комментарии. А Хаскель - это язык, "описывающий задачу", так что подобными мелочами никто не заморачивается. К тому же никто не знает, как для него рисовать диаграммы.

[identity profile] volodymir-k.livejournal.com 2013-09-14 07:52 am (UTC)(link)
насчёт рисования диаграмм в си, да хоть и фортрана -- как-то надо было мне быстро нарисовать типа блоксхемы

и встретился параметр-указатель на функцию... который берётся из разных интересных массивов, которые конфигурируются по вводу... вот как рисовать?


рисовать вызов замыкания с функциями в контексте ещё интереснее

[identity profile] vit-r.livejournal.com 2013-09-14 07:56 am (UTC)(link)
Графическое представление должно отвечать на вопрос "зачем?", а не на вопрос "как?"

Как что рисовать в отдельном конкретном случае, зависит от задачи.

[identity profile] dr-cha0s.livejournal.com 2013-09-14 08:49 am (UTC)(link)
А есть какие-то доказательства отсутсвия комментариев в хаскельном коде?
Такие диаграммы не подойдут? http://stackoverflow.com/questions/7427094/generate-diagrams-for-haskell-code

[identity profile] vit-r.livejournal.com 2013-09-14 02:40 pm (UTC)(link)
Пардон, где там диаграммы? И как это вообще соотносится с первоначальной посылкой?

Если я показываю какую-то диаграмму, то человек или видит картинку или выходит на неё по ссылке.

Добрые функциональные люди всегда уверены, что у меня дофига времени, разбираться, что они имели ввиду.

[identity profile] dr-cha0s.livejournal.com 2013-09-14 02:48 pm (UTC)(link)
Там средства для их создания, вторая ссылка в гугле. Не интересно? Ну так зачем спрашивать?
А с чего уважаемый дон решил, что я обязан ему разжёвывать информацию и преподностить на блюдечке с голубой каёмочкой?
Кстати, кто такие функциональные люди? :)

(no subject)

[identity profile] vit-r.livejournal.com - 2013-09-14 14:49 (UTC) - Expand

(no subject)

[identity profile] dr-cha0s.livejournal.com - 2013-09-14 14:56 (UTC) - Expand

(no subject)

[identity profile] vit-r.livejournal.com - 2013-09-14 15:01 (UTC) - Expand

(no subject)

[identity profile] dr-cha0s.livejournal.com - 2013-09-14 15:08 (UTC) - Expand

(no subject)

[identity profile] vit-r.livejournal.com - 2013-09-14 15:14 (UTC) - Expand

(no subject)

[identity profile] dr-cha0s.livejournal.com - 2013-09-14 16:05 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2013-09-14 15:57 (UTC) - Expand

(no subject)

[identity profile] dr-cha0s.livejournal.com - 2013-09-14 16:07 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2013-09-14 16:18 (UTC) - Expand

(no subject)

[identity profile] vit-r.livejournal.com - 2013-09-14 18:06 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2013-09-14 18:14 (UTC) - Expand

(no subject)

[identity profile] dr-cha0s.livejournal.com - 2013-09-14 18:20 (UTC) - Expand

(no subject)

[identity profile] vit-r.livejournal.com - 2013-09-14 18:50 (UTC) - Expand

[identity profile] thesz.livejournal.com 2013-09-14 09:20 am (UTC)(link)
У меня к каждой функции высшего уровня по несколько строк комментариев. В каждом файле есть шапка с названием, назначением (одна и более строк) и копирайтом. Это нормальная практика, я ее ввел для себя после разбирательств с gcc.

Плохой код можно найти везде. Вы сравниваете код, который вы контролируете (с комментариями) и чей-то ещё. Контролируйте код на Хаскеле, все будет хорошо.

[identity profile] vit-r.livejournal.com 2013-09-14 02:31 pm (UTC)(link)
Я сравниваю код, который я вижу в разных проектах и от разных людей. Это раз.

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

[identity profile] metaclass.livejournal.com 2013-09-14 02:37 pm (UTC)(link)
А что за методики? И применяет ли их кто-нибудь на практике?

(no subject)

[identity profile] vit-r.livejournal.com - 2013-09-14 14:59 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2013-09-14 15:54 (UTC) - Expand

(no subject)

[identity profile] theiced.livejournal.com - 2013-09-14 17:17 (UTC) - Expand

(no subject)

[identity profile] vit-r.livejournal.com - 2013-09-14 18:09 (UTC) - Expand

(no subject)

[identity profile] berezovsky.livejournal.com - 2013-09-14 18:18 (UTC) - Expand

(no subject)

[identity profile] vit-r.livejournal.com - 2013-09-14 18:51 (UTC) - Expand

[identity profile] thesz.livejournal.com 2013-09-14 04:58 pm (UTC)(link)
Методики уменьшения дефектов (любого рода) не имеют отношения к языку программирования.

(no subject)

[identity profile] vit-r.livejournal.com - 2013-09-14 18:01 (UTC) - Expand

(no subject)

[identity profile] thesz.livejournal.com - 2013-09-14 18:40 (UTC) - Expand

(no subject)

[identity profile] vit-r.livejournal.com - 2013-09-14 18:49 (UTC) - Expand

(no subject)

[identity profile] thesz.livejournal.com - 2013-09-14 19:10 (UTC) - Expand

(no subject)

[identity profile] antilamer.livejournal.com - 2013-09-14 19:39 (UTC) - Expand

(no subject)

[identity profile] vit-r.livejournal.com - 2013-09-14 19:57 (UTC) - Expand

(no subject)

[identity profile] antilamer.livejournal.com - 2013-09-14 20:25 (UTC) - Expand

(no subject)

[identity profile] vit-r.livejournal.com - 2013-09-14 20:28 (UTC) - Expand

(no subject)

[identity profile] antilamer.livejournal.com - 2013-09-14 20:34 (UTC) - Expand

(no subject)

[identity profile] vit-r.livejournal.com - 2013-09-14 20:37 (UTC) - Expand

(no subject)

[identity profile] antilamer.livejournal.com - 2013-09-14 20:46 (UTC) - Expand

(no subject)

[identity profile] vit-r.livejournal.com - 2013-09-14 21:02 (UTC) - Expand

(no subject)

[identity profile] antilamer.livejournal.com - 2013-09-14 21:10 (UTC) - Expand

(no subject)

[identity profile] vit-r.livejournal.com - 2013-09-14 21:38 (UTC) - Expand

(no subject)

[identity profile] geniepro.livejournal.com - 2013-09-16 10:19 (UTC) - Expand

(no subject)

[identity profile] vit-r.livejournal.com - 2013-09-16 11:06 (UTC) - Expand

(no subject)

[identity profile] vit-r.livejournal.com - 2013-09-16 11:08 (UTC) - Expand

(no subject)

[identity profile] thedeemon.livejournal.com - 2013-09-16 15:56 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2013-09-16 16:10 (UTC) - Expand

(no subject)

[identity profile] thedeemon.livejournal.com - 2013-09-16 16:25 (UTC) - Expand

(no subject)

[identity profile] vit-r.livejournal.com - 2013-09-16 21:20 (UTC) - Expand

(no subject)

[identity profile] rdia.livejournal.com - 2013-09-16 18:07 (UTC) - Expand

(no subject)

[identity profile] vit-r.livejournal.com - 2013-09-16 21:31 (UTC) - Expand

(no subject)

(Anonymous) - 2013-09-15 04:42 (UTC) - Expand

(no subject)

[identity profile] thedeemon.livejournal.com - 2013-09-16 15:58 (UTC) - Expand

(no subject)

[identity profile] rdia.livejournal.com - 2013-09-16 18:04 (UTC) - Expand

(no subject)

[identity profile] geniepro.livejournal.com - 2013-09-16 19:24 (UTC) - Expand

(no subject)

[identity profile] thesz.livejournal.com - 2013-09-16 21:20 (UTC) - Expand

(no subject)

[identity profile] rdia.livejournal.com - 2013-09-16 21:43 (UTC) - Expand

(no subject)

[identity profile] thesz.livejournal.com - 2013-09-17 04:24 (UTC) - Expand

(no subject)

[identity profile] rdia.livejournal.com - 2013-09-17 13:21 (UTC) - Expand

(no subject)

[identity profile] thesz.livejournal.com - 2013-09-17 13:47 (UTC) - Expand

(no subject)

[identity profile] geniepro.livejournal.com - 2013-09-16 19:28 (UTC) - Expand

[identity profile] nivanych.livejournal.com 2013-09-14 02:14 pm (UTC)(link)
Тов. Семён Пейтон-Дженс говорил как-то, что типы, это и есть UML для хаскеля! ;-)
Доля правды в этом есть.

[identity profile] vit-r.livejournal.com 2013-09-14 02:34 pm (UTC)(link)
Про UML есть много чего нелестного в моём журнале. Так что в этом смысле я полностью согласен.
Edited 2013-09-14 14:34 (UTC)

[identity profile] nivanych.livejournal.com 2013-09-14 03:50 pm (UTC)(link)
Не, это уже будет переиначиванием смысла.
В том контексте, это было что-то типа, что у "нас есть гораздо лучше, чем ваш этот UML".
Впрочем, такое сравнение напрямую некорректно, конечно.

[identity profile] antilamer.livejournal.com 2013-09-14 07:44 pm (UTC)(link)
Про то, что "никто" не заморачивается комментариями: это интересное заявление; какую методологию Вы бы предложили, чтобы это проверить?

[identity profile] vit-r.livejournal.com 2013-09-14 08:02 pm (UTC)(link)
Когда я увижу отраслевой или хотя бы внутрифирменный стандарт кодирования на Хаскеле и там будут описаны правила комментирования. (Причём, эти правила будут разумны.) Вот тогда я возьму "никто" назад.

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

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

[identity profile] antilamer.livejournal.com 2013-09-14 08:35 pm (UTC)(link)
> Когда я увижу отраслевой или хотя бы внутрифирменный стандарт
Странный критерий. Вот если [livejournal.com profile] thesz внедрит у себя в фирме такой стандарт, то возьмёте "никто" назад? :)

А почему не "когда я увижу проект на хаскелле с разумным количеством комментариев" ("разумным" = "не хуже, чем в среднем по индустрии в других языках")? Например, GHC или XMonad отлично прокомментированы.

(no subject)

[identity profile] vit-r.livejournal.com - 2013-09-14 20:36 (UTC) - Expand

(no subject)

[identity profile] antilamer.livejournal.com - 2013-09-14 20:48 (UTC) - Expand

(no subject)

[identity profile] vit-r.livejournal.com - 2013-09-14 21:01 (UTC) - Expand

(no subject)

[identity profile] antilamer.livejournal.com - 2013-09-14 21:10 (UTC) - Expand

(no subject)

[identity profile] vit-r.livejournal.com - 2013-09-14 21:40 (UTC) - Expand

(no subject)

[identity profile] geniepro.livejournal.com - 2013-09-16 10:26 (UTC) - Expand

(no subject)

[identity profile] vit-r.livejournal.com - 2013-09-16 11:11 (UTC) - Expand

[identity profile] anonim-legion.livejournal.com 2013-09-15 02:05 pm (UTC)(link)
>всё проходящее мимо меня, требует вникания в хитросплетения исходного кода,

Так это в любой незамысловатой конторе так. Любое ООО "Опа говносайт" так пишет. Начинаешь им писать развернутые комментарии - оне еще и фыркать начинают "зачем так много".

Что же касается именно thesz - это человек-москвич, с московской квартирой, который достиг дзена и самодостаточности. Участвовать в кодерских крысиных гонках и писать "чтоб вчера работало" ему нет нужды. Именно поэтому кстати функциональщики и не понимают нужд простых IT-рабов, они немножко по другому живут.

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

(no subject)

[identity profile] berezovsky.livejournal.com - 2013-09-15 14:17 (UTC) - Expand

(no subject)

[identity profile] berezovsky.livejournal.com - 2013-09-15 14:28 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2013-09-15 14:36 (UTC) - Expand

(no subject)

[identity profile] thesz.livejournal.com - 2013-09-15 15:13 (UTC) - Expand

(no subject)

[identity profile] thesz.livejournal.com - 2013-09-15 16:32 (UTC) - Expand

(no subject)

[identity profile] gineer.livejournal.com - 2013-10-20 08:23 (UTC) - Expand

(no subject)

[identity profile] vit-r.livejournal.com - 2013-09-15 15:13 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2013-09-15 15:36 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2013-09-15 15:57 (UTC) - Expand

(no subject)

[identity profile] berezovsky.livejournal.com - 2013-09-15 16:07 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2013-09-16 01:06 (UTC) - Expand

(no subject)

[identity profile] vit-r.livejournal.com - 2013-09-15 16:12 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2013-09-15 16:23 (UTC) - Expand

(no subject)

[identity profile] vit-r.livejournal.com - 2013-09-15 16:29 (UTC) - Expand

(no subject)

[identity profile] rdia.livejournal.com - 2013-09-15 14:45 (UTC) - Expand

(no subject)

[identity profile] vit-r.livejournal.com - 2013-09-15 15:02 (UTC) - Expand

(no subject)

[identity profile] rdia.livejournal.com - 2013-09-15 15:32 (UTC) - Expand

(no subject)

[identity profile] vit-r.livejournal.com - 2013-09-15 19:04 (UTC) - Expand

(no subject)

[identity profile] rdia.livejournal.com - 2013-09-15 20:23 (UTC) - Expand

(no subject)

[identity profile] berezovsky.livejournal.com - 2013-09-15 20:27 (UTC) - Expand

(no subject)

[identity profile] rdia.livejournal.com - 2013-09-15 20:36 (UTC) - Expand

(no subject)

[identity profile] berezovsky.livejournal.com - 2013-09-15 20:45 (UTC) - Expand

(no subject)

[identity profile] vit-r.livejournal.com - 2013-09-15 20:42 (UTC) - Expand

(no subject)

[identity profile] kurilka.livejournal.com - 2013-09-15 20:46 (UTC) - Expand

(no subject)

[identity profile] vit-r.livejournal.com - 2013-09-15 20:59 (UTC) - Expand

(no subject)

[identity profile] geniepro.livejournal.com - 2013-09-16 10:23 (UTC) - Expand

(no subject)

[identity profile] vit-r.livejournal.com - 2013-09-16 11:05 (UTC) - Expand

(no subject)

[identity profile] geniepro.livejournal.com - 2013-09-16 19:13 (UTC) - Expand

(no subject)

[identity profile] vit-r.livejournal.com - 2013-09-16 21:35 (UTC) - Expand

(no subject)

[identity profile] geniepro.livejournal.com - 2013-09-17 04:25 (UTC) - Expand

(no subject)

[identity profile] vit-r.livejournal.com - 2013-09-17 05:32 (UTC) - Expand

(no subject)

[identity profile] thesz.livejournal.com - 2013-09-17 10:12 (UTC) - Expand

(no subject)

[identity profile] kurilka.livejournal.com - 2013-09-17 10:30 (UTC) - Expand

(no subject)

[identity profile] thesz.livejournal.com - 2013-09-17 12:35 (UTC) - Expand

(no subject)

[identity profile] vit-r.livejournal.com - 2013-09-17 20:46 (UTC) - Expand

(no subject)

[identity profile] thesz.livejournal.com - 2013-09-17 21:18 (UTC) - Expand

(no subject)

[identity profile] vit-r.livejournal.com - 2013-09-17 21:26 (UTC) - Expand

(no subject)

[identity profile] thesz.livejournal.com - 2013-09-17 21:34 (UTC) - Expand

(no subject)

[identity profile] vit-r.livejournal.com - 2013-09-18 06:07 (UTC) - Expand

(no subject)

[identity profile] thesz.livejournal.com - 2013-09-18 11:31 (UTC) - Expand

(no subject)

[identity profile] vit-r.livejournal.com - 2013-09-18 20:30 (UTC) - Expand

[identity profile] jakobz.livejournal.com 2013-09-14 09:16 am (UTC)(link)
Ну хз. Любой код можно написать так, что потом не проссышь. Понятно что на языке, на котором в первый раз пишешь, и пять лет не разбирался в чужом говнокоде на нем же, сделать себе write-only шансы больше.

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

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

[identity profile] metaclass.livejournal.com 2013-09-14 09:25 am (UTC)(link)
Скрипты на неадекватных языках задалбывают, да.
Уж лучше DSL какой-нибудь наколбасить на обычном языке.

[identity profile] jakobz.livejournal.com 2013-09-14 09:42 am (UTC)(link)
Полноценный DSL - это зачастую уже перебор.

В любом языке с литералами для объектов/хешей и массивов можно же eDSL-ки еще делать. В C# еще expression trees есть, с ними вообще можно все круто слепить. Ну и когда у тебя eDSL, у тебя еще получается препроцессор бесплатный на том же языке.

[identity profile] metaclass.livejournal.com 2013-09-14 09:53 am (UTC)(link)
Да, я eDSL в виду имел.

[identity profile] thesz.livejournal.com 2013-09-17 12:42 pm (UTC)(link)
Expression trees весьма ограниченный инструмент, хотя и полезность его нельзя отрицать. На одних expression trees я довольно быстро сваял подобие LINQ для некоей гиперграфовой БД (с преобразованием запросов а-ля LINQ в текст запросов к сей БД).

Если бы была возможность преобразовывать тела функций с циклами for и тому подобного, это был бы номер. Тогда можно было бы делать совершенно удивительные вещи, типа кода с циклами, компилирующегося в код над OpenCL. Или делать триггеры для тех же БД.

[identity profile] jakobz.livejournal.com 2013-09-17 12:53 pm (UTC)(link)
>возможность преобразовывать тела функций с циклами for и тому подобного
В F# есть такое: http://msdn.microsoft.com/en-us/library/dd233182.aspx

В C# есть надежда на "Roslyn" - они собираются выкатить API к компилятору, с возможностью использовать его куски, или втыкаться в середину: http://msdn.microsoft.com/en-us/vstudio/roslyn.aspx