Semuanya adalah DSL ...
Assembler: MOV R1 to R2
Compilers: Assignment Statements - A = A + 1, Conditionals - IF (TRUE) ..., Branch - RETURN
HTML: ... deskripsikan struktur bertingkat
TCP / IP: jelaskan ke / dari alamat
PDF: menjelaskan penempatan teks / gambar di atas kertas
Font: mendeskripsikan karakter
Bahasa apa pun yang kami gunakan untuk menjelaskan proses tertentu adalah DSL. Sayangnya, ada kekurangan bahasa khusus domain untuk mendeskripsikan bahkan proses kami yang paling dasar, jadi kami menggunakan beberapa bahasa yang kami miliki untuk menjelaskan semua yang kami lakukan. "Zip semua file html di situs saya" membutuhkan 300 baris dari 3 atau 4 Bahasa yang berbeda untuk menyelesaikannya.
Untuk membangun DSL, tentukan jumlah minimum karakter yang diperlukan untuk menggambarkan proses yang dapat Anda ingat dan tidak memerlukan dokumentasi. Ingatlah bahwa kecepatan dan kemudahan penggunaan adalah kriteria desain utama. Parsing sangat cepat sehingga sintaks apa pun yang Anda gunakan baik-baik saja, saya lebih suka bahasa natural sebagai sintaks saya dalam banyak kasus, "Bayar Karyawan di awal bulan", tetapi khusus domain hanya itu, khusus domain, Anda menentukan sintaks yang terbaik cocok dengan masalahnya.
Saya akan menghindari menggunakan solusi lain yang mungkin nyaman tetapi tidak sesuai dengan masalah seperti HTML yang digunakan untuk mendefinisikan Data (XML). CSV sangat berguna, cocok untuk sebagian besar masalah. JSON tidak sesuai dengan porsi kemudahan penggunaan, itu berlebihan sehingga menambah komplikasi yang tidak perlu jika CSV berfungsi untuk sebagian besar masalah. Kami banyak menggunakan EXCEL untuk DSL, ini berfungsi dengan baik untuk menjelaskan masalah kecil, di bawah 65K hingga 1M baris, seperti struktur pohon atau menu, kolom A adalah level, kolom lain adalah ikon, warna, label dan semacamnya (EXCEL adalah CSV yang dapat diedit).
Saya menemukan bahwa HTML tidak benar-benar menyelesaikan masalah tata letak halaman, jadi saya menyingkirkannya dan menentukan DSL yang sesuai. Saya mendefinisikan 6 wilayah di halaman, KEPALA, TUBUH, KAKI, MARGIN KIRI / KANAN, dan MARGIN LENGKAP KIRI / KANAN. Saya kemudian bisa memberitahu generator halaman untuk menambahkan TITLE BAR, STATUS BAR, MENUS, TABLE, FORMS, ..., ke sel tertentu. Masing-masing Sel ini kemudian dapat dipecah menjadi Baris dan Kolom hingga kedalaman berapa pun. Tata letak halaman membutuhkan beberapa detik untuk gaya apa pun.
BODY berisi Tabel
KEPALA Karyawan saya berisi judul Bar Judul 'Hello World' dengan login ke Collins Software
A Menu DSL tidak sesuai dengan tata letak halaman DSL, jadi saya membuat DSL unik untuk menu.
Sumber Daya Menu Utama Saya
* tentukan: menu, m, Tingkat, Label, Ikon, Tindakan;
m, 0, berkas;
m, 1, buka, open.gif, Dialog Open File;
Setiap masalah adalah unik, komputer dapat menggunakan format apapun, DSL dirancang untuk manusia, sehingga membuatnya dapat dimengerti oleh manusia, sesuatu yang dapat mereka ketik, dan membuat bahasa dari kata-kata nyata; karena itu adalah orang, tempat, dan hal-hal yang nyata yang kami gambarkan.