- •Введение
- •1 Анализ текущего состояния проблемы
- •2.2 Классификация языков программирования
- •2.2.4 П р и р о д а с ц е н а р н ы х я з ы к о в. Что же такое сценарный язык? Воспользуемся некоторыми положениями, сформулированными «отцами-основателями» данного направления.
- •2.3 Классификация программ создания анимации
- •2.3.3.2 « M e t a c r e a t I o n s p o s e r ». На рынке сегодня
2.2 Классификация языков программирования
В настоящий момент существуют тысячи, если не десятки и сотни тысяч языков, диалектов и их реализаций. Более того, каждодневно рождаются новые или появляется диалект существующего.
Почти любой язык можно рассматривать как улучшенную версию какого-нибудь другого языка. Иногда очень трудно провести разграничительную линию, где кончается один язык и начинается другой. Взять, к примеру, «LISP», который начинался как отдельный язык и привел в итоге к целому семейству языков. Его диалекты такие как «Scheme» или «Common Lisp» имеют большие отличия. Его варианты такие как «Kyoto Common Lisp» или «Allegro CL» по большому счету одинаковы, но могут иметь некоторые черты, которые делают их несовместимыми.
Реализации создаются для запуска на конкретной машине с конкретной операционной системой и могут иметь дополнительные свойства. Несколько последовательных невидимых изменений в реализации могут привести к небольшим изменениям в языке.
Не всегда имя языка может однозначно идентифицировать его. Иногда язык может претерпеть значительные изменения в языке без смены названия. Иногда меняется только имя, а язык остается тем же «IAL» в «ALGOL», а затем в «ALGOL 58». А бывает, что одно имя используется для нескольких разных языков.
Обычно трудно бывает различить, что принадлежит к характеристике языка, а что к его окружению. Например, «SML» описывается в несколько этапов, сначала «синтаксис ядра», а потом его расширения. Что технически определяет два различных языка. Описания некоторых языков могут опускать такие важные черты, как файловый ввод/вывод, так как их не предполагается использовать без стандартной библиотеки, в случае Си, например, или без среды разработки в целом, или потому что это составляет командный язык какой-нибудь операционной системы или коммерческого продукта.
В то же время некоторые языки настолько по своей природе расширяемы как «Форт», и для них существует такое большое количество таких расширений как для «TeX», например, что каждое такое расширение можно считать отдельным зыком.
Часто известный производитель вносит расширения в базовый язык в своей реализации, например, «Turbo Pascal» или «Delphi» в реализациях фирмы «Borland» сильно отличается от устаревшего стандарта «ANSI». Эту же тенденцию особенно видно в различных реализациях «BASIC» или «Prolog». Часто реализации «Basic» одной фирмы могут сильно отличаться друг от друга, например «Microsoft» следующий список отличных друг от друга (в большей или меньшей степени) вариантов «Basic»: «Visual Basic», «Visual Basic for Applications», «Access Basic», «WordBasic», «TestBasic», «Basic PDS». Даже разные реализации такого хорошо стандартизованного языка как Си могут сильно отличаться друг от друга, так, например «Turbo C» и «Microsoft C» можно рассматривать как отдельные языки. Часто бывают так, что язык является неотъемлемой частью какой-нибудь коммерческой системы. Некоторые из них будут рассмотрены здесь. При классификации языков можно выделить следующие типы: [17], [18].

Рисунок 2 – Классификация языков программирования
2.2.1 С ц е н а р н ы е я з ы к и з а р о д и л и с ь е щ е в 1 9 6 0 – х г о д а х. Тогда возникла острая потребность в языках, обеспечивающих управление программами, иначе говоря, языках управления заданиями.
К командно-сценарному классу относятся Многочисленные интерпретаторы команд «CLI», так называемые языки пакетной обработки и языки для построения системных командных оболочек, яркий пример — «sh», «csh» и их вариации для «UNIX». Как правило, такие языки ориентируются не на интерактивный, а на пакетный режим обработки, когда участие человека на этапе выполнения сведено к нулю и все работает в непрерывном потоке. Эти языки не только могли непосредственно взаимодействовать с соответствующей операционной системой, но и снабжались средствами грамматического разбора программ и трансформации данных. С их помощью можно было создавать различные программные фильтры, используемые, в частности, в конвейере системы «UNIX». В число известных языков такого типа входит «Awk», впервые появившийся в «AT&T UNIX Version 7», а теперь ставший частью стандарта «POSIX Command Language and Utilities». К ключевым особенностям языка, нашедшим впоследствии широкое применение в среде универсальных сценарных языков, можно отнести механизм регулярных выражений, без которого разбор текста производится не очень эффективно.
Языки этого класса ориентировались также на обработку системных событий, генерирование текста и высокоуровневый доступ к базам данных. Здесь стоит отметить язык «RPG». Он до сего времени успешно применяется для создания отчетов из корпоративных БД, работающих преимущественно на мэйнфреймах «RPG/400» для компьютеров «IBM AS/400».
Наиболее активно из языков этого класса в наши дни используется «Rexx», созданный в исследовательских лабораториях «IBM». По набору средств он мало, чем отличается от универсальных сценарных языков, однако выполнен в виде классического блочно-структурированного процедурного языка и предназначен преимущественно для интеграции и расширения функциональности приложений.
2.2.2 П р и к л а д н ы е с ц е н а р н ы е я з ы к и з а р о ж д а л и с ь в 1 9 8 0 – е г о д ы, в э п о х у п о я в л е н и я п р о м ы ш л е н н ы х П К. Тогда на первый план стали выходить задачи интерактивного общения с операционной системой, а также доступа к данным электронных таблиц и баз данных. Отличительная особенность сценарных языков данного класса — ориентация на клиентскую часть программного обеспечения.
Таблица 1 – Прикладные сценарные языки
|
Название |
Год появления |
Разработчик языка |
Организация, где был создан язык |
|
HyperTalk |
1986 |
- |
Apple Computer |
|
Visual Basic |
1990 |
- |
Microsoft |
|
JavaScript |
1994 |
- |
Netscape Communications, Microsoft |
|
CorelScript |
1995 |
- |
Corel |
|
LotusScript |
1995 |
- |
Lotus Development |
|
VBScript |
1995 |
- |
Microsoft |
|
Pnuts |
2001 |
Тойоказу Томацу |
Sun Microsystems |
Использование объектной модели в языках данного класса уже становится нормой, а не исключением. Их еще нельзя назвать полноправными языками объектно-ориентированного программирования; однако они в значительной мере стараются воспользоваться удобствами объектного подхода.
Среди прикладных сценарных языков резко выделяется «Visual Basic», в том числе и такая его разновидность для офисного программирования, как «VBA». «Visual Basic» — это тот самый «пограничный» язык, который скорее относится к сценарным, чем к традиционным. Он во многом задал тон такому классу языков, как прикладные сценарные языки. Более того, работа с пользовательским интерфейсом и встраивание программных компонентов «VBX», «OCX», «ActiveX» стали едва ли не визитной карточкой данного языка. Стоит заметить, что в ходе эволюции «VBA» поглотил другие специфические языки, в частности «Word Basic» и «Excel Macro Language», взяв на себя, их задачи. Под его влиянием были созданы такие языки, как «VBScript», особый диалект языка Visual Basic, ориентированный на создание OLE-компонентов и на работу в рамках браузеров и «LotusScript», своего рода аналог языков «VBA» и «CorelScript», предназначенный для решения задач автоматизации офиса в рамках «Lotus Notes».
Несколько особо в этом ряду стоит «JavaScript», ставший стандартом де-факто в Интернет-программировании при реализации клиентской части. Его прототипом был язык «LiveScript», являвшийся частью серверного продукта «LiveWire» компании «Netscape» и первоначально встроенный в «Netscape Navigator 2.0». После появления языка «Java» корпорации «Sun Microsystems» он начал играть роль самодостаточной надстройки над этим языком, и его название сменилось на «JavaScript». Диалекты этого языка — «Jscript» корпорации Microsoft и «ECMAScript».
«JavaScript» может быть использован при формировании программного кода тестов входного и выходного контроля мультимедийного учебного пособия, созданного на основе Интернет-технологий.
Из новичков в данном классе языков упомянем экспериментальный язык «Pnuts», основная идея которого — дать в рамках сценариев наиболее полный доступ к «Java API». Его можно использовать для самых разных задач, но, прежде всего для оперирования компонентным программным обеспечением.
2.2.3 Я з ы к и р а з м е т к и, и л и т е г и р о в а н н ы е я з ы к и, с т о- я т н е с к о л ь к о п о о д а л ь о т м а г и с т р а л ь н о й л и н и и р а з в и т и я с ц е н а р н ы х я з ы к о в. Им ближе всего по своей природе системы макрообработки, всевозможные макропроцесссоры, столь популярные в 1960—1970-е годы. Их главная отличительная черта — встраивание специального кода в виде обособленных «команд» — тегов непосредственно в обычные тексты. Им родственны такие языки, как «Postscript» и «RTF» чаще воспринимаемый просто как особый формат представления документов. Теги стали использоваться для самых разных целей: для отделения структуры информации от ее содержания, для вкрапления команд форматирования и даже для задания динамического поведения встроенных в документ интерактивных объектов.
Таблица 2 – Языки разметки
|
Название |
Год появления |
Разработчик языка |
Организация, где был создан язык |
|
GML |
1969 |
Чарльз Гольдфарб |
IBM |
|
TeX |
1979 |
Дональд Кнут |
Stanford University |
|
SGML |
1986 |
- |
ISO |
|
HTML |
1991 |
Тим Бернерс-Ли |
CERN |
|
CFML (Cold Fusion) |
1995 |
- |
Allaire |
|
DHTML |
1996 |
- |
Microsoft, Netscape Communications |
|
XML |
1997 |
- |
W3C |
|
XHTML |
2001 |
- |
W3C |
Идея отделения структуры информации от содержания возникла давно. Первым осознанным решением стал запуск проекта «GenCode». В сентябре 1967 года Уильям Танниклифф, председатель Комитета по композиционным решениям ассоциации «Graphic Communications Association», предложил провести четкую границу между содержанием и форматом представления информации. Руководитель «GCA» Норман Шарпф принял решение приступить к реализации соответствующего проекта «GenCode».
Под влиянием «GenCode» в 1969 году американский ученый Чарльз Гольдфарб возглавил работу исследовательской группы в «IBM», целью которой была проработка принципов интегрированных информационных систем в области законодательства. Плодом усилий этого коллектива, куда входили также Эдвард Мошер и Реймонд Лори, стал «GML» — обобщенный язык разметки. Он является мощным языком разметки стандартизованным «ISO 8879». «Sgmls» - это «SGML» анализатор, потомок «ARCSGML» анализатора написанного Чарльзом Голдфарбом. Выдает простое, легко разбираемое, построчное, «ASCII» представление «SGML» стрктуры «Element Structure Information Set». Используется для приложений с управляющими структурами в виде «SGML». «SGML» - важный шаг в направлении перехода к разделению информации от его представления. Многие решения этой группы нашли применение в различных издательских системах «IBM». На основе «GML» и идей системы «Scribe», разработанной Брайаном Рейдом, Международная организация по стандартизации «ISO» разработала метаязык «SGML», стандарт «ISO-8879:1986».
Наиболее значительными достижениями в области языков разметки стали «ТеХ», «HTML» и «XML». Язык «ТеХ», разработанный в 1979 году Дональдом Кнутом, на три года опередил «Postscript», созданный Джоном Уорноком в компании «Adobe» и предназначенный для точного описания внешней формы документов с композицией произвольной сложности. В отличие от низкоуровневого «Postscript», язык «ТеХ» ориентировался на работу пользователей, не имеющих навыков программирования. Наиболее широко этот язык стал применяться в научной среде, где предъявляются самые высокие требования к качеству построения формул сложной структуры.
Язык «HTML», с появлением которого понятие «гипертекст» стало простым и обыденным, создавался на базе «SGML» путем максимального упрощения его структуры и свойств. Вряд ли имеет смысл описывать его подробно: это основной язык представления информации в Интернет-среде. По этой причине данный язык программирования может быть применен для создания мультимедийного проекта, так как это дает возможность опубликовать данный проект посредством Интернет.
Метаязык «XML», созданный во многом с подачи Джона Босака, руководителя рабочей группы «SGML ERB», также основывался на «SGML», но для него характерно куда более бережное отношение к идеям своего предка, да и выполняет он совсем иную роль, нежели «HTML». Это своего рода язык транспортирования и промежуточного хранения данных при обмене ими между разнородными и распределенными системами. На его основе можно проводить сколь угодно сложные преобразования документов и текстовой информации, а главное, в унифицированном виде хранить данные реляционно-иерархической структуры, в том числе по настройкам и программированию компонентов. Это, правда, не мешает использовать его и не совсем по назначению — для задания динамики поведения всевозможных объектов. В 2001 г. появилась ревизия «HTML», которая получила название «XHTML», где были учтены требования «XML».
«Postscript» реализация «Ghostscript» - общедоступный «Postscript» интерпретатор с возможностью просмотра для многих систем и многими шрифтами. Используется под операционными системами: «Unix», «MS-DOS».
«CFML» и «DHTML» — языки разметки, напрямую предназначенные для динамического создания Интернет-страниц и доступа к БД. Оба они являются расширениями «HTML», но «CFML» — чисто коммерческий язык компании «Allaire», не имеющий других реализации, а «DHTML», возникший из «Dynamic HTML», — результат многочисленных компромиссов и конкуренции «Netscape» и «Microsoft», которые были подытожены консорциумом «W3C». Тот же «ASP» по сути, не что иное, как сценарий на «VBScript», который исполняется на сервере.
