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» (страница книги). Читая ее, становится понятнее, как можно написать свою базу данных.

Все про українське ІТ в телеграмі — підписуйтеся на канал DOU

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному1
LinkedIn



7 коментарів

Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.

Совет самому себе 7 лет назад:
1. George Chrystal, Algebra : An Elementary Text-Book (2 volume set)
2. Euclid, The Thirteen Books of the Elements, by Thomas L. Heath
3. Wirth, Niklaus, Algorithms Plus Data Structures Equals Programs
4. From mathematics to generic Programming
5. Knuth, The Art Of Computer Programming

Годный спсок, респект Руслану. Ньюфаги, набигайте!

return 0 не подвезли.
А так, годный список, плюсую

это фича а не бага — return 0 в книге не было до 3-го издания (alvand.basu.ac.ir/...​tchie, 2nd ed., ISBN .pdf )

Да, но вот println там точно не было)) А точка с запятой была :)

Підписатись на коментарі