编程语言领域的专家和市场的对决?

如今在编程语言领域,专家和市场正上演一场对决,我们到底需要什么样的语言,不同出身也许决定了不同的视野,市场和专家两个不同方向的人经常发生不同的选择,在市场上受欢迎的语言可能被语言专家不屑一顾,而备受专家推崇的编程语言也许没有多少人愿意使用它。

为什么每个人都讨厌GO语言?一文明显地暴露了这种冲突,Go语言受到市场的欢迎,但是专家们却认为它抛弃了40年的编程语言研究成果。

更有甚者,抛弃这种手工代码编写,两位开发者一周内没有写一行代码开发出一个应用,他们使用图形化虚拟开发工具,如同当初Delphi一样能够快速拖曳开发出一个应用,他们认为这会让开发者更加关注业务需求。

抑或现在编程语言的复杂得以至于让人们失去了方向,魔鬼是在细节中,因为魔鬼会让人过于沉湎于细节,以至于没有精力搞清楚我们使用这些工具到底是为了做什么?

面向对象分析的概念模型和实现细节的不匹配一文提出了当前语言并不能很好实现针对需求分析的概念模型。

文中列出了八大不匹配,其中提出分析领域的“类”的概念和编程语言如Java的“类”其实是不同的,概念模型中的对象不只是可以属于一个类,也可以迁移到属于其他类。而在Java等语言中,一个对象是类的一个实例,这个实例一旦生成就不能更改为其他类,针对这种情况有两种解决办法,首先是使用继承,让一个类事先继承很多种类,然后这个类生产实例时,确保有很大的内存这个对象实例能够将其继承的所有类字段都加载到内存,很显然这个办法比较笨重,实践中很少使用,还有一种办法是::语言能提供对象属性的动态获取和删除,在这个模式中,所有对象实现将是动态的数据结构,我们通过对数据结构的成员的动态组合实现一个对象是任何几个类的成员这一目标。Scala等语言的trait和Go语言是彻底的面向组合的并发语言也许是这一目标的两种尝试。

该文还将实现内部并发和分布式通讯的活动对象也是概念模型的一个要求,而与之对应的Java等语言中,对象都是被动的,所谓被动也就是对象自己没有行为(贫血模型),都是作为数据DTO被动地被服务等传来传去,而分析领域的概念模型要求对象是一种可以自行活动的对象,可以有自己内部并发机制。这方面Scala的Actor模型和Go语言的CSP模型应该都是一种探索。

该文指出,软件开发的未来是分布式、并发、持久、活动对象系统。这其实对编程语言的未来指出一个方向,也许等到那天,业务和编程语言能够和谐统一在一起,人们不再会为业务快速变化与编程语言不断复杂变化而头疼。