程序员修炼之道:程序设计入门30讲
上QQ阅读APP看书,第一时间看更新

前言

计算机科学是一门专业性很强的学科,该学科思考问题、解决问题的独特方式将很多初学者拦在了门外。还记得高中刚接触力学的时候,很多题目让笔者望而却步,经过了反复琢磨,笔者才领悟到受力分析这一根本方法的诀窍,在此之后,所有的题目仿佛一下子变得简单了许多。相比物理,计算机的概念显得更为抽象,入门门槛也因此更高。不同的初学者因天赋不同,在入门这一过程中花费的时间长短不一。然而天才毕竟是少数,很多读者在建立计算思维的过程中遭遇重重困难,一部分读者甚至中途放弃。

当笔者在越过了阻碍初学者入门的这道门槛之后,回过头来看那些当初困扰笔者的问题,似乎并没有什么特别难的地方。笔者认为,大部分困难并非在于问题本身,难的是通过这些问题培养计算机独特的思维方式。

我们通过对北京航空航天大学大一大二软件工程专业学生的调研,搜集了他们在学习过程中遇到的困扰他们的问题。本书收录了其中出现频率最高的大部分问题,例如:什么是指针?对象是如何传递的?为什么静态方法不能调用非静态成员?编译和链接阶段发生了什么?等等。本书分为六部分,分别是:入门学堂、内存模型、初窥算法、面向对象、认识程序、编程之道。在入门学堂这一部分中,我们将学习程序的基本概念,掌握编程的基本方法。内存模型部分则涉及计算机体系结构中较为重要的一部分——内存的知识,程序运行背后的内存模型是学习编程所需修炼的内功之一。初窥算法部分则介绍编程中常见的算法与数据结构,这是学习编程所需修炼的又一大内功。面向对象部分介绍当下最常见的软件开发方法。认识程序部分是关于程序设计更多的知识介绍,例如多线程编程、异常处理、输入输出等。编程之道部分介绍了编程之道,这些方法更多地是为了帮助我们写出高质量的代码。

本书共收录了30个常见的问题,我们认为这些问题是极具代表性的,相信大部分的初学者在遇到这些问题的时候都会想看到这些问题最通俗易懂的解答,而这正是我们撰写本书的目的。无论你是初学者还是已经具备了一定的编程能力的学习者,如果你对本书列出的某些问题还存有疑惑,不妨去阅读一下相应的解答,由于每一个问题都相对独立,读者可以挑选感兴趣的问题进行阅读,而不一定按照顺序从头读到尾。我们希望所有的初学者在阅读完本书之后,能对程序形成一个系统而清晰的认识,成功跨越学习编程的第一道门槛,发现编程的乐趣。

本书具有以下几个方面的特点。

目标性强:本书针对刚刚接触编程的计算机、软件工程相关专业的学生,旨在帮助读者建立计算机专业的思考方式,培养程序员的思维方式。书中收集了大部分初学者都会遇到的问题,通过形象生动的语言进行解答,帮助初学者跨越编程的第一道门槛。

问题典型,回答生动:本书采用一问一答的编写形式,行文类似《十万个为什么》。问题选取计算机相关专业学生在初学编程时最容易遇到的典型问题,范围涵盖内存模型、算法与数据结构、程序设计语言等多个方面。回答采用生动形象的语言,以尽可能多的类比让读者轻松理解问题答案。

受众广泛:本书适合刚接触编程的初学者,包括计算机、软件工程专业大一大二的学生以及热爱编程的自学者。本书也适合学习了编程一段时间的读者,帮助其梳理思路,温故知新。

章节独立:由于本书各章节的问题相对独立,读者可以任意选择感兴趣的章节进行阅读,而不一定要按顺序从头读到尾,增强了阅读的灵活性和针对性。

本书的作者为吕云翔、傅义,另外,曾洪立、吕彼佳、姜彦华参与了部分内容的写作与资料整理的工作。

由于我们的水平和能力有限,本书难免有疏漏之处。恳请各位同仁和广大读者给予批评指正,也希望各位能将实践过程中的经验和心得分享给我们(yunxianglu@hotmail.com)。

编者

2018年3月