| ||||||||||||||||
| ||||||||||||||||
| ||||||||||||||||
Что за верблюд такой - ocaml? Нынче модно делать сайты. Это раньше, когда народ был дикий и непросвещённый, все писали вирусы, компиляторы и 3D-шутеры. "Бэйсик? MSX? Фи." - решил я, и стал писать на Turbo Pascal. Как потом оказалось, без ассемблера обойтись было нельзя, и что C - это тот же ассемблер, только похож на паскаль. "Э," говаривали мне, "уважаемый, вы тут на C балуетесь? Ничего у вас не выйдет, ибо сглючит прога, и ничего не поделаете." И сглючивала. "Ну," говорили впоследствии, "надо чтобы с плюсами". Сглючивала. "...и чтобы объектно-ориентированная методология проектирования." Лежала в корах, не подымаясь. Шли года. Можно было уложить вражескую тачку одним правильно посланным пакетом IP. Можно было получить рутшелл, послав письмо. На слэшдоте великие люди обсуждали фундаментальную проблему мироздания - как нарастить карму до 50 и сменить все ссылки на гоутсе. А в деревне Гадюкины дожди первый сайт на Unix Bash уже сообщал, что страница Васи Пупкина приветствует своего 17-го посетителя. Шли года снова. Пропаганда реляционных СУБД вызвала к жизни глючный, медленный и сложный MySQL. Воспоминания о будущем хакеров Unix заставили-таки их заставить работать Perl, the real write-only language. Родились порталы, CSS, DHTML и проч. То есть наступило сегодня. История учит нас не только тому, что ничему она не учит. Уже, например, известно, что для сайта неважно, если язык в 100 раз медленнее C. Непринципиально, что он не объектно-ориентированный. Несущественно, если он порой проглючивает. Главное, чтобы было легко работать с базой данных и с текстом, а также писать скрипты на месте. Именно поэтому, с позволения сказать, изощрённые средства индустриальной разработки ПО так и не сумели сказать своё мудрое слово в этом направлении. Если вам кто-то будет пудрить мозги про компоненты для разработки веб-сайтов, про технологии DCOM для порталов, про Java 2 Enterprise Edition - скажите ему магическое японскоё слово. Настоящие сайты сегодня делают на PHP или mod_perl. С MySQL в качестве бэкэнда. Да. Именно с MySQL, простым, быстрым и надёжным. Но даже у самой красивой девушки есть недостатки. А кроме того, нельзя же вечно жить в колыбели. Проблемы, которые возникают при попытке написать на Perl-e или PHP достаточно сложные программы, зачастую заставляют даже нормальных людей тоскливо поглядывать в сторону Java.
Говорят, что есть, есть где-то на земле великое и могучее промышленное программирование. Где веб-сервисы пашут землю и пекут бутерброды. Где ошибки сами собой уходят в далёкие горы, эффективные реляционные схемы рождаются сами собой, а посреди великой равнины восседает Java 2 Enterprise Edition. Помните такую сказку? Ничего такого нет. А есть бедный программист, со своей болью и мукой, за каждой строчкой, за каждой кнопкой, за каждым окошком, который опять вынужден семнадцатый раз исправлять тридцать одну форму и пятнадцать определений таблиц из-за того, что изменился дизайн системы. И ничего, ничегошеньки не меняет Java, PHP, Perl и DB2 Stored Procedure Language в придачу. И изо дня в день, из года в год человечество ищет этот магический меч-кладенец, это блюдечко с голубой каёмочкой, которое решило бы враз все проблемы. Не найдёт, но по дороге повеселится. Сегодня веселье - это Objective Caml ( Ещё в прошлом веке специалисты по искусственному интеллекту поняли, что на тогдашнем уровне развития последний не может даже заменить им природную глупость. А всё потому, что единственное общее для них всех знание было языком Lisp. В переводе на русский - lots of idiotic silly parenthesis. Пример (цитата из Emacs):
(defun emerge-previous-difference () Ясное дело, что что нормальные люди на таком языке писать не могут и не будут. Из остальных возникла великая AI-культура MIT, которая породила emacs (который написал Столлман (который создал FSF (который пропагандирует идеалы GNU (and Gnu is Not Unix)))). Но это к слову. Окамль не таков. Когда стало понятно, что функция, которая принимает функцию в качестве параметра и возвращает функцию, которая возвращает функцию, никак визуально не отличима от функции, которая принимает параметром функцию, которая возвращает функцию, и возвращает функцию, то было решено использовать типизацию. Так вот, окамль - язык с типизацией. В нём такое не пройдёт. Хотя обычно люди используют его систему типов, чтобы понимать, когда нужно передать массив, а когда просто число. Чтобы отмести обвинения в том, что мы пытаемся продать кота в мешке, мы просто вынуждены привести несколько примеров. Первый пример - печатаем таблицу умножения (из него должно стать понятно, как напечатать "Hello world").
for i = 1 to 9 do На первый взгляд, всё просто, и так оно пока и есть. Кстати, очень
важный вопрос - а что с этим делать, да? Придётся отвлечься, скачать
окамль и собрать его, если под Unix
(caml-3.04.tar.gz),
или просто поставить под Windows ( Как собрать окамль?
$ su - Затем, счастливые обладатели окамля, мы запускаем его интерпретатор (хотя компилятор тоже есть, даже целых два, но о них потом), и получаем приглашение # имени uid 0. Нет, это не shell, просто он так выглядит. Далее, мы вводим нашу программу прямо в интерпретатор (две точки с запятой подряд обязательны, они говорят интерпретатору, что ввод закончен).
# for i = 1 to 9 do И получаем совершенно неожиданный результат:
1 2 3 4 5 6 7 8 9 Последняя строчка принадлежит окамлю, и сообщает нам, что вычисленное выражение имеет тип unit и значение (). Но это всё детали. |
|
| ||||||||||||||||
|