编程思维可以具体分为四个方面:
分解
拥有编程思维的人,会把一个复杂的大问题,拆解成更可执行、更好理解的小步骤。
复杂问题很难一下子破解,但如果把它细分成很多个小问题,逐步解决,就容易多了。
模式识别
什么是模式识别呢?所谓识别模式,其实就意味着把新问题变成了老问题,我们在以往经验中搜索类似问题,套用类似的解决办法。识别的模式越多,解决问题的速度就越快。
抽象
把主要的精力聚焦重要的关键信息。
这是一个过滤的过程,通过确认问题的核心本质,可以帮助我们形成解决问题的大致构想。这样,可以加快解决问题的核心难点。
算法
设计一步一步的解决路径,解决整个问题。其实,算法也就是解决问题的方法。
通过这四个步骤,一个复杂问题先被拆解成一系列好解决的小问题;每一个小问题再被单独搜索解决方案;然后,聚焦几个重要节点,形成解决思路;最后,设计步骤,执行问题的解决方案。
所以,编程思维并不是编写程序的技巧,而是一种高效解决问题的思维方式,不当程序员也用得上。
何为编程
程序(program)由一系列指令组成,指定了如何执行计算。这里的计算可能是数学计算,如求解方程组或找出多项式的根,也可能是符号计算,如在文档中搜索并替换文本或编译程序(真够奇怪的,编译程序竟然也是计算)。虽然细节因语言而异,但几乎所有语言都支持一些基本指令。
输入:从键盘、文件、传感器或其他设备获取数据。
输出:在屏幕上显示数据,或者将数据发送给文件或其他设备。
数学运算:执行基本的数学运算,如加法和除法。
决策:检查特定的条件,并根据检查结果执行相应的代码。
重复:反复执行某种操作,但通常每次执行时都略有不同。
这几乎就是程序的全部内容。使用的每个程序都由类似于上面的小指令组成,不管它有多复杂。因此,你可将编程(programming)视为这样的过程,即将复杂而庞大的任务分解为较小的子任务。不断重复这个过程,直到分解得到的子任务足够简单,用计算机提供的基本指令就能完成。
何为计算机科学
对编程而言,最有趣的一个方面是决定如何解决特定的问题,尤其是问题存在多种解决方案时。例如,对数字列表进行排序的方法很多,其中每种方法都有其优点。要确定哪种方法是特定情况下的最佳方法,你必须具备规范地描述和分析解决方案的技能。
计算机科学(computer science)就是算法科学,包括找出算法并对其进行分析。算法(algorithm)由一系列指定如何解决问题的步骤组成。有些算法的速度比其他算法快,有些使用的计算机内存更少。面对以前没有解决过的问题,你在学着找出算法的同时,也将学习如何像计算机科学家那样思考。
设计算法并编写代码很难,也很容易出错。由于历史的原因,编程错误被称为 bug,而找出并消除编程错误的过程被称为调试(debugging)。通过学习调试程序,你将获得解决新问题的技能。面临出乎意料的错误时,需要创造性思维。
虽然调试可能令人沮丧,但它是计算机编程中有趣且挑战智商的部分。从某种程度上来说,调试犹如侦破工作:必须根据掌握的线索