提到编程,我们首先能想到的是编程语言,它是用来定义计算机程序的形式语言,来向计算机发出指令。编程语言往往使程序员能够比使用机器语言更准确地表达他们所想表达的目的,C#,C语言,C++,JAVA都是常见的语言。对于我们学习计算机的来说,懂得程序设计语言是十分重要的,因为在当今所有的计算都需要程序设计语言才能完成。那语言的根本又是什么,作者说语言只是工具,猿之于为人,“学会制作和使用工具”是最重要的标志,我们要学会使用这个工具。
第一节C++课上,老师就告诉我们编程的本源定义,“程序=算法+结构”。与代码相关的任何工作,最终仍旧会落足于这样的一条规则,编程的精义于此。从有开发行为开始,它就存在了。愚公在数千年前就在用类同的行为做编程实践,而几十万年前智人,也在循环与分支所构成的逻辑中打转。
推动这种逻辑向前发展的,是“方法”和“方法论”的出现。长期的编程实践,自然的归演与总结,必须沉淀为某种方法,于是“过程”出现了,于是“对象”出现了,于是相关的方法论也就出现了。这是实践的成果。方法不是某个人或者某个组织创造的,瓜熟而蒂落,实践积累达到一定的程度,方法并不神秘,因为它就是你今天正在做的、从事的和实现的。正如“模式”是一种方法,而模式就是你昨天书写代码的那个行为。你看不到你做事的行为,也就不能理解“模式”作为一种方法的价值。所以大师们众口一词:模式需要一定的编程经验才能理解。同理,理解过程也需要编程经验,理解对象也需要编程经验,这可能就发生在你去回顾你上一行代码编写的经过,或者上一个项目失败的经历的那一瞬息。经验来源于回顾、理解与分析,而不是你将要写的下一行代码。
过程伴生工程而出现。过程解决的是工程中角色间的关系问题,过程说的是团队如何组织在一起进行开发的问题。它首先把工程中的环节分解出来,这样,有了环节,就有了角色;有了角色,就有了沟通。因此过程中的问题,就是角色、沟通和环节的问题。哪些环节重要取决于具体的编程行为,也就是具体的项目。角色的确定,以及角色间的沟通问题,在项目过程中也同样重要。而最狭义的工程,是对目标的描述和成果的检测。至于这个工程目标的实现,是“过程”和“方法”的事;而有效、快速地实现“程”和“方法”所需的,就是“工具”。这过程伴随工程而出现,解决的是工程中“步调一致”的协作问题。项目的“复杂”可能要求不同的知识领域的角色参与,而“庞大”则要求更多的资源。“团队”作为开发行为的模式,是软件规模和复杂度渐次累积的结果。 团队必将越来越庞大,因为软件规模必将越来越复杂。没有团队意识的软件公司是不行的。
从最初的简单编程开始,到现在工程团队的组织开发,实现都是最终的目的。所以可以这样说:实现,是软件开发的本质需求。我们看到,正是出于实现的需要,我们才设计了一些数据结构或逻辑结构来映射物理模型。因此类似于过程、单元、记录、对象等的出现,其实都是出于编程实现的需要,因而实现方法总是最先出现的,而后才有分析和设程序 = 算法 + 结构过程与单元的出现记录与对象的出现方法。