0%

Book Description

Your success—and sanity—are closer at hand when you work at a higher level of abstraction, allowing your attention to be on the business problem rather than the details of the programming platform. Domain Specific Languages -- “little languages” implemented on top of conventional programming languages -- give you a way to do this because they model the domain of your business problem. DSLs in Action introduces the concepts and definitions a developer needs to build high-quality domain specific languages. It provides a solid foundation to the usage as well as implementation aspects of a DSL, focusing on the necessity of applications speaking the language of the domain. After reading this book, a programmer will be able to design APIs that make better domain models. For experienced developers, the book addresses the intricacies of domain language design without the pain of writing parsers by hand. The book discusses DSL usage and implementations in the real world based on a suite of JVM languages like Java, Ruby, Scala, and Groovy. It contains code snippets that implement real world DSL designs and discusses the pros and cons of each implementation. What’s Inside Tested, real-world examples How to find the right level of abstraction Using language features to build internal DSLs Designing parser/combinator-based little languages

Table of Contents

  1. Copyright
  2. Dedication
  3. Brief Table of Contents
  4. Table of Contents
  5. Foreword
  6. Preface
  7. Acknowledgments
  8. About the Book
  9. Part 1. Introducing domain-specific languages
  10. Chapter 1. Learning to speak the language of the domain
  11. Chapter 2. The DSL in the wild
  12. Chapter 3. DSL-driven application development
  13. Part 2. Implementing DSLs
  14. Chapter 4. Internal DSL implementation patterns
  15. Chapter 5. Internal DSL design in Ruby, Groovy, and Clojure
  16. Chapter 6. Internal DSL design in Scala
  17. Chapter 7. External DSL implementation artifacts
  18. Chapter 8. Designing external DSLs using Scala parser combinators
  19. Part 3. Future trends in DSL development
  20. Chapter 9. DSL design: looking forward
  21. Appendix A. Role of abstractions in domain modeling
  22. Appendix B. Metaprogramming and DSL design
  23. Appendix C. A cheat sheet for Ruby’s DSL-friendly features
  24. Appendix D. A cheat sheet for Scala’s DSL-friendly features
  25. Appendix E. A cheat sheet for Groovy’s DSL-friendly features
  26. Appendix F. A cheat sheet for Clojure’s DSL-friendly features
  27. Appendix G. Polyglot development
  28. Index
  29. List of Figures
  30. List of Tables
  31. List of Listings
18.219.236.62