3 पॉइंट द्वारा GN⁺ 2023-12-24 | 1 टिप्पणियां | WhatsApp पर शेयर करें

xmas.c कोड विश्लेषण

  • 1988 में बनाया गया xmas.c नाम का C कोड International Obfuscated C Code Contest में विजेता रहा।
  • यह कोड अपने आउटपुट से भी छोटा है, और टेक्स्ट compression standards के लिए एक नई दिशा सुझाता है।
  • कोड को compile और run करने पर यह बिना किसी parameter के काम करता है, और मज़ेदार बात यह है कि यह ऐसे दिखता है मानो typewriter keys को बेतरतीब ढंग से दबाया गया हो।

कोड का आउटपुट

  • कोड चलाने पर "The Twelve Days of Christmas" गीत के बोल आउटपुट होते हैं।
  • आउटपुट में Christmas के पहले दिन से बारहवें दिन तक दिए गए उपहारों की सूची वाले बोल शामिल हैं।

विश्लेषण

  • कोड को समझने के लिए इसे अधिक पढ़ने योग्य रूप में दोबारा लिखना पड़ता है।
  • इस पुनर्लेखन की प्रक्रिया में यह सामने आता है कि एक खास string का उपयोग करके substitution cipher को decode किया जाता है।
  • वेरिएबल t recursion की दिशा नियंत्रित करने में महत्वपूर्ण भूमिका निभाता है।
  • यह कोड recursion के माध्यम से substitution cipher को decode करता है और Christmas गीत के बोल प्रिंट करता है।

सरलीकरण

  • प्रोग्राम को समझ लेने के बाद कुछ loops और C string library functions का उपयोग करके कोड को सरल बनाया जा सकता है।
  • अंत में कोड को सरल बनाने पर यह केवल गीत के बोल प्रिंट करने तक सीमित किया जा सकता है।

GN⁺ की राय

  • रचनात्मकता की पराकाष्ठा: xmas.c कोड substitution cipher और recursion का उपयोग करके obfuscated code लिखने का एक शानदार उदाहरण है। यह दिखाता है कि programming में रचनात्मकता कैसे व्यक्त की जा सकती है।
  • शैक्षिक महत्व: कोड का विश्लेषण और उसे समझने की प्रक्रिया शुरुआती software engineers के लिए programming skills बेहतर करने का अच्छा अभ्यास हो सकती है।
  • मज़ा और दिलचस्पी: यह कोड programming का आनंद खोजने और जटिल समस्याओं को सुलझाने की खुशी का अनुभव करने का अवसर देता है।

1 टिप्पणियां

 
GN⁺ 2023-12-24
Hacker News टिप्पणियाँ
  • TeX दुनिया में इसी तरह का एक उदाहरण xii.tex है:

    • TeX दस्तावेज़ में जटिल दिखने वाला कोड डालकर pdftex चलाने पर, अपेक्षा से अलग परिणाम मिल सकता है। इसे shreevatsa.net पर देखा जा सकता है.
  • यह कोड Kolmogorov complexity की याद दिलाता है:

    • समझने में कठिन कोड को इच्छित परिणाम बनाते देख यह जिज्ञासा होती है कि क्या इससे छोटा लेकिन वही परिणाम देने वाला कोई प्रोग्राम हो सकता है, और उसे कैसे खोजा जाए.
  • मूल रूप से प्रकाशित होने पर यह कोड मिला था, लेकिन फ़ाइल नाम अलग था:

    • यह "carol.c" नाम से सहेजा गया था, और आधुनिक सिस्टम पर compile और run करके देखने पर compiler से warning messages दिखाई देते हैं.
  • IOCCC(International Obfuscated C Code Contest) 2023 में भी अब तक सक्रिय है:

    • IOCCC का विवरण शानदार है, और इसे www.ioccc.org पर देखा जा सकता है.
  • warnings बंद करने पर यह आधुनिक code repository (trunk) में भी काम करता है:

    • compiler-explorer.com पर देखा जा सकता है कि यह कोड काम करता है या नहीं.
  • Rosetta Code में भी ऐसा ही एक काम है:

    • "Old Lady Swallowed a Fly" नाम के लगातार लंबा होते जाने वाले गीत को बार-बार उत्पन्न करने वाले प्रोग्राम का उदाहरण है। इसे rosettacode.org पर देखा जा सकता है.
  • विश्वविद्यालय के अंतिम सेमेस्टर में प्रोफ़ेसर ने लेक्चर की शुरुआत में यह code snippet दिखाया था, यह एक अच्छी याद है:

    • 2022 में प्रोफ़ेसर की कक्षा में पहली बार इस कोड से सामना होने के अनुभव को याद किया गया है.
  • कॉलेज के दिनों में C भाषा की छपी हुई अध्ययन सामग्री में यह कोड था, और उसे एक बार खुद टाइप करने की याद है:

    • C भाषा सीखते समय इस कोड को वास्तव में खुद टाइप करके देखने का यादगार अनुभव हुआ था.
  • यह कोड C भाषा के बहुत पुराने version का उपयोग करता है:

    • main function signature पुराने K&R style का उपयोग करता है, इसलिए यह राय दी गई है कि अब यह compile नहीं होगा.
  • IOCCC में Larry Wall का दो बार जीतना और उनका Perl design करना, इनके बीच का संबंध दिलचस्प बातों में से एक है:

    • Perl के designer के IOCCC में पुरस्कृत होने का इतिहास, Perl भाषा की विशेषताओं को कुछ हद तक समझाने वाला लगता है.