Venkat Subramaniam @venkats
edited by Jacquelyn Carter @jkcarter
Internal DSLs remove the burdens of implementing a full blown language compiler. The host language quickly becomes your ally to creating DSLs, but the syntax you can choose for your DSLs is limited to what the host language allows. You can work around the limitations by tactfully bending the rules and exploiting the language capabilities. Learn the power of Kotlin and ways to design with it, in the context of crafting internal DSLs.
Start by learning ways to exploit the flexibilities of Kotlin to make your DSLs fluent, expressive, and concise. Then pick up techniques to extend the language with domain specific properties and functions. Quickly move ahead to tie your DSL snippets into the runtime environment and context of execution of your applications. Design to prevent any non-sensical syntax in your DSL that may otherwise be valid in the host language. Finally, learn techniques to gracefully handle errors. Practice using the multiple examples that are included in each chapter.
Fire up your editor and follow along each example to become proficient in designing and implementing your own internal DSLs using Kotlin.
Dr. Venkat Subramaniam is an award-winning author, founder of Agile Developer, Inc., and an instructional professor at the University of Houston. He has trained and mentored thousands of software developers in the US, Canada, Europe, and Asia, and is regularly invited to speak at international conferences. He’s the (co)author of multiple books, including the 2007 Jolt Productivity award winning book “Practices of an Agile Developer”:https://pragprog.com/titles/pad/practices-of-an-agile-developer/ and “Programming Kotlin”:https://pragprog.com/titles/vskotlin/programming-kotlin/.
- Full details: https://pragprog.com/titles/vsdsl/programming-dsls-in-kotlin/
- View this book’s portal and details on how to post errata and suggestions here.
Don’t forget you can get 35% off with your Devtalk discount! Just use the coupon code “devtalk.com" at checkout