metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2011-11-21 10:07 am

(no subject)

Аааа, в моих интернетах не все преклоняются перед Хаскелем!:

потом товарищ уволится, или его наконец уволят, сей говнокод выкинут к ебеней матери и вменяемый программист перепишет обычным scanf'ом за пару часов, и спокойно пойдет на обед. код будет работать на порядки быстрее и занимать меньше будет, любой другой программист поймет и сможет поддерживать.
к чему вся эта рекурсивная самоебля?

[identity profile] nicka-startcev.livejournal.com 2011-11-21 08:04 am (UTC)(link)
>код будет работать на порядки быстрее и занимать меньше будет

И его можно будет собрать не только под ПК, но и под мелкий контроллер!

[identity profile] cp-poster.livejournal.com 2011-11-21 08:45 am (UTC)(link)
GHC умеет на выходе давать сишный код и llvm. Так что можно и для контроллера на хаскеле писать.

[identity profile] nicka-startcev.livejournal.com 2011-11-21 10:05 am (UTC)(link)
приём байтика из уарта (плюс, асинхронный ШИМ на еще двух ногах) в аттини11 влезет, или для этого llvm придется брать аж мегу, причем тридцатьвторую?

[identity profile] blackyblack.livejournal.com 2011-11-21 11:04 am (UTC)(link)
Сейчас кортексы например стоят дешевле 32-й меги. А для хаскеля на контроллере придется брать еще нечто пожирнее, потому что память ест непредсказуемо.

[identity profile] nicka-startcev.livejournal.com 2011-11-21 11:21 am (UTC)(link)
>Сейчас кортексы например стоят дешевле 32-й меги.

в 8..20 ногом корпусе бывают? Не везде нужно да и не везде лезет какой-нибудь plcc-48.


>А для хаскеля на контроллере придется брать еще нечто пожирнее, потому что память ест непредсказуемо.

Вот-вот. :) вместо простого быстрого решения, влезающего в 8ножку, мне предлагают нечто еще более эпическое чем 'propeller'(tm) :)

[identity profile] blackyblack.livejournal.com 2011-11-21 11:42 am (UTC)(link)
Самый хилый из кортексов в 20ногом корпусе. STM вроде планировали что-то малоногое.
Хаскель в контроллерах и правда не очень круто. А вот эрланг - интересненько. Можно было бы сети делать из контроллеров с удаленным обновлением кода.

[identity profile] nicka-startcev.livejournal.com 2011-11-21 11:48 am (UTC)(link)
>Можно было бы сети делать из контроллеров с удаленным обновлением кода.

это и на сях делается.
В случае всякой мелочи - бутлоадер или обмена скрипта для интерпретатора внутри контроллера.
в случае крупного - обычный линух с обычными ссш/дпкг/крон/итд.

20 ног иногда таки много. Чисто по размерам корпуса.

[identity profile] blackyblack.livejournal.com 2011-11-21 03:48 pm (UTC)(link)
На сях сеть контроллеров делается крайне нетривиально, а на эрланге прозрачно из коробки. Обновление кода делается с горячей заменой кода - ни один интерпретатор для контроллеров этого не умеет. Кроме того, нехилые возможности по удаленному администрированию, которым ссш сливает по полной. Кроме того продвинутый фейловер, что немаловажно для железа в поле. Кроме того ин-мемори хранилище данных, альтернатива которым для железа сейчас только Sqlite, что явный перебор.

20 ног многовато, да. Ну может сделают 8ногую версию когда-нибудь. Чтобы например I2C/UART/ADC мультиплексированные, а остальное питание, земля, сброс и кварц.

[identity profile] nicka-startcev.livejournal.com 2011-11-21 04:05 pm (UTC)(link)
>На сях сеть контроллеров делается крайне нетривиально

на сях уже всё сделано. Ставим линух и имеем готовую отлаженую инфраструктуру. (если контроллер достаточно жирный для линухов)

> нехилые возможности по удаленному администрированию

А можно весь список? ссш, естественно, не под виндой, а на нормальных ос.

> Кроме того ин-мемори хранилище данных, альтернатива которым для железа сейчас только Sqlite, что явный перебор.

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

>20 ног многовато, да. Ну может сделают 8ногую версию когда-нибудь. Чтобы например I2C/UART/ADC мультиплексированные, а остальное питание, земля, сброс и кварц.

Кварц зачастую не нужен. 2 питания, 1 ресет, остальные 5 ног мультиплексированные. Ну или ресет тоже мультиплексированная, но тогда программирование будет чуть затейливее чем у авр через spi.

[identity profile] blackyblack.livejournal.com 2011-11-21 04:26 pm (UTC)(link)
"Ставим линух и имеем готовую отлаженую инфраструктуру."
Почитай про распределенные приложения в Эрланге. Будешь удивлен. :)

"А можно весь список? ссш, естественно, не под виндой, а на нормальных ос."
Например, возможность поставить трейс на любой вызов не меняя кода. Сделать вызов процедуры прямо из шелла. Скомпилировать изменения в модуле также прямо из шелла и сделать горячую замену.

"кстати, а как у эрланга с гарантиями-реалтаймами?"
У Эрланга софт-риалтайм. Честно говоря, не совсем понимаю что это такое, но звучит круто. :)

[identity profile] si14.livejournal.com 2011-11-22 01:26 pm (UTC)(link)
У эрланга GC раздельный для каждого треда. Т.к. у идиоматических эрланг-тредов хип очень маленький обычно (зато тредов много), сборка мусора очень быстро отрабатывает (единицы микросекунд), причём виснет на это время только собираемый тред. Весь сетевой стек при этом продолжает работать (процесс может получать сообщения от сетевого стека, но не начинает их обрабатывать), поэтому в целом система никогда не делает пауз на GC.
В целом же Эрланг делался Эриксоном как раз для АТС, набранных из нескольких вычислительных нод и находящихся где-нибудь у чёрта на рогах. Отсюда удалённая консоль из коробки, отсюда возможность трейса всего и вся наживую, отсюда возможность замены любого кода прямо на лету, причём, возможно, с вызовом кода для смены состояния системы в новый формат. Отсюда куча разнообразных средств для обработки и изоляции ошибок, в т.ч. программиста.

[identity profile] nicka-startcev.livejournal.com 2011-11-22 01:44 pm (UTC)(link)
А минимальные требования к системе какие?

А почему эрланг так малопопулярен, если он так крут?

[identity profile] si14.livejournal.com 2011-11-22 01:53 pm (UTC)(link)
>А минимальные требования к системе какие?
Зависит от того, что нужно. Есть готовые сборки под Gumstix/Beagle вот тут http://www.erlang-embedded.com/ , под ARM компилируется без проблем вроде. По производительности можно брать «чуть быстрее cpython», если не брать в расчёт JIT (я не знаю, работает ли он на ARM). Слышал из первых уст, что кто-то пилит бортовые компьютеры для авто на Erlang'е, ну и Erlang Solutions много рассказывали о том, как они двигают Erlang в embedded — сборки, поддержка от вендоров железа, тестирование на разном железе. Думаю, если заинтересуют, можно с ними связаться.
>А почему эрланг так малопопулярен, если он так крут?
Потому что основная часть софта в количественном плане — сайты по продаже виагры на пхп, там эрланг не нужен.

(no subject)

[identity profile] si14.livejournal.com - 2011-11-22 13:57 (UTC) - Expand

(no subject)

[identity profile] si14.livejournal.com - 2011-11-22 14:47 (UTC) - Expand

(no subject)

[identity profile] si14.livejournal.com - 2011-11-22 14:56 (UTC) - Expand

(no subject)

[identity profile] blackyblack.livejournal.com - 2011-11-23 04:24 (UTC) - Expand

(no subject)

[identity profile] berezovsky.livejournal.com - 2011-11-23 09:12 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2011-11-23 09:12 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2011-11-23 09:13 (UTC) - Expand

(no subject)

[identity profile] blackyblack.livejournal.com - 2011-11-23 09:23 (UTC) - Expand

(no subject)

[identity profile] blackyblack.livejournal.com - 2011-11-23 09:49 (UTC) - Expand

(no subject)

[identity profile] dmzlj.livejournal.com - 2011-11-23 09:15 (UTC) - Expand

(no subject)

[identity profile] blackyblack.livejournal.com - 2011-11-23 09:21 (UTC) - Expand

(no subject)

[identity profile] dmzlj.livejournal.com - 2011-11-23 09:36 (UTC) - Expand

(no subject)

[identity profile] blackyblack.livejournal.com - 2011-11-23 10:24 (UTC) - Expand

(no subject)

[identity profile] dmzlj.livejournal.com - 2011-11-23 10:33 (UTC) - Expand

(no subject)

[identity profile] blackyblack.livejournal.com - 2011-11-23 10:31 (UTC) - Expand

(no subject)

[identity profile] dmzlj.livejournal.com - 2011-11-23 10:34 (UTC) - Expand

[identity profile] blackyblack.livejournal.com 2011-11-22 04:56 am (UTC)(link)
Даёшь птичьи языки в жизнь! Работа провернута нехилая, но неясно, что заставило автора вводить такие ограничения для размера используемой памяти и что помешало поставить нормальный контроллер на свои трекеры. HTTP клиент - звучит достаточно круто для такого экзотического языка, но если учесть специфику - то, что реально работа идет через отправку AT команд на GSM модуль - реализация HTTP клиента становится тривиальной и делается на любом языке вплоть до ассемблера.
Еще в качестве примера, у современных GSM модулей разрешено использовать внутренности мощного проессора (ARM9 как правило) для пользовательских нужд. Варианты языков для внутреннего приложения: C, C++, Lua, Python. В этом свете киллер-фича автора становится бледноватой. :)

[identity profile] metaclass.livejournal.com 2011-11-22 06:45 am (UTC)(link)
С контроллерами у [livejournal.com profile] dmzlj, насколько я помню, было что-то вроде "максимально удешевить производство, платы уже заказаны, другой контроллер не впихнешь".
А виртуальная машина это, в некотором роде, хорошее средство сжать код и сделать кошерные бутлоадеры да защиты от ошибок.

[identity profile] dmzlj.livejournal.com 2011-11-23 03:50 am (UTC)(link)
С контроллерами была еще цена и энергопотребление, и тут до сих пор неясно, чем заменить MSP430.

[identity profile] dmzlj.livejournal.com 2011-11-23 03:49 am (UTC)(link)
Самое интересное, что все ответы на вопросы есть в статье. Например, про контроллеры --- MSP430 в полном режиме потребляет в разы меньше, чем любой ARM-контроллер в режиме спячки.

По поводу "модемы разрешают" --- да вы сами видели эти модемы и что они разрешают? Не говоря о том, что использовать нетипизированные или динамически-типизированные языки для скриптинга устройств --- это бред.

[identity profile] blackyblack.livejournal.com 2011-11-23 04:31 am (UTC)(link)
"MSP430 в полном режиме потребляет в разы меньше, чем любой ARM-контроллер в режиме спячки."
Совсем не факт. На кортексах делают зигби контроллеры, где энергопотребление решает. Можно было бы порыться в даташитах, чтобы уточнить, но там не всегда честные цифры пишут. Кроме того, есть еще и энергопотребление модема. Спят они, конечно, неплохо, но там ведь внутри тот же ARM9 + DSP и на этом фоне экономить микроамперы при помощи MSP не представляется реально обоснованным. Опять же, нужны конкретные цифры, что вы реально сэкономили этим процом.

"По поводу "модемы разрешают" --- да вы сами видели эти модемы и что они разрешают? Не говоря о том, что использовать нетипизированные или динамически-типизированные языки для скриптинга устройств --- это бред."
Видели. Действительно, не впечатляют. Но возможностей, на мой взгляд больше, чем у вашего решения.

[identity profile] dmzlj.livejournal.com 2011-11-23 06:40 am (UTC)(link)
Какие вам нужны цифры? Данные по потреблению открыты и есть в даташитах, если им не верите, можно включить и померять. Мы меряли.

Насчет возможностей действительно интересно. Можете привести какие-нибудь доводы?

(no subject)

[identity profile] blackyblack.livejournal.com - 2011-11-23 06:56 (UTC) - Expand

(no subject)

[identity profile] dmzlj.livejournal.com - 2011-11-23 07:17 (UTC) - Expand

(no subject)

[identity profile] blackyblack.livejournal.com - 2011-11-23 08:38 (UTC) - Expand

(no subject)

[identity profile] dmzlj.livejournal.com - 2011-11-23 09:13 (UTC) - Expand

[identity profile] cp-poster.livejournal.com 2011-11-21 05:36 pm (UTC)(link)
:-) Ну ладно.

[identity profile] dmzlj.livejournal.com 2011-11-23 09:53 am (UTC)(link)
Нельзя, к сожалению. А то бы я писал, поверьте.

[identity profile] metaclass.livejournal.com 2011-11-21 11:05 am (UTC)(link)
Вот DSL на хаскеле под микроконтроллеры: http://hackage.haskell.org/package/copilot

[identity profile] nicka-startcev.livejournal.com 2011-11-21 11:22 am (UTC)(link)
так цэ ж дсл, а не хаскель. дсл можно и на сях наваять, и на каком-нибудь форте/постскрипте.

Кстати, на форте довольно няшные дсл-и выходят. Точнее, саму-то фортмашину лучше на сях писать, но..

[identity profile] thesz.livejournal.com 2011-11-21 09:46 pm (UTC)(link)
Не будут так много проверять, ни си, ни форт.