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