JetBrains Meta Programming System Becomes Beta

Discussions

News: JetBrains Meta Programming System Becomes Beta

  1. JetBrains Meta Programming System Becomes Beta (54 messages)

    JetBrains has just released Beta of its Meta Programming System, its implementation of Language Oriented Programming paradigm. MPS is an environment for professional software developers to create new custom languages, extend existing languages, and use them to develop software. MPS is also an instrument for creating Domain Specific Languages (DSLs). Domain experts not familiar with programming can use MPS to work with the DSLs created there. MPS's main focus is to allow creating new languages and extending existing ones as easily as possible. Its advanced features enable defining language typesystems, constraints and specialized editors to produce new, powerful and easy-to-use languages. MPS uses a generative approach: languages are described on a higher level, and MPS generates compilable code in other languages, particularly in Java. MPS will be free for all users and, moreover, a major part of its code will be open-source (under Apache license). Find out more and download MPS from http://www.jetbrains.com/mps. Check out the User Guide to get familiar with MPS.

    Threaded Messages (54)

  2. What format are models saved/persisted in? I can't find anything in the user guide describing how models can be saved, shared, and versioned.
  3. MPS format[ Go to top ]

    We save models in our own XML based format. If you want to know more details, you can find ModelReader class inside of MPS sources.
  4. Re: MPS format[ Go to top ]

    We save models in our own XML based format. If you want to know more details, you can find ModelReader class inside of MPS sources.
    Maybe I misunderstand but it kind of seems like you aren't eating your own dog food.
  5. MPS implemented in MPS[ Go to top ]

    MPS was started as a Java project. During its development, we gradually converted code from Java to MPS. Despite successful conversion of a large portion of code to MPS, we still have Java code in our code base.
  6. Too late[ Go to top ]

    I have nothing against new ideas however from what I saw in demo sample on JetBrains site I recommend everybody look at OpenArchitectureWare oAW (http://www.openarchitectureware.org/) and Eclipse Modeling Framework http://www.eclipse.org/modeling/. This give you full flexibility for developing DSLs from textual and graphical form through model to final text with solid background with nice tools. For small projects is JetBrains approach senseless for big project unflexible.
  7. MPS has its unique features[ Go to top ]

    We have taken a look at XText but we don't think that we are late. XText is a tool for DSL creation. MPS is a tool for DSL creation and language extension/mixing. XText is a text based DSL creation framework which means that a language is fixed. You can't easily extend it since you have to keep a grammar unambiguous. MPS doesn't work with text, which means you can freely embed languages inside of each other and don't have to worry about making a grammar unambiguous. If you download our build, you can see a lot of baseLanguage's (MPS' counterpart of Java) extensions which add new constructions to it: collections, dates, quotations, regular expressions. This things are hardly possible in grammar based systems like XText.
  8. We have taken a look at XText but we don't think that we are late. XText is a tool for DSL creation. MPS is a tool for DSL creation and language extension/mixing.

    XText is a text based DSL creation framework which means that a language is fixed. You can't easily extend it since you have to keep a grammar unambiguous. MPS doesn't work with text, which means you can freely embed languages inside of each other and don't have to worry about making a grammar unambiguous.
    Can you elaborate on this? Are you saying that there's something you can represent in your model that cannot be represented in text?
  9. On language extension[ Go to top ]

    Different developers develop for different domains, some of them develop for banks and work with financial stuff, some create programs that do complex mathematical calculations. Despite the difference of their domains, they use general purpose languages such as Java or C++ which have fixed syntax and don't support a stuff that developers work with on a language level. One solution to this problem is to extend a general purpose language with domain constructs. For example, we might add monetary values or support for mathematical stuff like matrices and complex numbers. This is doable thing, you just extend a Java or C++ grammar with new constructs. Problem arises when you want combine two or more extensions in the same program. Text based grammars can be ambiguous, and we can't guarantee that grammar of a Java (baseLanguage) with several added extensions will bee non ambiguous. MPS doesn't use text based grammar but stores program as an abstract syntax tree instead and this allows us to extend languages, embed them into others etc. Of course you can create a text base Java extension but you can't guarantee that it will be compatible with other such extensions. In MPS, you can take several languages/language extensions and be sure that you combine them in the same program without any adverse effects. Languages became easily reusable with our approach.
  10. Re: On language extension[ Go to top ]

    MPS doesn't use text based grammar but stores program as an abstract syntax tree instead and this allows us to extend languages, embed them into others etc.
    But why can't you persist this tree in a textual format? I understand the problem you describe but it seems to me that all you need to do is put a delimiter around the extension and specify the language. For example (off the cuff): for (foo : bar) { ~ MYSQLEXTENSION: SELECT * FROM EMPLOYEE ~ } I just had very similar discussion where the assertion was stated that we were 'beyond text'. I never got a satisfying answer to my questions about what the problem was. And frankly, I'm not interested in using XML based languages. Aside from the irony that XML is in fact text, it's a really crummy way to persist source.
  11. Re: On language extension[ Go to top ]

    Since XML is "crummy", what do you suggest they use to store their models?
  12. Re: On language extension[ Go to top ]

    Since XML is "crummy", what do you suggest they use to store their models?
    A readable text-based format.
  13. Re: On language extension[ Go to top ]

    Why don't you want readable text based form from Microsoft Word? Or from database? IMO, a user shouldn't be interested in how files are stored as long as editor, version control etc tools are provided for them and MPS provides them. Format of storage is implementation detail.
  14. I just have a conceptual question does LOP really good idea? I mean idea creating software using LOP, for me, doesn't sounds so nice like using OOP. Yes, with OOP you need maintain documentation. But hey you are talking about way when you are creating your program using different languages. Not too many people can easily learn new languages even if it's some small language. And I'm sure that there are just a few people who can easily switching between different languages without loosing their productivity. Let's be honest how many people have you seen who productively and with good quality produce code using: HTML, JavaScript, Java, SQL, etc. ? That's why in our project we can have dedicated positions for: DB engineer, HTML/Javascript engineer and server side engineer. Yes DSLs obviously solves some problems that cannot be efficiently addressed by generic-purpose languages but they are bringing more critical issue, in my opinion, it's hard to maintain productivity and good quality using different languages simultaneously.
  15. May be you haven't thought about it but you use DSLs and language extensions if you are JEE developer. For example, JSP is a DSL that embeds Java inside of it. And it would be very hard to write pages with writes to output stream instead of jsp template. It's one example of place where OOP can't cover nicely a wide range of tasks. Another example are regular expressions. You have to create DSL inside of string literals in order to support them and don't use methods to construct them.
    Not too many people can easily learn new languages even if it's some small language. And I'm sure that there are just a few people who can easily switching between different languages without loosing their productivity.
    According to our experience, this isn't a problem. People usually get acquainted with languages quickly if they can experiment with them, explore implementation etc. In MPS languages and language construct are as easy to use and explore as classes and methods in Java. For example, you can press Ctrl+Shift+S and open declaration of a construct under cursor, read its structure, generator etc. Actually, according to our experience, learning a new language is much easier than learning a library that it covers. A small application for our internal use was created with our web languages by person who has no JEE experience in about a week. It had complex JS based UI, stored its stuff in a database etc. If the person used JEE, he would spent at least couple of months to accomplish this task.
  16. Re: On language extension[ Go to top ]

    Why don't you want readable text based form from Microsoft Word? Or from database?
    In fact I would prefer a human readable format for documents. This is actually something XML is good for. It's awesome to be able to write in something like docbook and have total control over the content of my documents. It's a pretty good example you've chosen. Word is a really mediocre piece of software and yet most everyone pays for it. And the main reason is that their proprietary file format makes it difficult to use anything else. Not only do people have old word files around, we have to read the word files other people write. Are you trying to set yourself up like MS or do you not know that there was a time when MS didn't have a stranglehold on document formats? We are coming up on 30 years of almost no significant improvement in word processing software. Good example, thanks. As far as databases go, the point of a database is to be able to access and store data. It is the persistence. And I've also gotten a lot of value in a database where the raw bytes of the rows could be directly accessed and parsed by us for our own purposes. It's allowing me to do things that many people didn't believe was possible.
    IMO, a user shouldn't be interested in how files are stored as long as editor, version control etc tools are provided for them and MPS provides them. Format of storage is implementation detail.
    Your opinion seems to me like the standard arrogance of vendors. Do you not regard your users as professionals? Do you think they should just put all their trust in you and your company without any contingency? Maybe you think they are just not very smart. What could they want to do that you can't do for them, right? You just don't want us to hurt our iddy-biddy brains. That might be good for you but it's not good for the users. Naive users may be willing to put all their eggs in your basket but people who've been around the block probably won't. You don't get to lock-up my intellectual property and charge me for access to it. I see through that scam. Why should I care? Because the code I write has value. Anytime I write something or oversee someone else writing some code, the no. 1 priority is that it can be read and maintained by others. I need to know that I can take my code and go somewhere else with it just like I wouldn't put my money in a bank if I was never allowed to withdraw it and go to another bank. What you are describing is vendor lock-in. A trap. I have to have your tool in order to read my own code? No thanks. Aside from that, what's your plan for diffs, merges and other source control type activities? How will you manage the evolution of the underlying storage? Will users be forced to buy every version of the tool to keep up or will they be able to convert from an old version directly to a the newest? What happens when this approach to system building falls out of favor and we need to migrate to the next hot thing?
  17. Re: On language extension - Mostly FOSS[ Go to top ]

    Your opinion seems to me like the standard arrogance of vendors. Do you not regard your users as professionals?
    Well the project site say that "MPS is a free product with most of its source code available under Apache 2.0 license" I am not sure I understand what Most mean. Or how much Most is? Maybe they do need to elaborate on this, since it may impact many "Professionals'" adoption. I still don't fully understand what MPS and LOP is all about, and how hard it is to use and adopt. But I like some of the headlines, seems its will allow easy creation of executable models. This is not entirely new. What I think is being advertised and what I think could be the edge here, is making this easy, accessible and .... FREE! This I imagine could be a big for internal IT department who normally don't develop In-House code, if the code becomes a bunch of models that any new comer can hack in a couple after a couple of weeks of training. This is big I think! Of course if MPS is what I think it is, being Fully Open Source, and being build on Java (known brand, portable), could increase it in-house development adoption Again they say its mostly open source, so dont be too harsh, maybe in time, it will be completely Open Source. Jetbrains can make the money by selling more IDEAs and support and such.
  18. Re: On language extension - Mostly FOSS[ Go to top ]

    This I imagine could be a big for internal IT department who normally don't develop In-House code, if the code becomes a bunch of models that any new comer can hack in a couple after a couple of weeks of training. This is big I think!
    This is a myth. I've worked in software shops and IT shops. The challenges faced by IT shops are in many ways much harder. IT shops write tons of custom code and buying off-the-shelf and SaaS products generally don't decrease the amount of custom code much. A lot of shops whose management have tried to eliminate custom code are now forced to buy software from their direct competitors because vendors really don't know much about the businesses they target mainly because they aren't in that business. Software writing tool vendors are an obvious exception because they are writing software themselves. This is why I find it so irritating that they think that their customers don't need things they themselves take for granted. And your statement is pretty contradictory. Why would a shop that doesn't write code need a tool like this?
    Of course if MPS is what I think it is, being Fully Open Source, and being build on Java (known brand, portable), could increase it in-house development adoption

    Again they say its mostly open source, so dont be too harsh, maybe in time, it will be completely Open Source. Jetbrains can make the money by selling more IDEAs and support and such.
    I think JetBrains has a lot of smart people but this "we don't need readable source" attitude smacks of immaturity to me. It reminds me of my early days as a developer when I thought my elders just didn't get it. New ideas are great but they need to be tempered with the lessons of the past. "No readable source" has been proven to be a bad idea again and again. Why does the software industry have to repeat the same mistakes every ten years or so?
  19. Again they say its mostly open source, so dont be too harsh, maybe in time, it will be completely Open Source. Jetbrains can make the money by selling more IDEAs and support and such.
    Mostly open source means that everything but a JetBrains IDE Framework, a library which was extracted from IntelliJ IDEA in order to aid creation of new IDEs, is open source.
  20. Text-like editors in MPS[ Go to top ]

    For example (off the cuff):
    for (foo : bar)
    {
    ~ MYSQLEXTENSION:
    SELECT * FROM EMPLOYEE
    ~
    }
    But your approach contradicts with an idea of language oriented programming because it requires domain-meaningless constructs like «MYSQLEXTENSION». Note that in MPS user doesn't change XML directly. There are no ugly EMF tree manipulations. There is text-like editor. So you type constructs like this employees.where({it -> {it.iq <= 100;}}).forEach({it -> {it.fire();}}); using your text editing skills.
  21. Re: Text-like editors in MPS[ Go to top ]


    For example (off the cuff):

    for (foo : bar)
    {
    ~ MYSQLEXTENSION:
    SELECT * FROM EMPLOYEE
    ~
    }


    But your approach contradicts with an idea of language oriented programming because it requires domain-meaningless constructs like «MYSQLEXTENSION».

    Note that in MPS user doesn't change XML directly. There are no ugly EMF tree manipulations. There is text-like editor. So you type constructs like this

    employees.where({it -> {it.iq <= 100;}}).forEach({it -> {it.fire();}});

    using your text editing skills.
    If my approach contradicts language oriented programming then so does storing to XML. Do the XML entities have meaning in the domain? I'm not suggesting that these constructs would be displayed in the editor. It would work exactly the way if does now. The only difference would be the persisted format. So if you wanted to look at the underlying text (e.g. in a diff) in the file, instead of something like this: ...employees.where({it -> {it.iq <= 100;}}).forEach({it -> {it.fire();}});... You'd see your code much more like the way you wrote it. I've been burned by unreadable persistence methods (including XML) in the past. There seems to be a myth around that XML somehow fundamentally changes the game as if it makes things possible that were not possible before.
  22. Re: Text-like editors in MPS[ Go to top ]

    The server unescaped my example. Let's try again: employees.where({it -> {it.iq <= 100;}}).forEach({it -> {it.fire();}});
  23. Re: Text-like editors in MPS[ Go to top ]

    The server unescaped my example. Let's try again:
    Imagine all those in your code replaced with ampersand-eel-tee-semicolon.
  24. Why not use Antlr which has years of experience and a clean/flexible syntax with support for LL(*). Ilya
  25. ANTLR doesn't support multiple language development in one file. You can't just take the BaseLanguage, dates language, regexp language, and write a program that uses all of them. Unlinke ANTLR, in addition to language structure definition we support a lot of service around a language: constraints, scopes, type system, generators, etc which make a language creation much more easier compared to the case when you have just a parser generator.
  26. I'm not sure if you understand whole ecosystem around eclipse modeling framework. XText is only one way of expressing your metamodel. You can create graphical "language" with GMF, or generated tree like tool. You have very powerful Model2Model transformation languages (which I don't see in your tool) and finally very powerful Model2Text tools which support Aspect Oriented Overriding for easy customization of existing generator without modifying original one. Everything is integrated in eclipse and many companies use this for creating tools/plugins and they are improving this frameworks very fast. It's very powerful and flexible. Look also for Xpand and Xtend (and many other tools in eclipse box). You can start whole workflow (oAW) without eclipse for example with maven what is huge advantage for me. If I should compare it, you can find many similar generators in UML tools or look at JET in eclipse. Your tool is little bit enhanced but not enough (at least not for me).
  27. You probably don't understand what MPS is. I recommend you to download it and at least take a look at what we have. We have not only a tool for defining languages. We have languages for defining structure, editor, scopes, typesystems and generators (which can be used for model to model transformation). It's almost everything that you need in order to create a language and IDE support for it. Despite many companies using the tools that you described, the framework has quite a limited scope compared to MPS: creation of graphical languages or text based DSLs. I can't imagine applications which are completely developed in such a system. In MPS we have a large applications that is completely created in MPS, our tracker Charisma (you can find it here: http://jetbrains.net/tracker/workspace). We can do it because we use our baseLanguage and extend it with domain specific constructs and embed it into special places like html templates. Can you give me example of application which is completely developed with the tools that you mentioned?
  28. You probably don't understand what MPS is. I recommend you to download it and at least take a look at what we have.
    Maybe you should make better example than what you have now on page just to show advantages.
    We have not only a tool for defining languages. We have languages for defining structure, editor, scopes, typesystems and generators
    You mean that you developed internally some DSLs where you can describe structure, editor, ... ? Maybe this will be interesting to see however I don't understand how you with you 'generator DSL' can transform my model to another model (not to text). Can you explain it in more detail? Do we use same terminology which OMG recommend like metamodel (MOF, EMF), model, ...?
    In MPS we have a large applications that is completely created in MPS, our tracker Charisma (you can find it here: http://jetbrains.net/tracker/workspace).
    I don't see anything large on this application but maybe data. What is so complex there?
    Can you give me example of application which is completely developed with the tools that you mentioned?
    Look for eclipse plugins. Many of them are developed and customized thanks to this frameworks (really many). We are using this for generating entity and business tier as many other companies (look to mailing list if you are curious). We are now looking for generating front-end and thanks to flexibility we will be able to generate at minimum 3 types of applications (WEB JSF, Swing, Eclipse RCP Plugin) from one source and customize it. We also developed tool for 3rd party (bank) which has GUI interface for defining business domain models, transformations a GUI pageflows definition. Everything is defined with eclipse plugin in form of specialized diagrams (GUI DSL).
  29. You mean that you developed internally some DSLs where you can describe structure, editor, ... ?
    Yes, we have a lot of DSLs that can be used to define languages with different aspects. Even more, these languages are expressed in themselves so we have bootstrap here.
    Maybe this will be interesting to see however I don't understand how you with you 'generator DSL' can transform my model to another model (not to text). Can you explain it in more detail? Do we use same terminology which OMG recommend like metamodel (MOF, EMF), model, ...?
    We have MPS model to MPS model transformation and MPS model to text transformation. Instead of accepting OMG metamodel, we created our own metamodel which suits better our goals. It's similar to that of MOF, EMF but different.
  30. Yes, we have a lot of DSLs that can be used to define languages with different aspects. Even more, these languages are expressed in themselves so we have bootstrap here.
    ...
    We have MPS model to MPS model transformation and MPS model to text transformation. Instead of accepting OMG metamodel, we created our own metamodel which suits better our goals. It's similar to that of MOF, EMF but different.
    Nice, do you have some article(s) about it on your site?
  31. We have documentation which you can find here: http://www.jetbrains.net/confluence/display/MPS/MPS+User's+Guide
  32. Eclipse Modeilng and MPS[ Go to top ]

    I use Eclipse stack to generate parts of my applications. MPS seems to be an interesting approach to create DSLs. It has good start since it use concepts like ones from OMG. There will be not significat problem to describe their XML AST model using EMF and thus get interoperability with a rich stuff of an existing tools. I think they go in same direction as a most of latest software development techniques. For example: - *rails provide ability to customize language at runtime. - Java Annotations provides language customization using aspects bindings - Most of the platforms provides support for a la DSL script languges - etc Seems like MPS try to realize this concept in an interesting way by mixing languages. Moreover, thus introducing one more way for reuse at DSL development. Advantages of starting new project in this area are the same as were taken into account when EMF itself was started over UML ;) This allow to avoid compatibility problems and improve performance.
  33. The idea sounds great. But It is not clear how this tool can match the expressive power of ANTLR and other parser generators like Beaver. Any suficiently complex language will push even these generators to its limit. And it takes a lot of sytax tuning in the form of BNF rules and help from the parser generator. I was wondering if you can comment on its expressive power? What type of languages it can create? Can it do what LL(*) of ANTLR can do? Can you create SQL Parser? Or Java Parser for example? Both of them exist in ANTLR site. Parser generators and compilers/interpretter that goes with the grammer can get very complex (I have written quite a few). How does it help generate an intepretter and a run-time in general?
  34. Our solution to parsing problem is not to parse. We do not parse anything. We store program in a tree form and edit it directly. It looks and feels like text but it isn't. Editing experience differs a little from text but we tried to make it as much text like as possible.
  35. Our solution to parsing problem is not to parse. We do not parse anything. We store program in a tree form and edit it directly. It looks and feels like text but it isn't. Editing experience differs a little from text but we tried to make it as much text like as possible.
    So you are converting from text on the screen without parsing? Can I ask how?
  36. Our solution to parsing problem is not to parse. We do not parse anything. We store program in a tree form and edit it directly. It looks and feels like text but it isn't. Editing experience differs a little from text but we tried to make it as much text like as possible.


    So you are converting from text on the screen without parsing? Can I ask how?
    We have no text on screen, we have no text on disk (good-bye "readable text format", sorry), we don't parse, we forgot about LL(*) and such. We can create a language extension and don't worry about conflicts with other extensions - there won't be any conflicts. None of text-base technology can do that. In our internal "java" (i.e. baseLanguage) we have already had closures and continuations, quotations and anti-quotations, joint and meet types. We can easily have any language feature we wish. And all this is because we don't parse any more.
  37. Our solution to parsing problem is not to parse. We do not parse anything. We store program in a tree form and edit it directly. It looks and feels like text but it isn't. Editing experience differs a little from text but we tried to make it as much text like as possible.


    So you are converting from text on the screen without parsing? Can I ask how?


    We have no text on screen, we have no text on disk (good-bye "readable text format", sorry), we don't parse, we forgot about LL(*) and such.
    What exactly is on the screen that "looks like text"?
    We can create a language extension and don't worry about conflicts with other extensions - there won't be any conflicts. None of text-base technology can do that.
    Can you offer some evidence that this can't be done with a text based format? Your colleague (presumably) has stated that the model is persisted to XML. XML is a text-based format.
  38. What exactly is on the screen that "looks like text"?
    You see something similar to browser's DOM backed by AST.
    Can you offer some evidence that this can't be done with a text based format? Your colleague (presumably) has stated that the model is persisted to XML. XML is a text-based format.
    You can't freely combine grammars of text based languages since ambiguities might arise. See my previous posts where I explained it in detail.

  39. What exactly is on the screen that "looks like text"?

    You see something similar to browser's DOM backed by AST.
    But no text. So what is it, pictures of text, hieroglyphs? Can I use the keyboard to program? If so what are my keystrokes generating, if not text?

    Can you offer some evidence that this can't be done with a text based format? Your colleague (presumably) has stated that the model is persisted to XML. XML is a text-based format.

    You can't freely combine grammars of text based languages since ambiguities might arise. See my previous posts where I explained it in detail.
    See my response that you still haven't addressed. I'm not suggesting 'freely' combining grammars. That's a strawman argument. I'm saying I want a text-based format, not any or all text based formats. You already support a text based format, just not a good one. Don't tell me you can't do what you are already doing.
  40. But no text. So what is it, pictures of text, hieroglyphs?
    It's closer to what you see in the Microsoft Word than to plain text.
    Can I use the keyboard to program? If so what are my keystrokes generating, if not text? They modify AST and its structure.
    I'm saying I want a text-based format, not any or all text based formats. You already support a text based format, just not a good one. Don't tell me you can't do what you are already doing.
    Even if we had a text based format, it would hardly possible to read and modify it without IDE. Each part of syntax tree has unique ID, and all references from nodes to nodes are stored as such IDs. This allows us, for example, have rename for free. If name of a references object is changed, it's ID doesn't change so all references to it are renamed automatically. It order to let you understand what mps model looks like here its fragment.
  41. My 2 Cents. SQL Server Reporting Services uses an XML format called RDL (Report Definition Language) to store a report definition You can in theory write an RDL compliant XML document to create a report. But this is 1) Insanely Hard 2) Unrecommended by MS since they can change the RDL format from release to another. This cade is automatically handled by visual studio, which would change the reports to new format. Still the RDL format have the following benefit, 3rd Parties can create tools that edit this format and provide IDEs or IDE extensions to create RDL report, I am not sure how they are supposed to keep up with the changes thought! I am probably missing something there. I believe the bottom line requirement here would be to make the MPS system vendor independent, and not something proprietary or not just a JetBrains product
  42. Still the RDL format have the following benefit, 3rd Parties can create tools that edit this format and provide IDEs or IDE extensions to create RDL report, I am not sure how they are supposed to keep up with the changes thought! I am probably missing something there.
    You aren't missing anything. MS has long played the game of publishing a format and then changing it a year later. All the vendors trying to support the format can't support the new product. MS is the only company that can then offer complete integration support with all of it's products at any given time. They've also said they will support standards and then add extensions that are outside of the spec. This is why many people view their announcements to use open formats with suspicion.
    I believe the bottom line requirement here would be to make the MPS system vendor independent, and not something proprietary or not just a JetBrains product
    Precisely. And one of the important steps towards doing this is a standardized and sensible persistence format and not something that's basically serialized artifacts of internal implementation details.
  43. Baby steps[ Go to top ]

    I believe the bottom line requirement here would be to make the MPS system vendor independent, and not something proprietary or not just a JetBrains product
    Precisely. And one of the important steps towards doing this is a standardized and sensible persistence format and not something that's basically serialized artifacts of internal implementation details.
    Agree with every single word. Standardization is great, vendor independency is cool, but it cannot be achieved at once and by JetBrains alone. Everybody who is interested must be making his own baby steps towards that. We have done our best: we spent 5 years to develop this language framework, we gave it away free and open source. We are providing kind of ecosystem (forum, issue tracker). The best what you can do right now is to join MPS community and discuss all aspects of MPS, LOP etc. in our forum - it's right here, the next door.
  44. Re: Baby steps[ Go to top ]

    I believe the bottom line requirement here would be to make the MPS system vendor independent, and not something proprietary or not just a JetBrains product
    Precisely. And one of the important steps towards doing this is a standardized and sensible persistence format and not something that's basically serialized artifacts of internal implementation details.


    Agree with every single word. Standardization is great, vendor independency is cool, but it cannot be achieved at once and by JetBrains alone. Everybody who is interested must be making his own baby steps towards that.
    We have done our best: we spent 5 years to develop this language framework, we gave it away free and open source. We are providing kind of ecosystem (forum, issue tracker).

    The best what you can do right now is to join MPS community and discuss all aspects of MPS, LOP etc. in our forum
    Fair enough. And to be clear, I'm not trying to criticize what you are doing in general. It's quite impressive and very interesting. And I don't think you owe me or anyone else a text format. What I am trying to impress on toolmakers and tool users in general is that while the format I desire may not have much value to the toolmaker, it's value is immeasurable for the tool user. As users we need to demand this kind of thing. If you are not demanding this kind of thing from vendors, I think you are not taking your work seriously enough.
  45. Re: Baby steps[ Go to top ]

    Demands is the one of things we would love to hear:)
  46. I have dorked around with MPS for a few hours about a month ago: With text its possible to merge in overlapping changes using a comparison tool. How does MPS support 2 divergent versions of say editor definitions, given every thing is in AST? What facilities exist for me to merge someone else's changes into my work. NAVIGATION and WORK FLOW of MPS developer. Also the navigation pane in MPS everything is divided into categories such as solution,typesystem, editor... From this layout it seems that it's expected to define the structure first, then define the editor (serially). However, I am more likely to want to switch back and forth between structure and editor, defining both constructs at the same time in parallel. Is that possible ?
  47. I have dorked around with MPS for a few hours about a month ago: With text its possible to merge in overlapping changes using a comparison tool. How does MPS support 2 divergent versions of say editor definitions, given every thing is in AST? What facilities exist for me to merge someone else's changes into my work.
    We have VCS integration and merge tool. Even more, because of our format, MPS can merge much more changes without conflicts than text based merge. For example, if one user rearranges methods in a class and other adds a couple of other methods into the same class, these changes will be merged without any conflicts.
    Also the navigation pane in MPS everything is divided into categories such as solution,typesystem, editor... From this layout it seems that it's expected to define the structure first, then define the editor (serially). However, I am more likely to want to switch back and forth between structure and editor, defining both constructs at the same time in parallel. Is that possible ?
    Usually people work incrementally with MPS, like you described. You create one concept with editor, create another concept with its editor etc...

  48. But no text. So what is it, pictures of text, hieroglyphs?

    It's closer to what you see in the Microsoft Word than to plain text.
    What I 'see' in MS Word is text.

    Can I use the keyboard to program? If so what are my keystrokes generating, if not text?

    They modify AST and its structure.

    Obviously. How? Do I type words?

    I'm saying I want a text-based format, not any or all text based formats. You already support a text based format, just not a good one. Don't tell me you can't do what you are already doing.

    Even if we had a text based format, it would hardly possible to read and modify it without IDE.
    You do have a text-based format. I think you are being pretty brazen by stating that this can't be done with text given that anything that can be represented in a computer's memory can be represented as text. To keep asserting something that is obviously false makes it seem like you really don't understand the big picture. My guess is that you do know that you could represent this as text and you can't admit it because it goes against the interests of your employer. And that makes me think that it's highly inadvisable to tie anything of value to this tool.
  49. What I 'see' in MS Word is text.
    It's not a text. It's structural text. With lists, images and other markup.
    Obviously. How? Do I type words?
    You just type them and editor recognizes them.
    You do have a text-based format. I think you are being pretty brazen by stating that this can't be done with text given that anything that can be represented in a computer's memory can be represented as text. To keep asserting something that is obviously false makes it seem like you really don't understand the big picture. My guess is that you do know that you could represent this as text and you can't admit it because it goes against the interests of your employer. And that makes me think that it's highly inadvisable to tie anything of value to this tool. It's a text based format in a sense that it can be represented as a text but it isn't in a sense that it's a format that can be easily edited by a human. It's hardly possible without IDE.

  50. What I 'see' in MS Word is text.

    It's not a text. It's structural text. With lists, images and other markup.
    "It's not a car, it's a red car."

    Obviously. How? Do I type words?

    You just type them and editor recognizes them.
    In other words, you are parsing the text as it is typed.
  51. "It's not a car, it's a red car."
    it's all ones and zeros in the end...fuzzy logic? oh well...red ones (and red zeros) one would say...
  52. Parsing without parsing?[ Go to top ]

    The number of Abstract Syntax Trees (AST) that can be generated from a grammar could be and usually is infinite. The reason for people to use BNF rules is that they do not need to enumerate all possible AST. Grammars only enumerate the rules for generating AST. With your approach one can solve possibly a restricted class of problems which may fit to the approach. Obviously they must have a very limited grammar. One can teach somebody how to multiply numbers. If we follow your explanation, we are better for teaching/learning the multiplication tables. Are you suggesting that you have no Parser Generator, no Lexer and grammar in the form rules, but you can write arbitrary languages?
  53. Re: Parsing without parsing?[ Go to top ]

    Don't mix AST and grammar. Both of them have structure. The latter is described with grammar. The former is usually described with AST classes but in MPS it is described with structure language. Consider following tree structure:
    concept Expression concept PlusExpression extends Expression child left:Expression child right:Expression concept IntegerConstant property value:integer
    There are infinite number of ASTs which you can define with this tree structure.
  54. wow![ Go to top ]

    Thanks! I read about it years ago and thought it died down. Surprised to see it finally released. Jetbrain understands developers and development, and this tool could be yet another game changer like what they did with IDEA.
  55. Re: wow![ Go to top ]

    Wow is right, congrats JetBrains! I just flipped through the nicely structured MPS Tutorial and have to say that I'm impressed. I worked on similar stuff with Charles Simonyi for a while, and it's interesting to see the core concepts of generative/intentional/meta programming in action here, hooked up in such a slick way to IDE goodies like structure views and content assist. I haven't had a chance to try MPS yet, so take this with a grain of salt. But one thought I had towards the end of the tutorial is that having a fully-structured editor (i.e., no arbitrary text selections) is something that some previous systems of this sort have found overly constraining. There's now history on the success of lightweight structured editors, which provide all the benefits of structured editing, but allow portions of the tree to be broken and revert to plain text, in order to easy typing and cut/paste. I realize that you can argue against cut/paste with content assist, but in our metrics one of the top 4 actions used by Java programmers in Eclipse, so it's pretty firmly engrained in our brains. Both Eclipse and IDEA already take some of this lightweight structure approach to Java editing. Way back when I found that Rob Miller and his work around LAPIS had some good foundations: http://groups.csail.mit.edu/uid/lapis/ Mik Kersten CEO, http://tasktop.com Project Lead, http://eclipse.org/mylyn