?

Log in

No account? Create an account

Previous Entry | Next Entry

FP Web Frameworks

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

Вот, например, один: 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.

Comments

( 182 comments — Leave a comment )
Page 1 of 2
<<[1] [2] >>
ad_null
Jan. 5th, 2010 08:34 am (UTC)
Это все относится скорее к CMS, нежели к фреймворкам в целом. Фреймворки разные бывают - иногда и ЧПУ не надо (100% доверие к системе), и шаблоны пишутся техспецами и пр.пр.пр.
По остальным пунктам тоже спорно. Везде вопрос - зачем? Ну не нужно 20 раз на дню передергивать веб-сервер (это к вопросу о работе без остановок). Шаблоны должен писать технический спец (CMS тут кстати тоже страдают - у пользователя обычно отсутствует чувство прекрасного)..
В общем, фреймворки это стройматериал для строителя, а не конструктор для всех подряд, имхо.
lionet
Jan. 5th, 2010 08:39 am (UTC)
1. Основная работа у фреймворков — позволять. Если фреймворк не позволяет ЧПУ, здесь его фреймворкость заканчивается.

2. Если у тебя вебсервер "сделал, сдал, и поехал на следующего клиента", то тут хоть на C пиши, вопрос в модифицируемости и поддержке не стоит. Если же стоит, то без цикла, аналогичного REPL'у сложно. Динамика, о которой я говорю, это своего рода режим разработчика. Он также может быть использованным и в продакшне. Например, мы в js-kit делаем релизы пять-двадцать раз в неделю, не останавливая веб сервера. На лидирующих фреймворках для окамла пришлось бы туго.

В общем, фреймворки это стройматериал для строителя, а не конструктор для всех подряд, имхо.

Да, вопрос как раз в том, что FP фреймворки решают проблемы того, куда бы применить FP, а не проблему строителя. Я строитель, оттого таковы мои пункты.
(no subject) - ad_null - Jan. 5th, 2010 08:51 am (UTC) - Expand
(Deleted comment)
(no subject) - lionet - Jan. 5th, 2010 09:50 am (UTC) - Expand
(Deleted comment)
(no subject) - lionet - Jan. 5th, 2010 10:01 am (UTC) - Expand
(Deleted comment)
(no subject) - lionet - Jan. 5th, 2010 10:27 am (UTC) - Expand
(Deleted comment)
(no subject) - lionet - Jan. 5th, 2010 11:42 am (UTC) - Expand
(no subject) - _adept_ - Jan. 5th, 2010 02:01 pm (UTC) - Expand
(no subject) - lionet - Jan. 5th, 2010 10:25 pm (UTC) - Expand
(no subject) - ad_null - Jan. 5th, 2010 10:46 am (UTC) - Expand
(no subject) - 9000 - Jan. 5th, 2010 05:32 pm (UTC) - Expand
(no subject) - (Anonymous) - Jan. 5th, 2010 12:45 pm (UTC) - Expand
(no subject) - ext_72902 - Jan. 5th, 2010 07:16 pm (UTC) - Expand
(no subject) - (Anonymous) - Jan. 5th, 2010 07:43 pm (UTC) - Expand
(no subject) - Kirill A. Korinskiy [catap.ru] - Jan. 6th, 2010 10:46 am (UTC) - Expand
(no subject) - nponeccop - Jan. 6th, 2010 08:18 pm (UTC) - Expand
(no subject) - Kirill A. Korinskiy [catap.ru] - Jan. 7th, 2010 02:06 pm (UTC) - Expand
(no subject) - lionet - Jan. 5th, 2010 10:15 pm (UTC) - Expand
(no subject) - nponeccop - Jan. 6th, 2010 08:34 pm (UTC) - Expand
(no subject) - Kirill A. Korinskiy [catap.ru] - Jan. 6th, 2010 09:46 am (UTC) - Expand
(no subject) - stdray - Jan. 6th, 2010 10:05 am (UTC) - Expand
(no subject) - Kirill A. Korinskiy [catap.ru] - Jan. 6th, 2010 10:26 am (UTC) - Expand
alll
Jan. 5th, 2010 08:34 am (UTC)
Кстати, а что не так с перлом, что он сосёт по п.2? apachectl graceful отца вебной революции не спасает?
lionet
Jan. 5th, 2010 08:41 am (UTC)
Перл сосёт просто по определению. Нужно было где-то об этом напомнить, я решил это сделать в пункте 2.
(Deleted comment)
(no subject) - lionet - Jan. 5th, 2010 08:50 am (UTC) - Expand
(no subject) - dnovikoff - Jan. 5th, 2010 09:32 am (UTC) - Expand
(no subject) - cd_riper - Jan. 5th, 2010 10:45 am (UTC) - Expand
(no subject) - alll - Jan. 5th, 2010 09:17 am (UTC) - Expand
(no subject) - lionet - Jan. 5th, 2010 09:22 am (UTC) - Expand
(no subject) - alll - Jan. 5th, 2010 09:27 am (UTC) - Expand
(no subject) - lionet - Jan. 5th, 2010 09:42 am (UTC) - Expand
(no subject) - alll - Jan. 5th, 2010 10:06 am (UTC) - Expand
(no subject) - lionet - Jan. 5th, 2010 10:15 am (UTC) - Expand
(no subject) - alll - Jan. 5th, 2010 10:25 am (UTC) - Expand
(no subject) - lionet - Jan. 5th, 2010 12:17 pm (UTC) - Expand
(no subject) - raa - Jan. 5th, 2010 10:06 pm (UTC) - Expand
(no subject) - alll - Jan. 6th, 2010 09:03 am (UTC) - Expand
(no subject) - alexclear - Jan. 8th, 2010 04:28 am (UTC) - Expand
(no subject) - alekciy - Jan. 8th, 2010 10:52 am (UTC) - Expand
(no subject) - lionet - Jan. 5th, 2010 10:17 am (UTC) - Expand
(no subject) - alll - Jan. 5th, 2010 10:20 am (UTC) - Expand
(no subject) - Kirill A. Korinskiy [catap.ru] - Jan. 6th, 2010 03:42 pm (UTC) - Expand
(no subject) - alll - Jan. 6th, 2010 04:29 pm (UTC) - Expand
(no subject) - alll - Jan. 5th, 2010 10:18 am (UTC) - Expand
(no subject) - lionet - Jan. 5th, 2010 10:30 am (UTC) - Expand
(no subject) - squadette - Jan. 5th, 2010 12:52 pm (UTC) - Expand
(no subject) - ext_72902 - Jan. 5th, 2010 10:46 am (UTC) - Expand
(no subject) - lionet - Jan. 5th, 2010 10:53 am (UTC) - Expand
(no subject) - ext_72902 - Jan. 5th, 2010 11:01 am (UTC) - Expand
(no subject) - lionet - Jan. 5th, 2010 11:06 am (UTC) - Expand
(no subject) - ext_72902 - Jan. 5th, 2010 11:12 am (UTC) - Expand
(no subject) - blackyblack - Jan. 6th, 2010 06:11 am (UTC) - Expand
(no subject) - alll - Jan. 6th, 2010 09:37 am (UTC) - Expand
(no subject) - squadette - Jan. 5th, 2010 12:50 pm (UTC) - Expand
(no subject) - ormuz - Jan. 5th, 2010 02:50 pm (UTC) - Expand
(no subject) - squadette - Jan. 5th, 2010 04:39 pm (UTC) - Expand
(no subject) - lionet - Jan. 5th, 2010 10:06 pm (UTC) - Expand
(no subject) - squadette - Jan. 5th, 2010 10:09 pm (UTC) - Expand
(Deleted comment)
lionet
Jan. 5th, 2010 08:55 am (UTC)
Свой адрес скинь ко мне в пейпал!
rssh
Jan. 5th, 2010 09:10 am (UTC)
И пошто вы жабу не любите ?
(где 1-7 из коробки для полутысячи существующих фреймворков)
alll
Jan. 5th, 2010 09:21 am (UTC)
Видимо за то, что изучение полутысячи существующих фреймворков на современном этапе развития медицины значительно превосходит среднюю продолжительность человеческой жизни. А с учётом скорости появления новых и вовсе становится бесконечным занятием. ;)
(no subject) - just_developer - Jan. 5th, 2010 10:08 am (UTC) - Expand
(no subject) - lionet - Jan. 5th, 2010 10:06 am (UTC) - Expand
(no subject) - rssh - Jan. 5th, 2010 10:15 am (UTC) - Expand
(no subject) - lionet - Jan. 5th, 2010 10:20 am (UTC) - Expand
(no subject) - just_developer - Jan. 5th, 2010 10:30 am (UTC) - Expand
(no subject) - lionet - Jan. 5th, 2010 10:38 am (UTC) - Expand
(no subject) - just_developer - Jan. 5th, 2010 10:43 am (UTC) - Expand
(no subject) - lionet - Jan. 5th, 2010 10:46 am (UTC) - Expand
(no subject) - just_developer - Jan. 5th, 2010 10:51 am (UTC) - Expand
(no subject) - Kirill A. Korinskiy [catap.ru] - Jan. 6th, 2010 04:06 pm (UTC) - Expand
(no subject) - just_developer - Jan. 6th, 2010 04:22 pm (UTC) - Expand
(Deleted comment)
(no subject) - just_developer - Jan. 6th, 2010 04:46 pm (UTC) - Expand
(Deleted comment)
(no subject) - just_developer - Jan. 6th, 2010 05:06 pm (UTC) - Expand
(no subject) - just_developer - Jan. 6th, 2010 04:24 pm (UTC) - Expand
(no subject) - just_developer - Jan. 5th, 2010 10:48 am (UTC) - Expand
(no subject) - lionet - Jan. 5th, 2010 10:54 am (UTC) - Expand
(no subject) - alll - Jan. 6th, 2010 09:29 am (UTC) - Expand
(no subject) - just_developer - Jan. 5th, 2010 10:16 am (UTC) - Expand
(no subject) - tzirechnoy - Jan. 5th, 2010 03:02 pm (UTC) - Expand
(no subject) - alll - Jan. 6th, 2010 09:21 am (UTC) - Expand
(Deleted comment)
lionet
Jan. 5th, 2010 10:24 am (UTC)
Как фреймворки — удовлетворяют. Однако, функционал писать тоже надо, а Ruby/Python страдают императивом. Со всеми вытекающими.

Seaside попробовал, оказалось практически непортабельной хренью. Ниже порога элементарной живучести платформы.
(no subject) - 9000 - Jan. 5th, 2010 05:15 pm (UTC) - Expand
permea_kra
Jan. 5th, 2010 10:28 am (UTC)
А вариант couchDB + статические макеты с javascript/client side xslt разве в таком случае не лучше всего вышеприведённого? Кроме идиотизма броузеров, разумеется.

lionet
Jan. 5th, 2010 10:32 am (UTC)
couchDB распылить по ферме машин невозможно. Для мелких одномашинных проектов может и пойдёт.
(no subject) - permea_kra - Jan. 5th, 2010 10:38 am (UTC) - Expand
(no subject) - lionet - Jan. 5th, 2010 10:42 am (UTC) - Expand
(no subject) - permea_kra - Jan. 5th, 2010 10:56 am (UTC) - Expand
(no subject) - lionet - Jan. 5th, 2010 10:58 am (UTC) - Expand
(no subject) - permea_kra - Jan. 5th, 2010 11:03 am (UTC) - Expand
(no subject) - lionet - Jan. 5th, 2010 11:08 am (UTC) - Expand
(no subject) - permea_kra - Jan. 5th, 2010 11:17 am (UTC) - Expand
(no subject) - _zerg - Jan. 5th, 2010 04:53 pm (UTC) - Expand
ext_72902
Jan. 5th, 2010 10:43 am (UTC)
> убивает понятие ЧПУ

HRUs are dead. Доказано ЖЖ (урл вида http://lionet.livejournal.com/51003.html несёт, конечно, массу информации).

Хотя соглашусь, что писать в URL совсем уж крокозябрами, когда не надо - дурной тон. И даже, кажется, знаю, какую фичу надо добавить в Хаскель, чтобы на нём это можно было реализовать.

> Компоненты фреймворка должны быть ориентированы на то, чтобы быть модифицируемыми непрограммистом.

Я одно время был веб-программером. И, ИМХО, сие есть несбыточная мечта. В принципе. Как только непрограммист начинает модифицировать что-то, кроме, собственно, контента (через вылизанный и выпестованный интерфейс) - пиши пропало, получается полное говно.

> Вариант, который предусматривает создание валидного HTML прямо «в хаскеле» вызывает неприятные рефлексы даже у хаскелистов.

Да?

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

Если я правильно понимаю, hs-plugins эту задачу более-менее решает.

> Достаточно иметь более лёгкую гарантию: автоматическое html-кодирование сырых сущностей в момент, когда они становятся частью выходного XML.

Чего-чего?
lionet
Jan. 5th, 2010 11:15 am (UTC)
HRUs are dead. Доказано ЖЖ (урл вида http://lionet.livejournal.com/51003.html несёт, конечно, массу информации).

На него можно ссылаться не боясь, что следующий релиз кода или апгрейд языка снесёт этот формат continuation'а.

Я одно время был веб-программером. И, ИМХО, сие есть несбыточная мечта. В принципе. Как только непрограммист начинает модифицировать что-то, кроме, собственно, контента (через вылизанный и выпестованный интерфейс) - пиши пропало, получается полное говно.

Я всё больше про саппорт имею ввиду (поправить help popup box), или про дизайнеров — html кодеров, которым не понравилось взаимное расположение элементов.

Да?

Да.

Если я правильно понимаю, hs-plugins эту задачу более-менее решает.

Замечательно! Теперь интроспекции добавить, совсем эрланг получится.

Чего-чего?

html-encoding пользовательского ввода, чтобы не превратился в часть markup'а. Только не так как в PHP, плиз (принудительным глобальным эскейпингом данных от пользователя, благо флаг есть для отключения пластыря).
(no subject) - permea_kra - Jan. 5th, 2010 11:18 am (UTC) - Expand
(no subject) - lionet - Jan. 5th, 2010 11:26 am (UTC) - Expand
(no subject) - metaclass - Jan. 5th, 2010 02:58 pm (UTC) - Expand
(no subject) - permea_kra - Jan. 5th, 2010 03:09 pm (UTC) - Expand
(no subject) - ext_72902 - Jan. 5th, 2010 11:28 am (UTC) - Expand
(no subject) - lionet - Jan. 5th, 2010 11:33 am (UTC) - Expand
(no subject) - ext_72902 - Jan. 5th, 2010 11:45 am (UTC) - Expand
(no subject) - lionet - Jan. 5th, 2010 11:47 am (UTC) - Expand
(no subject) - thesz - Jan. 5th, 2010 02:57 pm (UTC) - Expand
(no subject) - kurilka - Jan. 5th, 2010 03:41 pm (UTC) - Expand
(no subject) - thesz - Jan. 5th, 2010 03:42 pm (UTC) - Expand
(no subject) - kurilka - Jan. 5th, 2010 03:47 pm (UTC) - Expand
(no subject) - nponeccop - Jan. 6th, 2010 08:09 pm (UTC) - Expand
(no subject) - ext_72902 - Jan. 6th, 2010 08:58 pm (UTC) - Expand
(no subject) - nponeccop - Jan. 6th, 2010 09:26 pm (UTC) - Expand
(no subject) - ext_72902 - Jan. 6th, 2010 09:42 pm (UTC) - Expand
(no subject) - nponeccop - Jan. 6th, 2010 09:47 pm (UTC) - Expand
(no subject) - ext_72902 - Jan. 7th, 2010 08:35 am (UTC) - Expand
(no subject) - nponeccop - Jan. 7th, 2010 10:12 am (UTC) - Expand
dmzlj
Jan. 5th, 2010 10:54 am (UTC)
Мне, в общем, валидность HTML не нужна, равно как и сам HTML. Мне нужна статическая типизация, т.к. как всегда цейтнот. И простота деплоймента. И наличие всей обвязки: сессии, куки, авторизация/аутентификация, готовый DB-layer. Все это есть. Ценности для веба в апгрейде без остановки я не вижу, так как это легко достигается на простейшем кластере даже из двух нод.

PS. XSLT точно не может быть языком для не-программистов. PHP скорее язык для непрограммистов, чем XSLT.

Edited at 2010-01-05 10:56 am (UTC)
lionet
Jan. 5th, 2010 11:02 am (UTC)
Мне, в общем, валидность HTML не нужна...

Об этом и речь.

Мне нужна статическая типизация, т.к. как всегда цейтнот. И простота деплоймента. И наличие всей обвязки: сессии, куки, авторизация/аутентификация, готовый DB-layer. Все это есть.

Отлично!

Ценности для веба в апгрейде без остановки я не вижу, так как это легко достигается на простейшем кластере даже из двух нод.

Апгрейд без остановки хорош для отладки боевого кластера. Если это твой внутренний сервак, в котором аномалий, привносимых средой, не возникает — можно и без него. Если же сопровождаешь кластер, работающий в продакшне — интроспекция боевой единицы рулит.

Да, для многих платформ сразу постулируется, что дебаг рабочей машины не есть правильно. И предлагается не допускать слабо рабочий код до продакшна. Речь не о них, а о том, что можно сделать (читай: как и в какую сторону меняется управление проектом), если такая возможность доступна, легка в управлении, и даже идиоматична.
(no subject) - dmzlj - Jan. 5th, 2010 11:16 am (UTC) - Expand
(no subject) - 9000 - Jan. 5th, 2010 05:20 pm (UTC) - Expand
(no subject) - dmzlj - Jan. 5th, 2010 05:25 pm (UTC) - Expand
ext_72902
Jan. 5th, 2010 11:09 am (UTC)
Кстати, валидность HTML, может, и не нужна, но правильно закрытые теги нужны обязательно. Ошибки закрытия тегов имеют тенденцию всплывать где не надо, через год после того, как были допущены. Тем более, что современные браузеры их часто маскируют.
lionet
Jan. 5th, 2010 11:24 am (UTC)
Я бы согласился. В теории.

Наша практика показывает, что частота возникновения таких ошибок на грани ошибки измерения (один раз в год бывает, или реже). У кого-то по-другому, быть может.
(no subject) - ext_72902 - Jan. 5th, 2010 11:30 am (UTC) - Expand
(no subject) - lionet - Jan. 5th, 2010 11:36 am (UTC) - Expand
(no subject) - ext_72902 - Jan. 5th, 2010 11:44 am (UTC) - Expand
(no subject) - (Anonymous) - Jan. 5th, 2010 12:56 pm (UTC) - Expand
(no subject) - ext_72902 - Jan. 5th, 2010 01:59 pm (UTC) - Expand
(no subject) - binstream - Jan. 5th, 2010 06:09 pm (UTC) - Expand
(no subject) - (Anonymous) - Jan. 5th, 2010 06:50 pm (UTC) - Expand
(no subject) - binstream - Jan. 6th, 2010 04:46 am (UTC) - Expand
(no subject) - (Anonymous) - Jan. 6th, 2010 07:38 am (UTC) - Expand
archimag-dev.blogspot.com
Jan. 5th, 2010 01:50 pm (UTC)
> Похоже, сейчас этим требованиям в существенной степени удовлетворяет только PHP.

Я делаю RESTAS ориентируюсь на схожие соображения :)
justy_tylor
Jan. 5th, 2010 03:03 pm (UTC)
1. Если меняются неспециалистами, то косяки гарантированы. Т.е. какие-нибудь алгоритмисты для АСУТП или logical UI designers тоже специалисты в своей области. Такой спец может свободно работать со скриптом вывода страницы, etc. Если же есть хороший артист с немного-знанием HTML, то через интеграцию другим спецом.

2..6. Легко делается на Python. Т.е. на перегрузку кода на живых объектах я использую давно. А автоматическое HTML-кодирование и ссылки-как-запросы (под влиянием Ur) сделал в прототипах когда-то между работами, но развивать не стал - я не в вебдеве.

Но вообще это как-бы вопрос не конкретного языка, а динамики.
alll
Jan. 6th, 2010 09:43 am (UTC)
Кстати, а как в питоне делается перегрузка кода "на живых объектах"? Куда копать, что читать?
(no subject) - justy_tylor - Jan. 6th, 2010 12:15 pm (UTC) - Expand
(no subject) - alll - Jan. 6th, 2010 12:19 pm (UTC) - Expand
(no subject) - justy_tylor - Jan. 6th, 2010 12:23 pm (UTC) - Expand
(no subject) - alll - Jan. 6th, 2010 12:33 pm (UTC) - Expand
max630
Jan. 5th, 2010 06:43 pm (UTC)
> 2... PHP рулит

с кешированием прекомпиленых phpшек - уже нет
max630
Jan. 5th, 2010 06:45 pm (UTC)
> XSLT ... с некоторой натяжкой может считаться языком для непрограммистов

дааа? хотел бы я посмотреть на этих неспециалистов.
max630
Jan. 5th, 2010 06:45 pm (UTC)
то есть непрограммистов
(no subject) - (Anonymous) - Jan. 5th, 2010 06:57 pm (UTC) - Expand
(no subject) - ext_72902 - Jan. 5th, 2010 07:10 pm (UTC) - Expand
(no subject) - permea_kra - Jan. 6th, 2010 06:47 pm (UTC) - Expand
(no subject) - binstream - Jan. 6th, 2010 04:48 am (UTC) - Expand
(no subject) - ext_72902 - Jan. 6th, 2010 06:14 am (UTC) - Expand
(no subject) - dmzlj - Jan. 6th, 2010 06:44 am (UTC) - Expand
random_ua
Jan. 6th, 2010 02:01 am (UTC)
"Похоже, сейчас этим требованиям в существенной степени удовлетворяет только PHP."

PHP пролетает по п. 2 (в силу наличия PHP_INI_SYSTEM) и особенно по п. 4. Перехватить и обработать PHP Fatal error-ы невозможно в принципе, возможности проверки кода перед загрузкой крайне ограничены, замена кода в одном файле приводит к тому, что ошибочный код подхватывают все рабочие процессы.

В незаслуженно охаянном Perl-е это все решаемо. Можно подгружать новый код "на лету" в существующие процессы (если не загрузится - продолжит работу старый), можно даже заменять старые рабочие процессы новыми (gracefully) только если один процесс со свежей версией кода отработал какое-то кол-во запросов без проблем.
(Deleted comment)
lionet
Jan. 6th, 2010 06:12 pm (UTC)
Если свести прямо-таки к этим двум, тогда любой язык и фреймворк подойдёт. Надо мяса набросать: что такое масштабируемость (добавить термин "горизонтальная", например). Что такое поддержка цикла разработки.
Page 1 of 2
<<[1] [2] >>
( 182 comments — Leave a comment )

Profile

lionet
Lev Walkin
Website

Latest Month

December 2016
S M T W T F S
    123
45678910
11121314151617
18192021222324
25262728293031
Powered by LiveJournal.com
Designed by yoksel