懒人,第一想到的就是那种总躺在床上,吃喝拉撒睡都是要等着别人伺候的人。第一次看到标题便是不解,但是也没有特别的理解,也就这么过去了。第二次再次带着对这个的疑问和老师上课的略微讲解,便往下看第一节。这次看完第一节,才略有所悟,这里的懒人并不是真正意义上的懒,那种不会愿意做事的人,而是那种会动脑子,寻求捷径而不耽误工作效率的人。
人生在世,人的精力终归是有极限的,谁也没有比别人多几倍 的精力,纵使是爱因斯坦那样的人,他们也是牺牲了睡眠时间工作,并且以寿命为代价,毕竟因为熬夜而猝死的人现在比比皆是。为了更高效率的完成一件事,懒人更愿意去做一件一劳永逸的事,此处的一劳永逸,并不是真正的一劳永逸,而是,相对与其他人而言,在一定的时间和空间范围内,能够节约更多的时间空间去留给自己休息或者做更多的事,创造更高的效率。这里便要举一个例子——蜘蛛,蜘蛛会结一次网,然后等待各种飞虫送上门来给他当午餐(这里忽略了蜘蛛反复的补网的过程),这就是一种懒人的行为,虽然结网的过程很慢甚至也十分危险,但是一旦她完成工作,他便可以坐在网中心等待他的食物,可见,他可以休息的时间也是十分长的,更甚的是,它可以再结一个网去等待更多的食物。蜘蛛这个懒人虽然没有多大的创新意义,得到食物的方法也是跟前辈所学习的。真正的懒人,更准确的说,是会提出新的方法,寻找捷径完成事情,享受闲来的时光、甚至谋求更高效率的人。做一件事,并不是完成,而是在完成的基础上追求成效的过程。就拿原来工厂来说,较为落后的工厂采用人工安装零部件,费事费时,大量的消耗人力物力财力,而且残次品较多,而现在,使用机械化的工具,不仅不耗时不耗费人力物力财力,而且能高效的完成零部件的安装。可见,由于人的精力终归是有限的,提出新的方法,解决的将是做事成效的根本问题,这才是做事的精华和关键。
将一百万行代码写在一个文件里,这也是懒人不愿做的一件事。一百万行的代码需要勤快人按5000多次的pagedown,如果每按一次需要0.5秒,那么五千次也就是2500秒,也就是41.67分钟,我相信,用这40分钟的时间,都可以完成一个小程序,或者,可以足够一个程序员在外得到适当的锻炼和休息,而非盯着电脑傻乎乎的进行一个按键的操作。使用模块和单元的代码,终于可以是源代码分散开来,这才开启结构化编程的时代。这里,便是新的方法的产生,这也要归功于那个按5000次Pagedown而会奔溃的懒人程序员。
第一章的时候,编者讲过这么一个问题——你会不久编程,当时的回答是,你能知道先穿衣还是先洗漱的问题,便是可以编程的。概括的一下,可以这么说,你明白了逻辑关系,条件和先后顺序便是会编程的。现在要讲的是怎么编程,也就是会了之后,怎么更好更高效的编程。现在大二的我们,虽然学习了一年的C++,但是面对上UML第一节课的第一个问题时,许多人发愣了,C++学习了什么。C++的学习历时一年,但是站起来回答问题的人却没有一个能说明白的,最后也是拼拼凑凑有了一个答案。我们学习这些语言,学习编程,其实更往常的学习是一样的。高中的各种学习都会讲究学习以及归纳整理,编程也是,在学习之后,学会将自己脑中的知识都整理的像自己整齐的书桌那样,便是可以解决怎么编程的问题了。
最后一节的内容,没有如老师期望的一般,能够读懂,也仅仅是在对话中找到了结论,这里就直接记录,不把自己可能不正确的想法写出来丢人现眼了。面向过程的是对流程、结构、编程方法的高度概括。面向对象只解决了结构和编程方法。在面向过程的时代,程序=数据+算法;而在面向对象的时代,由于看到了事件驱动和模型驱动,出现方法的问题,因而程序=数据+算法+方法。