Loading...

लिस्प की जड़ें

Original

मई 2001

(मैंने यह लेख इसलिए लिखा है ताकि मैं यह समझ सकूं कि मैकार्थी ने वास्तव में क्या खोजा था। लिस्प में प्रोग्राम करने के लिए आपको यह सब जानने की आवश्यकता नहीं है, लेकिन यह उन लोगों के लिए मददगार होना चाहिए जो लिस्प के सार को समझना चाहते हैं - इसकी उत्पत्ति और इसके अर्थगत मूल दोनों के संदर्भ में। यह तथ्य कि इसका मूल ऐसा है, लिस्प की विशिष्ट विशेषताओं में से एक है, और यही कारण है कि अन्य भाषाओं के विपरीत, लिस्प में बोलियाँ हैं।)

1960 में, जॉन मैकार्थी ने एक उल्लेखनीय पेपर प्रकाशित किया जिसमें उन्होंने प्रोग्रामिंग के लिए कुछ ऐसा किया जो यूक्लिड ने ज्यामिति के लिए किया था। उन्होंने दिखाया कि कैसे, कुछ सरल ऑपरेटरों और फ़ंक्शन के लिए एक संकेतन के साथ, आप एक संपूर्ण प्रोग्रामिंग भाषा बना सकते हैं। उन्होंने इस भाषा को "लिस्ट प्रोसेसिंग" के लिए लिस्प नाम दिया, क्योंकि उनके प्रमुख विचारों में से एक कोड और डेटा दोनों के लिए एक सरल डेटा संरचना का उपयोग करना था जिसे सूची कहा जाता है।

मैकार्थी ने जो खोजा, उसे समझना ज़रूरी है, न सिर्फ़ कंप्यूटर के इतिहास में मील का पत्थर, बल्कि एक मॉडल के रूप में कि प्रोग्रामिंग हमारे समय में क्या बनने जा रही है। मुझे लगता है कि अब तक प्रोग्रामिंग के दो बहुत ही साफ-सुथरे, सुसंगत मॉडल रहे हैं: सी मॉडल और लिस्प मॉडल। ये दोनों ही ऊंचे स्थान लगते हैं, जिनके बीच दलदली तराई है। जैसे-जैसे कंप्यूटर ज़्यादा शक्तिशाली होते गए, विकसित की जा रही नई भाषाएँ लिस्प मॉडल की ओर लगातार बढ़ रही हैं। पिछले 20 सालों में नई प्रोग्रामिंग भाषाओं के लिए एक लोकप्रिय नुस्खा कंप्यूटिंग के सी मॉडल को लेना और उसमें लिस्प मॉडल से लिए गए भागों को, जैसे रनटाइम टाइपिंग और गार्बेज कलेक्शन को, टुकड़ों में जोड़ना रहा है।

इस लेख में मैं मैकार्थी द्वारा खोजी गई बातों को यथासंभव सरलतम शब्दों में समझाने का प्रयास करने जा रहा हूँ। मुद्दा केवल चालीस वर्ष पहले किसी व्यक्ति द्वारा निकाले गए रोचक सैद्धांतिक परिणाम के बारे में जानना नहीं है, बल्कि यह दिखाना है कि भाषाएँ किस दिशा में जा रही हैं। लिस्प के बारे में असामान्य बात - वास्तव में, लिस्प की परिभाषित गुणवत्ता - यह है कि इसे अपने आप में लिखा जा सकता है। यह समझने के लिए कि मैकार्थी का इससे क्या अभिप्राय था, हम उनके कदमों को फिर से दोहराएँगे, जिसमें उनके गणितीय संकेतन को कॉमन लिस्प कोड में अनुवादित किया जाएगा।