Meinte Boersma

#DSL
🧩 زبانهایی بساز که متخصصان کسبوکار با آنها نرمافزار خلق کنن
🚀 زبانهای اختصاصی دامنه یا Domain-Specific Languageها (DSL)، متخصصان کسبوکار را در مرکز توسعه نرمافزار قرار میدن. این ابزارهای هدفمند به مشتریان امکان میدن دانش کسبوکارشون را ثبت کنن و اون را بهصورت خودکار به نرمافزار قابلاجرا تبدیل کنن؛ بدون نیاز به صرف وقت توسعهدهنده. این زبانها شکاف دانشی میان برنامهنویسان و متخصصان حوزه را پر میکنن، ارتباط را بهتر میکنن و زمان صرفشده برای تغییرات مکرر کد را کاهش میدن.
🎯 چیزهایی که یاد میگیری
ساخت یک محیط توسعه اختصاصی دامنه یا Domain IDE کامل برای یک شرکت اجاره خودرو.
پیادهسازی یک ویرایشگر Projectional برای DSL.
پیادهسازی قابلیت پیشنهاد و تکمیل محتوا، سیستم نوع، عبارتها و جنبههای مربوط به نسخهبندی زبان.
ارزیابی قواعد کسبوکار.
کار با درختهای نحو انتزاعی یا Abstract Syntax Treeها (AST).
تبدیل محتوای DSL نوشتهشده با نحو ملموس یا Concrete Syntax به نحو انتزاعی یا Abstract Syntax.
📘 توضیح کتاب
🛠️ کتاب Building User-Friendly DSLs در مسیری دقیق و برنامهریزیشده، تمام مباحث لازم برای ساخت DSLهای اختصاصی را آموزش میده. تمرکز کتاب روی زبانهایی است که متخصصان پرمشغله کسبوکار بتونن بهراحتی یاد بگیرن و بر اونها مسلط بشن. با دنبالکردن یک مثال مفصل از شرکت اجاره خودرو، میبینی چطور میشه یک DSL سفارشی با رابط کاربری مدرن و قابلفهم ساخت که جایگزین فعالیتهای خستهکننده کدنویسی بشه.
💡 درباره فناوری
🏢 یکی از مشکلات اصلی توسعه نرمافزار اینه که کاربران کسبوکار میدونن اپلیکیشنهاشون باید چه کاری انجام بدن، اما نمیدونن چطور کد اون را بنویسن. در نتیجه، توسعهدهنده زمان زیادی صرف یادگیری همان جزئیات تخصصی دامنهای میکنه که کاربر از قبل میشناسه.
🔗 برای پرکردن این شکاف، میشه یک Domain-Specific Language ساخت که به کاربران غیرفنی کسبوکار امکان بده بدون نوشتن کد، اپلیکیشنهای خودشون را ایجاد و سفارشی کنن.
📚 درباره کتاب
🖥️ Building User-Friendly DSLs آموزش میده چطور یک زبان اختصاصی دامنه کامل بسازی که ظاهر و عملکردش شبیه یک اپلیکیشن وب باشه. این DSLهای ساده و کاربردی، قدرت ساخت نرمافزار سفارشی را در اختیار متخصصان حوزه کسبوکار قرار میدن.
⚙️ در طول مسیر، تمام مباحث ضروری را پوشش میدی؛ از تعیین ساختار و نحو DSL گرفته تا پیادهسازی یک رابط کاربری کاربرپسند.
✨ مباحث اصلی
پیادهسازی یک ویرایشگر Projectional برای DSL.
کار با Abstract Syntax Treeها.
ارزیابی قواعد کسبوکار.
👤 این کتاب برای چه کسانیه؟
🎯 برای توسعهدهندگانی نوشته شده که در JavaScript و توسعه وب تجربه دارن.
📖 فهرست مطالب
فصل ۱. زبان اختصاصی دامنه چیست؟
فصل ۲. نمایش محتوای DSL بهصورت دادههای ساختاریافته
فصل ۳. کار با ASTها در کد
فصل ۴. نمایش AST به روش Projection
فصل ۵. ویرایش مقدارها در نمای Projection
فصل ۶. ویرایش اشیا در نمای Projection
فصل ۷. پیادهسازی ذخیرهسازی پایدار و انتقال ASTها
فصل ۸. تولید کد از AST
فصل ۹. جلوگیری از بههمریختن سیستم
فصل ۱۰. مدیریت تغییر
فصل ۱۱. پیادهسازی عبارتها: عملیات دوتایی
فصل ۱۲. پیادهسازی عبارتها: ترتیب انجام عملیات
فصل ۱۳. پیادهسازی سیستم نوع
فصل ۱۴. پیادهسازی قواعد کسبوکار
فصل ۱۵. موضوعاتی که پوشش ندادیم
پیوست A. راهاندازی محیط توسعه
پیوست B. پیادهسازی یک فرانتاند شفاف مبتنی بر برنامهنویسی تابعی واکنشی
📝 نقد و بررسی
💭 «یک رویکرد جایگزین عالی برای پیادهسازی DSLها که منابع چندانی به اون نمیپردازن.»
— آدهیر رامجیاوان
💭 «کاوشی عملی و جذاب در زبانهای اختصاصی دامنه با استفاده از JavaScript.»
— جورج توماس
💭 «دستنوشته کتاب عالیه. محتوا بسیار خوبه و تصویرسازیها بهخوبی انجام شدن. نویسنده رویکردی بسیار آموزشی در پیش گرفته تا در زمانی کوتاه، دانشی عملی و قابلاستفاده فوری منتقل کنه.»
— آلن لومپو
💭 «کتابی ضروری درباره این موضوع!»
— کارتیکیارجان راجندران
💭 «DSL همیشه حوزهای تخصصی و دشوار در نظر گرفته میشه. این کتاب با مثالهای قابلفهم، درک اون را آسون میکنه. اگر همیشه میخواستی یاد بگیری اما هیچوقت امتحان نکردی، حالا دلیل خوبی برای شروع داری!»
— کومار اونیکریشنان
💭 «مرجعی عالی برای DSLهای خارجی. با این کتاب، تمام چیزهایی را که برای ساخت DSL خارجی اختصاصی لازم داری، در اختیار خواهی داشت!»
— ژولین پوهی
💭 «ایدهای جالب برای ترکیب طراحی DSL با طراحی سطح بالای نرمافزار.»
— توبیاس کاتس
💭 «این کتاب برای مخاطب هدفش واقعاً جذابه. درک مطالب، دنبالکردن مسیر و امتحانکردن کدها در قدمهای کوچک و تدریجی آسونه.»
— ساتج کومار ساهو
💭 «استفاده از یک DSL یک چیزه و طراحی و پیادهسازی اون چیزی دیگه. این کتاب برای هر فرد علاقهمند، فاصله میان این دو را کمتر میکنه.»
— برک هافناگل
📕 متن پشت جلد
🏗️ کتاب Domain-Specific Languages Made Easy نشان میده چطور DSLهای مدرن را برای کاربران کسبوکار طراحی و پیادهسازی کنی. ماینته بورسما با تکیه بر سالها تجربه در صنعت، فرایندی تکرارشونده برای ساخت زبانهایی ارائه میده که متخصصان دامنه، مثل متخصصان عملیات، تحلیلگران داده و کارشناسان مالی، بتونن بهراحتی از اونها استفاده کنن.
🧠 ابتدا مروری بر مهندسی زبانهای نرمافزاری داری و سپس وارد شیوه متمایز Projectional Editing میشی؛ روشی که ساخت DSL برای کسبوکار را ساده میکنه.
🌐 هیچ ابزار ویژه یا نرمافزار اختصاصی لازم نیست؛ با یک مجموعه فناوری متنباز مبتنی بر JavaScript کار میکنی تا روشهایی که یاد میگیری، بهراحتی میان پروژههای مختلف قابلانتقال باشن.
👤 درباره نویسنده
👨💻 ماینته بورسما از سال ۲۰۰۷ در حوزه توسعه نرمافزار مدلمحور و مهندسی زبانهای نرمافزاری فعالیت میکنه.
🎤 او کارگاههایی درباره DSL برگزار کرده، در سازماندهی Language Workbench Challenge مشارکت داشته و در کنفرانسها درباره زبانهای اختصاصی دامنه سخنرانی کرده است.
Craft domain-specific languages that empower experts to create software themselves.
Domain-specific languages put business experts at the heart of software development. These purpose-built tools let your clients write down their business knowledge and have it automatically translated into working software—no dev time required. They seamlessly bridge the knowledge gap between programmers and subject experts, enabling better communication and freeing you from time-consuming code adjustments.
Inside Building User-Friendly DSLs you’ll learn how to:
Building User-Friendly DSLs takes you on a carefully-planned journey through everything you need to create your own DSLs. It focuses on building DSLs that are easy for busy business experts to learn and master. By working through a detailed example of a car rental company, you'll see how to create a custom DSL with a modern and intuitive UI that can replace tedious coding activities.
About the technology
Here’s the central problem of software development: business users know what they need their apps to do, but they don’t know how to write the code themselves. As a developer, this means you spend a lot of time learning the same domain-specific details your user already knows. Now there’s a way to bridge this gap! You can create a Domain-Specific Language (DSL) that empowers non-technical business users to create and customize their own applications without writing any code.
About the book
Building User-Friendly DSLs teaches you how to create a complete domain-specific language that looks and works like a web application. These easy-to-use DSLs put the power to create custom software into the hands of business domain experts. As you go, you’ll cover all the essentials, from establishing structure and syntax of your DSL to implementing a user-friendly interface.
What's inside
About the reader
For developers with JavaScript and web development experience.
1. What Is a Domain-Specific Language?
2. Representing DSL Content as Structured Data
3. Working with ASTs in Code
4. Projecting the AST
5. Editing Values in the Projection
6. Editing Objects in the Projection
7. Implementing Persistence and Transportation of ASTs
8. Generating Code from the AST
9. Preventing Things from Blowing Up
10. Managing Change
11. Implementing Expressions: Binary Operations
12. Implementing Expressions: Order of Operations
13. Implementing a Type System
14. Implementing Business Rules
15. Some Topics We Didn't Cover
Appendix A. Setting Up the Development Environment
Appendix B. Implementing a Transparent Functional Reactive Frontend
Review
“A great alternative to DSL implementations that not many resources out there cover.”
— Adhir Ramjiawan
“This is a nice practical exploration of Domain Specific Languages using JavaScript.”
— George Thomas
“The manuscript is excellent. The content is great, the illustrations are very well done. The author has taken a very pedagogical approach to transfer practical and rapidly exploitable knowledge in a short period of time.”
— Alain Lompo
“A must-have book on the topic!”
— Karthikeyarajan Rajendran
“DSL is always considered a niche area and difficult to do. This book makes it easy for you to understand with easy-to-understand examples. If you ever wanted to learn but never tried, you now have a good reason to do so!”
— Kumar Unnikrishnan
“Great external DSL reference. With this book you will have all you need to build your external DSL!”
— Julien Pohie
“An interesting concept of mixing DSL design with high-level software design.”
— Tobias Kaatz
“This book is really interesting for the intended user. Easy to grasp, understand, follow along and try out the code in small incremental steps.”
— Satej Kumar Sahu
“It’s one thing to use a DSL, it’s another to design and implement one. This book narrows the gap for anyone interested.”
— Burk Hufnagel
From the Back Cover
Domain-Specific Languages Made Easy shows you how to design and build modern DSLs for business users. Drawing on years of industry experience, author Meinte Boersma lays out an iterative process for creating languages accessible todomain experts such as operations specialists, data analysts, and financialexperts. You'll start with an overview of software language engineering before diving into the unique projectional editing paradigm that makes it easy to produce DSLs for business. There are no special tools or proprietary software required--you'll work with an open source JavaScript stack that ensures the techniques you learn are easy to port between projects.
Meinte Boersma has been a practitioner of model-driven software development and software language engineering since 2007. He has given workshops on DSL, participated in organizing the Language Workbench Challenge, and has spoken at conferences on DSLs.









