जबकि खुद को लैबरेट प्रोग्रामिंग की अवधारणा के लिए नया (और इसलिए यह संभावना है कि मैं नाव को पूरी तरह से याद कर रहा हूं), यह एक डीएसएल की अवधारणा के साथ बहुत ज्यादा लगता है ।
एक डीएसएल के पीछे का विचार समस्याओं के एक क्षेत्र को एक सरल, प्राकृतिक-भाषा-उन्मुख व्याकरण में वितरित करना है जो उन समस्याओं को हल करने के लिए निर्मित एल्गोरिदम के लिए उपयोग किया जा सकता है।
मेरे लिए, वही विचार, या कम से कम इसका मूल आधार, साक्षर प्रोग्रामिंग से संबंधित समान या कम से कम है।
उदाहरण के लिए, groovy दुनिया में, अधिक नियमित रूप से DSLs का उपयोग करने और सामान्य समस्याओं को हल करने के लिए नए DSL बनाने के लिए एक मजबूत धक्का है। यह धक्का भाषा (आसान बिल्डरों) के भीतर दोनों टूल से आता है, साथ ही कोर-लाइब्रेरीज़ जो डीएसएल-आधारित एपीआई का समर्थन करते हैं।
यह देखते हुए कि प्रवृत्ति, कम से कम दुनिया के उस कोने में, साक्षर प्रोग्रामिंग की ओर है, मैं कहूंगा कि इसके लिए प्रयास करना एक अच्छी पद्धति है।
दुर्भाग्य से, एक अच्छा डीएसएल बनाने के लिए आवश्यक सोच का स्तर अक्सर अधिकांश प्रोग्रामर से परे होता है, जो मैंने देखा है। मुझे पता है कि मैं समय-समय पर आवश्यक कुछ अवधारणाओं के साथ व्यक्तिगत रूप से संघर्ष करता हूं। यह ऐसी कठिनाई हो सकती है जिसने ऐसी तकनीकों को अधिक व्यापक प्रसार अपनाने से रोका है।
उपकरण का उपयोग करते समय यह आपका क्लासिक मामला है, लेकिन इसे बनाना एक अलग स्तर पर है।
मेरे दृष्टिकोण पर थोड़ा विस्तार करने के लिए, यह बहुत ज्यादा नहीं है कि डीएसएलएस साक्षर प्रोग्रामिंग के समान हैं, बल्कि यह कि वे साक्षर प्रोग्रामिंग को बहुत अधिक संभव बनाते हैं । विशेष रूप से जब वे प्राकृतिक भाषा डीएसएल होते हैं ।
ग्रूवी के संस्करण 1.8 में, अधिक शक्तिशाली कमांड चेन के साथ प्राकृतिक भाषा डीएसएल क्षमता में काफी सुधार किया गया था ।
उदाहरण के लिए, कोड की निम्नलिखित पंक्तियाँ प्रोग्रामिंग हैं , न कि केवल छद्म-वाक्य:
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"
नोट: कोड का नमूना गिलौम लैफॉर्ज के ब्लॉग से आता है
साक्षर प्रोग्रामिंग के पीछे मुख्य विचार यह है कि प्राकृतिक भाषा मनुष्यों के लिए अधिक समझने योग्य है और यही मायने रखता है। ग्रूवी की प्राकृतिक भाषा डीएसएल क्षमताएं मेरी राय में, एक बहुत करीब वास्तविकता बनाती हैं। खासतौर पर तब जब उन डीएसएल का उपयोग किसी एप्लिकेशन के लिए व्यावसायिक नियम बनाने के लिए किया जाता है।
प्राकृतिक भाषा का उपयोग करते हुए सिस्टम के महत्वपूर्ण घटकों को "एनकोड" करने में सक्षम होना साक्षर प्रोग्रामिंग का बहुत सार है। कोड की विखंडू के साथ प्राकृतिक भाषा को प्रतिच्छेद करना साक्षर प्रोग्रामिंग का एक संक्षिप्त रूप है। उपयोगी होते हुए, मेरा मानना है कि प्राकृतिक भाषा डीएसएल जो आपको प्राकृतिक भाषा का उपयोग करने की अनुमति देती है क्योंकि कोड ही एक बड़ी छलांग है।
सामान्य रूप से प्रोग्रामिंग की क्षमता का विस्तार करना प्रक्रिया का अगला चरण है, लेकिन काफी हद तक ऐसा करने के उपकरण पहले से ही मौजूद हैं। हां, अभी तक "सामान्य" डीएसएल नहीं है, लेकिन छोटे डोमेन के लिए, क्षमता है।
कार्रवाई में इसके अधिक उदाहरणों के लिए (कोई विशेष क्रम में नहीं):