今天读了周爱民老师的《大道至简》,感觉就像是揭开了编程世界的又一层面纱,对编程的认识更清晰了。
《大道至简》第一章的标题便是编程的精义,在这个章节里,作者及其精简的向我们讲述了编程这件事情。作者首先是以愚公移山这件事情,来引入编程的概念的,愚公移山这件事被作者深度剖析了一下,分为了原始需求的产生、项目沟通的基本方式、确立一个项目的目标、还有一个井然有序的、可以实现的技术方案、三名技术人员和一名工商管理人员、还有一名外协。而这些,便是整个工程的概况了。而后又由此引出了编程的根本:顺序、分支和循环。无论多大的工程都可以通过这样简单的编程来实现。而这,便是编程的精义了。
在第二小节中,作者讲述了“会或者不会写程序的问题”。而对于这个问题,作者的回答也很简单:“除了先天智障或后天懒惰者,都是可以学会写程序的。”之后作者又以一个人起床之后的需要来说明,只要你能明确自己起床后需要做的事情,那么你就可以开始编程了。甚至,如果你有类似于生病、不能行动、以及意外的紧急事件,则当日可以略过那么你就可以开始向设计师发展。因为你已经具备了一项常人不具备的基本素质:折衷。作者通过这些简单的事情向我们讲述了人人都可以学好编程这件事!
在第三节,作者向我们讲解了程序:程序=算法+结构。编程作为一种行为,只需要知道其逻辑方法就可以了。而编程的第一要务是先把事情分析清楚,事件先后的逻辑顺序和依赖关系搞清楚,然后再去代码实现。而在“程序=算法+结构”这个公式中,代码是不存在的,存在的只是思想。算法是对一个程序的逻辑实现的描述,而结构是逻辑实现所依附的数据实体。在所有的算法描述中,有且仅有三种执行逻辑:顺序、分支和循环。简单如顺序表,复杂如树、图,它们的算法都是用上面这三种执行逻辑来描述的。
第四节讲的是语言。作者提出,当你熟悉了一门语言之后,你会发现,编程语言只有喜欢和不喜欢的问题,没有会不会的问题。任何一门语言,它们的底层函数库都是那么的相似,而它们API都是那样的依赖于操作系统。而语言的差别主要表现在适用范围上。所以语言只有是否使用的问题,而没有哪个语言更好的区分。
第五节作者向我们描述了工程的重要性,如果没有工程,程序便只是程序员掌握了一门语言,懂得了一些生活中最常见的逻辑,用程序的方式思考和学习了一些算法,并根据前人的经验,把这些算法跑在了一些数据结构之上,然后这就是他们的程序。
通过对第一章的阅读,作者将编程这件常人看来无比复杂的事无限简化了,让人更直观的了解程序,而且对于初学者来讲,通过这一章的阅读,可以把握住以后学习的重点。