遵循规则只是为了省事_风闻
code2Real-有人就有江湖,有code就有bug2021-04-14 16:24
在很多情况下,需要遵循规则是为了省事。
不能因为自己开的是越野车,有高速公路不走,非要寻找各种难走的山路。
这可能与我的职业有关,我已经习惯在受限的空间编程。
上学时,老师说,要想学好计算机,必须象计算机那样思考。
意思是你必须适应计算机的规则和限制,不能以人的角度考虑问题。
人类经过几百万年的进化,只有足够的智能解决流程中的逻辑缺失,但是计算机并不知道,必须事无巨细地考虑,否则计算机拒绝工作。
如果拒绝妥协,那么就不太适合从事编程工作。
话说有一次有人问我为什么要用递归,当时我脑子空白了几秒。
为什么啊?我也没想太多,就象厨师用菜刀是很自然的事,没想过为什么不能用剑。
在教学中,只是告诉学员有一种方法是递归,事实上递归在一般C语言编程中用得并不多,而且所有的递归都可以转化为非递归方法。在函数式编程中可能用的比较多,但国内学校很少教haskell,erlang、elixir、lisp之类的编程语言。
递归是一种简化思考的方法,就象上级用递归方法向下级分配任务,不用自己亲力亲为一样。
当然从数学上说,丘奇证明基于递归的计算模型与图灵机是等价的,而图灵机与可计算是等价的。
使用递归是一种声明式编程,将一个问题变换成另一种容易处理的模式,可以减少对细节的考虑。
计算机编程中需要思考的东西太多了,因此需要借助规则、设计模式减少思考的工作量,或者称之为自我约束。
很多学诗词的人抱怨词牌名对写词的约束,但是没有词牌名的约束,很容易散架,所以写词是带着镣铐的舞蹈。
在工程实施时,我会提前声明各种限制,一方面避免用户需求天马行空,一方面避免软件开发失控。
我会告诉用户,MFC实现不了不规则对话框,window实现不了优于1毫秒的定时精度……。
遇到与我抬杠的,我说,你行你上。
那种感觉就象欧美人问我为什么不争取“民主自由”?
我一定会很诧异,我过得好好的,为什么要折腾自己,争取什么“民主自由”?!
程序员节假日大都是宅在家里躺尸,没有精力去爬山远足。
因为有限制,对我而言,是减少“选择困难症”的好方法,也是减少“分析瘫痪症"的好方法。
人生苦短,没有必要面对众多繁花似锦的选择,那很容易迷失自我的。
我印象最深的话是:能解决问题的人不如能规避问题的人。
所以我选择python,只有一种实现方法的编程语言。
我没有选择ruby,那种可以用一百种方式实现的编程语言。
人生苦短,没必要把自己折腾出花来。