प्रोग्रामिंग भाषाओं में, जोकर और चुटकुले हैं। दरअसल, अधिकांश गूढ़ प्रोग्रामिंग भाषाओं की कल्पना मजाक के रूप में की गई थी (बेशक, अगर जनता के लिए चुनौती के रूप में नहीं, जैसे एफ * सीकेएफ * सीके, या दिमाग के लिए एक अभ्यास के रूप में, ब्रेनफक की तरह)। लेकिन एक भाषा है जिसने फर्स्ट जोक की मानद उपाधि को सही रूप से अर्जित किया है। 1972 में वापस, जब सभी मौजूदा प्रोग्रामिंग भाषाएं बेहद उपयोगी और घातक थीं, 26 मई की सुबह में कुछ प्रैंकस्टर्स की मौजूदगी की सीमाओं को धक्का दिया और एक मौलिक नई भाषा के साथ आया। उन्होंने इसे कंपाइलर लैंग्वेज विद नो
प्रोनूसेबल डब करार दिया, जिसे
स्पष्ट कारणों के लिए
इंटरकैल तक छोटा कर दिया गया।
तब से लगभग 40 साल बीत चुके हैं। INTERCAL लंबे समय
से किसी भी मुख्यधारा की भाषा से कोई लेना-देना नहीं है , जैसा कि इसके डेवलपर्स चाहते थे। आपको यह स्वीकार करना होगा कि एक सामान्य अनिवार्य भाषा, जिसमें नामांकित चर, सरणियाँ, एक असाइनमेंट ऑपरेशन, 5 से अधिक ऑपरेटर हैं, और एक मानक पुस्तकालय जो लापता अंकगणितीय कार्यों को लागू करता है, में ब्रेनफॉक की सामान्य भाषाओं के साथ सामान्य रूप से बहुत अधिक है, दो आयामी, गैर-नियतात्मक भाषाओं का उल्लेख नहीं करना। भाषाएं, अपभ्रंश भाषाएं, एकल निर्देश वाली भाषाएं और हमारे vivarium के अन्य प्रदर्शन। लेकिन वह शैली के अग्रणी बने रहे, कई मायनों में अद्वितीय हैं।
सबसे पहले, एक संदर्भ गाइड। बाद में गूढ़ भाषाएं भाषा के बहुत सार में उनकी असामान्यता को केंद्रित करती हैं, उनके मैनुअल कमांड और सुविधाओं के शुष्क तथ्यात्मक विवरण तक सीमित हैं।
INTERCAL प्रोग्रामिंग लैंग्वेज रेफरेंस मैनुअल एक
प्रोग्रामिंग लैंग्वेज का एक अनूठा विवरण है, जिसमें "एलिस इन वंडरलैंड" के एपिग्राफ और पूरी तरह से गंभीर स्वर में व्यंग्यात्मक टिप्पणियां हैं। इसके अलावा, विशेष रूप से इस भाषा के लिए, लेखकों ने इस्तेमाल की गई सेवा प्रतीकों के लिए व्यंजना की एक प्रणाली विकसित की: '- चिंगारी,' - खरगोश के कान, - स्पॉट,: - डबल स्पॉट, - पूंछ,; - संकर (हालांकि "धब्बेदार पूंछ" अधिक तार्किक होगी) ), $ - बड़ा पैसा, ~ - ज़गोगुलिन, आदि (एक पूरी सूची मैनुअल से जुड़ी हुई है)
खरगोश को प्राप्त करने के लिए एक
स्पॉट के साथ
खरगोश के कानों को जोड़ना निषिद्ध है!
अगला, त्रुटि संदेश। सभ्य भाषाओं में, त्रुटि संदेश सूचनात्मक होते हैं और जो कुछ भी हुआ उसके कारणों को सटीक रूप से इंगित करता है। बेईमानों में, इसके विपरीत, संदेश या तो सार्वभौमिक होते हैं या त्रुटि के गलत कारणों को फेंक देते हैं। INTERCAL त्रुटियां केवल मैनुअल के रूप में दुर्भावनापूर्ण हैं, और एक संदर्भ के बिना वे सिद्धांत रूप में डिक्रिपर्ड नहीं हैं। वास्तव में, आप अनुमान लगा सकते हैं कि E252 "मैं भूल गया था कि मैं क्या कहने जा रहा था" I / O संचालन के दौरान एक मेमोरी अतिप्रवाह त्रुटि है, और E182 "यह आपको वास्तव में इस लेबल की तरह लगता है" एक ही लेबल का उपयोग करने में कई बार त्रुटि होती है। लेकिन उनके सही दिमाग में और ठोस स्मृति इस विचार के साथ आएगी कि E405 "मानसिक स्वास्थ्य कारणों के लिए कार्यक्रम को अस्वीकार कर दिया गया था" संबंधित कंपाइलर विकल्प के बिना रोलबैक के साथ मल्टीथ्रेडिंग कमांड या गणना के उपयोग को इंगित करता है, E017 "मुझे क्या करना चाहिए?" गलत रेंज के स्थिरांक का उपयोग करना, और E127 "जादू की छड़ी के बिना" अबरकदबरा "कहना पूरी तरह से बेकार है" - मानक पुस्तकालय जुड़ा नहीं है?
कुछ त्रुटियों का अन्य भाषाओं में कोई एनालॉग नहीं है। इसलिए, E079 "प्रोग्रामर पर्याप्त विनम्र नहीं है" और E099 "प्रोग्रामर बहुत विनम्र है" कार्यक्रम में कृपया कमांड के पहचानकर्ताओं की संख्या का उल्लेख करें (वैसे, कृपया पहचानकर्ता किसी अन्य शब्दार्थ भार को वहन नहीं करता है)। त्रुटि E774 "रैंडम कंपाइलर बग" अपने नाम के साथ पूरी तरह से सुसंगत है - यह संयोग से होता है और आमतौर पर फिर से गायब हो जाता है। E995 "क्या, मुझे वास्तव में इसे लागू करना था?" तब होता है जब मैं कोड को निष्पादित करने का प्रयास करता हूं जो अभी तक नहीं लिखा गया है (बस यह नहीं पूछें कि यह कैसे किया जा सकता है!)।
अंत में, भाषा ही। आप लंबे समय तक इसके बारे में बात कर सकते हैं, लेकिन
संशोधित संदर्भ मैनुअल को पढ़ना बेहतर है, जो मूल मैनुअल की शैली को संरक्षित करता है, लेकिन आधुनिक भाषा कार्यान्वयन का उपयोग करता है। यहाँ मेरे पसंदीदा स्थानों में से कुछ हैं:
- INTERCAL सीखने के लिए एक बहुत ही सरल भाषा है, और एक सुझाव देगा कि यह नए प्रोग्रामर को शुरू करने के लिए अच्छा होगा। वास्तव में, वह प्रोग्रामर को दूसरी नौकरी की तलाश करने के लिए धक्का देने की अधिक संभावना है।
- पिछले अनुभागों में दिए गए कार्यक्रमों के उदाहरण भाषा से अपरिचित पाठक को काफी गूढ़ लग सकते हैं। इस छाप को सुदृढ़ करने के लिए, हम भाषा का विवरण प्रदान करते हैं।
- INTERCAL में 5 ऑपरेटर हैं - 2 बाइनरी और 3 यूनरी। हालांकि, एक अर्थ में, सभी ऑपरेटर द्विआधारी हैं, क्योंकि वे सभी तर्क के द्विआधारी प्रतिनिधित्व के साथ काम करते हैं, लेकिन शब्दों पर यह नाटक हमें प्रस्तुति से दूर ले जाता है।
- ऑपरेटरों की प्राथमिकता निम्नानुसार परिभाषित की गई है: (शेष पृष्ठ को उद्देश्यपूर्ण रूप से खाली छोड़ दिया गया है - यह मत भूलो कि INTERCAL के निर्माता अपने लक्ष्य को प्राथमिकताओं की अनुपस्थिति के रूप में निर्धारित करते हैं)।
- प्रत्येक प्रोग्राम कमांड को प्रायिकता पर सेट किया जा सकता है जिसके साथ कार्यक्रम शुरू होने पर इसे निष्पादित किया जाएगा। इसके अलावा, ऐसी कमांड्स हैं जो एक निश्चित प्रकार या परिवर्तनशील परिवर्तनों के बाद के कमांड के निष्पादन को रोकती हैं।
- संख्या रोमन संकेतन में प्रदर्शित होती है, और संकलक का समर्थन करने वाली किसी भी भाषा में एक अंक शब्दों में दर्ज किया जाता है। चरित्र इनपुट / आउटपुट अलग-अलग संकलक में अलग-अलग तरीके से कार्यान्वित किया जाता है, और किसी भी स्थिति में यहां वर्णन करने के लिए बहुत भयानक है।
और आजकल, जो लोग INTERCAL के प्रति निष्ठावान हैं और अपने टेक्नो-मासोचिस्टों के रैंक पर गर्व करते हैं - कुछ इस अद्भुत भाषा में ऑपरेटिंग सिस्टम के लिए स्रोत कोड को फेंक देते हैं, अन्य
यह साबित करते हैं कि INTERCAL पर्ल से बेहतर है:
- अधिक पठनीय चर नाम (INTERCAL में, चर का कोई नाम नहीं है, लेकिन केवल संख्याएँ हैं);
- अपने प्रकार के एक चर के सटीक उपसर्ग (और: - 16 और 32-बिट पूर्णांक ,,,; - 16 और 32-बिट पूर्णांक के सरणियों);
- नाखूनों का कोई स्क्रैप नहीं (यानी, ब्रैकेट्स - उनके बजाय INTERCAL, सिंगल और डबल कोट्स में);
- संचालन की प्राथमिकता के लिए बहुत सरल नियम (उनकी अनुपस्थिति की तुलना में सरल क्या हो सकता है?);
- INTERCAL में निर्मित चीजें हैं जो पर्ल में एक्सटेंशन की आवश्यकता होती हैं - उदाहरण के लिए, रोमन संख्या;
- उपयोगकर्ता के लिए अभिविन्यास, कार्यक्रम के लिए नहीं (अधिकांश भाषाओं के विपरीत, इनपुट को राइट इन कमांड के साथ किया जाता है, आउटपुट READ OUT है);
- अंत में, प्रोग्रामिंग प्रक्रिया खुद ही मजेदार होनी चाहिए; एक कार्यक्रम जो 15 मिनट में पर्ल में लिखा जा सकता है, उसे इंटरकैल पर कई दिन लगेंगे - यह स्पष्ट है कि कौन सी भाषा बेहतर है;;