Mọi thứ đều là DSL ...
Assembler: MOV R1 to R2
Compilers: Assignment Statements - A = A + 1, Conditionals - IF (TRUE) ..., Branch - RETURN
HTML: ... mô tả cấu trúc lồng nhau
TCP / IP: mô tả đến / từ địa chỉ
PDF: mô tả vị trí văn bản / hình ảnh trên giấy
Phông chữ: mô tả ký tự
Bất kỳ ngôn ngữ nào mà chúng tôi sử dụng để mô tả một quy trình cụ thể là DSL. Thật không may, thiếu các ngôn ngữ cụ thể của miền để mô tả ngay cả các quy trình cơ bản nhất của chúng tôi, vì vậy chúng tôi sử dụng một số ngôn ngữ chúng tôi có để mô tả mọi thứ chúng tôi làm. "Zip tất cả các tệp html trong trang web của tôi" cần 300 dòng gồm 3 hoặc 4 ngôn ngữ khác nhau để hoàn thành.
Để xây dựng một DSL, hãy xác định số ký tự tối thiểu cần thiết để mô tả một quy trình mà bạn có thể nhớ và không yêu cầu tài liệu. Hãy nhớ rằng tốc độ và tính dễ sử dụng là tiêu chí thiết kế chính. Phân tích cú pháp nhanh đến nỗi bất kỳ cú pháp nào bạn sử dụng cũng được, tôi thích ngôn ngữ tự nhiên hơn là cú pháp của tôi trong hầu hết các trường hợp, "Trả lương cho nhân viên vào đầu tháng", nhưng miền cụ thể chỉ là vậy, miền cụ thể, bạn xác định cú pháp phù hợp nhất phù hợp với vấn đề.
Tôi sẽ tránh sử dụng các giải pháp khác có thể thuận tiện nhưng không phù hợp với vấn đề như HTML được sử dụng để định nghĩa Dữ liệu (XML). CSV rất hữu ích, nó phù hợp với hầu hết các vấn đề. JSON không phù hợp với phần dễ sử dụng, nó quá mức cần thiết làm tăng thêm các biến chứng không cần thiết là CSV hoạt động cho hầu hết các vấn đề. Chúng tôi sử dụng EXCEL rất nhiều cho DSL, nó hoạt động tuyệt vời để mô tả các vấn đề nhỏ, dưới 65K đến 1 triệu hàng, chẳng hạn như cấu trúc cây hoặc menu, cột A là mức, các cột khác là biểu tượng, màu sắc, nhãn và những thứ khác (EXCEL là một CSV có thể chỉnh sửa).
Tôi thấy rằng HTML không thực sự giải quyết được vấn đề về bố cục trang, vì vậy tôi đã loại bỏ nó và xác định một DSL phù hợp. Tôi đã xác định 6 vùng trên trang, HEADER, BODY, FOOTER, LEFT / RIGHT MARGINS và LEFT / RIGHT FULL MARGINS. Sau đó, tôi có thể yêu cầu trình tạo trang thêm TITLE BAR, STATUS BAR, MENUS, TABLE, FORMS, ..., vào các ô cụ thể. Mỗi Ô này sau đó có thể được chia thành Hàng và Cột theo độ sâu bất kỳ. Bố cục trang mất vài giây cho bất kỳ kiểu nào.
BODY chứa Bảng Nhân viên của tôi
HEADER chứa chú thích trên Thanh Tiêu đề 'Xin chào Thế giới' với thông tin đăng nhập vào Phần mềm Collins
DSL Menu không phù hợp với DSL bố cục trang, vì vậy tôi đã xây dựng một DSL duy nhất cho menu.
Resource Menu chính của tôi
* xác định: menu, m, Level, Label, Icon, Action;
m, 0, tập tin;
m, 1, mở, open.gif, Hộp thoại Mở Tệp;
Mỗi vấn đề là duy nhất, máy tính có thể sử dụng bất kỳ định dạng nào, đó là con người mà DSL được thiết kế, vì vậy hãy làm cho nó dễ hiểu bởi con người, một cái gì đó họ có thể nhập và làm cho ngôn ngữ không phải từ thực tế; vì đó là người thật, địa điểm và những thứ mà chúng ta đang mô tả.