null

Три замечательные книги по программированию

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

Роберт Мартин
Чистый код. Создание, анализ и рефакторинг
(Clean Code: A Handbook of Agile Software Craftsmanship)


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

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


Идеальный код
под ред. Энди Орама и Грега Уилсона
(Beautiful Code)


Эта книга представляет из себя сборник очерков, посвященных различным программным системам и интересным особенностям реализации, связанным с ними.  Тут есть и простой движок регулярных выражений, написанный на C Брайаном Керниганом и использующийся в основе утилит типа grep, так и историю развития одного из алгоритмов линейной алгебры BLAS с 60-х годов по наше время, написанном на FORTRAN и меняющемуся сообразно . Основное внимание здесь уделяется внутренней красоте кода, позволяющей за минимальное число строк получить гибкость и производительность, при этом не теряя в читаемости. Диапазон языков весьма широк - основными являются конечно C и Java, но есть и Perl с Python и Haskell с LISP, а формат небольших очерков позволяет не утонуть в сухих технических подробностях. Кстати, одна из глав написана Брайаном Кентриллом и посвящена реализации блокировок в ядре Solaris.

Идеальная архитектура. Ведущие специалисты о красоте программных архитектур
под ред. Диомидиса Спинеллиса, Георгиоса Гусиоса
(Beautiful Architecture: Leading Thinkers Reveal the Hidden Beauty in Software Design)


Эта книга отличается от предыдущих двух хотя бы потому здесь вы практически не найдете программного кода, а организация этой книги похожа на "Идеальный код" (собственно редакторы сами признают, что их книга - идейный продолжатель этой книги) - она состоит из рассказов разработчиков о архитектуре программных проектов, над которыми они трудились. Хотя найдете здесь вы и рассуждения об организации процесса разработки, так и обсуждения технических подробностей виртуальной машины Java, позволивших разработчикам эмулятора JPC получить адекватную производительность эмулятора x86 архитектуры. Есть тут и глава, посвященная реализации MVC в Emacs и небольшие экскурсы в SmallTalk и Eiffel - языки, не снискавшие коммерческой популярности, но оказавшие огромное влияние на современные ООП-языки. И конечно пара слов уделяется архитектуре домов и зданий - ведь между ней и архитектурой программной очень много общего.

К списку статей

 

Интересуюсь по большей части системным анализом программного обеспечения: поиском багов и анализом неисправностей, а также системным программированием (и не оставляю надежд запилить свою операционку, хотя нехватка времени сказывается :) ). Программированием увлекаюсь с 12 лет, но так уж получилось, что стал я инженером.

Основная сфера моей деятельности связана с поддержкой Solaris и оборудования Sun/Oracle, хотя в последнее время к ним прибавились технологии виртуализации (линейка Citrix Xen) и всякое разное от IBM - от xSeries до Power. Учусь на кафедре Вычислительной Техники НИУ ИТМО.

See you...out there!

http://www.facebook.com/profile.php?id=100001947776045
https://twitter.com/AnnoyingBugs