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 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 итп?

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

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

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

Date: 2011-10-29 10:38 am (UTC)
From: [identity profile] tzirechnoy.livejournal.com
Так и в винде можно cat COM3: |...

А скорость в панэли управления задавать.

Date: 2011-10-29 10:45 am (UTC)
From: [identity profile] nicka-startcev.livejournal.com
ком3 можно, а флоп, раздел, лпт и многое другое так просто нельзя. Хотя..

Date: 2011-10-29 11:05 am (UTC)
From: [identity profile] tzirechnoy.livejournal.com
Можно. LPT это LPT1:, флоп и раздел -- \\.\A: и \\.\C:, у них жэ есть имена в стиле \Device\Harddisk0\Partition1 или \Device\Cdrom0, полный диск доступен по имени \Device\Harddisk0\Partition0

Date: 2011-10-29 11:28 am (UTC)
From: [identity profile] nicka-startcev.livejournal.com
можно. Но на них нельзя сделать ls -l.
Таких сущностей, кстати, намного больше. Запустите WinObjEx и посмотрите на "dosdevices". Вот и хочется всех их тупо отобразить на нормальное "просранство имён", где их можно будет не угадывать, а ковырять нормальными файловыми утилитами, теми же утилитами смотреть права доступа, итп.

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. 23rd, 2025 02:47 am
Powered by Dreamwidth Studios