अन्य लोगों ने डेटा के लिए डीएजी लागू किया है, लेकिन मुझे लगता है कि यह कम से कम लागू करने के लिए है (यदि ऐसा नहीं है) तो कोड के लिए। महबूब आर आरमन इसका उल्लेख करते हैं, इसलिए यह वास्तव में उनके जवाब का एक अधिक है जो अपने आप में एक पूर्ण उत्तर की तुलना में है।
यह मेरे लिए किसी भी अपरिमेय कंप्यूटर प्रोग्राम की तुलना में होता है जो अनंत छोरों से मुक्त होता है (धन्यवाद @AndresF।) एक डायरेक्टेड एसाइक्लिक ग्राफ (DAG) है। इसका मतलब है कि कोड के निष्पादन के संभावित मार्ग निर्देशित हैं (पहले यह, फिर वह), और एसाइक्लिक (अनंत लूप नहीं बनाना)। वे एक ग्राफ हैं क्योंकि किसी भी महत्वपूर्ण कोड के माध्यम से रास्ता शायद ही कभी सूची या पेड़ के रूप में सरल होता है।
मैंने शायद 4 साल तक XSLT में काम किया। मेरे पास यह बताने का एक भयानक समय था कि यह एक अच्छा सामान्य प्रयोजन प्रोग्रामिंग भाषा क्यों नहीं है, लेकिन डीएजी इसका कारण है। विशेष रूप से, XSLT एक डेटा संचालित भाषा है। आप फ़ंक्शंस को परिभाषित करते हैं (हाँ, कार्यात्मक-प्रोग्रामिंग अर्थ में), लेकिन आप अपने कोड से इन कार्यों को जरूरी नहीं कहते हैं। इसके बजाय, XSLT एक इनपुट XML दस्तावेज़ के नोड्स के माध्यम से, और पुनरावृति के चयन का एक संयोजन स्थापित करता है। यह इनपुट डेटा की संरचना को निर्धारित करता है कि कौन से फ़ंक्शन कहलाते हैं और किस क्रम में हैं।
यह बहुत दिलचस्प और बहुत अच्छा था जब तक कि आपके कार्यक्रम को एक डेटा शर्त का सामना नहीं करना पड़ा जिसे आपने 2:30 बजे परीक्षण नहीं किया था और आपको इसे ठीक करना था। जब आप डेटा को डीएजी को परिभाषित करने देते हैं, तो डीएजी की परिभाषा सभी संभावित इनपुट स्थितियां बन जाती हैं - जो किसी भी गैर-तुच्छ व्यवसाय एप्लिकेशन के लिए अयोग्य से परे हैं; वे अकल्पनीय हैं।
पहले तो मैंने सोचा कि कार्यात्मक प्रोग्रामिंग DAG नहीं हो सकती क्योंकि निष्पादन आदेश कभी-कभी स्पष्ट नहीं होता है, या प्रोग्रामर द्वारा भी इसके बारे में नहीं सोचा जाता है। लेकिन एक कार्यात्मक कार्यक्रम निर्भरता को परिभाषित करता है। वास्तव में, कार्यात्मक प्रोग्रामिंग की घोषणात्मक प्रकृति को केवल निष्पादन निर्भरता को निर्दिष्ट किए बिना केवल निर्भरता (ए ^ 2 = बी ^ 2 + सी ^ 2) को परिभाषित करने के रूप में सोचा जा सकता है (इससे कोई फर्क नहीं पड़ता कि 'बी' या 'सी' पहले चुकता है) , इसलिए जब तक कि वे दोनों एक साथ जोड़े जाने से पहले चुकता नहीं हो जाते)।
लेकिन जबकि कार्यात्मक प्रोग्रामिंग एक विस्तृत स्तर पर संचालन के आदेश के बारे में जानबूझकर अस्पष्ट हो सकता है, यह निर्भरता के बारे में स्पष्ट रूप से स्पष्ट है। ये बहुत ही विशेषताएं हैं जो इसे संगामित करने के लिए उत्तरदायी हैं। किसी भी स्थिति में, कोड के माध्यम से अभी भी पथों का एक ग्राफ है, और वह ग्राफ़ अभी भी निर्देशित है (निर्भरता कार्यों से पहले निर्भरता का मूल्यांकन किया जाना चाहिए), इसलिए मुझे लगता है कि डीएजी वहां भी लागू होता है।
अच्छा सवाल - पोस्ट करने के लिए धन्यवाद!