JetBrains MPS: Create a programming language that the whole company can understand. Artem Tikhomirov, JetBrains, CEE-SECR 2017

F74d4292cc3b7b79920fcca339e02a21?s=47 CEE-SECR
October 21, 2017

JetBrains MPS: Create a programming language that the whole company can understand. Artem Tikhomirov, JetBrains, CEE-SECR 2017

Watch the benefits of creating a programming language that the whole company can understand. With MPS tool you can build powerful domain specific languages.

Preferred audience are IT consultants, Product & Project Managers, testers and decision makers.

F74d4292cc3b7b79920fcca339e02a21?s=128

CEE-SECR

October 21, 2017
Tweet

Transcript

  1. JetBrains MPS Create a programming language that the whole company

    can understand Artem Tikhomirov Software Engineering Conference Russia October 2017, St. Petersburg
  2. Domain Specific Languages • A DSL is a focused, processable

    language for describing a specific concern when building a system in a specific domain • The abstractions and notations used are natural/suitable for the stakeholders who specify that particular concern. Markus Voelter
  3. Math

  4. How come?

  5. DSLs? Who cares? You! DSLs are ubiquitous!

  6. Buisness Processes

  7. None
  8. • Health and medicine • Stakeholder integration, Scalable Business, Document

    Generation + Certification • Finance • Precise Specification and Implementation of Insurance Products („Rules“) • Government • Changing Regulations, Fast Implementation, End User Empowerment • Automotive • Code Complexity, Frameworks (Autosar), Product Lines • Aerospace • Reduction of Accidental Complexity in Code, Process Conformance (Docs) • Robotics • A powerful language and IDE for existing frameworks (Industry Robots, ROS) • Embedded software • Multi-Paradigm Programming, not just Simulink and C • Science • Consistent Derived Documents
  9. Most widely adopted DSM tool

  10. Too narrow view of programming?

  11. Demo • Language to configure voice menu for an answering

    maching • Jetbrains MPS as a Rich Client Platform • Business value is negligible – Market share of your office assistant is small
  12. • Health and medicine • Stakeholder integration, Scalable Business, Document

    Generation + Certification • Finance • Precise Specification and Implementation of Insurance Products („Rules“) • Government • Changing Regulations, Fast Implementation, End User Empowerment • Automotive • Code Complexity, Frameworks (Autosar), Product Lines • Aerospace • Reduction of Accidental Complexity in Code, Process Conformance (Docs) • Robotics • A powerful language and IDE for existing frameworks (Industry Robots, ROS) • Embedded software • Multi-Paradigm Programming, not just Simulink and C • Science • Consistent Derived Documents
  13. Healthcare Software Medical Devices Accessible to Doctors Robustness and Correctness

    Required To be FDA-certified Needs to run on multiple target platforms • IOS • Android • JavaScript
  14. Stakeholders driving the development Physicists Product Management System Engineering /

    R&D Customer Service Supply Chain Management Management (Business Cases) / Platform- & Release-Strategy
  15. SW Experts HW/ FW Software package System Engineering Physicists Product

    Management Customer Service Installed Software
  16. HW/ FW SW Experts Software package System Engineering Physicists Product

    Management Customer Service Installed Software Code generation space DSL DSL DSL DSL
  17. Domain Experts SW Experts Scanner Model / SW

  18. Domain Experts SW Experts On demand (automatically) Scanner Model /

    SW
  19. None
  20. None
  21. When to DSL? • Complex domain knowledge • Painful translation

    of expertise from a domain specialist to a programmer – Gap in abstraction level • Not directly related to programming – biology, math, insurance – Verification, analysis, simulation. • Classes of applications – Software factories
  22. Typical risks • Language design takes effort – Adds to

    the cost of the project → need for reuse • Language design skills – Steep learning curve – What goes into the language – How to make it elegant • Proper tooling
  23. None
  24. MPS is an open-source language workbench for DSL development

  25. DSM isn't new

  26. DSLs with MPS • Abstract Syntax • Concrete Syntax •

    M2M, M2T • Semantics: Typesystem, Dataflow • IDE integration, UI • Tooling: build, plugins • Evolution/migration • Deployment: custom IDE, RCP
  27. DSLs with MPS • Abstract Syntax • Concrete Syntax •

    M2M, M2T • Semantics: Typesystem, Dataflow • IDE integration, UI • Tooling: build, plugins • Evolution/migration • Deployment: custom IDE, RCP
  28. Textual editing R A B C D R R A

    B C D R R A B C D R Text Text Binary edit parse save editing compile parse Compiler
  29. Projectional editing R A B C D R R A

    B C D R R A B C D R Text Binary edit save editing compile parse Compiler R A B C D R generate
  30. Projectional editing R A B C D R R A

    B C D R R A B C D R Binary edit save editing compile Compiler R A B C D R generate
  31. Projectional editing

  32. by Jens Nerche @jensnerche Rich syntaxes

  33. Tabular notations

  34. Symbolic notations

  35. Positional notations <no variables> <no parent> <no libraries> <no business

    objects> <no parent>
  36. Multiple switchable notations

  37. Combine languages

  38. None
  39. Parsing is the bottleneck … of language expressiveness – Limits

    the possible syntaxes – Allows only one editable code visualization – Complicates combining languages
  40. DSLs with MPS • Abstract Syntax • Concrete Syntax •

    M2M, M2T • Semantics: Typesystem, Dataflow • IDE integration, UI • Tooling: build, plugins • Evolution/migration • Deployment: custom IDE, RCP
  41. Code generation R A B C D R R A

    B C D R R A B C D R Text Binary edit save editing compile parse Compiler R A B C D R generate
  42. Generators Map solutions from a problem domain to an implementation

    domain • Transform models • Output models or text
  43. Compiler analogy do { call(); } while R := A

    MUL B 01101 10101 Source code Intermediate presentation Machine code repeat turnLeft do { call(); } while DSLs do { call(); } while General-purpose language Source code repeat turnLeft do { call(); } while DSLs Source code
  44. OMG/MOF Perspective A B C D R A B C

    D R A B C D R do { call(); } while Model to Model Model to Text repeat turnLeft do { call(); } while DSLs do { call(); } while General-purpose language Source code A B C D R AST == Model
  45. None
  46. jetbrains.com/mps Thank you for your attention __

  47. Books • http://books.campagnelab.org • http://dslbook.org https://www.jetbrains.com/mps/publications