Книга «Пионеры программирования»

book_pionerНедавно прочитал книгу «Пионеры программирования» Федерико Бьянкуцци и Шейна Уордена. Книга довольно необычная по своей сути – это просто сборник интервью, взятый у авторов различных языков программирования. Здесь собраны интервью, взятые у 27 человек, имеющих непосредственное отношение к созданию 17 языков программирования:

  • C++ (Бьёрн Страуструп);
  • Python (Гвидо ван Россум);
  • APL (Эдин Д. Фалкофф);
  • Forth (Чак Мур);
  • Basic (Томас Курц);
  • AWK (Ал Ахо, Брайан Керниган, Питер Вайнбергер);
  • Lua (Роберто Иерусалимский и Луис Энрике де Фигейреду);
  • Haskell (Пол Худак, Джон Хьюз, Саймон Пейтон-Джонс и Филип Уодлер);
  • ML (Робин Милнер);
  • SQL (Дональд Чемберлен, который теперь работает над XQuery);
  • Objective-С (Том Лав, Брэд Кокс);
  • Java (Джеймс Гослинг);
  • C# (Андерс Хейлсберг);
  • UML (Айвар Якобсон, Джеймс Рамбо, Гради Буч);
  • Perl (Ларри Уолл);
  • PostScript (Джон Уорнок и Чарльз Гешке);
  • Eiffel (Бертран Мейер).

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

Понравилось, что каждое интервью носит свой «отпечаток», который показывает область, которой в данный момент занимается или интересуется интервьюируемый. Так, например, один из авторов Objective-C Брэд Кокс говорил про ООП и более высокие уровни абстракции, программирование для министерства обороны, где требуется особая безопасность кода, про сервис-ориентированную архитектуру (SOA и SaaS), поразмышлял о проблемах с авторскими правами (точнее, о проблемах с копирайтом). Интересное отношение Брэда к ООП:

«Я понял, что настоящим достижением ООП является инкапсуляция, и с её помощью можно вручную сделать почти всё, для чего я применял наследование, но более понятным образом».

А еще понравились его же слова про рекламу:

«Есть другое экономическое решение, сегодня весьма широко распространённое: реклама. Здесь пользователи не являются ни охотниками, ни добычей: они — приманка. Несмотря на успех Google, полагаю, этот путь не приведёт ни к чему хорошему».

В интервью состоялась заочный спор между C++ и Java. Судя по всему, среди интервьюируемых только Страуструпу нравится C++ Книга Пионеры программирования icon smile А по Си, наверное, проехались все, включая и Бьёрна. Оказалось, что когда он создавал C++, то по сути хотел скрестить Си и Simula. Но при этом Страуструп считает, что хотя C++ позволяет программировать в стиле Си, но делать это стоит только в крайних случаях, предпочитая ООП, себя он винит в том, что сразу не смог донести это до разработчиков:

«К сожалению, повсюду немало и скверного кода на С++, без всякой надобности действующего на низком уровне… Тот, кто пишет на С++, широко применяя неинкапсулированные массивы, приведение типов, неструктурированные операции new и delete, сам создаёт себе проблемы. Это стиль программирования, практиковавшийся в 1980-х. Правильная работа с С++ предполагает стиль с минимальным вмешательством в систему безопасности типов и управление ресурсами (включая память) и систематическое его применение».

В интервью Страуструп довольно часто сравнивал C++ и Java, в целом его отношение к Java можно охарактеризовать следующей цитатой:

«Пожалуй, создатели Java — а в ещё большей мере те, кто продвигал его на рынке, — придавали ООП такое большое значение, что дошли до абсурда. Когда Java только появился, обещая скромность и простоту, я высказал предположение, что в случае успеха Java значительно увеличится в размере и сложности. Так оно и случилось».

Сам он считает C++ не просто объектно-ориентированным языком, а языком, который поддерживает сразу несколько парадигм, в том числе и обобщенное программирование.

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

«Проблема программирования в сравнении с другими творческими сферами в том, что не существует музея программ. Если вы художник, то можете изучать картины великих мастеров прошлого по книгам или оригиналам, висящим в музее. Если вы архитектор, то можете изучать разные виды построек. Программисты же предоставлены самим себе».

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

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

В целом книжка интересная, не буду говорить, что она must read, но читать ее интересно, правда, некоторые интервью получились несколько заумными, например, интервью с автором ML Робином Милнером, где идет обсуждение языков программирования с точки зрения математики, но это не недостаток книги.

Правда, мне все-таки кажется, что для этой книги цена, по которой ее продают, завышена, все-таки это не техническая книга, к которой обращаешься постоянно, «Пионеры» вряд ли станет настольной книгой, но будет интересно ее перечитать лет так через 10-20, чтобы сравнить будущее, представленное в книге, с тем, что получится в реальности.

PS. До этого мне не попадались книг, которые представляют собой сборник интервью, но скоро должна выйти еще одна подобная книга «Кодеры за работой. Размышления о ремесле программиста». Приведу цитату из аннотации:

«Питер Сейбел, писатель-программист… Он взял интервью у 15 величайших профессионалов: Кена Томпсона, создателя UNIX, Берни Козелла, участника первой реализации сети ARPANET, Дональда Кнута, Гая Стила, Саймона Пейтон-Джонса, Питера Норвига, Джошуа Блоха, Брэда Фицпатрика, создателя Живого Журнала, и других».

PS. Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.

Пожалуйста, оцените запись

УжасноПлохоТак себеХорошоОтлично (Количество голосов: 1, средняя оценка: 5,00)
Загрузка...

комментария 2

  1. zaporozhskiystudent:

    А Билл Гейтс где???

  2. Jenyay:

    Про Гейтса разговор тоже был. Про то, как он впаривал IBM’у DOS, про то, как написал Basic, который не хотел всем просто так раздавать, но его все-равно спиратили 🙂

Leave a comment

Subscribe without commenting