刚看到CSDN新闻:[url=http://news.csdn.net/a/20090804/212939.html]Intel获得Cilk++技术 多核处理器开发将变得更容易[/url],对它本身并不感兴趣,倒是类似在C++代码中插入自己的关键字来生成代码的方式比较喜欢,不过这种方式实现成本太高了,特别是C++中。以前还有一个[url=http://www.aspectc.org/]AspectC++[/url],曾经也迷了一阵子,后来觉得这种旁门左道很难发展。
从[url=http://www.cilk.com/]Cilk++[/url]的描述来看,它是通过扩展编译器来实现,具体如何做的还不知道(正在下载,有空测试一下),这和OpenMP比较相近。这种方式缺点是太封闭,必须有大厂商来实现才好用,我更喜欢一些能够自己定制的、插件式的实现。在C++项目里比较优雅的方式,个人感觉应该是层次分明,底层(运行时、框架等)和逻辑之间关联很小,逻辑可以用另一种语言来描述,逻辑本身是自描述的,这样可以有更多的自动优化空间;逻辑最终是用来生成代码的,可以用它来生成C++代码,和其它代码一块编译,代码生成这部分要可以定制。
牛人或许想到用scheme来做,数据即代码,逻辑即数据,不过我很怕这样的语法,看了几次实在忍受不了,不知道有没有其它类似的东东?iolanguage也可以做类似的,只是定义一个method,就可以处理完整的代码块,不过它的语法还是比较受限。最近几天接触了[url=http://xlr.sourceforge.net/concept/toplevel.html]XL[/url],很感兴趣,它的语法、代码生成部分都是可以定制的,它只有前端没有后端,只能生成其它语言代码(当然也可以把这个看作是后端)。由于文档太少,我研究得很肤浅,把它跑起来也是件难事,只测试通过了TESTS里面的几个代码,主要是看它的代码。
XL的编译器有3个实现,一个最初的C++实现版本,一个bootstrap版本,一个最新的 XL实现的版本。
从[url=http://www.cilk.com/]Cilk++[/url]的描述来看,它是通过扩展编译器来实现,具体如何做的还不知道(正在下载,有空测试一下),这和OpenMP比较相近。这种方式缺点是太封闭,必须有大厂商来实现才好用,我更喜欢一些能够自己定制的、插件式的实现。在C++项目里比较优雅的方式,个人感觉应该是层次分明,底层(运行时、框架等)和逻辑之间关联很小,逻辑可以用另一种语言来描述,逻辑本身是自描述的,这样可以有更多的自动优化空间;逻辑最终是用来生成代码的,可以用它来生成C++代码,和其它代码一块编译,代码生成这部分要可以定制。
牛人或许想到用scheme来做,数据即代码,逻辑即数据,不过我很怕这样的语法,看了几次实在忍受不了,不知道有没有其它类似的东东?iolanguage也可以做类似的,只是定义一个method,就可以处理完整的代码块,不过它的语法还是比较受限。最近几天接触了[url=http://xlr.sourceforge.net/concept/toplevel.html]XL[/url],很感兴趣,它的语法、代码生成部分都是可以定制的,它只有前端没有后端,只能生成其它语言代码(当然也可以把这个看作是后端)。由于文档太少,我研究得很肤浅,把它跑起来也是件难事,只测试通过了TESTS里面的几个代码,主要是看它的代码。
XL的编译器有3个实现,一个最初的C++实现版本,一个bootstrap版本,一个最新的 XL实现的版本。