4 पॉइंट द्वारा GN⁺ 2024-04-25 | 1 टिप्पणियां | WhatsApp पर शेयर करें

Piet प्रोग्रामिंग भाषा का परिचय

  • Piet एक ऐसी प्रोग्रामिंग भाषा है जिसमें ऐसे प्रोग्राम लिखे जाते हैं जो अमूर्त चित्रों जैसे दिखते हैं
  • इसका नाम ज्यामितीय अमूर्त कला के अग्रदूत Piet Mondrian के नाम पर रखा गया है

Piet भाषा के डिज़ाइन सिद्धांत

  • प्रोग्राम कोड अमूर्त कला का रूप लेता है

Piet में उपयोग होने वाले रंग

  • Piet 20 विशिष्ट रंगों का उपयोग करता है
    • hue cycle: लाल -> पीला -> हरा -> cyan -> नीला -> magenta -> लाल
    • lightness cycle: हल्का -> सामान्य -> गहरा -> हल्का
  • सफेद और काला इन दोनों cycles में शामिल नहीं हैं
  • अतिरिक्त रंग (नारंगी, भूरा आदि) उपयोग किए जा सकते हैं, लेकिन उनका प्रभाव implementation पर निर्भर करता है
    • सबसे सरल स्थिति में उन्हें सफेद की तरह माना जाता है

Codel (कोडेल)

  • Piet कोड की मूल इकाई रंग ब्लॉक है
    • यह एक या अधिक सटे हुए समान रंग के कोडेल से मिलकर बनता है
    • जो रंग ब्लॉक केवल तिरछे रूप में जुड़े हों, उन्हें निरंतर नहीं माना जाता
    • आकार पर कोई सीमा नहीं होती और उसके अंदर दूसरे रंगों के "छेद" हो सकते हैं

स्टैक

  • Piet सभी डेटा मानों को संग्रहीत करने के लिए स्टैक का उपयोग करता है
  • डेटा मान केवल पूर्णांक के रूप में मौजूद होते हैं, लेकिन उन्हें Unicode character values के रूप में पढ़ा या आउटपुट किया जा सकता है
  • स्टैक वैचारिक रूप से असीम गहरा है, लेकिन implementation में सीमित अधिकतम आकार दिया जा सकता है

प्रोग्राम निष्पादन

  • Piet interpreter प्रोग्राम के सबसे ऊपर बाएँ कोडेल को शामिल करने वाले रंग ब्लॉक से निष्पादन शुरू करता है
  • यह direction pointer (DP) और codel chooser (CC) को बनाए रखता है और निम्न नियमों के अनुसार रंग ब्लॉकों के बीच चलता है:
    • वर्तमान रंग ब्लॉक के किनारों में DP दिशा में सबसे दूर वाला किनारा खोजें
    • उस किनारे पर CC दिशा में सबसे दूर वाला कोडेल खोजें
    • उस कोडेल से DP दिशा में सटे हुए रंग ब्लॉक में जाएँ
  • प्रोग्राम समाप्त होने तक यह प्रक्रिया दोहराई जाती है

व्याकरण तत्व

संख्याएँ

  • काले और सफेद को छोड़कर प्रत्येक रंग ब्लॉक उस ब्लॉक में मौजूद कोडेल की संख्या के बराबर एक पूर्णांक दर्शाता है
  • केवल धनात्मक संख्याएँ व्यक्त की जा सकती हैं, लेकिन operators से ऋणात्मक संख्याएँ बनाई जा सकती हैं
  • interpreter किसी संख्या को देखकर उसे अपने-आप स्टैक में push नहीं करता

काले ब्लॉक और किनारे

  • काले ब्लॉक और प्रोग्राम के किनारे प्रोग्राम के प्रवाह को सीमित करते हैं
  • यदि काले ब्लॉक या किनारे की ओर जाने की कोशिश की जाए, तो CC toggle होता है और DP घड़ी की दिशा में घूमता है
  • 8 प्रयासों के बाद भी आगे नहीं बढ़ा जा सके तो प्रोग्राम समाप्त हो जाता है

सफेद ब्लॉक

  • सफेद ब्लॉक एक "मुक्त" क्षेत्र है जिससे interpreter बिना किसी प्रतिबंध के गुजर सकता है
  • यह DP दिशा में सफेद कोडेलों पर "फिसलते" हुए चलता है और किसी non-white ब्लॉक तक पहुँचता है
  • सफेद ब्लॉक पार करके नए रंग में जाने पर भी कोई command execute नहीं होती
  • यदि सफेद ब्लॉक के भीतर रास्ता पूरी तरह वापस दोहराया जाए, तो प्रोग्राम समाप्त हो जाता है

कमांड

  • interpreter जब एक रंग ब्लॉक से दूसरे रंग ब्लॉक में जाता है, तो command रंग परिवर्तन से परिभाषित होती है
  • कौन-सी command चलेगी, यह hue cycle और lightness cycle में हुए चरणों की संख्या से तय होता है
  • सफेद ब्लॉक के आर-पार जाने पर कोई command execute नहीं होती
  • प्रमुख commands:
    • push, pop, add, subtract, multiply, divide, mod, not, greater
    • pointer, switch, duplicate, roll
    • in(number), in(char), out(number), out(char)

GN⁺ की राय

  • Piet एक दृश्य रूप से आकर्षक प्रोग्रामिंग भाषा है, जो अमूर्त कला और प्रोग्रामिंग के अनोखे संयोजन को दिखाती है
  • लेकिन व्यावहारिकता के लिहाज़ से इसमें सीमाएँ दिखाई देती हैं। जटिल प्रोग्राम लिखना आसान नहीं होगा
  • संभवतः इसका उपयोग मुख्य रूप से प्रोग्रामिंग भाषा डिज़ाइन पर प्रयोग, पहेलियों, या कला-कृतियों के निर्माण में किया जा सकता है
  • visual programming language के रूप में Google की Blockly या MIT की Scratch अधिक व्यावहारिक विकल्प हो सकती हैं
  • कुल मिलाकर Piet शायद बहुत ज़्यादा deep भाषा है, इसलिए वास्तविक शुरुआती लोगों के लिए इसे प्रोग्रामिंग सीखने के साधन के रूप में उपयोग करना कठिन लग सकता है

1 टिप्पणियां

 
GN⁺ 2024-04-25
Hacker News की राय
  • Piet भाषा के उदाहरण पेज पर मौजूद आख़िरी प्रोग्राम सच में चौंकाने वाला है। एक व्यक्ति (जिसे Piet कहा जाता है) ने Piet भाषा की याद दिलाने वाली एक कलाकृति देखी और उसे चलाकर देखा, और वह वास्तव में काम कर गई। इतिहास में शायद यह पहली बार था कि किसी ग्राफिक आर्टिस्ट ने संयोग से एक executable program बना दिया।

  • Piet esoteric programming languages में एक groundbreaking प्रयोग है, लेकिन जब तक डेवलपर जानबूझकर ऐसा न करे, इसे Mondrian की पेंटिंग जैसा दिखाने के लक्ष्य को यह पूरी तरह हासिल नहीं कर पाता। काश भाषा की संरचना ही इस तरह डिज़ाइन की गई होती कि लिखा गया कोड अपने आप Mondrian पेंटिंग जैसा दिखे।

  • यह "algorithm कैसा दिखता है?" जैसा सवाल उठाता है। क्या Hermann Hesse के उपन्यास 'The Glass Bead Game' (Magister Ludi) जैसी किसी चीज़ को वास्तविक दुनिया में बनाया जा सकता है? एक visual-oriented व्यक्ति के रूप में मैं ऐसा सोचना चाहता हूँ, और मैंने सच में ऐसे tools इस्तेमाल करने की कोशिश भी की, लेकिन अस्पष्ट जवाबों की वजह से visual expressiveness और modularity के बीच संतुलन बनाना मुश्किल लगा।

  • इस तरह की चीज़ें शायद crime thrillers में इस अंदाज़ में आएँगी कि वे नायक/जाँचकर्ताओं को उलझाए रखें, फिर कोई अचानक समझे कि यह code है। हमने सोचा था QR code उपयोगी होंगे...

  • Piet को खोज लेना awe, confusion, और wonder का एक ख़ास पल है। यह बात CS podcast में मेरे दोस्त Oz के साथ हुई बातचीत में दर्ज है।

  • किसी ने Piet में एक Quine बनाया था। इमेज टूट चुकी है, लेकिन CodeGolf पर उसकी एक कॉपी है।

  • विश्वविद्यालय में esoteric programming languages पर एक छोटा-सा course था, और हम सबने एक-एक भाषा चुनकर उसके साथ प्रयोग किया। मैंने Piet चुना; यह मज़ेदार था, लेकिन ईमानदारी से कहूँ तो छोटे example applications सौंदर्य की दृष्टि से बहुत संतोषजनक नहीं थे। Piet में कला बनाने के लिए शायद expert बनना पड़े।

  • कॉलेज के दिनों में मैं इससे परिचित हुआ था और देर रात तक छोटे-छोटे प्रोग्राम लिखता रहा; यह सच में बहुत मज़ेदार अनुभव था। मैं लोगों को सलाह दूँगा कि इसे कम-से-कम एक बार ज़रूर आज़माएँ!

  • उदाहरण पेज कमाल का है। आप देख सकते हैं कि canvas कैसे धीरे-धीरे और अधिक परिष्कृत और सुंदर होता जाता है।

  • सच में बहुत शानदार! सोचता हूँ क्या Piet artworks को इकट्ठा करके ऐसा program बनाना संभव होगा जो दिया गया text वापस करे। यानी किसी तरह का Piet code generator। यह प्रिंटेड रूप में एक बढ़िया gift बन सकता है!