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] berezovsky.livejournal.com 2011-10-28 03:37 pm (UTC)(link)
от софта хочется чтобы работал

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

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

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

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

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

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

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

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

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

Понятно

[identity profile] schegloff.livejournal.com 2011-10-28 03:58 pm (UTC)(link)
Ну тогда надо искать дальше.

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

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

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

[identity profile] fas-tm.livejournal.com 2011-10-28 04:07 pm (UTC)(link)
вообщем то это действительно меньшее из зол.
Потому что из списка придется смириться с "отсутствие ручной работы с выделением-удалением памяти" но это вообщем не проблема а с шаред_птр всякими и того проще.
Зато оно будет работать без магии.

[identity profile] vaddimka.livejournal.com 2011-10-28 04:17 pm (UTC)(link)
Айсед достаточно многие вещи считает говном. Насколько я понимаю, он админ, а не программист. Я ценю наличие ярко выраженного субъективного мнения у людей, но все-таки многое из этого приходится фильтровать.

По мне так C++ более автоматизирован чем pure C, но не приобрел неповоротливости языков класса Java. Что-то типа золотой середины. Но YMMV, как обычно.

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

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

[identity profile] sgalitsky.livejournal.com 2011-10-28 04:27 pm (UTC)(link)
прально. гамно руками надобно собирать.
и только - лично.

[identity profile] gds.livejournal.com 2011-10-28 04:46 pm (UTC)(link)
потому что кому она нахуй нужна, эта венда. Тем более писать драйвер. А для ком-портов надо ещё и ioctl (или как там его) поддерживать. В общем -- в топку. Проще для нормального языка реализовать нужные биндинги и забыть как вендовую специфику, так и линуксовую (с её ioctl). Так как нормальных языков, в целом, раз и обчёлся, это обычно несложно.

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

[identity profile] paranoekk.livejournal.com 2011-10-28 05:01 pm (UTC)(link)
Если так внимательно посмотреть, то все успешные люди, которые чего-то добились реально и получают от жизни кайф, ведут себя очень скромно. А школотообразное поведение айседа рисует ему очень хреновый имидж несостоявшегося человека с комплексами, которого жестко обижали в школе одноклассники. При чем безотносительно насколько это реально имеет место.

[identity profile] nicka-startcev.livejournal.com 2011-10-28 05:04 pm (UTC)(link)
иоцтл можно и отдельной утилитой.
Наиоцтл-ил скорость/чётность и тупо делаешь "cat /dev/ttyUSB0|grep -f filter|sed -f translate|gnuplot &"

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

[identity profile] metaclass.livejournal.com 2011-10-28 05:19 pm (UTC)(link)
Айсед программист :)

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

[identity profile] gds.livejournal.com 2011-10-28 05:43 pm (UTC)(link)
не вписывается в оригинальный птсо, требующий чотко бинарник на выходе. Понятно, что в моём дистрибутиве окамла всё это делается (кроме ioctl, ясен перчик), но это не очень хороший путь -- не тащить же мингв за собой.

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

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

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

[identity profile] cp-poster.livejournal.com 2011-10-28 06:25 pm (UTC)(link)
Как-то ты запутался. Говно это петон. Там говно если квакает, то оно утка (sic!)

Page 1 of 7