刚入学的大学生,看看计算机科普类书籍,如《数学游戏》、《编码的奥秘》。
《计算机科学导论》了解大概框架,计算机专业的入门课。
《编程卓越之道(第一卷):深入理解计算机》、《深入理解计算机系统(修订版)》的共同特点就是从程序员视角观察计算机系统。但后者组织更严密,风格更严谨。
学习编程《C程序设计语言》Kernighan与Ritchie合著的。当你的语言功底达到一定程度后,就需要从一个更高的视角来探察语言的本质,不妨看看《计算机程序的构造和解释(第二版)》,它阐述了语言本身的机制与实现。
算法学的旷世巨著应数Knuth的《计算机程序设计艺术》,不过要彻底读懂这个大部头需要相当的数学理论与编程实践经验积累。对于初学者,建议首先培养使用常规算法解决小规模问题的能力,并行地提高驾驭语言的水平与抽象问题的思维。针对这个目标,结合程序设计实践类的课程,可以读读这几本书:《编程珠玑》《程序设计实践The practice of Programming》《代码阅读方法与实践》(Codeing Reading:The Open Source Perspective)《C专家编程》(Expert C Programming)。他们的侧重点各不相同,但通过实践来学习算法与数据结构是很有益处的。
应用开发方面,面向对象:《JAVA编程思想》《C++编程思想》。此外,架构设计、编码规范与风格、代码除错与质量管理以及软件工程的各类原则在实际项目开发中都是及其重要的,在具备了一定的编程经验、准备投入一些实际项目开发的时候务必要了解。建议阅读《代码大全》,它在总体上知道软件开发的各个环节的同时也引入一些细节问题的讨论,引导我们对一些司空见惯的程序设计理念不但要知其冉,而且要知所以然。
开源方面:《共创未来:打造自由软件神话》,一本讲述开源世界发展史的书,从中可以了解自由软件运动及其领袖人物的传奇故事,从而对GNU、Linux、OpenSource这些概念蕴生人性化的理解。
百变的技术离不开计算机科学的本源,在实践过程中深入理解基础知识是关键;任何技术都有统领器实现细节的思想精髓,观其形不如知其神。《编程之道》领悟程序人生的“道法自然”。开源软件界的“斗士”级元老Eric Raymond所著的《Unix编程艺术》,以Unix系统的设计原则为主线,展示了Unix所开启的”KISS”(Keep It Simple Stupid!)编程文化与思维方式。
项目管理《人月神话》。