Language Oriented Progamming/ Meta Program System
在Java世界中,JetBrains公司还算是颇具知名度的,在IDE这样一个费力不讨好的世界里(旧有列强,如Borland、IBM等,新有 OpenSource先锋如Eclipse、NetBeans等),强力推出 IntelliJ IDEA 这样的一个IDE,而且在Java世界中广受好评,风光丝毫不减于JBuilder、Eclipse等巨头。单这一点,足以让人佩服然了。(可惜的是,鄙 人对IDEA这个工具所知甚少)
在今天的 TSS 上,有一篇 LOP 的介绍文章,仔细一看,对这个公司又有了一些新的认识。
是 MPS 的作者 Sergey Dmitriev Sergey Dmitriev is the cofounder and CEO of JetBrains Inc., makers of the IntelliJ IDEA Java IDE. 单这一点就可国内的软件公司极大不同,在中国国内,指点江山的CEO们,或许有曾经是程序员的,但今天还进行技术研发的,基本是绝迹,就连关注技术的,很 怕也是难见到。这般兄弟虽然日渐远离核心技术,但对技术的自信却随着玩弄资本、关系的熟练,而愈发膨胀,反倒极大的瞧不起技术对于他所在公司的价值了。像Sergey这 位老兄,在搞完 IDEA 这样的冬冬后,再来搞一个 MPS 这样的前沿研究的,怎么能做CEO呢?,如果在中国,我让他做个CTO已经很不错了,实际上,若不是考虑到他现在已有这么大的口碑(算个名人),CTO都 不能给他做,给他个高级技术顾问就可以了。CTO的事情可多了,整天捉摸这些LOP/MPS冬冬,有点不务正业了。
闲话少说:LOP/MPS这个概念,其实也不算全新的技术,但现在来炒一炒,还是有很多新的亮点的。作者的语言,LOP将成为新的提高软件质量、价值的新 手段,鄙人是十分赞同的。http: //www.onboard.jetbrains.com/is1/articles/04/10/lop/index.html 在这个地址上可以查看作者对 LOP的一些介绍,其中很重要的一点就是:所谓软件,无非是把需求映射成为计算机可执行的一个过程,通用的语言包括C++/Java等实际上是"计算机语 言",而不是"人"的语言,或者说是"业务"语言,实际上,有很多的"业务"或者"领域"语言,是给人看得,比如说 SQL,数学家使用 FL,这些要用C/Java来完成,肯定可以,但已经是猫虎不象了。而LOP则希望回归到这些的支持上,在一个General的平台上,集合GP和LOP 的所长。
作者在文中还提到 程序的存储形式,认为源代码存储的方式已经是一个过时的技术了,而以AST形式进行存储的方式,可以带来更多的优点。的确,AST不再是文档,而是一个 DOM,从此,代码就如同数据一样,可以便于处理,从而在IDE、编译、自动生成等居多环节都带来了巨大的优点,Java的Byecode或多或少的从这 种模式中获利。
我个人的理解方面,我觉得可以基于 LALR 的表达式文法的基础,建立一个专门针对LALR文法的IDE,来支持LOP的开发工作,具体而言,包括如下的功能:
1、 LALR 文法编辑器。提供可视化的方式来编辑LALR。在此过程中,可以快读的对诸如冲突等进行提示。
2、提供基于LALR文法的目标语言的编辑器,虽然说文本形式不一定是最佳的存储形式,但做为一个程序员,却感觉还是一个很好的表现形式。编辑器可以是 LALR文法驱动,提供自动的编辑支持,包括对关键字的code complete、AST语法检查等等。这可以给到新的使用这种语言的人一个莫大的帮助,而不再需要复杂的学习、排错等过程才能使用这种新的语言。
3、在此基础上,提供一些基于AST的额外支持框架,比如说Code Complete,Refractor等,在AST的基础上,难度就比较低了一些。
在目标语言上,我觉得象 Haskell、SQL、XPath 这样的语言均应考虑支持。
0 Comments:
张贴评论
<< Home