воскресенье, 26 апреля 2015 г.

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

Дочитал книгу Федерико Бьянкуцци и Шейна Уордена с двойным названием "Пионеры программирования. Диалоги с создателями наиболее популярных языков программирования".


Книга досталась мне по символической цене в нагрузку с несколькими другими книгами, которые я заказывал в интернет-магазине books.ru. Правда цены на остальные книги и на доставку в этом интернет-магазине взлетели осенью так высоко, что я сомневаюсь, что эта книга действительно обошлась мне дёшево :)

Книга представляет собой сборник интервью, взятых у авторов значимых языков программирования. Прежде всего перечислю весь список языков:
  1. C++
  2. Python
  3. APL
  4. Форт
  5. Бейсик
  6. AWK
  7. Lua
  8. Haskell
  9. ML
  10. SQL
  11. Objective-C
  12. Java
  13. C#
  14. UML
  15. Perl
  16. PostScript
  17. Eiffel
В этом списке меня больше всего удивило отсутствие некоторых весьма важных языков, без которых остальной список кажется неполным. Прежде всего это Lisp и Smalltalk. Кроме того, мне кажется странным, что обойдены стороной такие языки как JavaScript, Ruby, Erlang. Кстати, раз уж в книге есть C++, Objective-C, Java и C#, для комплекта стоило ещё взять интервью у авторов D.

Пожалуй большинство авторов так или иначе не лестно отозвалось о C++. Общие высказывания были в том духе, что он слишком громоздкий.

Автор Форта запомнился как несколько оторванный от жизни человек, увлечённый узким миром микропроцессоров.

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

Авторы AWK - вполне себе современная по подходам к работе команда разработчиков. Мне кажется, что в настоящее время большинство программного обеспечения разрабатывается именно такими небольшими командами, с совместной работой над кодом, подготовкой проекта и документации.

До чтения этой книги не я как-то не задумывался о том, что у языка SQL есть авторы. Почему-то казалось, что его авторы остались безвестными рядовыми сотрудниками какой-то корпорации вроде Oracle или IBM. Впрочем, видимо именно так это и есть. По своему влиянию этот язык оказал, пожалуй, даже большее влияние на отрасль прикладного программного обеспечения, чем все остальные языки. Потому что почти любой прикладной проект, сделанный для нужд бизнеса, вне зависимости от того, на каком языке он написан, использует одну из СУБД и один из диалектов SQL.

Авторы Objective-C высказали интересную мысль, которая давно вертится у меня в голове, о том, что наследование - чуть ли не лишняя концепция ООП, без которой можно обойтись в большинстве проектов, делая акцент на инкапсуляции. В этом, они, похоже вступают в спор с автором Eiffel, который кроме важности контрактного программирования заявляет о важности наследования, при чём множественного.

Автор Perl, при всём моём уважительном отношении к Perl как инструменту для быстрого решения практических задач системного администрирования, меня разочаровал. Он произвёл впечатление человека, случайно попавшего в отрасль. Часто говорил о важности контекста, так что сложилось впечатление, что он намеренно делал язык Perl как можно более запутанным. Кроме того, время от времени он переходил на тему Perl 6. Сложилось впечатление, что в Perl 6 он решил сделать разворот на 180 градусов по некоторым, чуть ли не основным концепциям.

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

Автор Eiffel рассказал о том, что использует оригинальный подход к тестированию программ. Поскольку язык концентрируется на ООП и принципах контрактного программирования, оказывается возможным создавать случайные объекты и вызывать их методы со случайными аргументами, отлавливая исключения. При этом, если исключение произошло в предусловии, значит всё нормально, т.к. в этом случае объектом или методом не правильно воспользовались. Если же исключение произошло в постусловии, значит ошибка содержится именно в вызываемом методе или объекте. Становится возможным оставить программу на тестирование на несколько часов, не занимаясь специально написанием тестов. В процессе тестирования все последовательности вызовов и их аргументы, приводящие к ошибкам, записываются, так что на их основе можно не только продиагностировать и исправить ошибку, но и добавить к программе регрессионный тест на будущее.

Большинство остальных интервью не оставило в памяти сколь-нибудь заметного следа. APL, Haskell, ML я воспринимаю как языки, оторванные от практики. UML вообще не считаю языком, а остальные языки, на мой взгляд, вполне обычные и, не обладают какой-то изюминкой, которая позволила бы отложиться им в памяти.

P.S. Кроме того, на этой неделе я дочитал, наконец "Таис Афинскую" Ивана Ефремова. Книгу я начал читать ещё в 2010 году, потом надолго отложил и дочитал лишь в течение последнего месяца.

Комментариев нет:

Отправить комментарий