Meskipun agak baru dengan konsep pemrograman sampah sembarangan (dan karena itu sepertinya saya kehilangan kapalnya sepenuhnya), tampaknya sangat sejalan dengan konsep DSL .
Gagasan di balik DSL adalah untuk menyaring domain masalah menjadi tata bahasa sederhana, berorientasi bahasa yang dapat digunakan untuk membangun algoritma untuk memecahkan masalah tersebut.
Bagi saya, gagasan yang sama, atau paling tidak fondasi inti dari itu, adalah sama atau setidaknya terkait erat dengan pemrograman melek.
Di dunia asyik, misalnya, ada dorongan kuat untuk menggunakan DSL lebih teratur dan membuat DSL baru untuk memecahkan masalah umum. Dorongan ini datang dari kedua alat dalam bahasa (pembangun mudah), serta pustaka inti yang mendukung API berbasis DSL.
Mengingat bahwa tren, setidaknya di sudut dunia itu, adalah menuju pemrograman melek, saya akan mengatakan bahwa itu adalah metodologi yang baik untuk diperjuangkan.
Sayangnya, tingkat pemikiran yang diperlukan untuk membuat dsl yang baik sering melampaui kebanyakan programmer, dari apa yang saya lihat. Saya tahu saya secara pribadi berjuang dengan beberapa konsep yang dibutuhkan dari waktu ke waktu. Mungkin kesulitan ini yang mencegah teknik seperti itu untuk mendapatkan adopsi yang lebih luas.
Ini adalah kasus klasik Anda ketika menggunakan alat adalah satu hal, tetapi menciptakannya ada pada tingkat yang sama sekali berbeda.
Untuk memperluas sudut pandang saya sedikit, itu tidak banyak yang DSLs adalah hal yang sama dengan pemrograman melek huruf, melainkan bahwa mereka membuat pemrograman melek huruf jauh lebih mungkin . Terutama ketika mereka DSL bahasa alami .
Dalam versi 1.8 groovy, kemampuan DSL bahasa alami secara substansial ditingkatkan dengan penambahan rantai perintah yang lebih kuat.
Misalnya, baris kode berikut adalah pemrograman , bukan hanya kalimat semu:
drink tea with sugar and milk
move left by 30.centimeters
sendFrom "Guillaume" to "Jochen"
send from: "Jochen" to "Lidia"
Email.from "Lidia" to "Guillaume" withBody "how are you?"
contact.name "Guillaume" age 33
move left by 30.centimeters
sell 100.shares of MSFT
take 2.pills of chloroquinine in 6.hours
blend red, green of acrylic
artist.paint "wall" with "Red", "Green", and: "Blue" at 3.pm
wait 2.seconds and execute { assert true }
concat arr[0] with arr[1] and arr[2]
developped with: "Groovy" version "1.8-beta-2"
Catatan: Contoh kode berasal dari blog Guillaume Laforge
Gagasan inti di balik pemrograman melek huruf adalah bahwa bahasa alami lebih mudah dipahami oleh manusia dan itulah yang penting. Menurut saya, kemampuan DSL bahasa alami Groovy menjadikan kenyataan itu lebih dekat. Terutama ketika mereka DSL digunakan untuk membuat aturan bisnis untuk suatu aplikasi.
Mampu "menyandikan" komponen-komponen penting dari suatu sistem menggunakan bahasa alami adalah inti dari pemrograman melek. Harus menyelingi bahasa alami dengan potongan kode adalah bentuk pemrograman literat yang terbastardisasi. Meskipun bermanfaat, saya percaya bahwa DSL bahasa alami yang memungkinkan Anda untuk menggunakan bahasa alami sebagai kode itu sendiri adalah lompatan besar ke depan.
Memperluas kemampuan pemrograman secara umum adalah langkah selanjutnya dalam proses, tetapi sebagian besar alat untuk melakukannya sudah ada. Ya, belum ada DSL "umum", tetapi untuk domain yang lebih kecil, kemampuannya ada.
Untuk lebih banyak contoh tindakan ini (tanpa urutan tertentu):