Home
friends [entries|archive|friends|userinfo]
phersus

[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

FP Web Frameworks [Янв. 4, 2010|11:42 pm]

lionet
[Tags|, , ]

Получают славу и пиар какие-то странные сущности, под названием «веб-фреймворки для [строгих] функциональных языков».

Вот, например, один: http://dmzlj.livejournal.com/90669.html (ocsigen / eliom). Подобные есть и для Хаскеля.

В чём с ними проблема? В том, что они подменяют цели.

Подобные фреймфорки ставят во главу угла валидность получающегося HTML результата. Да как же — на статическом языке достаточно просто сделать фреймфорк, который не допускает невалидный HTML по построению. Так как мы получаем эту самую валидность-по-построению в Haskell или OCaml почти задаром, а в других языках это сложновато, то эта фича тут же объявляется благой и используется в качестве галочки при сравнении с фреймворками для динамических языков.

Ориентирование на валидность HTML результата, надо сказать, не приносит никаких измеряемых бенефитов. Мы не можем даже говорить о том, что порождение гарантированного валидного контента устраняет какое-то количество ошибок времени выполнения! Все браузеры закрывают глаза на мелкие невалидности и продолжают функционировать как ни в чём не бывало даже при достаточно кривом HTML'е. XHTML, для которого валидность была жизненно важна, уже умер. Невалидность не является таким уж сильным источником проблем на практике, чтобы нужно было использовать тяжёлую артиллерию статически типизируемых языков! Мы явно отвлекаемся не на ту проблему.

Иногда подобные фреймворки заменяют привычность человеческого интерфейса на привычность механизма для программиста. Например, фреймворк и новый язык для веб-программирования Links (http://groups.inf.ed.ac.uk/links/), написанный соавтором Хаскеля, убивает понятие ЧПУ и передаёт состояние скрипта в продолжении, закодированном птичьим языком прямо в URL следующей страницы. Это даже комментировать не хочется — настолько нежизнеспособная конструкция получается для реальных применений. Хотелось бы думать, что пользователи игнорируют то, что у них в браузере в поле Location написано, а ссылками обмениваются через что-то типа digg или twitter. Но читаемость ссылок до сих пор важна, и с течением времени важность хорошо читаемой ссылки имеет тенденцию к повышению.

Что должен иметь развитый web framework в современных условиях?

1. Компоненты фреймворка должны быть ориентированы на то, чтобы быть модифицируемыми непрограммистом. Я не говорю о том, что непрограммист должен писать веб-сайты (это по факту невозможно даже в PHP — мало-мальски сложный веб сайт не имеет шаблонов для страниц, а максимум виджеты). Но либо мы генерируем чистый XML для сырого вывода и процессим его XSLT потом, который с некоторой натяжкой может считаться языком для непрограммистов. Либо мы должны «подхватывать» откуда-то виджеты, написанные на более-менее готовом HTML с вкраплениями простого (не тьюринг-полного) макроязыка, которые могут редактироваться «от балды» неспециалистом. Вариант, который предусматривает создание валидного HTML прямо «в хаскеле» вызывает неприятные рефлексы даже у хаскелистов. Hint: в ECMASCript внедрили first class XML: так лучше собирать сырой XML по кускам. Это почувствовали даже в eliom, реализовав на camlp4 костыль.

2. Сайт должен конфигурироваться и реконфигурироваться без остановки. Lisp рулит. ocaml/haskell сосут. PHP рулит. Erlang рулит. Perl сосёт.

3. Сайт должен собираться модульно, со слабыми связями между модулями. Центральный цикл (конфигурация) с перечислением используемых модулей — зло. Лежащие на диске отдельные файлы, представляющие собой куски функциональности — благо. Смотри пункт 2.

4. Сайт должен продолжать работать при наличии ошибок в модулях, подхватываемых динамически. Ну не подхватился какой-то модуль — вывели ошибку в лог, но продолжать шуршать обязаны.

5. Валидный по построению HTML — это решение несуществующей проблемы. Достаточно иметь более лёгкую гарантию: автоматическое html-кодирование сырых сущностей в момент, когда они становятся частью выходного XML. Это покрывает 95% действительно опасной невалидности.

6. ЧПУ должны быть легко достигаемы в рамках получающейся системы.

7. Система должна в принципе позволять масштабирование на несколько независимых компьютеров. Особенно страдают от проблемы с этим пунктом хаскелевские фреймворки — норовят состояние держать в памяти единственного процесса. Но состояние по сессиям должно быть либо на клиенте (в куках), либо в базе (на худой конец, в memcached). Это предусматривает какой-то слой работы с внешним хранилищем состояния.

Похоже, сейчас этим требованиям в существенной степени удовлетворяет только PHP.
ссылка141 комментарий|Оставить комментарий

Explaining Haskell IO without Monads [Янв. 4, 2010|10:42 pm]

lionet
[Tags|]

Описание того, как делать ввод/вывод в Хаскеле без привлечения необходимости рассказывать про монады:

http://neilmitchell.blogspot.com/2010/01/haskell-io-without-monads.html

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

[info]nponeccop непременно пострадает от третьего элемента «списка литературы» этой статьи, но так ему и надо — нельзя быть настолько чувствительным.
ссылкаОставить комментарий

(без темы) [Янв. 4, 2010|05:57 pm]

shenderovich
...поскольку многие спрашивали мое мнение о "новогодних пляшущих человечках", кидаю ссылочку на ЕЖик:

http://ej.ru/?a=note&id=9781

Там я сформулировал некоторые ощущения.
ссылка107 комментариев|Оставить комментарий

Компьютер в холодильнике Часть 2 [Янв. 3, 2010|06:51 pm]

legioner0
[Tags|, ]

В продолжении поста о компьютере в холодильнике. Тот компьютер действительно был нежизнеспособен, хотя бы из-за дохлой материнской платы и отсутствия процессора.

Эти фотки уже очень давно пылились в недрах жесткого диска, но сегодня таки попались мне на глаза.
P.S. За качество не пинать - снималось на сотовый с разбитым экраном.
Read more... )
ссылкаОставить комментарий

(без темы) [Янв. 1, 2010|03:45 am]

shenderovich
Последнее социально-политическое впечатление ушедшего года было дивным:
дураковатая власть устроила таки коллапс на ровном месте. Вместо того, чтобы дать двум-трем сотням людей постоять часок на площади в поддержку Конституции и в соответствии с нею, - согнали армию ментов и роту топтунов, все перегородили-оцепили-заставили, грубо задержали Алексееву, годящуюся рядовому составу в прабабушки...
Все это - прямая агитация за Лимонова. Потому что через какое-то время, когда гиря до полу дойдет, недовольные начнут уже не требовать Конституции, а мочить ментов. Среди которых, кстати, было довольно много тех, которым было явно неловко делать то, что им было приказано делать...
Долговязый младший сержант милиции, "выдавливавший" меня с Триумфальной площади, сказал вдруг:
- Ой, я вас знаю!
И не переставая выдавливать, попросил:
- Дайте автограф для моего отца. Он такой ваш поклонник!
С Новым годом...
ссылка196 комментариев|Оставить комментарий

Девочка из будущего [Дек. 30, 2009|10:42 pm]

lionet
Второй JS-Kit бэби. Первый Echo бэби.

Алиса, 2800, апгар 9/9, ер. http://oleyka.livejournal.com/23960.html

Фотки под катом )
ссылка53 комментария|Оставить комментарий

С наступающим! [Дек. 29, 2009|04:24 pm]

twilight_one
Сбежали по маршруту.
ссылка1 комментарий|Оставить комментарий

Myriad Pro vs Public Type Sans [Дек. 28, 2009|03:42 pm]

lionet
[Tags|]

Myriad ProPublic Type Sans

Шрифтом Myriad Pro делается реклама в Apple.
Шрифт PT Sans только что вышел: http://leksandra.livejournal.com/69576.html
ссылка36 комментариев|Оставить комментарий

(без темы) [Дек. 28, 2009|11:14 pm]

oleg__m
[Мой слух услаждает |Eagles - Long Road Out Of Eden]

Машей -- Шавло '09. Часть V.

День пятый. Not long road to winter...  )
ссылкаОставить комментарий

Третий выпуск журнала «Практика функционального программирования» [Дек. 27, 2009|08:42 am]

lionet
[Tags|]

Двадцатого декабря вышел третий выпуск журнала «Практика Функционального Программирования»: http://fprog.ru/2009/issue3/! Доступен в PDF в нескольких удобных разрешениях (eBook, чтение с большого экрана, печать, компактная печать), а также в HTML.

Обсуждение всего выпуска тут.
  • Конкурс! Две довольно интересных и не-академических задачи, подобранных по критерию «не давать преимущества ни одной парадигме, но позволить каждой и каждому показать себя». У каждой задачи 4 уровня сложности — можете развлечься и потратить пару часов на самый легкий, а можете хорошенько покрасоваться и показать всему свету, как C++ не оставляет и шанса всяким там Хаскелям и Окамлям, виртуозно реализовав самый сложный.

    С призами (8192р за первое место, 4096р за второе). Обсуждение тут.

  • Дмитрий Астапов: Рекурсия + мемоизация = динамическое программирование.
    Рассказывается о красивом применении ленивых вычислений к динамическому программированию на примере задачек с одного из недавних конкурсов Google CodeJam.
    HTML тут, обсуждение тут.

  • Лев Валкин: Проектирование Erlang-клиента к memcached.
    Разбирается клиентская библиотека к memcached на Erlang, обеспечивающая отказоустойчивый доступ к фермам memcached-серверов.
    HTML тут, обсуждение тут.

  • Дмитрий Астапов, Алексей Щепин (тот самый, который написал
    ejabberd, стабильно держит первые места на projecteuler.net и регулярно в одиночку всех надирает на ICFP): Как построить Google Wave из Erlang и Tcl при помощи OCaml.

    Рассказывается о том, как утилита camlp4, предназначенная для создания DSL, использовалась при реализации протокола Google Wave в сервере ejabberd (Erlang) и клиенте Tkabber (Tcl).
    HTML тут, обсуждение тут.

  • Роман Душкин: Полиморфизм в языке Haskell.

    Рассказывается о различных видах полиморфизма в Haskell: параметрический в различных ипостасях, и специальный (typeclasses).
    HTML тут, обсуждение тут.

  • Евгений Кирпичёв: Элементы функциональных языков. Описаны основные концепции, характерные для ФЯ: алгебраические типы, замыкания, бесточечный стиль и т.п. Описана их история, сущность, разновидности, применения и имитация в языках без встроенной поддержки. Статья адресована в первую очередь профессиональным программистам, работающим с «общепринятыми» языками.
    HTML есть, но лучше PDF; обсуждение тут.

    Статья — не учебник по Haskell (примеры приведены далеко не только на нём) и не очередная агитка «бросайте джаву и плюсы, берите Haskell».
    Цель статьи — вооружить идеями из мира функционального программирования даже тех читателей, кто не планирует менять основной язык разработки.
    Евгений потратил очень много времени и сил именно на то, чтобы максимально убрать из нее "матан" и сделать интересной и полезной именно для тех, кто не разбирается в ФП, и продемонстрировать, в том числе, как ФП-шные идеи могут быть применены в не-ФП-языках.

    Откройте, почитайте, вооружитесь — это не экзотика, а «просто» полезные новые приемы программирования, применимые где угодно и кем угодно.


Ну, и если вы считаете, что труды авторов достойны награды — то не стесняйтесь помочь материально: это несложно и недолго, достаточно обычной кредитки или WebMoney/PayPal/Яндекс.Денег. Было бы ошибкой думать, что fprog.ru золотые горы загребает, так что вклад каждого будет весьма ощутимым и достойным благодарности!

Креативно утащено у [info]antilamer
ссылка16 комментариев|Оставить комментарий

Playdar: C++ → Erlang [Дек. 26, 2009|08:42 pm]

lionet
[Tags|]

http://www.metabrew.com/article/rewriting-playdar-c-to-erlang-massive-savings/

Ричард Джонс переписал десктопное приложение Playdar с C++: Boost+ASIO на Erlang. Получил 75..92% сокращение кода. Смог создать дистрибутив для распространения приложения на десктопы: виндовый дистрибут занимал 2.5 метра, эрланговый — 10 метров.


Playdar is the future, and the future is written in Erlang :)


Справедливости ради надо отметить, что приложение у них малюсенькое — всего под десять тысяч строк [сиплюсплюсного] кода. Один RabbitMQ на эрланге занимает примерно столько.

Пока я здесь, замечу, что моя статья о проектировании эрланговского клиента к memcached сервису была опубликована в третьем выпуске fprog.ru.
ссылка16 комментариев|Оставить комментарий

Корпоратив на свой лад [Дек. 27, 2009|03:13 am]

legioner0
[Tags|, ]
[Current Location |5ка]

Зашел я как-то(конец октября) к начальнику(Н) и говорю:
Я: Мы тут собрались через пару недель с горок покататься.
Н: Где в Новосибирске горы?
Я: В Юрманке, например.
Н: Это где?
<...поиск оного на GoogleMaps...>
Н: О! Так это не так далеко. Доехать можно на машине.
Тут кабинет забредает Рома(Р).
Р: Конец октября, надо думать про новый год =)
Н: Да... Надо. Где будем отмечать?
Р: Как обычно в кафе?
Н: Мы уже во всех ближайших были.
Я: Может на природе? В Юрманке той же.
Н: Хорошая идея. На природе водки можно выпить больше. С жильем там как?
<...Рассматривание прайсов и фоток...>
В итоге, через неделю-две этот план был утвержден =)

Итак настал день Х, час Ч, а точнее 6:50 утра. Из 5ки выбегают 5ро тепло одетых человек, нагруженных сумками, проспавших 3-3,5 часа, и направляются к НГУ. Там их уже ждет микроавтобус honda stepwagon, уже с одним пассажиром. Сумки, борды и продукты, дополненные людьми, заполняют его под завязку. "Осторожно, двери закрываются." Через примерно два часа двери вновь открылись в конечной точка маршрута - Юрманке, при температуре -36. Тихонько матерясь, народ сгружается в домик. Потом кто идет досыпать, а кто - надев куфию, отправляется с девчонками гулять, представляясь шейхом с гаремом =)
Около 11 часов, когда мороз спал до -28, все те же 6 человек, облачившись по-теплее выходят на горку, обнаруживая неработающий один подъемник и сломанный - другой, и то, что они единственные - склон девственно чист, если не считать кучки рабочих и ратрака, пытающихся починить трос бугельного подъемника. Подъем на горку до "задолбало подниматься", умеющие кататься едут, не умеющие получают короткий инструктаж и короткое описание "что и как делать" и тоже едут, только падают чаще =)
Только через час честная компания собирается и идет перетаскивать часть вещей из одного домика в другой, где собственно и будет гулянка. Ближе к вечеру прибывает еще народ. Картина маслом: открывается дверь степвегона, из нее вываливается пустая бутылка из-под шампанского и следом за ней ныряет человек %) Потом будут горы еды, реки шампанского, кучи музыки, новогодних фильмов, поздравлений, тостов и конкурсов, баня с парилкой +140 и нырянием в снег, а так же жарка шашлыков в -25, жарка шашлыков в -22 и жарка шашлыков в -18 =) Салют увы не удалось провести из-за сильного ветра.
Утром часть народа отбывает, а честная компания из 6ти человек, с одной заменой, отправляется штурмовать горку, благо температура -11 и подъемник работает, где собственно и пробыли до последнего - уже стемнело и включилось освещение трассы, а еще немного погодя подъемник остановили =) Мы были последние, кто с нее вообще съехал.

Неплохо получилось, надо будет повторить.
ссылка1 комментарий|Оставить комментарий

(без темы) [Дек. 26, 2009|01:18 am]

shenderovich
По поэтической части я гражданин консервативный: больше перечитываю, чем читаю новое. Но сегодня послушал (именно послушал, на CD) стихи Веры Полозковой, потом проверил свои слуховые ощущения глазами...
Ощущения очень сильные! И дело тут не только в культуре стиха, а прежде всего в силе и остроте чувства. "Ударенных" Бродским довольно много, но поэзии, по старому анекдоту, требуется "натуральный вирджинский табак": душа. Которая обнаруживается, только когда болит. У Веры в этом смысле все по-настоящему - такое не симулируется.
В лучших своих вещах она взлетает очень высоко. Почитайте-послушайте...
ссылка76 комментариев|Оставить комментарий

Mobile Interface Design Contest Results [Дек. 25, 2009|01:42 pm]

lionet
Результаты конкурса перепроектирования интерфейса монитора мобильного терминала http://lionet.livejournal.com/44098.html и http://lionet.info/ucdesign/lj-contest.html.

Результаты )

Итого, iPod nano присуждается пользователю [info]burlesck, поздравляем!

X-Post to: http://community.livejournal.com/ru_ucdesign/480109.html
ссылка5 комментариев|Оставить комментарий

Apple vs Windows [Дек. 25, 2009|10:42 am]

lionet

Также программное обеспечение на компьютерах, согласно требованиям Минобрнауки, должно обеспечивать увеличение изображения в любой момент времени не менее чем в 20 раз. Такая функциональность не реализуется средствами Windows/Linux: Windows увеличивает только в 16 раз. В письме говорится, что увеличивать в 20 раз может только операционная система Apple Mac OS X 10.6 Snow Leopard, которая, согласно лицензионному соглашению, может устанавливаться на технику производства Apple.
http://www.kommersant.ru/doc.aspx?DocsID=1298576


О как! Поняли, виндузятники, что у вас увеличение экрана просто в подмётки не годится эпловому? ;)

Большая картинка )
ссылка34 комментария|Оставить комментарий

"В -30 хоооолодно, в -30 хооолодно..." [Дек. 25, 2009|07:33 pm]

twilight_one
Вот вам всем ссылка!
Не правда ли, у нас сегодня очень приятная погода, а снег под фонарями блестит просто волшебно?

Upd. Раз пошло такое дело -- вот вам еще один линк, на ЖЖ антарктической киносъемщицы. Фотографии улетны.
ссылка14 комментариев|Оставить комментарий

Все бывает в первый раз. [Дек. 24, 2009|09:46 pm]

twilight_one
...Вот я сегодня в первый раз сходил в нормальный кинотеатр. =) Причем сразу 3d, чтоб не расслаблялся.
Ощущения забавные, надо сказать. Коридоры, действительно уходящие вдаль; панели управления в том же виде, в котором их видит пилот; бегущая, а не дергающаяся в такт шагам оператора, камера; "одуванчики", пролетающие перед носом, в конце концов (аааааа, почему в кинотеатре нельзя половить летающие перед носом "одуванчики"?).
Хотя, нет. В конце концов -- желание залечь за креслом с нецензурными криками, когда в тебя очередью трассеров стреляют с вертолета. Жжжжжуть.
Ну и мелкие забавности, вроде висящих посреди пейзажа субтитров. =)

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

Под катом почти не раскрываются элементы сюжета фильма 'Аватар' )

Да, еще. Фильм -- невероятно, сказочно (сказка это, в конце концов, или что?) красив. Посмотреть его стоит, как минимум, за это.
ссылка10 комментариев|Оставить комментарий

navigation
[ viewing | most recent entries ]

Реклама