8.1. Классификация языков

8.1. Классификация языков

Все языки, представленные на рис. 8.1, описываются в учебных примерах этой или других глав данной книги. Описание универсальных интерпретаторов, показанных в правой части схемы, приведено в главе 14.

В главе 5 рассматривались Unix-соглашения для файлов данных. В них имеется определенный спектр сложности. На самом низком уровне находятся файлы, в которых создаются простые ассоциации между именами и свойствами, хорошими примерами таких форматов являются файлы /etc/passwd и .newsrc. Далее представлены форматы, которые осуществляют маршалинг или сериализацию структур данных. Одинаково хорошими примерами в данном случае являются форматы PNG и SNG.

Структурированные форматы файлов данных начинаются на границе мини-языков, когда они выражают не только структуру, но и действия, выполняемые в некоторой интерпретирующей среде (т.е. памяти за пределами самого файла данных). XML-разметка стремится "перешагнуть" эту границу. Примером такого мини-языка, представленным в данной главе, является Glade, генератор кода для создания GUI-интерфейсов. Форматы, которые одновременно разработаны для чтения и записи человеком (скорее человеком, чем программами) и используются для генерации кода, прочно укрепились в области мини-языков. Классическими примерами являются утилиты yacc и lex. Программы glade, yacc и lex описываются в главе 9.

Макропроцессор Unix, m4 представляет собой другой очень простой декларативный мини-язык (т.е. язык, в котором программа выражается как набор желаемых связей или ограничений, а не как явные действия). Он часто используется в качестве препроцессора для других мини-языков.

Рис. 8.1. Классификация языков

make-файлы Unix, предназначенные для автоматизации процесса сборки, выражают зависимости между исходными и производными файлами[77], а также команды, необходимые для создания каждого производного файла из его исходного кода. При выполнении команда make использует данные объявления для обхода предполагаемого дерева зависимостей, выполняя наименьшую необходимую работу для обновления сборки. Подобно спецификациям yacc и lex, make-файлы являются декларативным мини-языком. Они устанавливают ограничения, которые предполагают действия, выполняемые в интерпретирующей среде (в данном случае в той части файловой системы, где расположены исходные и сгенерированные файлы), make-файлы дополнительно рассматриваются в главе 15.

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

Спектр мини-языков простирается от декларативных (с неявными действиями) к императивным (с явными действиями). Синтаксис файла конфигурации программы fetchmail(1) можно рассматривать либо как очень слабый императивный язык, либо как декларативный язык с неявной управляющей логикой. Языки обработки текстов troff и PostScript являются императивными языками с большим количеством встроенной специальной информации о прикладной области.

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

Интерпретаторы bc(1) и dc(1), рассмотренные в главе 7, являются хорошими примерами специализированных императивных мини-языков, которые явно являются языками Тьюринга.

Такие языки, как Emacs Lisp и JavaScript, находятся в области универсальных интерпретаторов. Языки Emacs Lisp и JavaScript предназначены для использования в качестве полных языков программирования, работающих в специализированных средах. Более подробно они описываются ниже при рассмотрении встроенных языков сценариев.

Область интерпретаторов представляет собой область возрастающей неопределенности. Оборотной стороной этого является то, что более универсальный интерпретатор включает в себя меньше предположений о среде, в которой он работает. С возрастающей неопределенностью обычно приходит более развитая онтология типов данных. Shell и Tcl обладают сравнительно простой онтологией, a Perl, Python и Java — более сложной. Данные универсальные языки подробнее рассматриваются в главе 14.

Данный текст является ознакомительным фрагментом.



Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

Классификация ноутбуков

Из книги автора

Классификация ноутбуков Существуют 2 основные системы классификации ноутбуков, которые дополняют друг друга:Классификация на основе размера диагонали дисплея.Классификация по размеру диагонали экрана весьма условна. Экраны с одинаковой диагональю, но различным


Классификация архитектур

Из книги автора

Классификация архитектур Принципов классификации компьютерных архитектур немало. Вероятно, самый старый из них — по формату команд процессора. Другой, уже знакомый, — разделение процессоров на категории CISC и RISC. Оба эти подхода учитывают только аппаратный интерфейс


Классификация

Из книги автора

Классификация На данный момент существует огромное количество разнообразных вирусов. В базе одной из самых популярных отечественных антивирусных программ – Антивирус Касперского – присутствует уже более 100 тыс. записей о всевозможных вирусах и их разновидностях. Все


Классификация вирусов

Из книги автора

Классификация вирусов Следующая классификация, как мы надеемся, поможет сориентироваться в многообразии и особенностях вирусов. В ее основе лежит оригинальная классификация вирусов «Лаборатории Касперского».По среде обитания вирусы можно разделить на:– файловые


Глава 4 Классификация

Из книги автора

Глава 4 Классификация Классификация - средство упорядочения знаний. В объектно-ориентированном анализе определение общих свойств объектов помогает найти общие ключевые абстракции и механизмы, что в свою очередь приводит нас к более простой архитектуре системы. К


7.2. Классификация IPC-методов в Unix

Из книги автора

7.2. Классификация IPC-методов в Unix Как и в однопроцессных структурах программ, простейшая организация является наилучшей. В оставшейся части данной главы представлены IPC-методики приблизительно в порядке возрастания сложности их программирования. Прежде чем использовать


8.1. Классификация языков

Из книги автора

8.1. Классификация языков Все языки, представленные на рис. 8.1, описываются в учебных примерах этой или других глав данной книги. Описание универсальных интерпретаторов, показанных в правой части схемы, приведено в главе 14.В главе 5 рассматривались Unix-соглашения для файлов


Классификация документов

Из книги автора

Классификация документов По происхождению документы можно классифицировать на входящие (поступающие из других организаций), исходящие (отправляемые в другие организации) и внутренние (созданные и используемые внутри организации). Все три потока документов во время их


Классификация компьютерных игр

Из книги автора

Классификация компьютерных игр Классификация по жанрам3D Shooter (3D-шутеры, «бродилки»)В играх данного типа игрок, как правило, действуя в одиночку, должен уничтожать врагов при помощи холодного и огнестрельного оружия, выполняя задания уровней. Врагами часто являются:


5.1. Классификация компьютеров

Из книги автора

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


Проверка и классификация информации

Из книги автора

Проверка и классификация информации Эти таблицы и списки помогут вам ответить на просьбы или действия, которые могут быть атакой социального инженера.Подтверждение личностиДЕЙСТВИЕОПИСАНИЕИдентификационный номер звонящегоУбедитесь, что звонок– внутренний, и


Глава 2 Классификация ноутбуков

Из книги автора

Глава 2 Классификация ноутбуков • Бюджетные ноутбуки• Бизнес-ноутбуки• DTR-ноутбуки• Мультимедиа– и игровые ноутбуки• Тонкие и легкие ноутбуки• Субноутбуки• Планшетные ноутбуки• UMPC• Защищенные ноутбуки• Какой ноутбук выбратьПрежде всего хочу заметить, что


Классификация EXE-вирусов

Из книги автора

Классификация EXE-вирусов EXE-вирусы условно можно разделить на группы, используя в качестве признака для деления особенности алгоритма.Вирусы, замещающие программный код (Overwrite)Такие вирусы уже стали раритетом. Главный их недостаток – слишком грубая работа.