《大道至简》第六章有感
语言只是工具,“学会制作和使用工具”是做重要的标志。进入大学以来对于编程语言到目前为止我们学过的有C++和JAVA,这两类语言应该是互通的吧,毕竟有那么多的相似之处,从未想过从比较好坏的方面来看待这两种语言,并不是自己对语言的膜拜,而是对于这两种语言自己并没有深入学习过,作者之所以开始无尽止的深入语言的细节,评论好坏,是因为作者对于每种语言都是应该精通了的。文章开篇这一段主要是想要告诉我们语言只是一种工具。
万变不离其宗,程序=算法+语言,是编程的本源定义,是从事代码相关的任何工作,最终仍旧会落足于这样的一条规则。
方法是实践积累到一定程度提出的,模式是一种方法,模式需要一定的编程经验 才能理解,理解过程也需要编程经验,理解对象也需要编程经验。方法 推动程序向前发展的,是“方法”和“方法论”的出现。长期的编程实践,自然的归演与总结,必须沉淀为某种(软件开发)方法,于是“过程”出现了,于是“对象”出现了,于是相关的方法论也就出现了。你看不到你做事的行为,也就不能理解“模式”作为一种方法的价值。所以大师们众口一词:模式需要一定的编程经验才能理解。 理解过程也需要编程经验,理解对象也需要编程经验,所以要掌握方法还是需要编程经验,这就是我们经常挂在嘴边的“熟能生巧”。所以学代码还是要多动手
过程伴生工程而出现。过程解决的是工程中角色间的关系问题。过程说的是很多的人(团队)如何组织在一起进行开发的问题。它首先把工程中的环节分解出来。这样,有了环节,就有了角色;有了角色,就有了沟通。因此过程中的问题,就是角色、沟通和环节的问题。 工程狭义上来说是描述做什么和做到什么,而这个目标的实现需要的是过程好方法,如何有效快速的实现需要的是工具,这就是简单化的软件工程体系层次图。这个层次的出现是一种必然,伴随着项目的不断复杂化可能需要更多不同知识领域的角色参与,也需要更多的人力资源,如果一个软件公司没有团队意识,在面对一个真正复杂的工程将一触即溃。项目的“复杂”可能要求不同的知识领域的角色参与,而“庞大”则要求更多的(人力、技术与管理)资源。“团队”作为开发行为的模式,是软件规模与复杂度渐次累积的结果。
从最初的简单编程开始,到现在工程团队的组织开发,实现(一个软件)都是最终的目的。所以可以这样说:实现,是软件开发的本质需求。它贯穿于始终,一切都是基于它而产生的。软件工程的体系中,“实现”作为软件开发的本质需求和基本动因,如同上帝之手在推动这几十年来的软件工程理论体系的形成。