软件开发书籍推荐

Posted 飘飘白云

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件开发书籍推荐相关的知识,希望对你有一定的参考价值。

软件开发书籍推荐

学而不码则罔,码而不学则殆。针对软件开发(语言C++、Java、Python,平台:android),推荐一份能修炼内功提高编程素养的书单。

难度等级1~5:1级最容易,5级最难
重点推荐:《代码大全2》+《重构》+《大话设计模式》+《编码》+《深入Java虚拟机(原书第2版)》

计算机系统

  • 《编码》
    难度:1
    简评:从硬件与软件角度讲述计算机是如何工作的,综合了物理学,电学,电子学,数学等多方面的知识,从亲自组装一个手电筒开始,讲述其工作原理,然后扩展到计算机的基础设施,如何表示信息、存储信息、传输信息,如何进行加减运算等等。总的来说是非常不错的一本计算机工作原理科普书籍。作者亦是大牛,写过《Windows程序设计》这边经典大作,现已经出到第五版了。

  • 《深入理解计算机系统》
    难度:4
    简评:把从输入一行代码到结果输出这一整个过程中计算机在内部做了些什么讲的清清楚楚。

  • 《现代操作系统(第3版)》
    难度:4
    简评:概念讲解得非常到位,比如说讲消费者&生产者模型,讲银行间算法等,有图有代码。最后还分别介绍linux、windows、symbian系统,但symbian已经不再了。

  • 程序员的自我修养》
    难度:5
    简评:代码是编译之后是如何链接,装载以及运行的,程序员的高级读本

  • 《计算机程序的构造和解释》
    难度:5
    简评:跳过语法、开发环境等杂碎,直接享受纯思维的乐趣,也只有scheme这么纯的语言能够做到:程序抽象、数据抽象、语言抽象、机器抽象,顺带介绍了lambda表达式、流、惰性求值、寄存器、垃圾回收、编译与解释等等概念。当作程序入门读难度有点大,也许《How to Design Programs》更适合担当此任。

  • 《UNIX环境高级编程》
    难度:3
    简评: 条理清晰,钜细靡遗,非常基础的 unix/linux 编程入门书籍。

软件工程

  • 《代码大全(第2版)》
    难度:3
    简评:叹为观止啊,软件开发之皇皇巨著,面面俱到,所到皆精,真乃《葵花宝典》

  • 《重构》
    难度:2
    简评:从重视码前设计转移到码后重构,这是对软件开发流程的一种更新!代码写出来是给人看的,书中大量实用而有效的技巧对于重新审视现有代码有极大的帮助。

  • 《代码整洁之道》
    难度:2
    简评:重点就是使用各种不同的方法写最简洁的代码实现需要的功能,并且能让易读性、维护性、健壮性丝毫不减弱。

  • 《人月神话》
    难度:4
    简评:“没有银弹”、“人月”均出自作者,全书总结IBM一个大型项目失败的经验教训,提出了概念的完整性/一致性对软件项目成败起着至关重要的作用。此外抨击了外行习惯性以增加人手来来提速的谬误,俗话说:十个孕妇也不可能在一个月生下小孩来。

  • 《大话设计模式》
    难度:5
    简评: 设计模式入门,相当地“大话”,通俗易懂,可以和《Head First Design Pattern》媲美,比经典的《设计模式》要具体易于理解。

语言

C++

  • 参考豆列:C/C++从入门到精通
  • 入门: Essential C++,C++Primer,The C++ Programming Language,C++编程思想
  • C语言接口与实现,C++ Templates中文版

  • 中级: C专家编程,Effective C++,More Effective C++,Exceptional C++,More Exceptional C++,Exceptional C++ Style,Effective STL,C++编程惯用法,C++编程规范,老码识途,深入理解计算机系统

  • 高级: 深度探索C++对象模型,C++设计新思维,C++语言的设计和演化,程序员的自我修养

  • Modern C++: 深入理解C++11,Effective Modern C++

Python

  • 《Python源码剖析》
    难度:4
    简评: 通过对Python内置对象的剖析,对Python虚拟机及Python高级特性的剖析,使人能够透彻地理解Python中的一般表达式、控制结构、异常机制、类机制、多线程机制、模块的动态加载机制、内存管理机制等核心技术。通过这样的一个剖析过程,了解动态语言为啥动态、为啥解释执行、有何利弊。

  • 《Effective Python》
    难度:3
    简评: 类似《Effective C++》、《Effective Java》之类的技巧型避坑大法。

Java

  • 《Effective java 中文版(第2版)》
    难度:2
    简评:据说带有 Effective 的编程书都还不错,这本自然不例外,只是翻译欠火候,潘爱民大神为啥不继续翻第二版呢。看完了就觉得真TM和《Effective C#》几乎一个样,box/unbox,hashcode/equals/==,finalize/dispose,泛型容器,并发编程,单例等话题思路如出一辙。推荐开发Java,研究Android的看看。

  • 《深入Java虚拟机(原书第2版)》
    难度:3
    简评:虽然有点老,讲JVM架构这方面的书真心不太多,这本十多年前的书依然是了解JVM不二之选。书中从平台无关、安全以及网络移动性三个方面考量JVM的设计与架构,后面十章是JVM指令的介绍,可作手册,精华在前九章:设计考量(相当于《C++设计与演化》),class格式及其装载、解析,符号链接,垃圾回收策略等等。

Android

  • 《Android框架揭秘》
    难度:4
    简评:对比过《深入理解Android》等书籍,还是觉得这本书讲得有体系,透彻,著书的非常用心

  • 《Android系统源代码情景分析》
    难度:5
    简评:这是讲解 Android IPC 通信最牛X的书,没有之一,作者花了小半的篇幅来透彻讲解Binder。注意这本书讲得相对底层,framework 层涉及的都不太多的。

其他

  • 《Pro Git》
    难度:3
    简评:由 Git 开发人员所写,真正的深入浅出,从入门到进阶,有中译本。

以上是关于软件开发书籍推荐的主要内容,如果未能解决你的问题,请参考以下文章

好书推荐学习软件工程的必经之路 | 《人月神话》

《人月神话》学习指南

人月神话读后感

人月神话阅读笔记01

《人月神话》读后感----一到三章

《Flask Web开发 基于Python的Web应用开发实战》简评