পার্থক্যটি তৈরি করা শক্ত, এবং ব্যবহৃত ভাষার উপর নির্ভরশীল। এটি বিষয়গতও বটে।
ক্লোজারে, আপনি এমন এপিআইগুলি সংজ্ঞায়িত করতে পারেন যা ডিএসএল এর মতো লাগে। উদাহরণস্বরূপ, হিক্কার আপনাকে এইচটিএমএল তৈরি করতে দেয়:
(html [:span {:class "foo"} "bar"])
এটি একটি লিস্প সিনট্যাক্স সহ একটি ডিএসএল হিসাবে বিবেচনা করা যেতে পারে। html
ম্যাক্রো হতে পারে এই সত্যটি এটিকে একই পরিমাণ শক্তি প্রদান করে যেন আপনি এস-এক্সপ্রেশন সহ কোনও এইচটিএমএল টেম্প্লেটিং লিব লিখছেন ( এসএক্সএমএল দেখুন )
পাইথনে, একই এপিআই দেখতে পারে:
html(["span", {"class" : "foo"}, "bar"])
এইচটিএমএল একটি ফাংশন। এর যুক্তিটি প্রথমে মূল্যায়ন করা হবে এবং তারপরে ফাংশন কলটি হবে। পাইথন সিনট্যাক্সটি আরও সুনির্দিষ্ট, এবং পাইথন শব্দার্থবিজ্ঞানের আরও কঠোর অর্থ এই যে ভাষার থেকে পৃথক কোনও ডিএসএল হিসাবে ব্যাখ্যা করা এই মত প্রকাশের পক্ষে আরও কঠিন।
একটি ক্লাসিক ভাষার উপস্থাপনা হ'ল ডেটা স্ট্রাকচারের মতো গাছ এবং এর নোডগুলিতে পুনরাবৃত্তভাবে বলা হয় এমন একটি বিভক্ত ফাংশন। এলআইএসপি ভাষাগুলি এই গাছের কাঠামোটিকে খুব প্রকট করে তোলে, তাই কোনও অভ্যন্তরীন ফাংশন কল একটি অন্তর্নির্মিত ভাষা বৈশিষ্ট্য থেকে পৃথক। এজন্য এলআইএসপি সম্প্রদায় প্রায় সব কিছুর জন্য ডিএসএল সম্পর্কে কথা বলে।
আমি বিশ্বাস করি প্রোগ্রামিং দরকারী বিমূর্ততা প্রদান সম্পর্কে। আমি দেখতে পেলাম যে ভাষা উপাদানগুলি কোনও জটিল সমস্যা সমাধানে সহায়তা করতে আপনার ভাষা তৈরির (লিব বা আপনার অ্যাপ্লিকেশনটির ইউআই) হিসাবে নজর রাখা বেশিরভাগ জিনিসগুলির ডিজাইনের কার্যকর উপায়। এই দৃষ্টিকোণের সাথে, আমি দৃsert়ভাবে বলছি যে প্রতিটি গ্রন্থাগারগুলি ডিএসএল, তবে তাদের মধ্যে কিছুগুলি খারাপভাবে ডিজাইন করা হয়েছে :-)