ทุกอย่างเป็น DSL ...
Assembler: MOV R1 ถึง R2
คอมไพเลอร์: Assignment Statements - A = A + 1, Conditionals - IF (TRUE) ... , Branch - RETURN
HTML: ... อธิบายโครงสร้างที่ซ้อนกัน
TCP / IP: อธิบายถึง / จาก ที่อยู่
PDF: อธิบายตำแหน่งข้อความ / รูปภาพบนกระดาษ
แบบอักษร: อธิบายอักขระ
ภาษาใด ๆ ที่เราใช้เพื่ออธิบายกระบวนการเฉพาะคือ DSL น่าเสียดายที่ไม่มีภาษาเฉพาะโดเมนที่จะอธิบายถึงกระบวนการพื้นฐานที่สุดของเราดังนั้นเราจึงใช้ภาษาไม่กี่ภาษาที่เรามีเพื่ออธิบายทุกสิ่งที่เราทำ "บีบอัดไฟล์ html ทั้งหมดในเว็บไซต์ของฉัน" ต้องใช้ 3 หรือ 4 ภาษาที่แตกต่างกัน 300 บรรทัดจึงจะเสร็จสมบูรณ์
ในการสร้าง DSL ให้กำหนดจำนวนอักขระขั้นต่ำที่จำเป็นเพื่ออธิบายกระบวนการที่คุณจำได้และไม่ต้องใช้เอกสารประกอบ โปรดจำไว้ว่าความเร็วและความสะดวกในการใช้งานเป็นเกณฑ์การออกแบบหลัก การแยกวิเคราะห์นั้นรวดเร็วมากจนไวยากรณ์ที่คุณใช้นั้นใช้ได้ดีฉันชอบภาษาที่เป็นธรรมชาติมากกว่าไวยากรณ์ของฉันในกรณีส่วนใหญ่ "จ่ายเงินให้พนักงานในช่วงแรกของเดือน" แต่เฉพาะโดเมนนั้นเป็นเพียงแค่นั้นโดยเฉพาะโดเมนคุณจะกำหนดไวยากรณ์ที่ดีที่สุด เหมาะกับปัญหา
ฉันจะหลีกเลี่ยงการใช้โซลูชันอื่นที่อาจสะดวก แต่ไม่เหมาะกับปัญหาเช่น HTML ที่ใช้ในการกำหนดข้อมูล (XML) CSV มีประโยชน์มากเหมาะกับปัญหาส่วนใหญ่ JSON ไม่พอดีกับส่วนที่ใช้งานง่ายมันเกินความจำเป็นที่จะเพิ่มความยุ่งยากที่ไม่จำเป็นเพราะ CSV ใช้ได้กับปัญหาส่วนใหญ่ เราใช้ EXCEL เป็นจำนวนมากสำหรับ DSL ซึ่งใช้งานได้ดีในการอธิบายปัญหาเล็ก ๆ น้อยกว่า 65K ถึง 1M แถวเช่นโครงสร้างต้นไม้หรือเมนูคอลัมน์ A คือระดับคอลัมน์อื่น ๆ คือไอคอนสีป้ายกำกับและอื่น ๆ (EXCEL คือ CSV ที่แก้ไขได้)
ฉันพบว่า HTML ไม่สามารถแก้ปัญหาของเค้าโครงหน้าได้จริงๆดังนั้นฉันจึงกำจัดมันและกำหนด DSL ที่เหมาะสม ฉันกำหนดพื้นที่ 6 ภูมิภาคบนหน้า HEADER, BODY, FOOTER, LEFT / RIGHT MARGINS และ LEFT / RIGHT FULL MARGINS จากนั้นฉันสามารถบอกตัวสร้างเพจให้เพิ่ม TITLE BAR, STATUS BAR, MENUS, TABLE, FORMS, ... จากนั้นแต่ละเซลล์เหล่านี้สามารถแบ่งออกเป็นแถวและคอลัมน์ตามความลึกใดก็ได้ เค้าโครงหน้าใช้เวลาไม่กี่วินาทีสำหรับรูปแบบใด ๆ
BODY มีตาราง
หัวหน้าพนักงานของฉันมีคำบรรยายแถบชื่อเรื่อง 'Hello World' พร้อมล็อกอินเข้าสู่ซอฟต์แวร์ Collins
DSL เมนูไม่พอดีกับ DSL เค้าโครงหน้าดังนั้นฉันจึงสร้าง DSL เฉพาะสำหรับเมนู
ทรัพยากรเมนูหลักของฉัน
* กำหนด: เมนู, m, ระดับ, ฉลาก, ไอคอน, การกระทำ;
m, 0, ไฟล์;
m, 1, เปิด, open.gif, Dialog Open File;
แต่ละปัญหามีความแตกต่างกันคอมพิวเตอร์สามารถใช้รูปแบบใดก็ได้เป็นมนุษย์ที่ DSL ออกแบบมาเพื่อให้มนุษย์เข้าใจสิ่งที่พวกเขาสามารถพิมพ์ได้และทำให้ภาษาไม่เป็นคำจริง เพราะเป็นคนจริงสถานที่และสิ่งที่เรากำลังอธิบาย