程序员的上帝视角(1)中国古典哲学与编程思考

凡事有道。自古至今,人们从未放弃对于道的追求。古人追求的是天地万物运行的规律,得道之人,是为圣人。我们自然不敢与先贤相比,但是,也总免不了思考一个问题——程序之道在哪里?

bug从哪里来

促使我思考程序之道的契机是review一位同事的代码。一看到代码,尽管只是粗粗浏览,但下意识里就知道,这段代码一定存在严重bug。虽然测试的场景有限性,导致测试阶段无法发现这个bug,但后续一定会爆发。

作为程序员,我们习惯于自嘲每天都在写bug。修复bug往往很容易,但是,出现bug的原因倒是什么?很明显,不能总是简单的使用“粗心大意”一类的原因来解释写出bug的原因。那么,bug,尤其是低级bug,究竟为何会频频发生?

或许我们可以从一个日常生活中的场景获得一些启发——一个二年级的小朋友在加减乘除混合运算上,可能经常犯错;而一个高中生,同样的四则混合运算,出错的几率要小的多。

高中生与小学生相比,在四则运算的知识学习上所花费的时间,并不会有太大差异。那么,二者之所以在正确率上有如此大的差异,源自对于四则运算的理解程度上。高中生所具备的、对数学的认知高度,使其在计算四则运算时,完完全全站在一个更高的层面来思考和完成计算。

于程序员而言,是否也具备这样一个高度,使得我们编写代码,最大限度的避免bug。即使能够减少10%的bug频率,对于整个程序员的庞大体量来说,所产生的价值也是非常可观的。

编程之道

其实,不止是bug,我们常常会看到庞杂的代码,一堆杂草般摆在我们面前。这也是程序员最常吐槽的地方。一旦其中出现逻辑问题,只能一点点以补丁的形式修复。我见过无数类似的代码,这种代码便如洪七公的衣服——到处是洞,还到处是补丁。

无论是低级bug,还是杂乱的代码,本质原因仍然是程序员所具备的认知高度有限,无法完全掌控代码。解决之道,便是提升自我认知。不断修炼对于技术和内在逻辑的认知。当看待问题或者工作时,可以居高临下,一览无余,尽在掌握之中。

我们大多数程序员往往执着于技术的学习。毫无疑问,无论是对于编程语言,数据库,还是架构的学习,都可以大大扩展我们的知识面。但却忽略对于技术本质的思考。

说到底,技术只是工具,技术本身没有意义。有意义的是,我们利用这些技术做出了什么结果。而编程之道,在我看来,就是开发者的境界。这种境界,大到能够洞察技术本身,洞察需求本身,洞察实现本身;小到能够一眼洞察一段代码的本质,洞察一段代码的优劣,洞察一段代码的合理和不合理之处。

儒学、理学与心学带给我们的启示

该如何求得编程之道?或许,我们可以从先贤们的学习之道获得一些启发。儒学一直是我国2000年来的正统文化。其实,儒学也一直在发展和自我更新,后来出现的程朱理学和阳明心学都是对儒学的不断更新。抛开儒学、理学和心学的历史局限性不谈。我们仅仅看看它们在学习和思考方面都有各自的哪些主张。

儒学

学而时习之,是我们最为耳熟能详的一句话。强调的是不断不断的学习,并且不停温习。我们仔细考量,就会发现,学而时习之,只能帮助我们机械式的学习知识,更多的只能是记忆型的知识。

理学

理学认为,理存在于事物之中。要领会天理,需要格物致知。今日格一物,明日格一物,直至触类旁通,最终通达天理。

作为程序员,我们当然想做到博览群书,对各种技术信手拈来。但与技术的飞速发展和浩如烟海相比,一个人的精力和能力非常有限。如同朱夫子的格物致知,想格尽天下万物,何其之难。

我们常常听到的一个观点就是,不断学习,不断丰富自己的知识,直至能举一反三,解决日常遇到的技术问题。这简直与理学的格物致知不谋而合。至于何时能学到头,学到通透,似乎是一个比较遥远的话题。

也有的程序员更专注于某一项技术,认为研究透彻了某项技术,就可以一招鲜,吃遍天。这种形式,只能算做程序员职业生涯的一种生存方式。而不是我们学习和研究技术最终的目标。这样的学习方式,仍然脱离不了增加知识的范畴。

理学所提倡的学习和思考方式,与当前大多数程序员的学习方式最为相似——不断学习新的知识。优秀者,可以对各种技术说的头头是道,擅长列举各种知识图谱,知识树等等。但往往缺乏真正的思考。

心学

心学认为,物者,事也,理并非存在于物中,而是存在于人们的心中。只有用心参与到实际的实践活动中,并时时在内心反省,用自己的良知进行鉴别,才能获得真正的天理。

心学所提倡的,用心投入,不断扪心自问,在内心深处不断探究代码和设计的本质是什么,才是最有效的学习和提升的途径。在学习过程中,对于学习到的经验和知识,不停抽象反思,直至挖掘到个人认知层面的提升。也就是在程序层面上修心。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值