Inspirado nessa thread no Stack Overflow eu resolvi trazer esse tópico contendo materiais essenciais sobre ciência da computação, programação e qualquer outro tema relacionado, que eu separei da lista + algumas recomendações minhas, sem foco em nenhuma linguagem em particular, complemente com qualquer coisa que achar relevante.
Disclaimer: Essa lista foi criada assumindo que vc tenha ao menos uma noção de inglês e de conceitos básicos sobre programação, ou o mínimo para saber que caminho você quer seguir, e muitos dos livros listados assumem o mesmo, não tome esse tópico como um passo a passo para aprender do zero, mas apenas como uma lista, pegue aquilo que se encaixa melhor naquilo que vc quer seguir.
Obs: Apesar de eu ter separado a lista em “Introduções”, “Tópicos Intermediários” e “Avançado”, não existe realmente uma ordem aqui, é mais pela organização.
Introduções
-
Introduction to Algorithms, Thomas H. Cormen.
Introdução à criação, design e análise de algoritmos, mais do que essencial. -
Types and Programming Languages, Benjamin C. Pierce
Introdução à ciência da computação em geral e ao conceito de linguagem de programação. -
Introduction to Functional Programming, Philip Wadler e Richard Bird
Auto explicativo :v -
Programming: Principles and Practice Using C++, Bjarne Stroustrup.
Introdução ao mundo da programação pelo próprio criador da linguagem, não assume nenhum conhecimento prévio e foca em ensinar conhecimentos e técnicas fundamentais para qualquer programador. -
The C Programming Language - 2nd Edition, Kernighan e Ritchie.
Introdução ao C e ao Unix pelas mãos dos criadores da linguagem (e do sistema) é um must-read pra qualquer um, não só iniciantes. -
The Practice of Programming, Kernighan e Pike.
Livro sobre prática, debbuging, testing, aumento de performace e design de código, independente de qual linguagem que vc use, são práticas que vc precisa aprender. -
Javascript - The Good Parts, Douglas Crockford
Um guia para escrever um Javascript elegante, rápido e expressivo, escrito por quem muitos consideram ser O programador Javascript é um must-read pra qualquer um que queira ser programador web. -
C++ Primer - 5th Edition, Stanley Lippman, Josée Lajoie e Barbara E. Moo
Provavelmente o melhor livro para se aprender C++, cobre tudo, desde tipos básicos até memória dinâmica e POO, essencial para quem quer adentrar nessa linguagem
Obs: Não confundir com C++ Primer Plus, de Stephen Prata, são livros completamente diferentes, com qualidades opostas -
Learning Python e Programming Python, Mark Lutz
Dois livros que cobrem tudo que você precisa saber sobre Python e como aplicar a linguagem para web, databases, GUIs, administração se sistemas, etc. essencial para quem quer mestrar a linguagem. -
Programming C# - 2nd Edition, Jesse Liberty
Mesma ideia do anterior mas para C# -
The Little Schemer e The Seasoned Schemer, Daniel P. Friedman
Introdução ao LISP/Scheme e programação funcional de maneira geral, se seu objetivo é I.A aqui é um bom começo, já que LISP é a linguagem mais usada nesse segmento. -
Modern Operating Systems, Andrew S. Tanenbaum
Introdução à sistemas operacionais e princípios de design para se desenvolver um.
Tópicos Intermediários
-
Effective Modern C++, Scott Meyers
Um conjunto de regras e costumes que qualquer programador C++ precisa saber para criar um bom código. -
Exceptional C++, Herb Sutter
Cobre uma variedade de tópicos mais avançado em C++, como RAII, design de classes, modelo de memória, etc -
Effective Java, Joshua Bloch
Basicamente o mesmo dos dois anteriores, mas para Java. -
Refactoring: Improving the Design of Existing Code, Martin Fowler
Um guia de como refatorar seu código, i.e não alterar como um programar funciona externamente mas melhorar o código internamente para torna-lo mais legível e efetivo. -
Agile Principles, Patterns, and Practices in C#, Robert C. Martin
Aplicação do modelo de desenvolvimento ágil em C#
Geral
-
Code Complete, Steve McConell
Técnicas e princípios mais efetivos para criação de um bom código. -
The Art of Unix Programming, Eric Raymond
Livro sobre a história e a filosofia por trás da criação do Unix, não trata estritamente sobre programação, mas é muito interessante. -
Programming Pearls, John Bentley
Técnicas e princípios fundamentais de design, útil para qualquer um, independente da linguagem. -
The Unix Programming Environment, Brian W. Kernighan e Rob Pike
Escrito tanto para usuários avançados quanto para leigos, esse livro introduz o Unix, sua filosofia e as ferramentas usadas para desenvolvimento. -
Concepts, Techniques, and Models of Computer Programming, Peter Van Roy
Apresenta os conceitos, técnicas e paradigmas existentes na programação. -
Object-Oriented Analysis and Design with Applications, vários.
Conceitos gerais sobre programação orientada ao objeto. -
Masters of Doom, David Kushner
A história dos criadores de DooM e Quake, muito interessante e particularmente inspirador para quem quer ser gamedev.
Avançado
-
Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp, Peter Norvig
Common Lisp avançado para desenvolvimento de I.A, além de demonstração de estilo e discussões sobre conceitos importantes em I.A. -
Advanced Programming in the UNIX Environment, W. Richard Stevens
Nome auto explicativo, livro sobre a interface de desenvolvimento de sistemas UNIX e Linux, o foco do livro é o desenvolvimento em C, mas acho interessante de se ler mesmo que vc não pense em usar C ou os conceitos do livro. -
Modern C++ Design, Andrei Alexandrescu
Tópicos avançados sobre técnicas de programação genérica e implementação de vários padrões de design em C++. -
Programming from the Ground Up, Jonathan Bartlett
Livro sobre Assembly x86 em Linux, não preciso dizer muito mais :v
Extra
Alguns livros sobre programação gráfica e engines que eu tenho estudado ultimamente e resolvi colocar aqui tbm, caso for usa-los, tenha em mente que alguns deles abordam conceitos um pouco mais avançados de C e C++, então estude essas linguagens antes.
-
Real Time Collision Detection, Christer Ericson
Matemática e código por trás da colisão de objetos em game engines -
AI for Game Developers, David M. Bourg e Glenn Seemann
Design e implementação e IA para jogos, além de discussões sobre o tipo de IA adequado para cada situação. -
Physics for Game Developers, David M. Bourg e Bryan Bywalec
Nome auto explicativo :v livro sobre física e como ela pode ser implementada em código. -
3D Math Prime for Game Development, Fletcher Dunn e Ian Parberry
Toda a matemática envolvida na criação de objetos 3D. -
Game Physics Engine Development, Ian Millington
Conceitos gerais envolvidos no desenvolvimento de uma engine física para jogos. -
Graphic Shaders: Theory and Practice, Mike Bailey e Steve Cunningham
Teoria e prática de shaders gráficos :v -
OpenGL Superbible - 7th Edition, Graham Sellers, Richard S. Wright Jr e Nicholas Haemel
A superbíblia do OpenGL, basicamente tudo que vc precisa aprender sobre essa API.
É isso pessoas, discutam, complementem, sugiram novos conteúdos, pq ainda faltou muita coisa aqui yey :v e sim, dá pra achar os pdfs desses por aí.