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