从面向对象到函数式编程: 我们正在构建更成熟的关注点隔离生态系统

来源:互联网 发布:云计算比赛 编辑:程序博客网 时间:2024/05/05 22:12
2016.11.17, 深圳, Ken Fang

在谈论关注点隔离生态系统前, 我想,首先需要谈谈 Procedure Programming, Functional Programming , Object Oriented Programming 。
Procedure Programming 就宛如是在写文章、小说;好写却很难维护;我想这是大家都很清楚的。
Object Oriented Programming 主要是要解决 Procedure Programming 上的问题;毫无结构可言、长篇大论的文章。所以,软件设计的思维;关注点隔离;也在这个时代诞生。
但是,要做到关注点隔离,不是个容易的事;除了要有工程实践、框架,更要有程序语言来共同达到。
因为,要真正做到关注点隔离应该是:不要有 Side effects
而过去我们在 C++,Java,虽然,有做到关注点以接口的方式隔离,并以框架做到将关注点动态的注入,但在实际的实现层 (代码层)上,却没法消除所谓的 Side effects。所以,在并行处理、多执行绪下,便要十分的小心,以避免犯错。
Functional Programming 主要便是要解决这个问题;Side effects 。而不是要推翻 Object Oriented Programming, 也不是在关注点隔离上有什么不同或创新的思维与做法。
Scala 在实现 Functional Programming 有相当好的抽象的做法;比 Object Oriented 要更简洁、抽象,更容易开发出 DSL。
所以,我想软件开发在关注点隔离上的生态系统是越来越成熟了;因为,有了 Functional Programming 与 Docker。
因为,关注点隔离生态系统的成熟,软件开发的效率与质量,将会获得指数型的增长。这才是我们真正该关注的。至于,抽象、艺术,这些教科书的玩意⋯真的很重要吗?
John Carmack 的名言:
"Sometimes, the elegant implementation is just a function. Not a method. Not a class. Not a framework. Just a function."
我想,Scala 最大的优点,也是它最大的缺点;Scala 使得我们可将函数式编程置于面向对象的框架下,使得我们的代码可经由面向对象而获得隔离,同时也经由函数式编程,使得我们的代码降低或甚至没有 Side effects 。所以,Scala 是同时在面向对象中,融入了函数式编程;也就是说, Scala 是将面向对象与函数式编程融入到了一个世界里去; Scala 不是将面向对象与函数式编程, 当成是两个不同的世界
所以,Scala 很难入手的主要原因便是:要是只用面向对象的思维或著是只用函数式编程的思维,便没法学会 Scala; 而是要同时运用面向对象与函数式编程的思维才行。
这就是我说的,Scala 最大的优点,也是它最大的缺点;但,真正理解了以后,学习起来便会非常的有趣。
我想,这世界本来就没必要去区分所谓的,用了函数式编程,便需舍弃面向对象。我认同 Scala , 喜欢 Scala, 主要的原因是:它完美的整合了面向对象与函数式编程。而这样完美的整合,使得我们可构建ㄧ更简洁,更纯净的世界;我想,这才是我们真正所想拥有的。
當然,也有許多人不認同⋯所以,就有了 GO⋯
GO; 好学, 开发出的代码也易读、易懂。所以,也比 Scala 易维护⋯但,这种事,就如同萝卜、青菜各有所爱⋯还真不知道怎么说?
总之,深入去了解每个程序语言背后的思维、故事,将每个程序语言都当成是个艺术品欣赏,会比较有趣的。
函数式编程从在 LISP 的时代,到现在,就从来没有像面向对象ㄧ样的,有所谓的设计模型这样的思维。
如同我先前所说的,函数式编程,不是在软件架构的关注点隔离上,有什么创新的做法。也就是说,在软件架构上的设计,还是可用面向对象的方式进行关注点隔离,但,在实现层便可用函数式编程,进行再更进一步的隔离,而达到降低或甚至消除 Side effects 的目的。
软件架构的层次:经由面向对象隔离。
实现层 (代码层)的层次:经由函数式编程隔离。
"当我们能找得到个方法;将产品从需求分析、架构设计、设计、开发、测试,都能做得到将所谓的 Side effects 降到最低,甚至是没有的时候,那许多产品开发上关于效率与质量的问题,都将能获得解决。
到时就只剩下是目前还没法完全去解决的问题;网络脆弱的问题与安全性的问题。
但在解决产品开发效率与质量的问题上,我们正在ㄧ步一步的找出解决的方案⋯"

0 0
原创粉丝点击