简介
本指南涵盖按主题和技能水平组织的推荐编程书籍。该收藏包括基础文本、语言特定参考书以及面向各阶段软件开发者的高级主题。
目录
- 编程基础
- 语言特定书籍
- 算法与数据结构
- 软件设计
- 系统编程
- Web 开发
- 数据库与存储
- 机器学习
编程基础
入门书籍
| 书籍 | 作者 | 主题 | 级别 |
|---|
| Structure and Interpretation of Computer Programs | Abelson, Sussman | 编程范式 | 中级 |
| The Pragmatic Programmer | Hunt, Thomas | 专业实践 | 入门 |
| Code Complete | McConnell | 软件构建 | 入门 |
| Clean Code | Martin | 代码质量 | 入门 |
| Think Python | Downey | Python 基础 | 入门 |
理论与概念
| 书籍 | 作者 | 主题 |
|---|
| Introduction to the Theory of Computation | Sipser | 自动机、复杂度 |
| Types and Programming Languages | Pierce | 类型系统 |
| Concepts of Programming Languages | Sebesta | 语言设计 |
| Programming Language Pragmatics | Scott | 语言实现 |
语言特定书籍
| 书籍 | 作者 | 重点 |
|---|
| Fluent Python | Ramalho | 高级 Python |
| Python Cookbook | Beazley, Jones | 配方和模式 |
| Effective Python | Slatkin | 最佳实践 |
| Python Crash Course | Matthes | 入门介绍 |
| Learning Python | Lutz | 综合参考 |
| 书籍 | 作者 | 重点 |
|---|
| JavaScript: The Good Parts | Crockford | 核心语言 |
| Eloquent JavaScript | Haverbeke | Web 编程 |
| You Don't Know JS | Simpson | 深入理解 |
| JavaScript Patterns | Stefanov | 设计模式 |
| Learning JavaScript | Shelley | 现代 JavaScript |
| 书籍 | 作者 | 重点 |
|---|
| The Rust Programming Language | Klabnik, Nichols | 官方参考 |
| Rust in Action | McNamara | 系统编程 |
| Programming Rust | Blandy, Orendorff, Tindall | 综合指南 |
| Zero To Production In Rust | Palmieri | Web 开发 |
| 书籍 | 作者 | 重点 |
|---|
| The Go Programming Language | Donovan, Kernighan | 官方参考 |
| Go in Practice | Butcher, Farina | 实践模式 |
| Concurrency in Go | Cox-Buday | 并发模式 |
| Go Web Programming | Chang | Web 开发 |
| 书籍 | 作者 | 重点 |
|---|
| Effective Java | Bloch | 最佳实践 |
| Head First Java | Sierra, Bates | 入门友好 |
| Java Concurrency in Practice | Goetz | 并发 |
| Modern Java in Action | Fusco | 函数式编程 |
算法与数据结构
基础文本
| 书籍 | 作者 | 级别 |
|---|
| Introduction to Algorithms (CLRS) | Cormen 等 | 大学 |
| Algorithm Design Manual | Skiena | 实践 |
| Algorithms | Sedgewick, Wayne | 可视化方法 |
| The Art of Computer Programming | Knuth | 参考书 |
问题解决
| 书籍 | 作者 | 重点 |
|---|
| Competitive Programming | Halim | 竞赛准备 |
| Cracking the Coding Interview | McDowell | 面试准备 |
| Elements of Programming | Stepanov, McJones | 泛型编程 |
| Algorithmic Puzzles | Levitin, Ainuzzada | 问题解决 |
主题覆盖
| 主题 | 最佳覆盖 |
|---|
| 排序 | CLRS, Sedgewick |
| 图算法 | CLRS, Skiena |
| 动态规划 | Skiena |
| 字符串算法 | Gusfield |
| 计算几何 | de Berg 等 |
软件设计
设计模式
| 书籍 | 作者 | 模式 |
|---|
| Design Patterns | Gang of Four | 经典模式 |
| Head First Design Patterns | Freeman, Robson | 可视化学习 |
| Pattern-Oriented Software Architecture | Buschmann 等 | 架构模式 |
| Patterns of Enterprise Application Architecture | Fowler | 企业模式 |
架构
| 书籍 | 作者 | 重点 |
|---|
| Clean Architecture | Martin | 系统设计 |
| Software Architecture in Practice | Bass 等 | 架构基础 |
| Building Microservices | Newman | 微服务设计 |
| Designing Data-Intensive Applications | Kleppmann | 数据系统 |
代码质量
| 书籍 | 作者 | 主题 |
|---|
| Refactoring | Fowler | 代码改进 |
| Working Effectively with Legacy Code | Feathers | 遗留系统 |
| The Art of Readable Code | Boswell, Foucher | 代码可读性 |
| Beautiful Code | Oram, Wilson | 优雅解决方案 |
系统编程
操作系统
| 书籍 | 作者 | 主题 |
|---|
| Operating Systems: Three Easy Pieces | Arpaci-Dusseau | OS 基础 |
| Modern Operating Systems | Tanenbaum | OS 设计 |
| Linux Kernel Development | Love | 内核内部 |
| Understanding the Linux Kernel | Bovet, Cesati | 内核深入 |
计算机体系结构
| 书籍 | 作者 | 主题 |
|---|
| Computer Systems: A Programmer's Perspective | Bryant, O'Hallaron | 系统视角 |
| Computer Organization and Design | Patterson, Hennessy | 硬件/软件 |
| Computer Architecture | Hennessy, Patterson | 高级体系结构 |
编译器
| 书籍 | 作者 | 主题 |
|---|
| Compilers: Principles, Techniques, and Tools | Aho 等 | 编译器设计 |
| Crafting Interpreters | Nystrom | 解释器实现 |
| Writing An Interpreter In Go | Ball | 实践解释器 |
| Writing A Compiler In Go | Ball | 编译器实现 |
前端
| 书籍 | 作者 | 重点 |
|---|
| JavaScript: The Definitive Guide | Flanagan | 综合 JS |
| CSS: The Definitive Guide | Meyer, Weyl | CSS 精通 |
| Learning React | Banks, Porcello | React 框架 |
| You Don't Know JS | Simpson | JS 内部 |
后端
| 书籍 | 作者 | 重点 |
|---|
| Node.js Design Patterns | Casciaro, Mamino | Node 模式 |
| Web Development with Go | Shirdi | Go Web 应用 |
| Django for Professionals | Feldroy | Django 框架 |
| Rails Tutorial | Hartl | Ruby on Rails |
| 书籍 | 作者 | 主题 |
|---|
| RESTful Web APIs | Richardson, Amundsen | REST 设计 |
| API Design Patterns | Jin 等 | API 模式 |
| Building Microservices | Newman | 服务架构 |
数据库与存储
数据库内部
| 书籍 | 作者 | 主题 |
|---|
| Database Internals | Petrov | 存储引擎 |
| Designing Data-Intensive Applications | Kleppmann | 数据系统 |
| Database System Concepts | Silberschatz 等 | 基础 |
| SQL Performance Explained | Winand | SQL 优化 |
特定数据库
| 书籍 | 数据库 | 作者 |
|---|
| Learning SQL | 通用 | Beaulieu |
| PostgreSQL | PostgreSQL | Obe, Hsu |
| MongoDB: The Definitive Guide | MongoDB | Chodorow |
| Redis in Action | Redis | Carlson |
机器学习
| 书籍 | 作者 | 级别 |
|---|
| Pattern Recognition and Machine Learning | Bishop | 高级 |
| The Elements of Statistical Learning | Hastie 等 | 高级 |
| An Introduction to Statistical Learning | James 等 | 入门 |
| Hands-On Machine Learning | Geron | 实践 |
深度学习
| 书籍 | 作者 | 重点 |
|---|
| Deep Learning | Goodfellow 等 | 理论 |
| Deep Learning with Python | Chollet | Keras 实践 |
| Programming PyTorch | Stevens | PyTorch 实践 |
| Natural Language Processing | Jurafsky, Martin | NLP 理论 |
| 书籍 | 作者 | 重点 |
|---|
| Python Machine Learning | Raschka | Scikit-learn |
| Machine Learning Engineering | Huyen | 生产 ML |
| Designing Machine Learning Systems | Huyen | 系统设计 |
| Feature Engineering for Machine Learning | Zheng, Casari | 特征工程 |
阅读建议
按经验水平
| 级别 | 推荐书籍 |
|---|
| 入门 | Clean Code, Python Crash Course, Head First Java |
| 中级 | CLRS, Design Patterns, Effective Java |
| 高级 | Structure and Interpretation, TAOCP, DDIA |
按职业路径
| 路径 | 推荐书籍 |
|---|
| Web 开发者 | Eloquent JavaScript, Node.js Design Patterns |
| 系统程序员 | Computer Systems, Operating Systems: Three Easy Pieces |
| 数据工程师 | Designing Data-Intensive Applications, Database Internals |
| ML 工程师 | Hands-On ML, Deep Learning, ML Engineering |
总结
本收藏为各级软件开发者提供了综合阅读列表。从基础开始,逐步深入语言特定文本、算法和系统设计,为软件开发生涯奠定坚实基础。