“虽我之死,有子存焉;子又生孙,孙又生子;子又有子,子又有孙,子子孙孙,无穷匮也。而山不加增,何苦而不平?”这是《大道至简》第一章开头部分的内容。说实话,读到这的时候我有点疑惑。一本写编程的书,怎么讲起《愚公移山》来了? 当然了,作者讲这些肯定是有他的用意的。接着往下看,我豁然开朗。作者把愚公看成了一位工程名家,在他身上浓缩了项目组织者,团队经理,编程人员,技术分析师等众多角色的优秀素质。愚公的出现,远远早于计算机发展的历史,甚至早于一些西方国家的文明史。
从愚公移山这一事件,我们看到了原始需求的产生。也看到了项目沟通的基本方式。然后愚公确定了一个项目目标“毕力平险,指通豫南,达于汉阴“。并通过研讨制定了一个井然有序并且可行的技术方案。这不正是现代大部分软件公司解决问题的方案吗。并且在这个项目中,动用了三名技术人员和一名工程管理人员,并且获得了一名力量较弱但富有激情的外协。基本上,这已经基本描述了"愚公移山”整个工程的概况。并且愚公的论述里面包含了编程的根本:顺序、分支和循环。庞大若“愚公移山”这样的工程,都是可以通过这样简单的编程来实现的。也就是说,编程可以通过这三个部分来实现,这就是编程的精义。
在第一章的第二节作者提到了会不会写程序的问题。其实这是个很简单的问题。只要我们自己能确定,自己在早上起床后如果天冷则先穿衣服后洗漱,如果天热可以先洗漱后穿衣服,如果遇到生病,不能行动以及意外事件可以不洗漱。那么我们就可以向设计师发展。也就是说只要我们有正常人的逻辑思维,有正常人的行为处事方法,就可以做程序设计师。所以程序不存在会不会的问题,只存在肯不肯去用心,肯不肯去写的问题。
程序=算法+结构 几乎所有的程序设计师都知道。所谓的编程实际上是把一件事交给计算机去做,你认为如何做,就用程序语言的形式翻译给计算机。所以编程的第一要务就是把事情分析清楚,然后再用代码去实现。不要一接到任务就急急忙忙的去编程,生怕浪费时间完不成任务。其实这已经是在浪费时间了。往往这样的程序员就是加班最多的程序员。我们学的同时讲述算法和结构是《算法与数据结构》这本书就很好的诠释了这种思想。
第一章的最后两节给我们讲了语言和没有工程的时代。其实任何一门语言的底层函数库是十分相似的,语言之间的差别主要表现在适用范围上。用合适的语言做合适的事情会使问题变得简单化。用不合适的语言做不合适的事情会使问题变的相当复杂。所以语言没有好坏,只有适不适合。在没有工程的时代,出现了很多人物。其中有算法大师,有游戏大师,有语言大师,有挣钱的大师等等,唯独没有工程大师。感觉有些蛮荒有些远古。好在现代社会出现了一批有一批优秀的工程大师,使我们的社会发展的越来越迅速,使我们的生活变得更加方便快捷,这是值得我们庆幸的。