DOU Books: 5 книг по программированию, которые советует Руслан Шевченко, разработчик с 20-летним опытом

От редакции: в рубрике DOU Books участники сообщества рассказывают о пяти любимых книгах — тех, которые меняют мировоззрение и могут быть полезны читателям-коллегам.

[Руслан Шевченко — более 20 лет опыта в сфере разработки, работал научным сотрудником в Институте Программных Систем НАНУ, потом был техническим директором интернет-провайдера [NBI], занимался разработкой программного обеспечения в GradSoft, далее работал в разных проектах в телекоме, рекламной индустрии и финтехе, сейчас — системный архитектор в IOV42. Активный колумнист ДОУ, автор ежегодного рейтинга языков, более десятка статей в реферируемых журналах]

На самом деле сложно выделить именно пять, но если выбрать те, что повлияли в профессиональном плане, то вот более или менее хронологический список.

Д. Пойя «Как решать задачу»

Оригинал: George Polya. How to solve it, Stanford University. 1944

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

Цитата из предисловия:

Крупное научное открытие дает решение крупной проблемы, но и в решении любой задачи присутствует крупица открытия. Задача, которую вы решаете, может быть скромной, но если она бросает вызов вашей любознательности и заставляет вас быть изобретательными и если вы решаете ее собственными силами, то вы сможете испытать ведущее к открытию напряжение ума и насладиться радостью победы.

Б. Керниган, Д. Ритчи «Язык программирования С»

Оригинал: Brian Kernighan and Dennis Ritchie. The C Programming Language. Prentice-Hall. 1988

Классическое введение в язык. K&R не зря называют золотым стандартом технического писательства. Эта была первая техническая книга, слог которой позволял читать ее как прочетную.

Цитата:

#include <stdio.h>
 
int main() {
   println("Hello, world\n")
}

Э. Мендельсон «Введение в математическую логику»

Оригинал: Elliott Mendelson. Introduction to Mathematical Logic, Six Edition: CRC Press, 2015

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

Цитата:

Теорема Сколема-Левенгейма [1919, 1915]. Если теория K первого порядка имеет какую-то модель, то она имеет и счетную модель...

D. Knuth «Literate Programming»

Говоря о Дональде Кнуте, также надо вспомнить гораздо более известную его книгу «Искусство программирования для ЭВМ» (Donald E. Knuth. The art of Computer Programming), получившую в русскоязычной среде неофициальное название «библия программиста» и задающую стандарт для описания алгоритмов. Однако сейчас можно сказать, что TAoCP сейчас интересна для чтения больше в историческом контексте, для введения в область алгоритмов есть более современные и легкие учебники (кстати, его же совместная с Рональдом Грехемом и Ореном Патишником «Конкретная математика»).

А вот идеи, изложенные в Literate Programming, интересны сами по себе и сейчас. В свое время они почему-то не были подхвачены индустрией, хотя оказали колоссальное влияние на академическую среду.

Цитата:

My hope is that the ability to make explanations more natural will cause more programmers to discover the joys of literate programming, because I believe it’s quite a pleasure to combine verbal and mathematical skills; but perhaps I’m hoping for too much.

А. Коберн «Современные методы описания функциональных требований к системам»

Оригинал: Alistair Cockburn. Writing Effective Use-Cases. 2001

Книга о том, как писать Use-Cas-ы от автора этих самых Use-Cas-ов. Казалось бы, ничего особенного — просто много примеров и структурированное изложение. Одна из немногих техник в организации процесса разработки ПО, которая более или менее работает. Коберн также известен как автор семейства методологий Crystal.

Цитата:

Каждому проекту — своя методология.

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

  • Ian Goodfellow, Yoshua Bengio, Aaron Courville «Deep Learning Book» (доступна online). Если вам нужно легкое введение в тему — самое то.
  • Roland Kuhn with Brian Hanafee and Jamie Allen «Reactive Desing Patterns» (страница книги). Тоже хорошо написанное введение.
  • Martin Kleppmann «Designing Data-Intensive Applications» (страница книги). Читая ее, становится понятнее, как можно написать свою базу данных.
Похожие статьи:
До вашої уваги дайджест навчальних програм для тих, хто починає свою кар’єру в ІТ. У цьому номері зібрані можливості, актуальні...
В обновленном исследовании приняли участие 73 школы и учебных центра, которые обучили 43 868 студентов в 24 городах Украины. В 2015...
От редакции:В рубрике DOU Проектор все желающие могут презентовать свой продукт (как стартап, так и ламповый pet-проект). Если вам...
Существует стойкий миф о том, что программисты — интроверты, отстраненные и нелюдимые существа, которые общаются между собой...
Привет, я — Дмитрий Немеш, СТО в компании Lalafo, волонтер в GeekHub, более 7 лет работаю с PHP/Java/Node.js. В этой статье расскажу, как...
Яндекс.Метрика