Языки программирования существуют уже более полувека, однако, развитие информационных технологий постоянно требует совершенствования средств управления, среди которых умение составлять программы, играет далеко не последнюю роль.
![]() |
Роберт У. Себеста, Основные концепции языков программирования. «Вильямс», Москва, Санкт-Петербург, Киев, 2001 г., 672 с. ил. |
Пятое издание книги, выпущенное Addison Wesley и переведенное на русский язык издательским домом «Вильямс», значительно отличается от предыдущих. Бросается в глаза отсутствие специальной главы об объектно-ориентированных языках. Вместо нее появилась глава о языковой поддержке объектно-ориентированного программирования. Как утверждает автор, такой взгляд обозначает начало следующей стадии развития императивных языков. Кроме того, в книге уделено внимание Java и функциональным языкам, например вместо запатентованного языка Miranda, их концепция представлена с помощью общедоступного языка Haskell. Изменения коснулись и других глав: расширен раздел, посвященный аксиоматической и денотационной семантике, удалены некоторые материалы по Модула-2, в частности, о сопрограммах и поддержке абстрактных типов данных в обмен на включение в книгу многочисленных текущих изменений в развивающихся языках.
Автор рассматривает свою книгу, прежде всего, как учебное пособие и дает рекомендации преподавателю по использованию ее материала для построения различных курсов, но, разумеется, она может быть рекомендована и для самостоятельного изучения. Однако для отечественного читателя данное издание обладает одним недостатком — объяснимым, но от этого не менее прискорбным отсутствием ссылок на русскоязычные публикации. Чтобы у читателя не складывалось впечатление об истории языков, как о написанной во времена железного занавеса, редактору следовало бы озаботиться о соответствующих дополнениях, по крайней мере, к списку литературы.
Книга состоит из пятнадцати глав, включающих материалы по собственно языкам, их общим свойствам, отношению к данным и видам обработки. В двух первых обсуждаются общие представления о языках программирования, побудительные мотивы для изучения концепций языков и областей применения программирования от научных приложений до специализированных. Предлагается четыре критерия оценки языков: читабельность, легкость создания программ, надежность и стоимость. Естественно для концепции языков важны их категории, компромиссы при разработке, методы реализации (компиляция, чистая интерпретация и смешанная система), а также среда программирования.
Обзор основных языков можно рассматривать как часть книги, имеющую самостоятельный интерес. В ней описаны алгоритмический язык Plankalkul и множество других, дающих убедительную информацию для понимания концепции.
Следующим шагом в постижении концепции является знакомство с описанием синтаксиса и семантики языков — здесь имеются материалы по синтаксису и формальным методам его описания, а также по синтаксическому анализу. Не обойдено вниманием использование в языках атрибутивной грамматики и динамической семантики. Дальнейший материал книги связан с семантическими понятиями: имена, связывание, проверка типов и области видимости, а также типы данных. Рассматриваются семантические правила в виде выражений и операторов присваивания, описывается структура управления, реализуемая в языках программирования.
Как реагируют языки на возникновение подпрограмм и их реализацию, описываемую с помощью общей семантики вызовов, возвратов и других способов, показано в двух главах, а материал отдельной главы целиком посвящен появлению абстрактных типов данных от истоков до современности. Следующий шаг в понимании концепции языков автор усматривает в поддержке объектно-ориентированного программирования и в соответствующей главе прослеживает ее во многих языках от Smalltalk до Eiffel.
Развитие многопроцессорных архитектур не могло не потребовать адекватной реакции со стороны языков программирования: поддержка параллельности и синхронизации процессов с помощью семафоров, мониторов, передачи сообщений, потоков, управления на уровне операторов и др. Иллюстрации к изложению даются с использованием возможностей Ada 95, Java и High-Performance FORTRAN. К концептуальным понятиям в книге отнесены возможности языков по обработке исключительных ситуаций. В качестве иллюстрации выбраны реализации обработки исключительных ситуаций, принятые в языках PL/1, Ada, C++ и Java.
Завершают книгу главы о функциональных языках и языках логического программирования, где представлены LISP, Scheme, COMMON LISP, ML и Haskell, а также Prolog. В книге помещен также большой список литературы и предметный указатель, а также резюме в конце каждой главы и упражнения. Но, к сожалению, для многих читателей работа с приложениями и упражнениями возможна только по получении электронного учебника (правда, на ftp-сервере по адресу ftp://ftp.aw.com/cseng/authors/sebesta/concepts4e/ имеется набор диапозитивов к лекциям из первых 13 глав книги).