КНИЖНАЯ ЛАВКА
Мордехай Бен-Ари. Языки программирования. Практический сравнительный анализ
МАКСИМ ОТСТАВНОВ
maksim@otstavnov.com

Мордехай Бен-Ари.
Языки программирования. Практический сравнительный анализ
Пер. с англ. - М.: Мир, 2000. - 366 с., илл., 5000 экз.


Мордехай Бен-Ари (Mordechai Ben-Ari; stwi.weizmann.ac.il/g-cs/benari), известный израильский теоретик и практик программирования, впервые привлек к себе внимание специалистов по информатике десять лет назад, выпустив учебник "Принципы параллельного и распределенного программирования" ("Principles of Concurrent and Distributed Programming", Prentice Hall, 1990). "Принципы..." стали часто цитироваться не только в технической литературе, но и в исследованиях по социологии и менеджменту компьютерного программирования.

С тех пор Бен-Ари написал несколько десятков специальных статей (в прошлом году он порадовал читателей "Comm. ACM" статьями с характерными названиями "Размышления о параллельном" ["Thinking Parallel"] и "Антропология семафоров" ["The Anthropology of Semaphores"]) и еще четырех учебников, в том числе переведенной ныне книги "Understanding Programming Languages", буквально: "Восприятие языков программирования", выдержавшей два издания в престижном международном издательстве John Wiley & Sons (1996 и 1998).

Я полагаю, перевод "Языков программирования..." - очередной профессиональный успех издательства "Мир" и большая удача для русскоязычных программистов.

"К сожалению, слишком у многих программистов нет достаточных языковых навыков. Они страстно любят свой "родной" язык программирования и не способны ни проанализировать и сравнить конструкции языка, ни оценить преимущества и недостатки современных языков и языковых понятий", - пишет автор в предисловии, и я не знаю, как у них, в Израиле и в Америке, а у нас ситуация с "языковыми навыками", похоже, с годами только ухудшается. Строка "программист на языке C++" (а то и "...на Visual C++") в резюме скоро перестанет вызывать даже улыбку у кого-либо, кроме коллег.

Спектр языков, использованных Бен-Ари для примеров, достаточно широк - это и "классические процедурные" языки типа Pascal, C (и даже FORTRAN), и "объектно-ориентированные", как Ada и C++, и, наконец, непроцедурные, например, "функциональный" ML и "логический" Prolog. Но главное даже не в "полиглоссии" автора (и поощрении таковой у читателя), а в том, что сама логика изложения приводит читателя к понятийному "схватыванию" конструкций программирования и пониманию того, что средства конкретного языка - лишь способ выразить такие конструкции.

В части первой, "Введение в языки программирования", дается материал, относящийся к таким азам, как типология языков, различие синтаксического и семантического аспекта, различение языка и его конкретной реализации (среды программирования).

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

Самой захватывающей мне показалась часть четвертая, посвященная программированию больших систем. На примере конкретных языков программирования автор показывает, как прагматика коллективной работы над программными проектами повлияла на эволюцию языков программирования и языковые средства современных языков. Здесь обсуждаются декомпозиция программ, модули и, конечно же, концепция объектно-ориентированного программирования.

Средства ООП демонстрируются на таких языках, как популярные C++ и Ada 95, а также на остающемся экзотическим новаторском Eiffel. К сожалению, языку Smalltack не нашлось места ни в этой части, ни в книге в целом, также автор не стал обсуждать такую важную "ветку" в "генеалогическом древе" языков, как Object Pascal/Modula 3.

Пятая часть вводит читателя в мир непроцедурных языков: в функциональное и логическое программирование. Отсутствие LISP в числе языков-примеров мне показалось вполне оправданным (хотя на LISP можно писать функционально, его синтаксис все же часто так и подталкивает к "процедурному мышлению"), но почему в эту часть попала глава про Java, я понять не смог: вроде бы, никто не мешает "думать процедурно" и писать на Java.

Сама глава (добавленная во второе издание; кстати, оригинальный текст этой главы доступен на www.wiley.com/college/benari) достаточно нетривиальна по своей логике: первое, что делает Бен-Ари, - проводит различия между моделью исполнения (и разработки!) программ для сети и в сети, введенной в Java, и языком Java как конкретным языком программирования. Модель Java ему определенно нравится, к языку Java он, видимо, скептичен (как и большинство членов Ada-сообщества), а практика защиты языка программирования товарным знаком ему, по всей видимости, кажется опасным прецедентом. В то же время до анализа связи между коммерческой разработкой и распространением софта и их влиянием на модели сред исполнения и разработки и - опосредованно - на языковые конструкции Бен-Ари не доходит.

Стоит заметить, что автор является одним из архитекторов распределенной среды Java/Ada 95 (JADE), разрабатываемой в Вейцмановском институте.

Книга содержит небольшой список свободно доступных компиляторов и средств программирования (Приложение А) и очень короткую библиографию (Приложение Б).

Перевод, редактирование и набор книги выполнены профессионально и с любовью к предмету, что характерно для изданий "Мира", и это, возможно (в случае фундаментального и долгоживущего труда), оправдывает появление русского перевода с двухгодичной задержкой по отношению к оригиналу. Хотелось бы видеть издание в жесткой обложке, но, увы, весь тираж в мягкой. Думаю, книга быстро истрепется, что есть в равной мере комплимент содержанию и упрек оформлению.

"Языки программирования" Мордехая Бен-Ари рекомендованы методическим советом программистских кафедр факультета ВМК МГУ в качестве учебника. Думаю, к этой рекомендации стоит прислушаться и другим вузам. Но и для практикующих программистов, давно окончивших институт (или никогда в таковом не учившихся), книга будет крайне полезна - если не как учебник в прямом смысле, то как повод поразмыслить над многими нетривиальными мыслями автора.



Ваши предложения и замечания ждем по адресу: tails@computerra.ru

МАКСИМ ОТСТАВНОВ
maksim@otstavnov.com

Редактор "Компьютерры", концепт-мейкер и постоянный ведущий рубрики "Компьюномика", ведущий колонки "Frontpage". Консультант по финансовым информационным технологиям, заведующий общественной лабораторией гражданской и финансовой криптографии при Институте коммерческой инженерии.
Автор специальных и популярных работ.

Предыдущий материал | Оглавление номера | Следующий материал

Предыдущая рубрика: СЕЛО ЩЕПЕТНЕВКА
Следующая рубрика: КНОПКИ

Текущая рубрика: КНИЖНАЯ ЛАВКА