ऐसा लगता है कि लंबे समय से मान्यता प्राप्त विश्वास (मुख्य रूप से गैर-लिस्पर्स) है कि लिस्प एआई में अधिकांश भाषाओं से बेहतर है।
यह विश्वास कहाँ से उत्पन्न हुआ? और क्या वास्तव में इसका कोई आधार है?
ऐसा लगता है कि लंबे समय से मान्यता प्राप्त विश्वास (मुख्य रूप से गैर-लिस्पर्स) है कि लिस्प एआई में अधिकांश भाषाओं से बेहतर है।
यह विश्वास कहाँ से उत्पन्न हुआ? और क्या वास्तव में इसका कोई आधार है?
जवाबों:
LISP जैसी भाषाओं और अन्य भाषाओं के बीच एक महत्वपूर्ण अंतर यह है कि LISP में कोड और डेटा एक ही चीज़ हैं। इससे चीजें करना संभव हो जाता है जैसे कि प्रोग्राम में कुछ एल्गोरिदम को रनटाइम के दौरान संशोधित किया जाता है क्योंकि यह भाषा के मूल भाग के रूप में "नई चीजें" सीखता है।
एक और पहलू जो इसमें जाता है, हालांकि उतना नहीं है, मैक्रो के माध्यम से आसानी से नई भाषा शब्दार्थ जोड़ने की एलआईएसपी की क्षमता है। यह वास्तव में अंदर जाने और एक डीएसएल को परिभाषित करने के लिए संभव बनाता है जो आपके एआई के साथ काम करता है और विकसित हो सकता है, उस भाषा के बढ़ने की क्षमता, आत्म-सही, और एआई के चलने के दौरान विकसित हो सकता है।
Quadrescence से सहमत होते हुए, LISPs का उपयोग इतिहास LISPs छवि की ओर एक लंबा रास्ता तय करता है जो AI के लिए अच्छा है। एआई के लिए एलआईएसपी का उपयोग क्यों किया जाता है, यह इतिहास में बहुत अधिक विस्तार से शामिल है।
लिस्प में कुछ पहले कार्यक्रमों में प्रमेय प्रूफ़, प्रतीकात्मक गणित, क्लासिक एलिज़ा आदि थे। पीटर नॉर्विग के पीएआईपी जैसी पुस्तकों के अलावा, एमआईटी एआई लैब में लिस्प के उत्पन्न होने के तथ्य के रूप में, यह उस छवि को मिला। यह लिस्प एआई के लिए अच्छा है।
DARPA ने AI में शोध के लिए विश्वविद्यालयों को वित्त पोषित किया, और सिम्बॉलिक्स से महत्वपूर्ण मात्रा में हार्डवेयर खरीदे। धन की कमी ने अंततः तथाकथित "एआई सर्दियों" का नेतृत्व किया।
अंत में, फोरट्रान (या "एएसएम जैसी" भाषाएं) जैसी मूल भाषाओं को संख्यात्मक कंप्यूटिंग के लिए प्राथमिक उपयोग किया गया था। आपने उनमें से संख्याओं और सरणियों के साथ काम किया। इन दिनों हमारे पास अधिकांश आधुनिक भाषाओं में प्रतीक, या लगभग किसी भी वस्तु को बनाने की क्षमता है जो हम चाहते हैं।
इसलिए, एक समय में एआई के लिए लिस्प बेहतर था, अब ऐसा नहीं है। हालांकि, यह विचार कि "लिस्प एआई के लिए अच्छा है" अभी भी सुस्त है।
इसकी विशेषताओं और संरचना के कारण लिस्प एक बेहतर भाषा है या नहीं, यह पूरी तरह से एक और मामला है (क्योंकि वास्तव में इस तरह की बात सिर्फ एआई की तुलना में कई अन्य क्षेत्रों पर लागू होती है, और आमतौर पर तु पुराने लौ युद्ध को जन्म देगी)।
आइए वर्तमान एआई कार्यक्रमों पर कुछ देखें: (1) रोबोट, जैसे स्वयं ड्राइव कार। DARPA की भव्य चुनौती में, बेहतर कार-ड्राइविंग सॉफ्टवेयर लिस्प नहीं था। बल्कि यह सी + या जावा जैसी प्रक्रियात्मक भाषा थी। (२) प्राकृतिक भाषा का मशीनी अनुवाद। लिस्प का उपयोग इस उद्देश्य के लिए व्यापक रूप से उपयोग की जाने वाली उत्पादन प्रणालियों द्वारा नहीं किया जाता है। (३) खेल खेलना, जैसे शतरंज के कार्यक्रम। लिस्प का उपयोग इस उद्देश्य के लिए नहीं किया जाता है, फ्रिट्ज जैसे व्यापक रूप से उपयोग किए जाने वाले, बेहतर शतरंज कार्यक्रम।
लिस्प का आविष्कार और विकास 1960 के दशक में यूएस ए.आई. लैब द्वारा किया गया था ताकि तेजी से प्रोटोटाइप लॉजिक लॉजिक प्रोग्राम तैयार किए जा सकें जिनमें देशी लिस्प डेटा संरचनाएं प्रतीकात्मक अमूर्तता के स्तर के अनुकूल हों - जैसे कि अंग्रेजी शब्द एक सूची में प्रतीक हो सकते हैं, लॉजिक अमूर्त आसानी से हो सकते हैं। ऑपरेटरों और ऑपरेंड की सूची के रूप में प्रतिनिधित्व किया।
लेकिन उत्पादन कार्यक्रमों के लिए, स्थिर टाइप की भाषाओं के सॉफ्टवेयर इंजीनियरिंग लाभ और तीसरे पक्ष के पुस्तकालयों की एक विस्तृत विविधता का मतलब है कि लिस्प को बड़े आधुनिक सिस्टम के लिए भी नहीं माना जाता है जो एआई कार्य करते हैं।
@ स्टेफेन रीड ने इसे बहुत अच्छा बताया। मैं केवल यह कह सकता हूं कि मैं 70 के दशक में MIT AI लैब में था। मैंने एक कहानी सुनी फिर लिस्प की उत्पत्ति के बारे में। मैं यह नहीं कह सकता कि यह सत्य है, लेकिन यह इस प्रकार है:
जॉन मैकार्थी 50 के दशक में एमआईटी में थे, और वे कार्यक्रमों के गुणों को साबित करने पर काम कर रहे थे, और इसके लिए वे लैम्ब्डा कैलकुलस के समान एक सरल वाक्यविन्यास का उपयोग कर रहे थे।
कहानी यह थी कि स्नातक छात्रों में से एक एक परियोजना (सादृश्य, या प्रमेय साबित करना, या प्रतीकात्मक गणित, मुझे याद नहीं है) करना चाहता था और मैककार्थी से पूछा कि किस भाषा का उपयोग करना है। जवाब - बेशक फोरट्रान। (और कुछ नहीं था, और सूची प्रसंस्करण स्वयं काफी अच्छी तरह से जाना जाता था, लेकिन केवल सबरूटीन पैकेज के रूप में, भाषाओं के रूप में नहीं।) ठीक है, किसी भी तरह से एक कार्यक्रम का नेतृत्व किया जो नेस्टेड सूची संरचनाओं में प्रतीकों को संसाधित करेगा। साथ में उन्हें पढ़ने और छापने का एक तरीका और फिर एक eval
समारोह, और वोइला '- एक भाषा। एक LISt प्रसंस्करण भाषा। यह वहाँ से दूर ले गया।
उन दिनों में जिस तरह के एल्गोरिदम हम कर रहे थे (और अभी भी बहुत कम लोग कर रहे हैं) एक ऐसी भाषा की जरूरत थी जो आसानी से प्रतीकात्मक अभिव्यक्तियों में फेरबदल कर सके। यही लिस्प में अच्छा था। मूल अवधारणा पर कई बदलाव हुए हैं, विभिन्न नामों से जाना जा रहा है, जैसे प्रोलोग, स्कीम, आदि।
इसलिए एआई का अर्थ बहुत से लोगों के लिए बहुत सारी चीजें हैं, और विभिन्न भाषाएं अलग-अलग चीजों के लिए अच्छी हैं, लेकिन उन समस्याओं के लिए जिन्हें प्रतीक हेरफेर के रूप में वर्णित किया जा सकता है, यह एक उपयोगी भाषा ढूंढना मुश्किल है जो किसी भी तरह लिस्प से उतारा नहीं जाता है।
लिस्प के पास उन चीजों के प्रकार के फायदे हैं जिन्हें एआई कहा जाता था - कम से कम तर्क, खोज और संबंधित चीजों को पार्स करना जो कि 90 के दशक तक एआई के अधिकांश थे।
लिस्प का एक प्रमुख लाभ इसके मैक्रो के लिए समर्थन है - डेटा, मेटाप्रोग्रामिंग के रूप में कोड।
मानक एमएल (एसएमएल) एक और भाषा है जिसे 80 के दशक से व्यापक रूप से एआई में उपयोग किया जाता है। ऑब्जेक्टिव CAML और F # SML के एवोल्यूशन हैं।
एमएल परिवार (और हास्केल, आदि) का एक प्रमुख लाभ पैटर्न मिलान है। यह संभवतः लिस्प में भी उपलब्ध है, लेकिन भाषा में निर्मित होने के बजाय एक मेटाप्रोग्रामिंग लाइब्रेरी के माध्यम से। यह हास्केल में भी उपलब्ध है, लेकिन फिलहाल, कम से कम पैटर्न मिलान कार्यात्मक प्रोग्रामिंग भाषाओं के बाहर आम नहीं है।
मैंने दावा किया है कि LISP मूल रूप से एक विस्तारित अनपेड लैम्ब्डा कैलकुलस है, और ML मूल रूप से एक विस्तारित टाइप किया हुआ लैम्ब्डा कैलकुलस है। मुझे निश्चित रूप से कहने के लिए टाइप किए गए लैम्ब्डा कैलकुलस का ज्ञान नहीं है।
एआई भी वर्षों में एक अधिक व्यापक विषय बन गया है - इस बिंदु पर कि यह लगभग पूरी तरह से गायब हो गया है। डाटा माइनिंग को AI का एक सबफील्ड माना जा सकता है। कई AI चीजें (OCR, speach मान्यता) लगभग AI बिल्कुल बंद हो गई हैं - वे सिर्फ अनुप्रयोग हैं, किसी भी अन्य के समान। और एआई सिग्नल प्रोसेसिंग और अन्य प्रकार की संख्या पर निर्भर है जो एक बार की तुलना में क्रंचिंग था।
OCR और speach मान्यता के लिए, AI हमेशा सिग्नल प्रोसेसिंग और कोर्स क्रंचिंग पर निर्भर था। हां, इसमें कुछ विरोधाभास हैं ;-) मैं चीजों के लिए वज़न नहीं दे सकता क्योंकि मैं वास्तव में नहीं जानता।
फिर भी, परिणामस्वरूप, शायद एक भी आधुनिक एआई एप्लिकेशन के लिए पूरी तरह से उपयुक्त एक भाषा नहीं है - मुझे लगता है (कोई पहला हाथ ज्ञान नहीं होगा) कि आधुनिक एअर इंडिया में बहु-भाषा विकास है। और मैं लगभग गारंटी दे सकता हूं कि आपको कुछ परियोजनाओं में सी और सी ++ मिलेंगे, ताकि नंबर क्रंचिंग प्रदर्शन प्राप्त हो सके। मुझे आश्चर्य नहीं होगा अगर समान कारणों से बहुत सारे पायथन हैं - एक अच्छे संख्यात्मक पुस्तकालय के साथ, पायथन आसानी से नंबर-क्रंचिंग कार्यों को संभाल सकता है।
उन स्वयं-ड्राइविंग कारों में से एक में, मैं कल्पना करता हूं कि दृष्टि प्रणाली एक अलग भाषा में लिखी जाती है (और विभिन्न हार्डवेयर पर चलती है) मार्ग-नियोजन प्रणाली के लिए।