是懒人创造了方法
有人说愚公是“碎石”,并没有说他“碎石”的方法究竟是“斧钺以凿之”,还是“积薪以烧之”。但想想那 个时代,如果有人懂得了烧石头这个方法,哪能不立即载文志之,永世传承。愚公,愚者怎么会呢?这还需要分析吗? 需要吗?所以愚公会凿,而李冰会烧。那李冰又是为什么会用 “烧”这种方法来碎石的呢?如果李冰也象愚公那样日复 一日地督促着他的团队凿石开山,那他一定没有时间来学 习、寻找或者观察,当然也不会发现“烧”这种方法可以 加快工程进度,使得一大座山短时间就被哗啦哗啦地给 “碎”掉了。李冰一定是个闲人,可以闲到没事去看火能不能把石头烧爆。正是一个懒人造就了“烧石头”这个“碎石”的方法。 愚公太勤快了,勤快得今天可以比昨天多凿一倍的石头。 或者在愚公的项目计划案的首页里就写着朱笔大字:“吾 今胜昨倍许,明胜今倍许,而山不加增,何苦而不快。 ” 但是越发的勤快,愚公将越发没有机会找到更快的方法,人的精力终归是有极限的。提出新的“方法”,解决的将是影响做事成效的根本问题。而愚公可以多吃点饭, 多加点班,但突破不了人的精力的极限。所以是懒人创造了方法。所以当我们在写代码时,不要一味的没有头绪的书写,这样既没有时效也没有结果。我们在问题来时应该冷静的思考,俗话说磨刀不误砍柴刀,当我们“闲”下来思考出了方法的时候,就能达到事半功倍的效果。
勤快的愚公创造不了方法。一百万行代码是可以写在一个文件里的。早期写程序,都是将代码打在穿孔纸带上,让计算机去读,要让计算机读的纸带肯定是连续的;后来有了汇编语言,代码写在文本文件里,然后交给一个编译器去编译,再由链接器去链接,然后出来程序,而第一个写汇编的人的程序写在一个文件里即可,后来就变成了习惯,大家都把代码写在一个文件里;再后来的高级语言,因为大家都形成了习惯,很自然的就把一个程序写在一个文件里;直到如今的程序员依旧保留着这个习惯。但是Delphi1.0版发布后不久,出现了一个大BUG,它不能编译64K以上的源代码文件。。对于查找一个函数要在编辑器里按五千次 PageDown/PageUp 键的勤快人来说,是不能指望他们创造出“单元(Unit)”这样的开发方法来的。有勤快 人就必然有懒人,有懒人也就必然有懒人的懒方法。当我们不想按第 5001 次PageDown键时,我们就会创造一个不用按无数次PageDown键的方法。
当我们学了一年的编程,却还是不知道怎么写程序时。我们就要想如何把所学的知识分类一下,归纳一下,整整齐齐地放在脑子里!如果一个人学了一年的编程,他的脑袋里还是昏乎乎的,不知道从哪里开始,也不知道如何做程序。那想来只有一个原因:他学了,也把知识学进去了,就是不知道这些知识是干什么的。或者说,他不知道各种知识都可以用来做什么。 一个人摆书的习惯从侧面反映了一个人思考问题能力是否清晰,混乱不堪的书籍摆放一个人思路想必也是紊乱的,常用的书摆放在桌上,不常用的书放在书架里,知道书怎么摆放,何时用,这个人的思路也是清晰的,拿到一个项目,知道如何去开始,如何去设计,如何应用所学的知识,那么这项目也就不知不觉地完成了。其实结构化编程的基本单位是“过程(Procedure)”,过程及其调用是CPU 指令集所提供的执行逻辑,而不是普通的开发人员在编程实践中所总结和创生的“方法”。CISC 指令集搅乱了一代程序设计师的思路一 样,大量的知识和资讯搅乱了我们的思想。我们应该尝试把知识分一下类,常用的放在一起,不常用的放在一起。这样我估计学习一年后就可以写软件程序了。
程序=算法+结构+方法。作者和soul的一段对话,起初他忽略了面向过程时代的“方法”问题。而实际上面向过程开发也是有相关的“方法”的。他忽略“方法”的根本原因是即使没有任何“方法”的存在,只要有“单元”和“模块”的概念,一样可以做出任意大型的程序。