展望下一代语言:Fortress, Chapel or X10(转)
link:http://blog.csdn.net/phoenixsh
这三门语言是DARPA资助研究的HPCS系统(High Productivity Computer System),分别由SUN, Cray和IBM承担。HPCS原来是High Performance Computer System,是DARPA为了推动新一代软件开发平台而推出的项目。后来随着多核渐成气候,而并发编程又是公认极端的困难,于是便开始强调程序员的工作效率,遂有更名之举。
这三个语言都是瞄准了未来的多核(MultiCore)乃至甚多核(?ManyCore)平台,虽然细节上有很多不同的地方,在以下这些方面却都是一致的:
目标是在保持C/Fortran运行效率的基础上将程序员的工作效率提高10倍;
瞄准从大型主机到桌面系统的广泛平台进行设计,并且不仅仅局限于科学与工程计算,还要延伸到主流的商业计算领域;
尝试让程序员更加容易发掘不同层次的并行性;
采用先进技术减轻程序员的负担(例如类型推断,无锁并行支持)。
Chapel号称可以分离算法规范和数据布局,可以在工作站甚至PC上面调试好程序,然后放到大型的分布式、高并发环境下运行。具体怎么做的不得而知,哪位高人去研究一下?
有意思的是,SUN的Fortress被设计成Fortran的取代者(不兼容),而IBM的X10(暂名)却是在Java基础上做的扩展,加入了很多并发方面的特性。这里面显然有各自的商业战略考虑在里面。
对于SUN而言,它可能觉得自己的Java已经在通用软件领域足够成功了,但是Java一直不能胜任大型的科学计算任务,这让SUN耿耿于怀。于是趁这个机会研发Fortress,目标是取代Fortran在科学计算领域的统治地位。为了达到这个目的,SUN将“FORmula TRANlation”发挥到了极致,声称要让科学家和工程师们用数学公式编程。例如可以在程序中使用数学家们喜欢的希腊字母作为变量,把两个数值变量连在一起写就表示相乘,可以直接写分数式和指数。就像这样:
大概是DARPA觉得这个东西也许很好,却不够通用,SUN于是没能进入下一轮。不过SUN仍然在继续研发Fortress。SUN的说法是,没有一种语言能够适合所有的场合,言下之意是我要用这两门语言通吃。
IBM不用说在Java上面赚了个盘满钵满,对Java简直比SUN对Java还要亲。呵呵,玩笑话。IBM其实在Java上面投入了相当多的人力物力。比如这里有一个项目是研究实时垃圾回收器的,里面用到的控制算法非常有创意;其成果已经可以实时控制一个小型无人直升飞机了。个人觉得X10会很有前途的。
不好意思,说了这么多,居然没有说到点子上,也就是这些语言要怎么样支持数以千乃至万计的核呢?——咳咳,初步接触这些语言,我也还不知道。有兴趣的朋友可以从这篇文章开始了解。同时,忘记Java和C/C++之间的战争吧,那应该是过去式了。