Programação: Livros essenciais

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í.

9 curtidas

n vi nada sobre scratch no post :C

É pq scratch não é uma linguagem, ele é mais pra você entender a logica de programação