Книга «Пионеры программирования»
Недавно прочитал книгу «Пионеры программирования» Федерико Бьянкуцци и Шейна Уордена. Книга довольно необычная по своей сути – это просто сборник интервью, взятый у авторов различных языков программирования. Здесь собраны интервью, взятые у 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++ А по Си, наверное, проехались все, включая и Бьёрна. Оказалось, что когда он создавал 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.
zaporozhskiystudent:
А Билл Гейтс где???
15 июля 2011, 11:21 ппJenyay:
Про Гейтса разговор тоже был. Про то, как он впаривал IBM’у DOS, про то, как написал Basic, который не хотел всем просто так раздавать, но его все-равно спиратили 🙂
16 июля 2011, 7:08 дп