一谈哲学,好像和编程没什么关系。而且这种虚无缥缈的高大上抽象思维领域,怎么和写代码这种更接近于逻辑和数学的操作关联起来?
其实不尽然。
我们说,任何的编程语言和设计思想,都是作者对于现实世界的理解在软件领域的投射。首先举一个大家编程中最常见的概念:面向对象。面向对象最初起源于对于人体细胞的隐喻(https://blog.csdn.net/zhang_qxian/article/details/54341763)。每个细胞都是一个独立的处理信息的单元,细胞之间是通过神经元进行信息的交互(顺便歪个楼,喝水有利于信息的传递速度,所以程序员脑累了要喝点水),然后多个神经元就通过这种简单结构的组合,来实现复杂的器官功能。最能够体现这种思想的是Erlang语言(https://baike.baidu.com/item/Erlang/1152752?fr=aladdin)。详见Joe ArmStrong的访谈https://blog.csdn.net/zhang_qxian/article/details/54341878。因此,可以说这就是面向对象的编程的哲学。
再举一个例子,在青少年儿童编程领域中,Scratch已经是公认的最佳选择,其催生出来的国内的诸多培训机构,也都是围绕Scratch进行再次的包装和升级。Scratch的基本理念详见《终身幼儿园》一书,其中最核心的部分在于其提出的4P,即Project、Passion、Peer和Play。整个Scratch系统的设计,就是紧紧围绕4P进行构建,充分体现了其设计哲学。我个人建议,每一个学编程的人,都应该好好看看这本书,对于如何设计具备极大的启发价值。
最近在忙于招聘,应聘的几乎所有的Java程序员,都是做网站的,没有人思考过,其实现的网站的灵魂在哪里,都是一堆业务流程。
有人可能会问,哲学能当饭吃吗?其实,我们每天的生活,都和哲学密切相关。每一个个人决策背后,都有其意义支撑。从这点上来说,哲学不仅仅和编程密切相关,而且是相当密切的。