Recommended literature and documentation on knowledge and development skills that are not tied to specific languages ​​and platforms.

All these books should be added to each list of references , but we follow the principle of DRY and save them here in one place.

Additions to the answer in every way welcome!


This list is part of the Community Supported Programming Learning Resources on Programming .

    2 answers 2

    Software architecture

    • Structure and Interpretation of Computer Programs - 2nd Edition . Harold Abelson, Gerald Jay Sussman, Julie Sussman

      Russian translation: Structure and Interpretation of Computer Programs. Harold Abelson, Gerald J. Sussman

    Algorithms and data structures

    • Data Structures & Algorithms in Java . Robert Lafore. 2002

      Russian translation: Data structures and Java algorithms. Robert LaFore. 2012

      One of the most simple and easy to read textbooks in this area. All topics are explained in detail without a single formula. Each chapter is accompanied by a demo, visually showing the step-by-step work of the algorithms in question.

    • The Algorithm Design Manual . Steven S Skiena. 2008

      Russian translation: Algorithms. Development Guide. Stephen Skien. 2014

    • Introduction to Algorithms, 3rd Edition . Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein. 2009

      Russian translation: Algorithms. Construction and analysis. Thomas H. Cormen, Charles I. Leiserson, Ronald L. Rivest, Clifford Stein. 2015

    • The Art of Computer Programming . Donald E. Knuth. 2011

      Russian translation: The art of programming. Donald E. Whip. 2015

    • Algorithms + Data Structures = Programs. Niklaus Wirth, 1976 (or Algorithms + Data Structures. 2004.

      Russian translation: Algorithms + data structures = programs. M .: Mir, 1985, Algorithms and data structures. M .: Mir, 1989, Algorithms and data structures. New version for Oberon. M .: DMK Press, 2010. The old version of the book, in contrast to the new ones, contains a detailed compiler of a simple language.

    Design and code style

    • Design Patterns: Elements of Reusable Object-Oriented Software . Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides

      Russian translation: Object-oriented design techniques. Design patterns. Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides

    • Patterns of Enterprise Application Architecture . Martin fowler

      Russian translation: The architecture of corporate software applications. Martin fowler

    • Domain-Driven Design: Tackling Complexity in the Heart of Software . Eric Evans

      Russian translation: Subject-oriented design. Structuring of complex software systems . Eric Evans

    • "Code Complete" . Steve mcconnell

    • “Refactoring. Improving existing code . ” Martin fowler
    • “Clean code. Creation, analysis and refactoring ”(Clean Code: A Handbook of Agile Software Craftsmanship) . Robert Martin

    Developer Skills

    • Andrew Hunt, David Thomas - “A Pragmatic Programmer. The journey from the apprentice to the master "

    Organization of the development process

    • Tom DeMarco - “Deadline. A novel about project management
    • Robert Martin - "Rapid Software Development"
    • Joel Spolsky - "And again about programming."
    • Joe Marasco - “IT Projects. Front essays »
    • Steve McConnell - “How much does a software project cost?”
    • Gene Kim, Kevin Behr, George Spafford - "Project" Phoenix ". A novel about how DevOps is changing business for the better. ”

    Syntax parsing and compilation

    • Compilers: Principles, Techniques, and Tools , Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman

      Russian translation: Compilers: principles, technologies and tools , Alfred Aho, Monica S. Lam, Ravi Seti, Jeffrey Ulman. Known as the "Book of the Dragon."

    • It would be nice to know which of them were republished in this decade - Oceinic
    • five
      @Oceinic: the theory of algorithms is not too outdated over this decade. ) - Nick Volynkin ♦
    • @NickVolynkin, And the book of Anany Levitin "Introduction to The Design & Analysis of Algorithms" (Translation - Ananius Levitin, "Algorithms. Introduction to the development and analysis", M., Williams, 2006) Is it bad? Or just forget it? Maybe worth adding to the list? - m. vokhm
    • And then there is Sedgwick - "Algorithms in C ++", "Algorithms in Java", etc. - m. vokhm
    • And, is there still ru.stackoverflow.com/questions/576507/… - maybe you should combine it? - m. vokhm

    Books and theory are good, and for practice I recommend the Euler project ( tasks in Russian ).
    In each task there is a data set with a ready answer, on which you can run the algorithm. But the tasks are arranged in such a way that they cannot be solved in time, to find out the answer - it is often necessary to invent a more optimal algorithm after all has come together with the test data set.
    The received answer can be checked, and if it is correct, then a forum thread will open, where participants leave their solutions in different languages.
    Recomend for everybody)

      Protected by member PashaPash ♦ 5 Jan '16 at 8:25 .

      Thank you for your interest in this issue. Since he collected a large number of low-quality and spam responses, which had to be deleted, now it’s necessary to have 10 reputation points on the site (the bonus for account association is not counted ).

      Maybe you want to answer one of the unanswered questions ?