大道至简第一章读后感
第一章编程的精义分为五小节,1.编程的精义2.会或者不会写程序的问题3.程序=算法+结构4.语言5.没有工程的时代。主要讲了作者对编程的理解,解释了一些人们的误区。
第一节编程的精义,首先讲了愚公移山的故事。作者把愚公移山看成是一个工程,愚公是这个工程的项目组织者,团队经理,编程人员,技术分析师等。因为愚公家门口挡着一座山,所以愚公定了一个项目目标将山搬走。于是一名工程管理人员,三名技术人员和一个外协,开始了这个庞大的工程。整个工程的实现程序:“虽我之死,有子存焉”,这是“if”条件判断;“子又生孙,孙又生子:… … 子子孙孙,无穷匮也”,这是工程的循环结构。“山平”是这个循环的判断语句。可以看出编程的根本:顺序、分支和循环。无论多么大的工程都可以分为这三步。
第二节会或者不会写程序的问题。除了先天智障或后天懒惰者,都是可以学会写程序的。因为每天我们的日常的生活就像程序一样。早上起床天冷先穿衣服后洗漱,天热反之。这就是应对不同情况,产生的不同的逻辑顺序。如果有类似于生病、不能行动、以及意外的紧急事件,则当日可以略过。这体现了设计师折衷的思想。因此在日常生活中我们的逻辑和思想,都可应用于编程。
第三节程序=算法+结构。编程的第一要务是先把事情分析清楚,事件先后的逻辑关系和依赖关系搞清楚,然后再去代码实现。这样才能事半功倍。而那些不分析就直接写代码的程序员往往更费力。程序=算法+结构,这是对编程本质的思考,这个公式里没有代码,只有思想,算法是对一个程序的逻辑实现的描述,而结构是逻辑实现所依附的数据实体。只要开发人员将程序的算法设计出来,把结构描述出来,那么程序就已经定型了。所以程序的灵魂是算法和结构。
第四节语言。编程语言只有喜欢不喜欢,没有会与不会。所有的语言都有相似之处,底层函数库更是相似。只是有些语言适合做数值处理,它的精确位数会更高。有些语言适合做图形处理,它的底层函数比其他语言快数十倍。有些语言适合编写网站,它的体型会很小。语言没有优劣之分,都有其长处与短处,善于利用语言的长处避开短处,才能更好的编程。
第五在没有工程的时代。在没有工程的时代,程序员只要掌握了一门语言,懂得一些生活中的逻辑,学习一些算法,并把算法跑在数据结构上就生成了程序。
通过阅读大道至简,我体会到以前的一些思想是错误的,以前对算法和结构不重视,而是重视语言,这样本末倒置,让我的编程事倍功半。今后应该重视code之前的思考,定当有不小的收获。