metaclass: (Default)
[personal profile] metaclass
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/интерпретаторов питонов/рубей, минимум зависимостей, отсутствие ручной работы с выделением-удалением памяти, нормальные строки, более-менее строгие типы.

Date: 2011-10-28 03:37 pm (UTC)
From: [identity profile] berezovsky.livejournal.com
от софта хочется чтобы работал

Не холивара ради

Date: 2011-10-28 03:45 pm (UTC)
From: [identity profile] schegloff.livejournal.com
А только спросить. Почему не JRE (если это конечно java Runtime Engine)? Потому что с RS232 плохо работать?

Re: Не холивара ради

Date: 2011-10-28 03:56 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Лень деплоить, помнить нужные версии, конфликтовать с уже установленным софтом, итд. На линуксах вообще какая-то содомия с разными версиями, проприетарные, открытые, что попало.
Я сторонник деплоймента методом "распаковали и работает".

Понятно

From: [identity profile] schegloff.livejournal.com - Date: 2011-10-28 03:58 pm (UTC) - Expand

Date: 2011-10-28 03:46 pm (UTC)
From: [identity profile] sgalitsky.livejournal.com
> JRE/Mono/CLI/интерпретаторов питонов/рубей
- ребе все это попробовал и - "никак"? две последние же - просто сплошные няшечки..

Date: 2011-10-28 03:57 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Пробовал. Не люблю интерпретаторы и динамические языки.

(no subject)

From: [identity profile] sgalitsky.livejournal.com - Date: 2011-10-28 04:27 pm (UTC) - Expand

(no subject)

From: [identity profile] cp-poster.livejournal.com - Date: 2011-10-28 06:25 pm (UTC) - Expand

(no subject)

From: [identity profile] sgalitsky.livejournal.com - Date: 2011-10-28 06:27 pm (UTC) - Expand

(no subject)

From: [identity profile] cp-poster.livejournal.com - Date: 2011-10-28 06:50 pm (UTC) - Expand

(no subject)

From: [identity profile] sgalitsky.livejournal.com - Date: 2011-10-28 07:01 pm (UTC) - Expand

(no subject)

From: [identity profile] cp-poster.livejournal.com - Date: 2011-10-28 07:07 pm (UTC) - Expand

(no subject)

From: [identity profile] sgalitsky.livejournal.com - Date: 2011-10-28 07:13 pm (UTC) - Expand

(no subject)

From: [identity profile] cp-poster.livejournal.com - Date: 2011-10-28 08:23 pm (UTC) - Expand

(no subject)

From: [identity profile] tzirechnoy.livejournal.com - Date: 2011-10-29 10:20 am (UTC) - Expand

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2011-10-29 03:13 pm (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-29 03:15 pm (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-29 03:16 pm (UTC) - Expand

(no subject)

From: [identity profile] tzirechnoy.livejournal.com - Date: 2011-10-29 03:33 pm (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-29 03:36 pm (UTC) - Expand

(no subject)

From: [identity profile] sgalitsky.livejournal.com - Date: 2011-10-30 01:37 pm (UTC) - Expand

(no subject)

From: [identity profile] tzirechnoy.livejournal.com - Date: 2011-10-31 07:10 am (UTC) - Expand

(no subject)

From: [identity profile] sgalitsky.livejournal.com - Date: 2011-10-30 01:41 pm (UTC) - Expand

(no subject)

From: [identity profile] anatoly borodin - Date: 2011-10-30 02:38 pm (UTC) - Expand

(no subject)

From: [identity profile] sgalitsky.livejournal.com - Date: 2011-10-30 02:48 pm (UTC) - Expand

(no subject)

From: [identity profile] anatoly borodin - Date: 2011-10-30 02:57 pm (UTC) - Expand

(no subject)

From: [identity profile] sgalitsky.livejournal.com - Date: 2011-10-30 03:04 pm (UTC) - Expand

(no subject)

From: [identity profile] sgalitsky.livejournal.com - Date: 2011-10-30 03:09 pm (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-30 06:04 pm (UTC) - Expand

(no subject)

From: [identity profile] sgalitsky.livejournal.com - Date: 2011-10-30 09:38 pm (UTC) - Expand

(no subject)

From: [identity profile] f-dv.livejournal.com - Date: 2011-10-31 06:07 am (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-30 05:25 pm (UTC) - Expand

(no subject)

From: [identity profile] sgalitsky.livejournal.com - Date: 2011-10-30 02:58 pm (UTC) - Expand

Date: 2011-10-28 03:55 pm (UTC)
From: [identity profile] vaddimka.livejournal.com
я б на плюсах запилил
boost + boost.asio
там есть свои скелеты в шкафу (например с таймерами), но оно работает
туда же можно coroutines через свитч-кейсы сделать, вот типа как тут: http://blog.think-async.com/2010/03/potted-guide-to-stackless-coroutines.html

Я понимаю что функциональщики от плюсов будут нос воротить, но по мне так минимум вуду, g++ есть на любой платформе и буст собирается на подавляющем большинстве (ну вот только разве что под андроид слегка поизвращаться надо). Код вполне компактный и читабельный получается.

Date: 2011-10-28 03:58 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Сейчас придет айсед и скажет все что он думает про плюсы :)
Впрочем, если не извращаться, скорее всего, и на плюсах можно нормально писать.

(no subject)

From: [identity profile] fas-tm.livejournal.com - Date: 2011-10-28 04:07 pm (UTC) - Expand

(no subject)

From: [identity profile] vaddimka.livejournal.com - Date: 2011-10-28 04:17 pm (UTC) - Expand

(no subject)

From: [identity profile] paranoekk.livejournal.com - Date: 2011-10-28 05:01 pm (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2011-10-28 05:19 pm (UTC) - Expand

(no subject)

From: [identity profile] noop.livejournal.com - Date: 2011-11-07 08:02 pm (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-28 06:58 pm (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-28 07:03 pm (UTC) - Expand

(no subject)

From: [identity profile] permea-kra.livejournal.com - Date: 2011-10-28 07:38 pm (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-29 07:40 am (UTC) - Expand

(no subject)

From: [identity profile] nivanych.livejournal.com - Date: 2011-10-30 08:32 am (UTC) - Expand

(no subject)

From: [identity profile] noop.livejournal.com - Date: 2011-11-07 08:01 pm (UTC) - Expand

(no subject)

From: [identity profile] vaddimka.livejournal.com - Date: 2011-10-28 07:06 pm (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-28 07:08 pm (UTC) - Expand

(no subject)

From: [identity profile] vaddimka.livejournal.com - Date: 2011-10-28 07:12 pm (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-28 07:20 pm (UTC) - Expand

(no subject)

From: [identity profile] avnik.livejournal.com - Date: 2011-10-28 11:17 pm (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2011-10-29 07:37 am (UTC) - Expand

(no subject)

From: [identity profile] kurilka.livejournal.com - Date: 2011-10-29 08:00 am (UTC) - Expand

(no subject)

From: [identity profile] avnik.livejournal.com - Date: 2011-10-29 08:06 am (UTC) - Expand

(no subject)

From: [identity profile] kurilka.livejournal.com - Date: 2011-10-29 08:11 am (UTC) - Expand

(no subject)

From: [identity profile] avnik.livejournal.com - Date: 2011-10-29 08:13 am (UTC) - Expand

(no subject)

From: [identity profile] kurilka.livejournal.com - Date: 2011-10-29 08:27 am (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-28 07:13 pm (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-28 07:15 pm (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-28 07:15 pm (UTC) - Expand

(no subject)

From: [identity profile] black-angel-by.livejournal.com - Date: 2011-10-29 08:33 am (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-29 08:45 am (UTC) - Expand

(no subject)

From: [identity profile] tzirechnoy.livejournal.com - Date: 2011-10-29 10:37 am (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-29 02:53 pm (UTC) - Expand

(no subject)

From: [identity profile] tzirechnoy.livejournal.com - Date: 2011-10-29 03:35 pm (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-29 03:37 pm (UTC) - Expand

(no subject)

From: [identity profile] tzirechnoy.livejournal.com - Date: 2011-10-30 08:07 am (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-30 08:09 am (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-29 03:21 pm (UTC) - Expand

(no subject)

From: [identity profile] tzirechnoy.livejournal.com - Date: 2011-10-29 03:38 pm (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-29 03:42 pm (UTC) - Expand

(no subject)

From: [identity profile] tzirechnoy.livejournal.com - Date: 2011-10-30 08:01 am (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-30 08:09 am (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-28 07:16 pm (UTC) - Expand

(no subject)

From: [identity profile] noop.livejournal.com - Date: 2011-11-07 08:08 pm (UTC) - Expand

(no subject)

From: [identity profile] vaddimka.livejournal.com - Date: 2011-11-07 11:04 pm (UTC) - Expand

Date: 2011-10-28 04:06 pm (UTC)
From: [identity profile] gds.livejournal.com
на хаскеле обычно не пишут идиоматический код, как я понял.

а так -- окамл, чо. (только revised syntax, сразу говорю.)
Со строками --
1. куча пакетов дают нормальные строки (batteries, camomile, ocaml-ropes)
2. для внутренних целей я сделал модуль типа Strings.UTF8, который пока даёт только "взять строку из последовательности байтов", "склеить две строки", "склеить список строк", "вывести как последовательность байтов". Но это минимализм, легко можно больше (см. п. 1), но обычно незачем (как-то взял и померил, был удивлён). Я пока использую этот минимализм, и только в очень редких случаях вижу нужду разбираться в том, как взять n-ный символ строки или как перевести строку в верхний регистр (а там -- есть camomile)
3. у меня есть самописный "enumeratee byte uchar 'a" -- в том числе для RS232 применимо, только enumerator взять нужный

Открыть файл "\\какая-то-шняга\COM1" -- не проблема. На худой конец -- в качестве хобби нарисую биндинги для конкретно ком-портов, ибо я чётко представляю, как это делать. Благо, это очень просто, и винапи на эту тему гуглится очень легко, и польза для коммунити таки будет.

Date: 2011-10-28 04:26 pm (UTC)
From: [identity profile] nicka-startcev.livejournal.com
Кстати, интересно, почему никто до сих пор не сделал под виндой "типа-драйвер", чтоб поиметь аналог линуксовых /dev/* по которым можно ls,read,write итп?

(no subject)

From: [identity profile] gds.livejournal.com - Date: 2011-10-28 04:46 pm (UTC) - Expand

(no subject)

From: [identity profile] nicka-startcev.livejournal.com - Date: 2011-10-28 05:04 pm (UTC) - Expand

(no subject)

From: [identity profile] gds.livejournal.com - Date: 2011-10-28 05:43 pm (UTC) - Expand

(no subject)

From: [identity profile] tzirechnoy.livejournal.com - Date: 2011-10-29 10:38 am (UTC) - Expand

(no subject)

From: [identity profile] nicka-startcev.livejournal.com - Date: 2011-10-29 10:45 am (UTC) - Expand

(no subject)

From: [identity profile] tzirechnoy.livejournal.com - Date: 2011-10-29 11:05 am (UTC) - Expand

(no subject)

From: [identity profile] nicka-startcev.livejournal.com - Date: 2011-10-29 11:28 am (UTC) - Expand

Date: 2011-10-28 04:27 pm (UTC)
From: [identity profile] nicka-startcev.livejournal.com
Интересно, почему явистов еще не карают массово за некроссплатформенность, когда между разными JVM софт не переносится?

Date: 2011-10-28 06:38 pm (UTC)
From: [identity profile] eternal-leave.livejournal.com
в смысле между жрокитом, ойбиэмской и сано-оракловой жавой? из них емнип только софт под третью обязан работать под первыми двумя

(no subject)

From: [identity profile] usovalx.livejournal.com - Date: 2011-10-28 06:49 pm (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2011-10-28 07:02 pm (UTC) - Expand

(no subject)

From: [identity profile] nicka-startcev.livejournal.com - Date: 2011-10-28 08:31 pm (UTC) - Expand

(no subject)

From: [identity profile] nicka-startcev.livejournal.com - Date: 2011-10-28 08:31 pm (UTC) - Expand

Date: 2011-10-28 04:51 pm (UTC)
From: (Anonymous)
> кроссплатформенность(винда/линукс), никаких JRE/Mono/CLI/интерпретаторов питонов/рубей, минимум зависимостей, отсутствие ручной работы с выделением-удалением памяти, нормальные строки, более-менее строгие типы.
Няшная сишечка во все поля. Ну и boehm-gc сверху.

Date: 2011-10-28 05:19 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Нутром чую, что это расово верный подход.

Date: 2011-10-28 05:44 pm (UTC)
From: [identity profile] gds.livejournal.com
можно подробнее про строки и типы в сишечьке?

(no subject)

From: [identity profile] cp-poster.livejournal.com - Date: 2011-10-28 06:31 pm (UTC) - Expand

Date: 2011-10-28 05:07 pm (UTC)
From: [identity profile] plumqqz.livejournal.com
"О чем я еще до войны говорил с господином окружным начальником..."

Date: 2011-10-28 05:55 pm (UTC)
From: (Anonymous)
Я джва года жду такой язык. Суть такова: вообще, от софта хочется простого: кроссплатформенность(винда/линукс), никаких JRE/Mono/CLI/интерпретаторов питонов/рубей, минимум зависимостей, отсутствие ручной работы с выделением-удалением памяти, нормальные строки, более-менее строгие типы.... домики набигают эльфы и шоб графика как в крузисе.

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

Date: 2011-10-28 06:46 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Ну, в хаскелях-окамлах никаких виртуальных машин и сборщик мусора есть.
И в хаскеле FFI есть и кроссплатформенность и IO с кошерным epoll (до сих пор не могу раскопать, как менеджер IO в GHC на windows устроен).

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

(no subject)

From: [identity profile] permea-kra.livejournal.com - Date: 2011-10-28 07:42 pm (UTC) - Expand

(no subject)

From: [identity profile] gds.livejournal.com - Date: 2011-10-28 07:44 pm (UTC) - Expand

(no subject)

From: [identity profile] nicka-startcev.livejournal.com - Date: 2011-10-28 08:33 pm (UTC) - Expand

(no subject)

From: [identity profile] esil0x.livejournal.com - Date: 2011-10-28 10:18 pm (UTC) - Expand

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2011-10-29 03:38 pm (UTC) - Expand

Date: 2011-10-28 08:19 pm (UTC)
From: [identity profile] sheep2k.livejournal.com
Пишу на С++ и Qt и не страдаю от осознания того, что C++ - это мега-говно и позапрошлый век :-) Используя кутешные объекты можно даже про освобождение памяти не думать особо. И не тольео ГУЙ, можно и сервисы/демоны писать.
Работает вообще везде, по слухам, даже на Raspberry PI и прочих кофеварках.

Много раз пытался освоить питон/руби и прочую хренотень, но я такой тупой, что нормально ничего написать не получилось. Всегда кончалось тем, что в сердцах всё сносил нахрен и писал на Qt :-)

Date: 2011-10-28 08:27 pm (UTC)
From: [identity profile] max630.livejournal.com
при чтении сего мне вспомнился на днях читаный текст Бармина про SCO :)

(no subject)

From: [identity profile] sheep2k.livejournal.com - Date: 2011-10-28 08:33 pm (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-28 08:37 pm (UTC) - Expand

(no subject)

From: [identity profile] sgalitsky.livejournal.com - Date: 2011-10-28 09:03 pm (UTC) - Expand

Date: 2011-10-28 09:24 pm (UTC)
From: [identity profile] clayrat.livejournal.com
>кроссплатформенность(винда/линукс)
>никаких JRE/Mono/CLI/интерпретаторов питонов/рубей

попахивает взаимоисключающими параграфами
а как нащот LLVM?

также порицаю стремление к сборщику мусора
даешь линейные типы (точнее линейный вид)

Date: 2011-10-28 10:48 pm (UTC)
From: [identity profile] theiced.livejournal.com
это для марсиан. им ок, у них моск анатомически в жопе. а людям сложно и больно.

(no subject)

From: [identity profile] sgalitsky.livejournal.com - Date: 2011-10-29 01:19 am (UTC) - Expand

Date: 2011-10-29 06:11 am (UTC)
From: [identity profile] slonopotamus.livejournal.com
Как насчет ooc?

Date: 2011-10-29 10:47 am (UTC)
From: [identity profile] david-m.livejournal.com
Где ты их только находишь:)

(no subject)

From: [identity profile] slonopotamus.livejournal.com - Date: 2011-10-29 05:09 pm (UTC) - Expand

(no subject)

From: [identity profile] david-m.livejournal.com - Date: 2011-10-31 07:43 am (UTC) - Expand

(no subject)

From: [identity profile] slonopotamus.livejournal.com - Date: 2011-10-31 04:16 pm (UTC) - Expand

Date: 2011-10-29 07:42 am (UTC)
From: [identity profile] theiced.livejournal.com
внезапно - го.

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-29 08:47 am (UTC) - Expand

(no subject)

From: [identity profile] avnik.livejournal.com - Date: 2011-10-29 08:49 am (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-29 08:51 am (UTC) - Expand

(no subject)

From: [identity profile] avnik.livejournal.com - Date: 2011-10-29 08:52 am (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-29 09:04 am (UTC) - Expand

(no subject)

From: [identity profile] avnik.livejournal.com - Date: 2011-10-29 09:10 am (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-29 09:12 am (UTC) - Expand

(no subject)

From: [identity profile] avnik.livejournal.com - Date: 2011-10-29 09:17 am (UTC) - Expand

(no subject)

From: [identity profile] cp-poster.livejournal.com - Date: 2011-10-29 09:25 am (UTC) - Expand

(no subject)

From: [identity profile] avnik.livejournal.com - Date: 2011-10-29 09:30 am (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-29 09:33 am (UTC) - Expand

(no subject)

From: [identity profile] cp-poster.livejournal.com - Date: 2011-10-29 09:39 am (UTC) - Expand

(no subject)

From: [identity profile] anatoly borodin - Date: 2011-10-29 10:20 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2011-10-29 09:07 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2011-10-29 09:08 am (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-29 09:09 am (UTC) - Expand

(no subject)

From: [identity profile] gds.livejournal.com - Date: 2011-10-29 11:16 am (UTC) - Expand

(no subject)

From: [identity profile] avnik.livejournal.com - Date: 2011-10-29 09:13 am (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-29 09:16 am (UTC) - Expand

(no subject)

From: [identity profile] avnik.livejournal.com - Date: 2011-10-29 09:21 am (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-29 02:59 pm (UTC) - Expand

(no subject)

From: [identity profile] avnik.livejournal.com - Date: 2011-10-29 03:07 pm (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-29 03:08 pm (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2011-10-29 09:22 am (UTC) - Expand

(no subject)

From: [identity profile] avnik.livejournal.com - Date: 2011-10-29 09:26 am (UTC) - Expand

(no subject)

From: [identity profile] tzirechnoy.livejournal.com - Date: 2011-10-29 10:41 am (UTC) - Expand

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2011-10-29 03:32 pm (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-29 03:35 pm (UTC) - Expand

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

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

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

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

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

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

(no subject)

From: [identity profile] tzirechnoy.livejournal.com - Date: 2011-10-29 10:53 am (UTC) - Expand

(no subject)

From: [identity profile] gds.livejournal.com - Date: 2011-10-29 11:32 am (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-29 02:58 pm (UTC) - Expand

(no subject)

From: [identity profile] tzirechnoy.livejournal.com - Date: 2011-10-29 03:44 pm (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-29 03:49 pm (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2011-10-29 04:22 pm (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2011-10-30 05:09 am (UTC) - Expand

(no subject)

From: [identity profile] nivanych.livejournal.com - Date: 2011-10-30 09:20 am (UTC) - Expand

(no subject)

From: [identity profile] tzirechnoy.livejournal.com - Date: 2011-10-31 07:13 am (UTC) - Expand

Date: 2011-10-29 12:34 pm (UTC)

Date: 2011-11-07 08:22 pm (UTC)
From: [identity profile] noop.livejournal.com
сишка, работающие параллельно конечные автоматы на свичах и макросах, неблокирующий I/O, софтовые таймеры. все работает годами с кучкой модемов на компортах в одном потоке.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 16th, 2025 05:19 am
Powered by Dreamwidth Studios