January 7th, 2010

Book

Первая цель проекта HN

На языке Си уже написано огромное количество кода, и новые проекты также выбирают Си в качестве языка разработки. Однако, Си уже давно не является современным языком - в нем отсутствуют абстрактные типы данных, строгая типизация, вывод типов, полиморфизм, не говоря уже о замыканиях, зависимых типах, рефлексии и метапрограммировании времени компиляции.

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

Ответы мейнстрима на убожество Си можно поделить на три категории: "паскали", "питоны" и "джавы". "Паскали" - это языки, сохраняющие сишную, близкую к аппаратной модель машины. Это сам Си, Object Pascal, C++, D. "Питоны" - это языки, модель исполнения которых плохо поддается эффективной компиляции. Это Python, Lisp. "Джавы" - это языки, в целом неплохо компилируемые, но содержащие отдельные некомпилирующиеся фичи, реализующиеся высокоэффективным рантайм-интерпретатором. Это Java (сборка мусора), Haskell (сборка мусора, ленивость), IronPython/SBCL/Stalin (самомодифицирующийся код).

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

Выбор в проекте языка Си означает, что "паскаль" победил "джаву", причем не обязательно по объективным причинам. Скажем, причиной может оказаться фанатизм или невежество руководителей или разработчиков.

Первая цель проекта HN сама по себе не интересна, ибо она такая же, как у других продвинутых "паскалей". Это добавление в "паскаль" максимального количества "джавских" фич, не жертвуя ни одним из достоинств "паскаля" (производительностью, работой с памятью на уровне байтов, интегрируемостью с legacy-кодом и даже "расовой чистотой"). Расовая чистота обеспечивается отсутствием расово неверных фич вроде сборки мусора, подсчета ссылок, рантайм-тегов у значений или JIT.
Book

О тормозах

Via love5an 

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

Общие принципы проектирования веб-сайтов

Нашел тут старый свой документ по дизайну одного проекта и заметил, что он перекликнулся с недавним обсуждением у lionet . Выкладываю:

Общие принципы проектирования
  • отделение разметки от кода
  • Семантическая разметка
    • POSH
    • microformats
    • бестабличная верстка
    • интенсивное использование CSS
  • читабельные URI
  • перекладывание ветвлений в коде на веб-сервер
    • нет CGI-параметров с типом страницы (?mode=edit)
  • страницы без состояния
    • нет информации, передаваемой через cookie и session id
    • GET всегда идемпотентный (не меняет состояние сервера)
    • всё, что меняет состояние сервера, делается кнопками
    • всё, что не меняет состояние сервера, делается ссылками
  • одинаковые функции реализуются одинаково
    • относительные URI