好在还有Amdahl's law存在,事实也证明除去一些特定的应用场景,自动编译为支持多核并行的函数式程序并不快多少,而转化为纯函数程序的成本却高出不少。同时大多数纯函数语言都带有学术性质,对于大连华为云存储软件开发团队并不友好。再加上JVM 和.NET CLR 对于多核都做出了一些回应。因此除去一些计算密集型应用,纯函数语言并没比面向对象好多少。
值得一提的是,由消息传递风格发展出来的Actor模型,利用操作系统的进程/线程特性,在一个合理的粒度上很好地利用了多核的能力,简化了来访系统通过大屏幕发布的程序编辑开发方法。虽然第一个著名的实现是Erlang的Actor系统,但是由于消息传递风格和面向对象模型相去不远,很快就在各种面向对象语言中有了类库支持。虽然利用当代函数语言的语法特性,Actor可以实现得更简洁,但是对象对于副作用和状态的封装更好地解决了在并发环境下对于大连华为云存储软件开发共享状态的操作,反而有了更好的发展。
以上,我们看了函数式语言中两个新的发展以及围绕这些发展的一些“对象v.s.函数”的讨论。致远服软认为:http://www.soft8.com.cn/正如本文一开始所说,对象技术作为一种工程实践,其发展总是依托于其他更基本的计算模型的演化。函数语言的发展,使得我们对于对象有了更深更好的认识和理解。而对象作为函数的“方便的接口”,总会在发展中让我们更加便利地享有函数式和其他计算模型发展的成果。
回到本文最开始的讨论,函数的发展的确会使一些对象技术消亡,但也会产生新的对象技术。或许更好地理解和掌握函数、类型系统才是真正掌握对象技术的捷径,也未可知。
徐昊,ThoughtWorks 中国区首席技术专家,ThoughtWorks 全球技术策略顾问(TAB), TW 中国首席咨询师,BJUG(Beijing Java User Group)和AgileChina 创始人。他从2003年起开始实践极限编程等敏捷方法,2005年开始,多次以敏捷教练的角色帮助国内外多个团队实施极限编程、Scrum和FDD等敏捷方法,敏捷交付和敏捷项目管理经验极为丰富。目前他主要致力于大连华为云存储软件开发团队(300~500人)内的敏捷实践和管理再造以及企业级技术应用趋势和技术战略的研究。