《大道至简》是编程爱好者和程序工程人员必读的一本关于编程精义的著作。此书主要阐述如何理解程序以及如何完成一个庞大的工程,程序即数据结构加算法,将一项工程结构化,模块化,然后分步骤井然有序地完成。
本书从一个程序员典型的心态出发,步步深入,最终深入到软件工程思想的本源。从本书目录结构的安排便可,看出书作者的整个思考的历程。作者对于章节的安排是基于其对软件工程的总结给出的,而作者整体思想则体现在了其在书中提出的软件工程层状模型图里。从章节的安排可以看出,作者为我们详细解析了软件工程里各个工程元素的基本概念,从程序的实现到方法,再到过程、工程,最后到组织。
作者开篇用一个耳熟能详的古老传说类比一项工程,愚公移山,谓之愚公,大智若愚,原文中,项目的原始需求是大山挡住外出去路,项目沟通基本方式是齐聚而谋,项目目标明确,开山通路。并且通过研讨,挖山石用簸箕送至渤海。然后动用三名技术人员一名工程管理人员和一名力量较弱满腹激情工作的外协。在基本框架,工程前期准备完成后,开始讨论工程的具体实现,从愚公与智叟对答中可知,“虽我之死,有子存焉”,类比程序语言是典型的条件判断,然后子又有孙,孙又生子,子子孙孙无穷匮,类比程序语言是完成工程必要的循环结构,优秀的工程师还要做到循环的可能性——“山不加增”。从寓言中我们知道,编程的根本就是顺序,分支和循环。无论多么庞大看似不可能完成的工程,都是由一点一滴一字一句逐步累积精雕细琢后完成的,编程精义就在于此。
程序=数据+算法,所谓编程就是把一件事情用计算机语言的方式交给计算机完成,但是前提就是你要明白如何去做,你要让计算机明白你说的话,所以编程的第一要务是先把事情分析清楚,把事情先后的逻辑关系和依赖关系搞清楚,让后再用代码实现。所谓代码就是我们所要学习的语言,语言无优劣之分,只有不同的适用之处,也不存在会不会编程的问题,只在于你本身的兴趣。但是面向对象的分析与设计是一门高深莫测的学问,首先要分析问题论域。找出问题的解决方案,发现对象。然后分析对象的内部结构和外部关系,最后建立软件系统的对象模型,用算法顺序实现。问题论域是指业务范围,业务规则,系统的责任、范围及需求。发现对象要确定它内部特征:属性和操作。对象与对象间的,类与类之间所需的联系要有通道连接,即关联。接下来建立系统的静态结构模型和动态行为模型,先设计后实现。
作为软件工程系的学生,要记住积极工作和勤于思考两个要点,把握编程的顺序、分支和循环,让我们迎接工程时代的到来。