internal dsls
play

Internal DSLs from API design to languages SoftLang Team, - PowerPoint PPT Presentation

Internal DSLs from API design to languages SoftLang Team, University of Koblenz-Landau Prof. Dr. Ralf Lmmel Msc. Johannes Hrtel Msc. Marcel Heinz (C) 2018, SoftLang Team, University of Koblenz-Landau Fluent Interfaces from


  1. Internal DSLs from API design to languages SoftLang Team, University of Koblenz-Landau Prof. Dr. Ralf Lämmel Msc. Johannes Härtel Msc. Marcel Heinz (C) 2018, SoftLang Team, University of Koblenz-Landau

  2. Fluent Interfaces from https://martinfowler.com/bliki/FluentInterface.html Fluent API (Method Chaining + Other Beneficial Design Choices) Pure OO-Style (C) 2018, SoftLang Team, University of Koblenz-Landau

  3. Fluent Interfaces (Object-Orientation) OO-Guy Joe wants API users to write concise code. Fluent API (Method Chaining + Other Beneficial Design Choices) (C) 2018, SoftLang Team, University of Koblenz-Landau

  4. Fluent Interfaces (Software Language Engineering) SLE-Guy Hey, this looks like an independent format for orders. Fluent API (Method Chaining + Other Beneficial Design Choices) (C) 2018, SoftLang Team, University of Koblenz-Landau

  5. Technological Spaces OO-Guy SLE-Guy Big Data-Guy NLP-Guy Kurtev, I., Bézivin, J. and Aksit, M., 2002. Technological spaces: An initial appraisal. CoopIS, DOA , 2002 . (C) 2018, SoftLang Team, University of Koblenz-Landau

  6. Fluent Interfaces (Software Language Engineering) SLE-Guy Hey, this looks like an independent format for orders. Fluent API (Method Chaining + Other Beneficial Design Choices) (C) 2018, SoftLang Team, University of Koblenz-Landau

  7. Chrestomathies ● 101companies exists for demonstrating programming technologies in general by @ Softlang implementing a business scenario . ● Metalib exists for demonstrating programming technologies in the technical domain of implementing domain-specific languages . ○ Java internal DSL ○ Python internal DSL (C) 2018, SoftLang Team, University of Koblenz-Landau

  8. Domain-Specific “A domain-specific language (DSL) is a programming language or executable specification language that Language (DSL) - offers, through appropriate notations and abstractions , expressive power focused on, and Definition usually restricted to, a particular problem domain .” van Deursen, A., Klint, P., Visser, J.: Domain-specific languages: An annotated bibliography. SIGPLAN Not. 35(6), 26–36 (2000) (C) 2018, SoftLang Team, University of Koblenz-Landau

  9. ● Domain Only DSLs have a relatively small and well-defined domain. Domain-specific ● Language size GPLs are large. DSLs are typically small. vs. ● Turing completeness DSLs may not be Turing complete. General purpose ● Lifespan GPLs live for years to decades. DSLs may live for months only. ● Designed by GPLs are designed by gurus or committees. DSLs are designed by a few software engineers and domain experts. ● Evolution GPLs evolve slowly. The evolution of DSLs is fast-paced. ● Deprecation/incompatible changes This is almost impossible for GPLs; it is feasible and relatively common for DSLs. R. Lämmel (2018). “Software languages: Syntax, semantics, and metaprogramming". Springer (C) 2018, SoftLang Team, University of Koblenz-Landau

  10. DSL Implementation (C) 2018, SoftLang Team, University of Koblenz-Landau

  11. Metalib ● https://softlang.github.io/metalib/ (C) 2018, SoftLang Team, University of Koblenz-Landau

  12. Outlook ● Simplified: Internal DSLs make use of an existing programming language environment. ● How to implement FSML as an own independent language? ○ Parsing ○ Code generation (C) 2018, SoftLang Team, University of Koblenz-Landau

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend