Her şey bir DSL ...
Assembler: MOV R1'den R2'ye
Derleyiciler: Atama İfadeleri - A = A + 1, Koşullar - IF (DOĞRU) ..., Dal - RETURN
HTML: ... iç içe geçmiş bir yapıyı tanımlayın
TCP / IP: tanımla / dan adresler
PDF: kağıt üzerinde metin / görüntü yerleşimini
açıklayın Yazı Tipleri: karakterleri tanımlayın
Belirli bir süreci tanımlamak için kullandığımız herhangi bir dil DSL'dir. Ne yazık ki, en temel süreçlerimizi bile tanımlayacak alana özgü diller yok, bu yüzden yaptığımız her şeyi açıklamak için sahip olduğumuz birkaç dili kullanıyoruz. "Web sitemdeki tüm html dosyalarını sıkıştırın" tamamlanması için 300 satırlık 3 veya 4 farklı Dil gerekir.
Bir DSL oluşturmak için, hatırlayabileceğiniz ve dokümantasyon gerektirmeyen bir işlemi açıklamak için gereken minimum karakter sayısını belirleyin. Hız ve kullanım kolaylığının birincil tasarım kriterleri olduğunu unutmayın. Ayrıştırma o kadar hızlıdır ki, kullandığınız herhangi bir sözdizimi iyidir, çoğu durumda sözdizimim olarak doğal dili tercih ederim, "Çalışanlara ayın başında ödeme yap", ancak alana özgü, yalnızca alana özgü, en iyi sözdizimini siz belirlersiniz soruna uyuyor.
Uygun olabilecek ancak Veri (XML) tanımlamak için kullanılan HTML gibi soruna uymayan diğer çözümleri kullanmaktan uzak dururdum. CSV çok kullanışlıdır, çoğu soruna uyar. JSON, kullanım kolaylığı kısmına uymuyor, gereksiz komplikasyonlar ekleyen, çoğu sorun için CSV çalışmasıydı. EXCEL'i DSL için çok kullanıyoruz, küçük sorunları tanımlamak için harika çalışıyor, ağaç yapıları veya menüler gibi 65K'dan 1M'ye kadar satırlar, A sütunu düzey, diğer sütunlar simgeler, renkler, etiketler ve benzerleridir (EXCEL bir düzenlenebilir CSV).
HTML'nin sayfa düzeni sorununu gerçekten çözmediğini buldum, bu yüzden ondan kurtuldum ve uygun bir DSL tanımladım. Sayfada HEADER, BODY, FOOTER, SOL / SAĞ KENARLAR ve SOL / SAĞ TAM KENARLAR olmak üzere 6 bölge tanımladım. Daha sonra sayfa üreticisine belirli hücrelere BAŞLIK ÇUBUĞU, DURUM ÇUBUĞU, MENÜLER, TABLO, FORMLAR, ... eklemesini söyleyebilirim. Bu Hücrelerin her biri daha sonra herhangi bir derinlikte Sıralara ve Sütunlara bölünebilir. Herhangi bir stil için sayfa düzeni saniyeler sürer.
BODY, Çalışanlarımın Bir Tablosu
HEADER, Collins Software'e giriş yapan bir Başlık Çubuğu başlığı 'Merhaba Dünya' içeriyor
Menü DSL sayfa düzeni DSL'e uymuyor, bu yüzden menüler için benzersiz bir DSL oluşturdum.
Kaynak Ana Menüm
* tanımla: menü, m, Seviye, Etiket, Simge, İşlem;
m, 0, dosya;
m, 1, open, open.gif, Dialog Open File;
Her problem benzersizdir, bilgisayar herhangi bir formatı kullanabilir, DSL'lerin tasarlandığı insandır, bu yüzden insanlar tarafından yazabilecekleri bir şey anlayabilir ve dili gerçek kelimelerden çıkarabilir; çünkü tarif ettiğimiz gerçek insanlar, yerler ve şeyler.