Andy Melnikov (nponeccop) wrote,
Andy Melnikov
nponeccop

Category:

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

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

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

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

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

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

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

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 36 comments