当前位置: 首页 > 软件库 > 开发工具 > Java开发工具 >

JetBrains MPS

元编程系统
授权协议 商业软件
开发语言 Java
所属分类 开发工具、 Java开发工具
软件类型 商业软件
地区 不详
投 递 者 司健柏
操作系统 Windows
开源组织
适用人群 未知
 软件概览

MPS (Meta Programming System) 是一个执行面向语言编程范式的全新概念的软件开发环境。

MPS 是一个让专业软件开发人员创建新的自定义语言、扩充现有语言以及使用这些语言来开发程序的环境。MPS 还是一种用于创建领域专用语言 (DSL) 的工具。对编程不甚熟悉的领域专业人士可轻松使用通过 MPS 创建的领域专用语言。

MPS 的主要任务是尽可能简单地支持新语言的创建以及现有语言的扩充。其先进的功能支持对语言型态系统、限制性因素以及专用编辑器进行定义,创建功能强大而易于 使用的新语言。MPS 使用一种生成方法:在更高层面上描述语言,MPS 以其他语言(尤其是 Java 语言)生成可编译的代码。

JetBrains 首席执行官、MPS 概念创始人 Sergey Dmitriev 表示:“回想2003年我们刚开始执行 MPS 这一研究项目时,虽然几乎没有取得任何进展,但过程却是十分有趣。然而,我们一直非常重视广泛地使用我们自己的产品,现在我们已经能够采用 MPS 来进行新产品的开发。我们一直非常重视开发商群体的意见和建议。鉴于 MPS 的独特性和创新性,我们非常希望开发商能向我们提供宝贵的回馈信息。”

所有用户将免费使用 MPS,同时源代码的重要部分将作为开放源码(根据 Apache许可)

JetBrains 相信 MPS 具备所有实力使整体软件开发(尤其是面向语言的开发)提升至一个全新的高度。

  • Meta Programming System在2003时作为一个研究项目启动,2004年时对LOP概念进行了专门的描述,可参考此文 MPS现在发布了Beta版,预计2009早期会发布1.0版本. JetBrains网站上现在提供了Meta Programming System的MPS Beta版本下载,可以免费使用,并且提供部分源代码,并提供了一个计算器的示例,有兴趣的可以趣下载适用。 转于:h

 相关资料
  • 技术的学习是一个登山的过程。第一章是最为平坦的山脚道路。而从这一章开始,则是正式的爬坡。无论是我写作还是你阅读,都需要付出比第一章更多的代价。那么问题就是,付出更多的精力学习模板是否值得? 这个问题很功利,但是一针见血。因为技术的根本目的在于解决需求。那C++的模板能做什么? 一个高(树)大(新)上(风)的回答是,C++里面的模板,犹如C中的宏、C#和Java中的自省(restropection)

  • 元编程 避免无谓的元编程。 当编写程序库时,不要使核心类混乱(不要使用 monkey patch)。 对于 class_eval 方法,倾向使用区块形式,而不是字符串插值形式。 当使用字符串插值形式时,总是提供 __FILE__ 及 __LINE__,以使你的调用栈看起来具有意义: class_eval 'def use_relative_model_naming?; true; end', __

  • Metaprogramming is a programming technique in which computer programs have the ability to treat other programs as their data. It means that a program can be designed to read, generate, analyze or tran

  • javascript元编程? 问题来自于codewars The builder of things 要求我们实现一个Thing类,其中一点要求如下所示: 难点是这里的name的值从哪里找啊? 我想到的一个方案是使用with,但是codewars上使用的是严格模式,不能使用with。

  • 我希望根据Get/SetProperty的文档,在Spock测试中重写方法。这在正常的Groovy类中是微不足道的,但在Spock规范中似乎不起作用。 此示例不调用方法。看来斯波克在绕过它。有没有一种方法可以钩入Spock的属性解析机制,或者告诉Spock使用我的重写方法?

  • 问题1 此问题改编自Dave Thomas的屏播Episode 5: Nine Examples of Metaprogramming。 众所周知,RubyLearnin.org的Core Ruby课程已经开办8周了。每周我们都有一个满分10分的测验。8周结束后,学生可以知道他的分数百分比。例如,有一个学生,在过去的8周里,他的得分情况为:5、10、10、10、10、10、10、10。那么,他的得

  • Boost.Call_traits 这个库提供了传递参数给函数的最好方法的自动演绎,依据参数的类型。例如,当传递的是如int 和 double这样的内建类型,最高效的方式是传值。对于用户自定义类型,则传送const引用通常更好。Call_traits为你自动选择正确的参数类型。这个库还有助于声明参数为引用,而不用冒引用到引用的风险(在C++这是非法的)。Call_traits常用于要求以最高效方式

  • 我正在尝试理解这些调度算法: 先到先得(FCFS) 最短作业优先(SJF) 最短剩余时间(SRT) 循环赛(RR) 因此,给定一些输入: FCFS将安排为。 我似乎无法弄清楚其余的。有人可以帮助我解释差异吗? 我试过谷歌搜索,但我为SJF得到的结果有点令人困惑。