Wednesday, July 29, 2015

Selection of most influential books in Computer Science (IMHO :). To be updated...

2.        ГЛАВНЫЕ КНИГИ С ИСХОДНИКАМИ, КОММЕНТАРИЯМИ И ДОПОЛНИТЕЛЬНЫМИ МАТЕРИАЛАМИ
2.1.        Дискретная математика (логика, комбинаторика, теория графов)
  1. Айгнер М. Комбинаторная теория. – М.: Мир, 1982. – 558 с.
    1. Правильно систематизирует знания по комбинаторике. Вводит понятие «комбинаторной конфигурации».
2.2.        Алгоритмизация
  1. Cormen T.H., Leiserson C.E., Rivest R.L., Stein C. Introduction to Algorithms (3rd Edition). – MIT Press, 2009. – 1312 p.
    1. Must read!  Обычно первая книга, которую советуют как учебник по эффективной алгоритмизации. Книги Седжвика и Книта не хуже – просто другие, но в качестве учебника эта оптимальна…
    2. Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгоритмы: построение и анализ, 3-е изд. – М.: Вильямс, 2013. – 1328 с. (во втором издании при переводе и предпечатной подготовке допустили несколько грубых ошибок, в третьем вроде исправили, но все ли?)
  2. Sedgewick R., Wayne K. Algorithms. – Pearson Education, 2011. – 956 p.
    1. Must read!  Вторая книга, которую советуют как учебник по эффективной алгоритмизации. В России хорошо известны предыдущие работы
    2. http://algs4.cs.princeton.edu – дополнительные материалы
    3. Седжвик Р. Алгоритмы на C++. Фундаментальные алгоритмы и структуры данных. – М.: Вильямс, 2013. – 1056 с. (+ аналогичные «алгоритмы» на C и на Java)
  3. Sedgewick R., Flajolet P. An Introduction to the Analysis of Algorithms (2nd Edition). – Pearson Education, 2013. – 572 p.
    1. Must read! Книга об анализе вычислительной сложности алгоритмов (в первую очередь – асимптотической временной сложности в худшем случае, но не только).
    2. Нормального русского перевода не видел!!!
  4. Garey M.R., Johnson D.S. Computers and Intractability: A Guide to the Theory of NP-completeness. –W. H. Freeman, New York, 1979.
    1. Must read! Просто шедевральный справочник по состоянию компьютерной науки в смысле теории сложности алгоритмов на 1979 год! Читать после Кормена и Седжвика для приобщения к истокам и систематизации задач.
    2. Гэри М., Джонсон Д., и др. Вычислительные машины и труднорешаемые задачи. – Мир, 1982. – 420 с. (хорошо переведена и по сути стала источником терминологии)
  5. Hoare C.A.R. Communicating Sequential Processes. – Prentice Hall, 1985. – 256 p.
    1. Must read! Первое алгебраическое описание параллелизма и недетерминизма в алгоритмах. Реально первоисточник, ясный и краткий.
    2. Хоар Ч.Э. Взаимодействующие последовательные процессы. – М.: Мир, 1989. – 264 с.
  6. Aho A.V., Hopcroft J.E., Ullman J.D. Data Structures and Algorithms Paperback. – Addison-Wesley, 1983. – 427 p.
    1. Книгу Вирта я в список не включил, но данную работу – обязательно. Она систематична, хорошо написана и относительно мала по объёму.
  7. Dijkstra E.W. A Discipline of Programming Paperback. – Prentice Hall, 1976. – 217 p.
    1. Must read! Рассмотрение программы как формального объекта, поведение которого может быть обосновано. Введение понятия минимального предусловия [weakest precondition] и аксиоматической семантики. Начинающему программисту, не изучавшего курс «семантики языков программирования» книга сносит мозг круче, чем любое современное обсасывание функциональщины…
    2. Дейкстра Д. Дисциплина программирования. – М.: Мир, 1985. – 274 с.
    3. Comment. У Дейкстры ещё есть исключительный сборник эссе.
  8. Липский В. Комбинаторика для программистов. – М. : Мир, 1988. – 213 с.
    1. Must read! Наиболее понятное из коротких и самое короткое из понятных введений в алгоритмы комбинаторики и теории графов: от генерации перестановок и обходов графа до матроидов трансверсалей. По многим отзывам, перевод сделан в некоторых аспектах даже лучше оригинала, что огромная редкость.
  9. Зубов В.С., Шевченко И.В. Структуры и методы обработки данных. Практикум в среде Delphi. – М.: ФИЛИНЪ, 2004. – 304 с.
    1. Лично на меня эта книга произвела даже большее впечатление, чем Кнут, наверное, потому, что Кнута я читал как учебник, а эта книга – превосходный справочник. В неё набит огромный объём знаний и конкретных алгоритмов.
2.3.        Системное программирование
  1. Tanenbaum A.S., Bos H. Modern Operating Systems (4th Edition). – Prentice Hall, 2014. – 1136 p.
    1. Must read! От создателя Minix и человека, как минимум 3 раза выигрывавшего спор у Линуса Торвальдса со всей его командой поддержки. Но спорная по подаче материала.
  2. Tanenbaum A.S., Wetherall D.J. Computer Networks (5th Edition). – Prentice Hall, 2014. – 960 p.
  3. Tanenbaum A.S., Van Steen М. Distributed Systems: Principles and Paradigms (2nd Edition). – Prentice Hall, 2006. – 704 p.
    1. Эта книга знаменита тем, что долгое время была единственным переведённым трудом по распределённым системам в целом, но написана намного хуже, чем книги про ОС и сети.
    2. Таненбаум Э.,  ван Стен М. Распределённые системы. Принципы и парадигмы. — СПб.: Питер, 2003. – 877 с. (тот самый знаменитый перевод)
  4. Intel® 64 and IA-32 Architectures Software Developer Manuals. Combined Volumes: 1, 2A, 2B, 2C, 3A, 3B and 3C. – Intel, January 2015. – 3463 p.
    1. Первоисточник по архитектуре платформы «x86» и её расширениям. Включает руководство программиста и руководство по оптимизации. Никакой книгой в полном объёме не заменим (см. объём)!
2.3.1.        Программирование под Microsoft Windowos
  1. [Rus] Рихтер Дж. Windows для профессионалов: создание эффективных Win32-приложений с учетом специфики 64-разрядной версии Windows, 4-е изд. — СПб: Питер; М.: «Русская редакция», 2001. – 752 c.
    1. Каждый системный программист на платформе Windows, которого я знаю, прочитал эту книгу несколько раз! Я тоже.
  2. Richter J. CLR via C#. Developer Reference (4th Edition). – Microsoft Press, 2012. – 896 p.
    1. Лучшее объяснение основ платформы .NET .
  3. Рихтер Дж. CLR via C#. Программирование на платформе Microsoft .NET Framework 2.0 на языке C#. – СПб: Питер, 2007. – 656 с.
    1. Рихтер Дж. Программирование на платформе Microsoft .NET Framework. Мастер-класс. – М.: «Русская редакция»; СПб. : Питер, 2005. – 512 с.
    2. Шикарное введение в платформу .NET
2.4.        Программная инженерия
  1. McConnell S. Code Complete: A Practical Handbook of Software Construction (2nd Edition). – Microsoft Press, 2004. – 960 p.
    1. Библия программиста – здравый смысл а каждой странице. Поднимает настроение, даёт советы на каждый день, повышает качество работы.
    2. Макконнелл С. Совершенный код. Практическое руководство по разработке программного обеспечения. – Спб. : Питер, 2005. – 896 с.
  2. Brooks F.P. The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition (2nd Edition) Paperback. – Addison-Wesley, 1995. – 336 p.
    1. Великий развенчатель мифов о производительности коллективов программистов. Читать нужно именно второе издание.
    2. Брукс Ф.П. Мифический человеко-месяц, или Как создаются программные системы. – Символ-Плюс, 2007. – 304 с.
  3. Aho A.V., Lam M.S., Sethi R., Ullman J.D. Compilers: Principles, Techniques, and Tools (2nd Edition). – Addison Wesley, 2006. – 1000 p.
    1. «Книга дракона про компиляторы» - этим всё сказано для всех настоящих программистов.
    2. Ахо А., Сети Р., Ульман Дж.Д., Лам М. Компиляторы: принципы, технологии и инструменты. – Вильямс, 2008. – 1184 с.
  4. Gamma E., Helm R., Johnson R., Vlissides J. Design Patterns: Elements of Reusable Object-Oriented Software. – Addison-Wesley, 1994. – 395 p.
    1. Эту книгу надо прочитать, чтобы понимать других участников проекта с использованием объектно-ориентированной методологии.
  5. Fowler M., Beck K., Brant J., Opdyke W., Roberts D. Refactoring: Improving the Design of Existing Code. – Addison-Wesley, 1999. – 464 p.
    1. Эту книгу тоже надо прочитать, чтобы понимать других участников проекта с использованием объектно-ориентированной методологии. Ну и чаще делать рефакторинг…
    2. Фаулер М. и др. Рефакторинг. Улучшение существующего кода. – М. : Символ-Плюс, 2005. – 432 с.
  6. [Rus] Спольски Д. Джоэл о программировании. – Символ-Плюс, 2006. – 352 с.
    1. Тот самый Спольски – великолепный эссеист. У него ещё куча классных эссе про все аспекты Software Engineering.
    2. http://www.joelonsoftware.com

No comments:

Post a Comment