编程宗派的融合

每一门编程语言,都有一群粉丝和一些黑子; 争论语言的好坏,可能导致网络互喷大战。更大规模的争论,则发生在编程范式之间。比如“函数式编程”(FP)Vs.“面向对象编程”(OOP),谁更好?

范式、编程范式,也是yqj2065非常关心的问题。我喜欢看网络互喷大战,热闹谁不喜欢啊。但是,我不喜欢其中出现的调和派——“语言只是解决问题的工具”等等。这些调和派说的,都是没有自己观点的“真理”,其实是废话(大战的双方,谁不知道,每一范式都有自己的优缺点呢),而且这些调和派肯定是编程的初学者,而且调和派降低了火药味。

但是,编程范式这个术语,我渐渐地觉得不合适了。托马斯•库恩的《科学革命的结构》(《TheStructure of Scientific Revolution 》)中指出,新旧范式是不可通约的、不可比较的;关于编程范式的争论、多种范式的融合等,以及罗伯特•弗洛伊德(Robert W.Floyd) 在《编程的各种范式》中列举的一些称为编程范式“东西”,如事件驱动编程、管道等,都让我觉得,编程范式其实应该称为编程宗派(风格)。宗派可以大战、争论和融合。按照我以前的观点,编程范式必需源于计算机科学之根:一般递归函数、λ表达式、图灵机,再加上面向对象,4大范式——现在看来,4大宗派。


有人将FP与OOP进行比较,其实FP应该与命令式编程进行比较。因为:

函数式编程  Vs.过程式编程 = (微观世界的) Vs.粒子
面向对象属于人的宏观世界。
对于人类而言,使用键盘、书籍、手机时,我们使用粒子观;讨论声音、光、无线电,我们使用波的观点,毫不违和。但是,我们需要有一个底层的理论的支撑—— 波粒二象性(wave-particle duality),没有波粒二象性,人们在自己的宏观(较微观而言)世界,也会纠结。计算机科学中则是 三象性

yqj2065认为,OOP是程序员的宏观世界的基本观点,Java以前是命令式面向对象语言,现在Stream带来了函数式编程风格;Scala等是函数式面向对象语言;由此可知,OOP从来就不会与微观的函数式或命令式矛盾。

正如人们更习惯粒子观一样,命令式面向对象语言更为程序员习惯。


下学期准备使用的PPT:





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值