前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从面向对象到函数式编程: 我们正在构建更成熟的关注点隔离生态系统

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

作者头像
Ken Fang 方俊贤
发布2018-01-05 10:28:56
6500
发布2018-01-05 10:28:56
举报

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 降到最低,甚至是没有的时候,那许多产品开发上关于效率与质量的问题,都将能获得解决。

到时就只剩下是目前还没法完全去解决的问题;网络脆弱的问题与安全性的问题。

但在解决产品开发效率与质量的问题上,我们正在ㄧ步一步的找出解决的方案⋯"

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-11-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档