Λ-2D: प्रोग्रामिंग भाषा के रूप में ड्रॉइंग की खोज
(media.mit.edu)प्रोजेक्ट λ-2D: चित्रों को प्रोग्रामिंग भाषा के रूप में खोजना
-
अवलोकन: प्रोजेक्ट λ-2D एक ऐसा शोध है जो एक नई भाषा की खोज करता है जिसमें चित्रों के माध्यम से प्रोग्रामिंग की जा सकती है। यह lambda calculus के विचारों पर आधारित है और इस तरह डिज़ाइन किया गया है कि चित्रों के जरिए कोड लिखा जा सके।
-
अभाषिक प्रोग्रामिंग भाषाएँ: ASCII-आधारित भाषाएँ जैसे Befunge और asciidots, तथा इमेज-आधारित भाषाएँ जैसे Piet, पहले से मौजूद हैं। इन्हीं भाषाओं से प्रेरणा लेकर यह नई भाषा विकसित की गई है।
-
लक्ष्य:
- चित्रों से प्रोग्राम लिखने के फ़ायदों का उपयोग करते हुए ऐसी क्षमताएँ शामिल करना जो टेक्स्ट-आधारित भाषाओं में संभव नहीं हैं।
- कमांड्स की संख्या न बहुत कम हो और न बहुत ज़्यादा, ताकि उपयोग करना आसान रहे।
- ऐसे दृश्य रूप से आकर्षक प्रोग्राम बनाना जिन्हें कला-कृतियों की तरह देखा जा सके।
-
lambda calculus: lambda calculus में केवल दो कमांड होते हैं: function application और function definition। हर कमांड के लिए उपयुक्त प्रतीक विकसित किए गए हैं।
-
डेटा फ्लो: प्रतीकों को जोड़ने वाली रेखाओं के माध्यम से डेटा के बहने की व्यवस्था की गई है। उपयोगिता बढ़ाने के लिए अतिरिक्त प्रतीक भी जोड़े गए हैं।
-
फ्रेम और GUI तत्व: कैनवास के कुछ विशेष क्षेत्रों को फ्रेम के रूप में सेट किया जाता है ताकि डेटा का उपयोग किया जा सके। slider जैसे GUI elements जोड़कर प्रोग्राम को डायनेमिक तरीके से नियंत्रित किया जा सकता है।
-
एडिटर सॉफ़्टवेयर: एक ऐसा एडिटर विकसित किया गया है जिससे उपयोगकर्ता डिजिटल रूप में प्रोग्राम बना सकें। 5x5 पिक्सेल के प्रतीकों का उपयोग करके उन्हें ग्रिड कैनवास पर आसानी से रखा जा सकता है।
-
आउटपुट समस्या का समाधान: pure functional language की प्रकृति के कारण "output" कमांड को लागू करना कठिन है। इसे हल करने के लिए कैनवास को फ़ंक्शन में पास किया जाता है और बदला हुआ कैनवास वापस लिया जाता है।
-
पार्सर विकास: λ-2D प्रोग्राम को JavaScript में बदलने वाला एक parser विकसित किया गया है। परिणाम जटिल है, लेकिन काम करता है।
-
प्रोग्रामिंग अनुभव: इस नई भाषा में प्रोग्रामिंग करने का अनुभव Minecraft या Factorio जैसा है, लेकिन शोध के रूप में इसका अलग महत्व है।
-
विज़ुअलाइज़ेशन और ध्वनि: प्रोग्राम के निष्पादन को विज़ुअलाइज़ करने और चलते हुए प्रोग्राम को संगीत की तरह सुनने की संभावना भी खोजी जा रही है।
-
आगे की योजना: λ-2D को और बेहतर बनाने तथा चित्रों के माध्यम से होने वाली गणना को किसी सिस्टम में एकीकृत करने योग्य नई प्रोग्रामिंग भाषा डिज़ाइन करने की योजना है।
-
ऑनलाइन डेमो: λ-2D का beta version ऑनलाइन आज़माया जा सकता है, और parser व editor का source code जल्द ही GitHub पर सार्वजनिक किया जाएगा।
1 टिप्पणियां
Hacker News की राय
BitGrid से मिलता-जुलता लेकिन अलग कॉन्सेप्ट पर चर्चा करते हुए, FPGA के अंतिम सरलीकरण के रूप में समानांतर में आगे बढ़ते bits की कल्पना की गई। इस विचार में आम लोगों तक Petaflops पहुँचाने की उपयोगिता हो भी सकती है और नहीं भी। ASIC में DFF द्वारा खर्च की जाने वाली ऊर्जा महत्वपूर्ण है.
automation project engineer का काम मज़ेदार या परिचित लग सकता है। function block diagram में function blocks को wires से जोड़ा जाता है, और blocks के क्रम से काम का क्रम तय होता है। blocks engine के built-in functions जैसे हो सकते हैं या composite हो सकते हैं.
यह language अभी Turing-complete है, लेकिन इस्तेमाल करने में बहुत कठिन है, इसलिए यह design rule #2 का उल्लंघन करती है। Lambda Diagrams चरण 1 पर ही रुक गया.
Labview में इस तरह का काम किया गया था, लेकिन आगे बढ़ाना कठिन था। Max जैसे software में भी यह किया गया, लेकिन वह जल्दी ही जटिल हो गया.
Petri Nets के लिए graphic formal specification में रुचि थी। सोचा था कि अगर graphic representation हो तो engineers formal methods का ज़्यादा उपयोग करेंगे, लेकिन Petri Nets दिखाने पर उनकी रुचि खत्म हो जाती थी.
यह राय है कि non-verbal programming languages का क्षेत्र अभी तक अच्छी तरह explored नहीं हुआ है.
1987 के "Wireworld" की याद आती है, और Wireworld में 8-bit counter लागू किया हुआ देखा गया था.
programming paradigm के लिहाज़ से यह Funciton के समान है.