Студия веб дизайна Original - создание сайтов, web дизайн, создание логотипа, оригинальный дизайн, редизайн, интернет реклама
Студия веб дизайна Original - создание сайтов, web дизайн, создание логотипа, оригинальный дизайн, редизайн, интернет реклама
Студия веб дизайна Original - создание сайтов, web дизайн, создание логотипа, оригинальный дизайн, редизайн, интернет реклама

Авторство: Phunx
phunx@webhowto.ru


Нынче модно делать сайты. Это раньше, когда народ был дикий и непросвещённый, все писали вирусы, компиляторы и 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 (caml.inria.fr). Он "быстрее, проще, более выразителен и надёжен". Хотя, конечно, в отличие от PHP, не может использоваться с тегами наподобие <% %>. Он даже довольно хорошо интегрируется с базами данных, что вообще-то всё ещё большая редкость для скриптовых языков.

Ещё в прошлом веке специалисты по искусственному интеллекту поняли, что на тогдашнем уровне развития последний не может даже заменить им природную глупость. А всё потому, что единственное общее для них всех знание было языком Lisp. В переводе на русский - lots of idiotic silly parenthesis. Пример (цитата из Emacs):

		(defun emerge-previous-difference ()
		  "Go to the previous difference."
		  (interactive)
		  (if (> emerge-current-difference -1)
		      (let ((n (1- emerge-current-difference)))
		        (while (and emerge-skip-prefers
		                    (> n -1)
		                    (memq (aref (aref emerge-difference-list n) 6)
		                          '(prefer-A prefer-B)))
		          (setq n (1- n)))
		        (let ((buffer-read-only nil))
		          (emerge-unselect-and-select-difference n)))
		    (error "At beginning")))
		

Ясное дело, что что нормальные люди на таком языке писать не могут и не будут. Из остальных возникла великая AI-культура MIT, которая породила emacs (который написал Столлман (который создал FSF (который пропагандирует идеалы GNU (and Gnu is Not Unix)))). Но это к слову.

Окамль не таков. Когда стало понятно, что функция, которая принимает функцию в качестве параметра и возвращает функцию, которая возвращает функцию, никак визуально не отличима от функции, которая принимает параметром функцию, которая возвращает функцию, и возвращает функцию, то было решено использовать типизацию. Так вот, окамль - язык с типизацией. В нём такое не пройдёт. Хотя обычно люди используют его систему типов, чтобы понимать, когда нужно передать массив, а когда просто число.

Чтобы отмести обвинения в том, что мы пытаемся продать кота в мешке, мы просто вынуждены привести несколько примеров. Первый пример - печатаем таблицу умножения (из него должно стать понятно, как напечатать "Hello world").

		for i = 1 to 9 do
		  for j = 1 to 9 do
		    let r = i * j in
		    print_int r;
		    if r < 10 then
		      print_string "  "
		    else
		      print_string " "
		  done;
		  print_string "\n"
		done
		

На первый взгляд, всё просто, и так оно пока и есть. Кстати, очень важный вопрос - а что с этим делать, да? Придётся отвлечься, скачать окамль и собрать его, если под Unix (caml-3.04.tar.gz), или просто поставить под Windows (ocaml-3.04-win.exe). Не будем говорить о нелёгкой судьбе веб-программирования под Windows. Поэтому дальше будет в основном про Unix. Те же, кто всё-таки хочет попробовать под Windows, могут поставить себе cygwin (эмулятор Unix API) с сайта Cygnus http://sources.redhat.com/cygwin/ и использовать его. Окамль под ним вполне работает.

Как собрать окамль?

		$ su -
		Password: ********
		# tar xzf ocaml-3.04.tar.gz
		# cd ocaml-3.04
		# ./configure -prefix /usr
		  ...
		# make
		  ...
		# make opt
		  ...
		# make install
		# ^D
		

Затем, счастливые обладатели окамля, мы запускаем его интерпретатор (хотя компилятор тоже есть, даже целых два, но о них потом), и получаем приглашение # имени uid 0. Нет, это не shell, просто он так выглядит. Далее, мы вводим нашу программу прямо в интерпретатор (две точки с запятой подряд обязательны, они говорят интерпретатору, что ввод закончен).

		# for i = 1 to 9 do
		    ...
		  done
		;;
		

И получаем совершенно неожиданный результат:

		1  2  3  4  5  6  7  8  9
		2  4  6  8  10 12 14 16 18
		3  6  9  12 15 18 21 24 27
		4  8  12 16 20 24 28 32 36
		5  10 15 20 25 30 35 40 45
		6  12 18 24 30 36 42 48 54
		7  14 21 28 35 42 49 56 63
		8  16 24 32 40 48 56 64 72
		9  18 27 36 45 54 63 72 81
		- : unit = ()
		

Последняя строчка принадлежит окамлю, и сообщает нам, что вычисленное выражение имеет тип unit и значение (). Но это всё детали.

Про то, как писать под Web на этом языке, читайте в следующем выпуске и оставайтесь с нами.

Рейтинг@Mail.ru
Студия веб дизайна Original - создание сайтов, web дизайн, создание логотипа, оригинальный дизайн, редизайн, интернет реклама
Студия веб дизайна Original - создание сайтов, web дизайн, создание логотипа, оригинальный дизайн, редизайн, интернет реклама
Студия веб дизайна Original - создание сайтов, web дизайн, создание логотипа, оригинальный дизайн, редизайн, интернет реклама
Используются технологии uCoz