Языки программирования. Прошлое и будущее. С.Бобровский (1012869), страница 6
Текст из файла (страница 6)
Так-тикль — язык системной интеграции
В университете Беркли (штат Калифорния) в конце 80-х годов работал уже упоминавшийся Джон Аустираут, в то время известный не более своих коллег. Сегодня же его знает большинство программистов всего мира, так как именно он придумал популярный скрипт-язык Tel и библиотеку Tk. Впервые идея языка Tel (Tool Command Language, произносится «тикль») пришла в голову Аустирауту в 1987 году. В Tel он попытался воплотить свое видение идеального скрипт-языка, и в дальнейшем всемирная популярность Tel подтвердила правильность его взглядов. Первая работающая версия языка появилась в 1989 году, библиотека Tk вышла в 1991 году. Реализация Tel чаще всего исполняется в виде встраиваемой в приложения библиотеки на С, содержащей интерпретатор Tel.
Язык Tel синтаксически немного похож на Perl. Он ориентирован преимущественно на автоматизацию рутинных процессов операционной системы и крупных программных систем. Он содержит мощные команды, предназначенные для работы с абстрактными нетипизированными объектами. Принципиальные отличия языка Tel от командных языков операционной системы — его независимость от типа системы (не надо утруждать себя изучением нового командного языка) и, самое главное, возможность создавать программы с переносимым графическим интерфейсом (GUI). Можно, например, написать утилиту просмотра всех каталогов и подкаталогов с уничтожением временных файлов, приделать к ней симпатичную оболочку с кнопочками, меню, картинками, диалогом ввода расширения уничтожаемых файлов, и эта утилита будет работать практически в любой операционной системе!
Язык Tel — расширяемый. В нем можно самостоятельно определять новые команды языка. Приведем классический пример определения команды Tel:
button.b-text Hello!-font {Times 16}~command {puts hello}
Команда button предназначена для создания кнопки (. b) с надписью Hello! (можно указать картинку), которая пишется шрифтом Times размером 16 пунктов. При нажатии на кнопку в стандартное устройство вывода посылается строка hello (puts hello). Набором таких команд можно очень компактно и наглядно описать графический интерфейс пользователя с полным функциональным наполнением. Эти команды можно вызывать из других языков или на их основе писать программное обеспечение полностью на Tel. В последнем случае приложение рассматривается как Pure Tell 00%.
Система Tcl/Tk разрабатывалась одновременно как язык и библиотека. Эта идея была позже реализована в Java, языке фирмы Sun, в которой Аустираут трудился с середины 90-х годов. В 1998 году он основал собственную компанию Scriptics, переименованную впоследствии в Ajuba Solutions. Наконец, логическим завершением очередной фазы развития языка стало создание группы, объединившей 14 ведущих разработчиков Tcl/Tk (www.tcltk.com), & Ajuba Solutions была приобретена в 2000 году компанией ActiveState (tcl.activestate.com).
Библиотека Tk содержит стандартизованный набор команд поддержки графической оболочки в стиле Motif. Управляющие элементы, хранящиеся в библиотеке Tk, называются виджетами (widgets). Большое количество нетиповых виджетов можно найти в Сети. На основе библиотеки Tk создаются переносимые приложения, например, на С, с графическим интерфейсом.
На языке Tel написано много мобильных приложений с графическим интерфейсом, которые используются в самых разных областях: для управления операционной системой, администрирования сетей, обслуживания Web-серверов и других целей. В библиотеке Tk имеются команды для работы с сокетами, с помощью которых можно создавать приложения для Сети. Для браузеров разработаны подключаемые модули, позволяющие вставлять Tci-скрипты («тиклеты») в страницы HTML (см. www.neuron.com). Известно использование Tcl/Tk в масштабных российских проектах, в частности, в кодогенераторах фирмы DataX/ Florin для поддержки платформно-независимого пользовательского интерфейса.
Язык Tcl/Tk распространяется в исходных текстах бесплатно (см. например purl.org/tcl/home). Он может легко интегрироваться с C++, Ада, Пролог, Модула-3, Perl и многими другими языками. Язык Tel реализован для MS-DOS, Windows (на сайте www.scriptics.com), Macintosh, AIX 3.x, VMS, для практически всех Unix-платформ (SunOS, SCO Unix, HP-UX, ESDI, Linux, QNX), а также для суперкомпьютеров Cray и NEC. На Pure Tel 100% написана оболочка Visual Tel, которая позволяет разрабатывать кросс-платформное программное обеспечение для Unix /Linux, Windows и Macintosh. Имеется расширение языка incrTcl/incrTk, ориентированное на создание больших приложений.
С начала 90-х годов проект Tel начала поддерживать фирма Sun. Была создана рабочая группа SunScript (название языка осталось прежним). В середине 90-х годов в этой группе поработал и Джон Аустираут. Группа SunScript создает коммерческие версии библиотеки Tk, в частности, для Windows и Macintosh. Некоторое время назад эта группа приступила к интеграции Tel и Java. Разработана версия Tel, написанная на Java — Jacl (JAva Command Language). Расширение языка Tel Blend позволяет работать с виртуальной машиной Java и интегрировать сценарии Tel с Java-кодом.
В конце августа 1997 года вышла новая, восьмая версия Tcl/Tk (сегодняшняя модификация — 8.3.2). Интерпретация заменена компиляцией в байт-код «налету» (по аналогии с Java). Полностью переделана обработка строк. Работа с двоичными объектами и большими текстовыми массивами по сравнению с версией 7.x ускорилась в 2—20 раз. Добавлены новые команды быстрой сортировки, ввода/вывода двоичных данных с поддержкой различных типов периферийных устройств, поддерживается протокол HTTP, реализованы новые средства обеспечения безопасности. Увеличена точность при работе с числами с плавающей запятой до 12 цифр вместо 6. Подробно документирован интерфейс взаимодействия с С. Полностью переписана библиотека Tk. Работа
с объектами управления стала более удобной, усовершенствована работа с меню и шрифтами, добавлены новые команды работы с графическими файлами и др. Наконец, приложения на Tcl/Tk могут сопровождаться логотипом Tel Powered (по лицензии Sun). Появилась, правда, небольшая несовместимость с программами, написанными на старых версиях Tel. Теперь даты, выраженные двумя цифрами года, трактуются как даты следующего столетия. Например, 17 г. означает не 1917 год, а 2017 год. В версии Tel 8.1 была реализована поддержка Unicode.
Учитывая, что язык Tcl/Tk одно время активно поддерживался компанией Sun, можно предсказать ему хорошее будущее. А история создания Tcl/Tk является классическим примером на тему «как стать знаменитым» . Хотите им стать? Разработайте свой скрипт-язык для использования в какой-нибудь быстро развивающейся области информационных технологий, положите исходные тексты интерпретатора на свою страничку, напишите в конференцию по программированию, и ждите, когда вас пригласят в Sun или Microsoft.
VRML: трехмерный язык Интернета
Сценарные языки применяются для самых разных целей, однако чаще всего эти цели укладываются в стандартный набор программистских задач: реализация набора функциональных возможностей и создание удобного пользовательского интерфейса. Однако с приходом в Интернет большого числа некомпьютерных компаний и пользователей-неспециалистов появился совсем другой спектр интересов. Возникла настоятельная потребность расширения текстовых ресурсов Сети трехмерными мультимедийными возможностями. Одним из наиболее интересных вариантов удовлетворения этой потребности оказался язык VRML.
В последнее время апологетами Повсеместно Протянутой Паутины предпринимаются все более решительные действия по дальнейшей «виртуализации» этой сети. Как грибы, вырастают новые технологии создания полноценных виртуальных пространств, и на их основе создаются новые продукты, призванные как можно точнее моделировать окружающий нас мир.
Проблема перехода из плоскостной модели статичных WWW-страничек в третье измерение — в трехмерный и полностью интерактивный виртуальный мир, стоит сегодня перед Интернетом, пожалуй, на одном из первых мест. В начале 1994 года был разработан язык VRML (Virtual Reality Modeling Language), предназначенный специально для организации виртуального трехмерного интерфейса в WWW. Его развитием занимается VRML-консорциум www.vrml.org. Этот язык позволял описывать в текстовом виде трехмерные сцены, освещение и тени, текстуры (покрытия объектов) и, соответственно, создавать свои миры, путешествовать по ним, осматривать их со всех сторон, вращать в любых направлениях, масштабировать, регулировать освещение и так далее. Основным преимуществом этого языка было компактное описание сцен: требовалось передавать по сети не многомегабайтные мультимедийные ролики, а небольшие текстовые странички объемом в несколько килобайт. Задача визуализации возлагалась на браузер.
Однако первая версия VRML по сути ничем не отличалась от языка HTML для описания обычных двумерных страничек, с той лишь разницей, что с помощью VRML 1.0 создавались трехмерные пространства. В странички VRML (со стандартным расширением .WRL) можно было вставлять ссылки на другие трехмерные объекты (просто указывать URL-aдpec) или на страницы HTML. Однако, несмотря на то, что все объекты этих миров можно было обходить, рассматривать и «трогать» мышкой, тем не менее, не то что контакта с пользователем, даже элементарных процессов движения отдельных объектов с помощью VRML 1.0 сымитировать не получалось. В принципе, есть возможность немного «оживить» такие миры с помощью сценариев CGI, но это требует больших усилий профессиональных программистов. Кроме того, первая версия языка позволяла оперировать со слишком ограниченным набором трехмерных объектов, таких как куб, конус, цилиндр, сфера и сконструированные из полигонов объекты, которые можно было покрывать различными материалами. Фактически VRML — это типичный декларативный язык, не содержащий никаких команд, и состоящий только из описаний сцен.
За первой версией языка появилась следующая (VRML 1.1), но она сразу же «умерла», так и не получив распространения. В нее была добавлена поддержка звукового сопровождения и простенькой анимации, но этого жаждущим зрелищ Гражданам Земли оказалось мало.
Наконец в 1996 году была разработана принципиально новая версия VRML 2.O. В ней появилась, в частности, полноценная поддержка мультимедиа, а самое главное, были добавлены элементы интерактивности. И сами описания сцен стали более походить на описания объектов в привычном стиле объектно-ориентированного программирования — со своими событиями и методами, хотя сам язык по-прежнему остался декларативным. Правда, по своей структуре он стал куда более объектно-ориентированным, в частности, в нем появились понятия прототипа, аналога базового класса или шаблона из C++.
Реакции объектов (в терминологии VRML — узлов) на события виртуального мира реализуются путем описания маршрутов событий (которые могут быть различных типов) между узлами. Сами же события генерируются так называемыми сенсорами, которые срабатывают, например, при щелчке пользователя мышью, при виртуальном контакте с узлом, по таймеру и т. п. Элемент времени, кстати, несет значительно большую смысловую нагрузку при создании виртуальных миров, чем, допустим, событие WM_TIMER для программирующих в Windows. Дело в том, что теперь с помощью VRML появилась возможность описывать анимированные сцены, в которых узлы (все-таки привычнее говорить «объекты», но ничего не поделаешь — стандартная терминология) теперь могут самостоятельно «шевелиться». Вы можете создать трехмерный образ человека с помощью иерархии подчиненных узлов, как это делается, например, в 3D Studio, и в зависимости от количества времени, прошедшего с момента запуска программы, заставить определенные узлы перемещаться в заданной последовательности, имитируя хождение по комнатам и другие действия.
Более того, в языке VRML 2.0 введена поддержка исполнения сценариев, написанных на других языках программирования, например, на Java или VBScript. Это позволяет наполнить виртуальные миры функциональностью, действием, и реализовать сценарии, которые возможны только при использовании обычных процедурных языков программирования. Продумана даже возможная несовместимость браузеров — введены механизмы разрешения различных противоречий.
Последняя версия VRML 2.52 поддерживает множество открытых стандартов и технологий, в том числе MPEG-4 и Java3D.
Классика жанра
В заключение рассмотрим экзотические языки программирования, которые хотя и были созданы десятки лет назад, но остаются вне конкуренции при решении множества задач, прежде всего из области искусственного интеллекта и обработки знаний. На базе некоторых из них (например, на Прологе) японская индустрия строит всю свою информационную стратегию.
Лисп: история одного преступления в отношении языка программирования