मुझे लिस्प क्यों सीखना चाहिए? [बन्द है]


125

मुझे वास्तव में लगता है कि मुझे लिस्प सीखना चाहिए और मुझे ऐसा करने में मदद करने के लिए बहुत सारे अच्छे संसाधन हैं।

मुझे जटिल वाक्य रचना द्वारा नहीं डाला गया है, लेकिन जहां "पारंपरिक वाणिज्यिक प्रोग्रामिंग" में मुझे ऐसी जगहें मिलेंगी, जहां प्रक्रियात्मक भाषा के बजाय इसका उपयोग करने का कोई मतलब नहीं होगा।

क्या कोई वाणिज्यिक हत्यारा-ऐप है जो लिस्प में लिखा गया है?


5
वहाँ क्या नहीं है द्वारा मुश्किल से डाल दिया।
कज़

फिलिप ग्रीनस्पून का रिज्यूमे पढ़ें । यह वास्तविक लिस्प कार्य के साथ व्याप्त है।
काज

1
यहाँ भी । ग्रीनस्पून ने पैकेट स्विच्ड नेटवर्क सिमुलेशन, डीएसपी डिज़ाइन, प्रोसेसर डिज़ाइन, वीएलएसआई लेआउट, मैकेनिकल इंजीनियरिंग ऑटोमेशन, पृथ्वी के घूमने के स्वचालन, और इसी तरह, लिस्प का उपयोग करते हुए या लिस्प को शामिल करते हुए काम किया। उन्होंने लिस्प मशीन पर विकसित उपकरणों का उपयोग करके हेवलेट पैकर्ड के PA-RISC आर्किटेक्चर को डिजाइन करने में मदद की।
कज़

यहाँ लिस्प में कुछ ऐप विकसित किए गए हैं - Emacs, G2, AutoCad, Igor Engraver और Yahoo Store
Arulx Z

जवाबों:


55

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

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

संक्षेप में, लिस्प (या योजना) सीखना, एआई से परे कई व्यावहारिक अनुप्रयोगों का उत्पादन नहीं कर सकता है, लेकिन यह एक बहुत ही मूल्यवान सीखने का अनुभव है, जैसा कि कई अन्य लोगों ने कहा है। लिस्प जैसी कार्यात्मक भाषा में प्रोग्रामिंग आपको पुनरावर्ती सोचने में भी मदद करेगा (यदि आपको अन्य भाषाओं में पुनरावृत्ति से परेशानी हुई है, तो यह एक बड़ी मदद हो सकती है)।


5
आप क्यों कहते हैं कि लिस्प केवल एआई के लिए अच्छा है? इसके अलावा, यह एक बहु-प्रतिमान भाषा है। कार्यात्मक केवल कई प्रतिमानों में से एक है जो इसे सक्षम करता है।
लुइसे ओलिवेरा

6
मैंने इसका केवल AI के लिए उपयोग नहीं किया, मैंने कहा कि इसका एक मुख्य उपयोग AI है। क्या तुमने इसे पढ़ा?
जस्टिन बेनेट

32
"कृपया यह न मानें कि आम लिस्प केवल डेटाबेस, यूनिट टेस्ट फ्रेमवर्क, स्पैम फिल्टर, आईडी 3 पार्सर्स, वेब प्रोग्रामिंग, शाउटकास्ट सर्वर, एचटीएमएल जेनरेशन इंटरप्रिटेटर और एचटीएमएल जेनरेशन कंपाइलर्स के लिए ही उपयोगी है क्योंकि ये केवल वही चीजें हैं जिन्हें लागू किया जाना है। पुस्तक प्रैक्टिकल सीएल "
मिकेल जानसन

23
@JustinBennett हाँ आपने कहा था। यहाँ: "संक्षेप में, लिस्प (या स्कीम) सीखना, एआई से परे कई व्यावहारिक अनुप्रयोगों का उत्पादन नहीं कर सकता है"। मुझे नफरत है जब लोग गलत होने पर टकराव करते हैं।
लुका रामाविवि

127

लिस्प एक बड़ी और जटिल भाषा है जिसका समर्थन करने के लिए एक बड़े और जटिल रनटाइम है। उस कारण से, लिस्प बड़ी और जटिल समस्याओं के लिए सबसे उपयुक्त है।

अब, एक जटिल समस्या एक के समान नहीं है जटिल है। एक जटिल समस्या बहुत सारे छोटे विवरणों में से एक है, लेकिन यह कठिन नहीं है। एयरलाइन बुकिंग सिस्टम लिखना एक जटिल व्यवसाय है, लेकिन पर्याप्त धन और प्रोग्रामर के साथ यह कठिन नहीं है। अंतर पाएं?

एक जटिल समस्या वह है जो जटिल है, एक जहां पारंपरिक विभाजन और जीत काम नहीं करती है। एक रोबोट को नियंत्रित करना, या डेटा के साथ काम करना जो सारणीबद्ध नहीं है (उदाहरण के लिए भाषाएँ), या अत्यधिक गतिशील परिस्थितियाँ।

लिस्प वास्तव में समस्याओं के लिए अच्छी तरह से अनुकूल है जहां समाधान का विस्तार होना चाहिए; क्लासिक उदाहरण emacs टेक्स्ट एडिटर है। यह पूरी तरह से प्रोग्राम करने योग्य है, और इस प्रकार यह अपने आप में एक प्रोग्रामिंग वातावरण है।

अपनी प्रसिद्ध पुस्तक पीएआईपी में , नॉरविग कहता है कि लिस्प खोजपूर्ण प्रोग्रामिंग के लिए आदर्श है। यही है, एक समस्या का समाधान प्रोग्रामिंग है जो पूरी तरह से समझ में नहीं आता है (जैसा कि ऑन-लाइन बुकिंग प्रणाली के विपरीत)। दूसरे शब्दों में: जटिल समस्याएं।

इसके अलावा, लिस्प सीखना आपको कुछ मौलिक याद दिलाएगा जो भूल गए हैं: वॉन न्यूमैन और ट्यूरिंग के बीच का अंतर। जैसा कि हम जानते हैं, ट्यूरिंग की गणना का मॉडल एक दिलचस्प सैद्धांतिक मॉडल है, लेकिन कंप्यूटर डिजाइन करने के लिए एक मॉडल के रूप में बेकार है। दूसरी ओर, वॉन न्यूमैन ने एक मॉडल तैयार किया कि कंप्यूटर और कम्प्यूटेशन को कैसे निष्पादित किया जाता है: वॉन न्यूमैन मॉडल। वॉन न्यूमैन मॉडल का केंद्र यह है कि आपके पास एक मेमोरी है, और अपने कोड और डेटा दोनों को वहां स्टोर करें। ध्यान से देखें कि एक जावा प्रोग्राम (या सी #, या जो भी आपको पसंद है) ट्यूरिंग मॉडल की एक अभिव्यक्ति है। आप अपना कार्यक्रम कंक्रीट में, एक बार और सभी के लिए निर्धारित करें। फिर आपको उम्मीद है कि आप उस पर फेंके गए सभी डेटा से निपट सकते हैं।

लिस्प वॉन न्यूमन मॉडल को बनाए रखता है; कोड और डेटा के बीच कोई तेज, पूर्व निर्धारित सीमा नहीं है। लिस्प में प्रोग्रामिंग आपके दिमाग को वॉन न्यूमैन मॉडल की शक्ति के लिए खोलता है। लिस्प में प्रोग्रामिंग आपको एक नई रोशनी में पुरानी अवधारणाओं को देखता है।

अंत में, सहभागी होने के नाते, आप अपने कार्यक्रमों के साथ बातचीत करना सीखेंगे क्योंकि आप उन्हें विकसित करेंगे (संकलन और चलाने के विपरीत)। यह आपके प्रोग्राम करने के तरीके और प्रोग्रामिंग को देखने के तरीके को भी बदल देता है।

इस परिचय के साथ मैं अंत में आपके प्रश्न का उत्तर दे सकता हूं: क्या आपको ऐसी जगहें मिलेंगी जहां यह "पारंपरिक" भाषाएं हैं?

यदि आप एक उन्नत प्रोग्रामर हैं, तो आपको उन्नत टूल की आवश्यकता है। और लिस्प की तुलना में अधिक उन्नत कोई उपकरण नहीं है। या, दूसरे शब्दों में: यदि आपकी समस्याएं कठिन हैं तो इसका उत्तर हां में है। नहीं तो नहीं।


30
"लेकिन पर्याप्त धन और प्रोग्रामर के साथ यह मुश्किल नहीं है" - कहा कि, पर्याप्त रूप से कई प्रोग्रामर दिए गए यह असंभव हो जाता है
;;

मैंने मक्खी पर कोड उत्पन्न करने की लिस्प्स की क्षमता के बारे में पढ़ा है, लेकिन मैंने यह भी पढ़ा है कि इसे संकलित किया जा सकता है .. क्या ऐसे कार्यान्वयन हैं जो व्याख्या और संकलित निष्पादन को मिला सकते हैं? या जो स्वयं के संकलक होते हैं?
सेंटोरियन_स्लग

@centaurian_slug: हां, बिल्कुल। वह शक्ति का हिस्सा है। कोई भी संस्करण जिसे जानबूझकर अपंग नहीं किया गया है, उसका संकलक / दुभाषिया रनटाइम पर उपलब्ध होगा। इसलिए, उदाहरण के लिए, एक डेवलपर अपने वेब सर्वर पर एक विशेष कनेक्शन में लॉग इन कर सकता है, कुछ डिबगिंग कर सकता है, कुछ वर्ग और फ़ंक्शन परिभाषाओं को अपडेट कर सकता है, और संभवतः उन परिभाषाओं पर भरोसा कर सकता है जो ज़रूरत पड़ने पर निर्भर करती हैं। जबकि सर्वर के ऊपर और चल रहा है। शायद एसओएक्स अनुपालन के बारे में चिंतित एक उद्यम में कानूनी नहीं है, लेकिन यही एक कारण है कि उद्योग जावा और सी # जैसे
जेम्स


46

जटिल वाक्यविन्यास ??

लिस्प के लिए वाक्यविन्यास अविश्वसनीय रूप से सरल है

किलर ऐप लिस्प में लिखा गया है: emacs । लिस्प आपको लगभग कुछ भी करने के लिए इच्छाशक्ति का विस्तार करने की अनुमति देगा जो आप सोच सकते हैं कि एक संपादक कर सकता है।

लेकिन , आपको केवल लिस्प सीखना चाहिए यदि आप चाहते हैं, और आपको कभी भी काम पर उपयोग करने के लिए नहीं मिल सकता है, लेकिन यह अभी भी बहुत बढ़िया है।

इसके अलावा, मैं यह भी जोड़ना चाहता हूं: यहां तक ​​कि अगर आपको ऐसी जगहें मिलती हैं, जहां लिस्प का कोई मतलब नहीं होगा, तो आप शायद किसी और को यह विश्वास नहीं दिलाएंगे कि इसका उपयोग जावा, सी ++, सी #, अजगर, रूबी, आदि पर किया जाना चाहिए।


@ जस्टिन: यह शायद ध्यान देने योग्य है कि एमएसीएस कोर सी में लिखा गया है। लेकिन यह सिर्फ नाइट-पिकिंग है - सभी आदेशों को लिखित रूप में लिखा गया है।
बर्नार्ड

3
या यों कहें - आम लिस्प का कोर सिंटैक्स सरल है। डिफामाक्रो सिंटैक्स का विस्तार करने की अनुमति देता है, और मैक्रोज़ में निर्मित कुछ (जैसे कि डीफैक्रो) अविश्वसनीय रूप से जटिल हो सकता है; लैम्ब्डा सूची, नेस्टेड बैककॉस्ट, आदि
हारून

Emacs के C part को गोंद कोड कहना लगभग उचित है।
लुका रामाविवि

Emacs संदर्भ पुस्तिका के अनुसार, "Emacs में अधिकांश संपादन कमांड लिस्प में लिखे गए हैं; कुछ अपवाद लिस्प में लिखे जा सकते थे लेकिन दक्षता के लिए C का उपयोग करें।" gnu.org/software/emacs/manual/html_mono/emacs.html#Intro
dpritch

25

मैं पहले हाथ के अनुभव से जवाब नहीं दे सकता लेकिन आपको यह पढ़ना चाहिए कि पॉल ग्राहम ने लिस्प पर क्या लिखा है । "हत्यारा-ऐप" भाग के लिए, बीटिंग एवरेज पढ़ें ।


2
+1। इस उत्तर में याहू स्टोर्स का उल्लेख होना चाहिए, जो पहले वेब ऐप था, आंशिक रूप से लिस्प में लिखा गया था। उद्धरण विकिपीडिया: 1998 में, याहू! इंक। याहू के 455,000 शेयरों के लिए Viaweb खरीदा! स्टॉक, लगभग $ 49 मिलियन का मूल्य, और इसका नाम बदलकर याहू! दुकान।
स्टीवन लू

17

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


9

यदि आप प्रोग्रामिंग पसंद करते हैं, तो आपको इसके शुद्ध आनंद के लिए लिस्प सीखना चाहिए। XKCD पूरी तरह से उस बौद्धिक ज्ञान को व्यक्त करता है जो आगे बढ़ता है। लर्निंग लिस्प प्रोग्रामर के लिए है कि बौद्ध भिक्षु के लिए क्या ध्यान है (और इसका मतलब यह था कि बिना किसी निंदा के)।


9

लिस्प थोड़ा डीएसएल बनाने के लिए बहुत उपयोगी है। मुझे काम पर चलने वाले एक बॉक्स में लिस्प की एक प्रति मिली है और मैंने SQL सर्वर डेटाबेस से पूछताछ करने और C # में डेटा लेयर आदि उत्पन्न करने के लिए थोड़ा डीएसएल लिखा है। मेरे सभी बॉयलर प्लेट कोड अब लिस्प मैक्रोज़ में लिखे गए हैं जो C # को आउटपुट करते हैं। मैं HTML, XML, इसके साथ सभी प्रकार की चीजें उत्पन्न करता हूं। जबकि मैं चाहता हूं कि मैं रोजमर्रा की कोडिंग के लिए लिस्प का उपयोग कर सकता हूं, लिस्प व्यावहारिक लाभ ला सकता है।


मैं इसके लिए dotlisp.sourceforge.net/dotlisp.htm का उपयोग करता हूं
मार्क हर्ड

5

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

(defun quicksort (lis) 
  (if (null lis) 
      nil
      (let* ((x (car lis)) 
             (r (cdr lis)) 
             (fn (lambda (a) 
                   (< a x))))
         (append (quicksort (remove-if-not fn 
                                           r)) 
                 (list x)
                 (quicksort (remove-if fn 
                                       r))))))

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

1
इसे थोड़ा सरल बनाने के लिए आप मानक letका उपयोग कर सकते हैं और defunफ़ंक्शन की शुरुआत fnमें इसे परिभाषित करने के लिए उपयोग कर सकते हैं क्योंकि यह नहीं बदलता है।
आरोन रॉबसन

4
@FerretallicA आप किस आधार पर यह निर्धारित करते हैं कि कुछ "आसानी से पढ़ने योग्य मानव" या "स्वयं का वर्णन" है? अंग्रेजी से समानता? क्या चीनी "आसानी से पढ़ने योग्य मानव" है? गणितीय संकेतन के बारे में क्या? क्या यह "आसानी से पढ़ने योग्य मानव नहीं है"? इस तरह की दलील गीदड़-भभकियों को परेशान करने वाली है, क्योंकि इसका छिपा हुआ संदेश है: "यह उस तरह नहीं दिखता है जैसा मैंने पहली बार तर्क करने के लिए सीखा था।"

3
आपके 'खंडन' की तरह "व्हिंजिंग व्हिंज" अधिक लगता है। प्रोग्रामिंग भाषा सूँघने की कोशिश करो। किसी ऐसे व्यक्ति को लें जिसने पहले प्रोग्राम नहीं किया है और उन्हें वीबी कोड का एक पेज और लिस्प कोड का एक पेज दिखाया है। मैं खुशी से अपने बाएं नट पर शर्त लगाऊंगा कि दोनों में से कौन सा आकस्मिक पर्यवेक्षक अधिक आसानी से सार्थक टिप्पणियों को आकर्षित करने में सक्षम होगा।
नथानचेरे

1
मुझे आश्चर्य है कि एक चीनी, जापानी, कोरियाई, सुमेरियन, हिंदी या अरबी गैर-प्रोग्रामर आपकी दलील को तर्कहीन तर्क के लिए अपने अंडकोष छोड़ने की इच्छा के बारे में सोचेंगे।

4

मैंने पाया कि एक नई भाषा सीखना, हमेशा आपकी प्रोग्रामिंग शैली को उन भाषाओं में प्रभावित करता है जिन्हें आप पहले से जानते हैं। मेरे लिए यह हमेशा मुझे अपनी प्राथमिक भाषा में एक समस्या को हल करने के लिए अलग-अलग तरीकों से सोचने लगा, जो कि जावा है। मुझे लगता है कि सामान्य तौर पर, यह प्रोग्रामिंग की अवधि में आपके क्षितिज को चौड़ा करता है।


यह इसलिए है क्योंकि आप एक अच्छे प्रोग्रामर हैं। खराब प्रोग्रामर, नए ज्ञान के साथ पुराने कौशल को प्रभावित करने के बजाय, नए लोगों में लिखते समय पहले से ही ज्ञात भाषाओं में सोचते हैं। लेकिन आप लिस्प के बाद जावा का उपयोग क्यों कर रहे हैं? :) Lisp, imo के बाद जावा का उपयोग करना सबसे कठिन है।
लुका रामाविवि

4

यदि आपको अपने आप से पूछना है कि क्या आपको लिस्प सीखना चाहिए, तो आपको शायद इसकी आवश्यकता नहीं है।


8
मैं इसके विपरीत कहूंगा: यदि आप पहले से ही लिस्प को समझते हैं क्योंकि आपके पास एक समान भाषा के साथ अनुभव है तो यह आवश्यक नहीं है। यदि आपको समझ में नहीं आता है कि लिस्प को क्या पेशकश करनी है, तो आप एक्सपोज़र से लाभ उठा सकते हैं।
श्री फूज़

@MrFooz ऐसी कोई भाषा नहीं है जो लिस्प के लिस्पी भाग को सीखने की आवश्यकता को दूर कर सके। लिस्प की मुख्य विशेषताएं किसी भी भाषा में नहीं पाई जाती हैं। हालांकि अधिकांश हैं।
लुका रामाविवि

आपके लक्ष्यों पर निर्भर करता है। यदि आप मरना चाहते हैं, तो आपको सांस लेने की आवश्यकता नहीं है। लेकिन इसका मतलब यह नहीं है कि आपको नहीं करना चाहिए।
मिमोरिला

4

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

यह दो दशक बाद तक नहीं था, जब मैंने लिस्प में अपनी रुचि को फिर से जागृत किया, कि मैंने "लिस" को "प्राप्त" करना शुरू कर दिया, जो मेरे लिए वैसे भी दिलचस्प है। यदि आप अपने दिमाग को बंद और लिस्प मैक्रोज़ द्वारा उड़ाए बिना लिस्प सीखने का प्रबंधन करते हैं, तो आप शायद इस बिंदु से चूक गए हैं।


मुझे भी वह पता हैं। मैं वर्तमान में स्कूल से 5 साल के लिस्प में अपने दूसरे प्रवेश पर हूँ। लिस्प का एक शब्द जब आप अभी भी हरे हैं, तो पर्याप्त प्रभाव नहीं हो सकता है - मुझे याद है कि केवल मेटाप्रोग्रामिंग पर ध्यान केंद्रित करना, और अभी तक मेटाप्रोग्रामिंग और लचीलेपन के लिए सराहना नहीं है।
एरन

4

LISP / योजना सीखना आपको कोई बढ़ा हुआ स्थान नहीं दे सकता है, लेकिन यह आपको कार्यात्मक प्रोग्रामिंग, इसके नियमों और इसके अपवादों की बेहतर समझ पाने में मदद करेगा।

यह केवल छह नेस्टेड शुद्ध कार्यों की सुंदरता में अंतर जानने के लिए, और साइड इफेक्ट्स के साथ छह नेस्टेड कार्यों के दुःस्वप्न के समय के निवेश के लायक है।


4

से http://www.gigamonkeys.com/book/introduction-why-lisp.html

लिस्प के बारे में सबसे अधिक दोहराए जाने वाले मिथकों में से एक यह है कि यह "मृत" है। हालांकि यह सच है कि कॉमन लिस्प का व्यापक रूप से उपयोग नहीं किया जाता है, जैसे कि, Visual Basic या Java, यह एक ऐसी भाषा का वर्णन करने के लिए अजीब लगता है जो नए विकास के लिए उपयोग की जाती है और जो नए उपयोगकर्ताओं को "मृत" के रूप में आकर्षित करना जारी रखती है। हाल ही में लिस्प की कुछ सफल कहानियों में पॉल ग्राहम की वायावेब शामिल हैं, जो याहू स्टोर के रूप में तब बन गई जब याहू ने उनकी कंपनी खरीदी; ITA सॉफ्टवेयर का एयरफ़ेयर मूल्य निर्धारण और खरीदारी प्रणाली, QPX, जिसका उपयोग ऑनलाइन टिकट विक्रेता Orbitz और अन्य द्वारा किया जाता है; PlayStation 2, Jak और Daxter के लिए शरारती डॉग का खेल, जो काफी हद तक एक डोमेन-विशिष्ट लिस्प बोली में लिखा गया है शरारती डॉग का आविष्कार GOAL नामक है, जिसका कंपाइलर खुद कॉमन लिस्प में लिखा गया है; और रूम्बा, ऑटोनॉमस रोबोट वैक्यूम क्लीनर, जिसका सॉफ्टवेयर L में लिखा गया है, कॉमन लिस्प का एक सर्वथा संगत उपसमूह है। शायद और भी अधिक बता रहा है कि कॉमन- लिस्प.नेट वेब साइट की वृद्धि, जो कि ओपन-सोर्स कॉमन लिस्प परियोजनाओं को होस्ट करती है, और पिछले कुछ वर्षों में स्थानीय लिस्प उपयोगकर्ता समूहों की संख्या में वृद्धि हुई है।


4

"लिस्फ़ गहन ज्ञान प्राप्त करने के अनुभव के लिए सीखने लायक है, जब आपके पास होगा जब आप इसे अंततः प्राप्त करेंगे; वह अनुभव आपको अपने बाकी दिनों के लिए एक बेहतर प्रोग्रामर बना देगा, भले ही आप वास्तव में कभी भी लिस्प का उपयोग न करें।"

- एरिक एस रेमंड, "हैकर कैसे बनें"

http://www.paulgraham.com/avg.html


3

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

लेकिन अगर आप इसे सीखने जा रहे हैं ... हर तरह से, लिस्प पर पढ़ें


छोटे नोट: लिस्प पर लिस्प का उपयुक्त परिचय नहीं है, पहले कुछ और पढ़ें। मैं प्रैक्टिकल कॉमन लिस्प की सलाह देता हूं।
लुइसे ओलिवेरा

3

सीखने की लिस्प पूरी तरह से अलग प्रकाश में जावास्क्रिप्ट डाल देगा! लिस्प वास्तव में आपको पुनरावृत्ति और संपूर्ण "प्रथम श्रेणी की वस्तुओं के रूप में कार्य" करने के लिए मजबूर करता है। योजना बनाम जावास्क्रिप्ट पर क्रॉकफोर्ड उत्कृष्ट लेख देखें । जावास्क्रिप्ट शायद आज के आसपास सबसे महत्वपूर्ण भाषा है, इसलिए इसे बेहतर ढंग से समझना बेहद उपयोगी है!


1
सबसे महत्वपूर्ण भाषा? मुझे लगता है कि नहीं, सर।
ट्रॉमापॉनी

7
ठीक है, यह बहुत अधिक किसी भी डिवाइस पर उपलब्ध है, जिसमें एक वेब ब्राउज़र है (और शायद कुछ ऐसा नहीं है), जहां तक ​​अंत उपयोगकर्ता एप्लिकेशन चलाने के लिए भाषाएं हैं, यह संभवतः ग्रह पर किसी भी प्रोग्रामिंग भाषा की उच्चतम पैठ है। । जाहिर है कि आप क्या महत्वपूर्ण है पर एक पूरी तरह से अलग राय हो सकती है। क्या इसका इस्तेमाल कैंसर को ठीक करने के लिए किया जाएगा? शायद ऩही। लेकिन, यह पसंद है या नहीं, यह आने वाले वर्षों के लिए (वेब) अनुप्रयोग विकास के कोने के पत्थरों में से एक होगा।
Erlend Halvorsen

1
मैं वैसे ही चला गया! हालाँकि मैं पहले से ही जावास्क्रिप्ट की कार्यात्मक और प्रोटोटाइप सुविधाओं का उपयोग कर रहा था, लेकिन सीखने के बाद लिस्प जावास्क्रिप्ट मेरे लिए एक नई भाषा थी।
लुका रामाविवि


3

ठीक है, मैं अजीब हो सकता हूं, लेकिन मुझे वास्तव में पॉल ग्राहम के निबंध पसंद नहीं हैं, अगर आपके पास पहले से ही कॉमन लिस्प की कुछ समझ नहीं है, तो लिस्प पर बहुत कुछ और लिस्प वास्तव में बहुत ज्यादा चलने वाली किताब है। इसके बजाय, मैं कहूंगा कि सीबेल के प्रैक्टिकल कॉमन लिस्प के लिए जाना चाहिए । "किलर-एप्स" के रूप में, कॉमन लिस्प आईटीए की तरह आला दुकानों में अपनी जगह तलाशती है , इसलिए जब तक सीएल का पर्यायवाची नहीं बन जाता है, जिस तरह से रूबी रूबी के लिए उद्योग में जगह हैं जो इसका उपयोग करते हैं। थोड़ी खुदाई।


2

जटिल सिंटेक्स? लिस्प की सुंदरता यह है कि इसमें एक हास्यास्पद सरल वाक्यविन्यास है। यह सिर्फ एक सूची है, जहां सूची के प्रत्येक तत्व या तो एक अन्य सूची या प्राथमिक डेटा प्रकार हो सकते हैं।

यह सीखने के लायक है क्योंकि यह आपके कोडिंग क्षमता के बारे में सोचने और कार्यों को केवल एक अन्य डेटा प्रकार के रूप में उपयोग करने के लिए बढ़ाता है। यह आपके द्वारा अनिवार्य और / या ऑब्जेक्ट-ओरिएंटेड भाषा में कोड के तरीके में सुधार करेगा क्योंकि यह आपको मानसिक रूप से अधिक लचीला बनाने की अनुमति देगा कि आपका कोड कैसे संरचित है।


2

अन्य उत्तरों में जोड़ने के लिए:

क्योंकि SICP कोर्स (वीडियो यहाँ उपलब्ध हैं ) कमाल का है: आपको लिस्प और बहुत कुछ सिखाता है !


2

किलर ऐप? फ्रांज इंक की सफलता की कहानियों की एक लंबी सूची है , लेकिन इस सूची में केवल एलेग्रोएलसीएल के उपयोगकर्ता शामिल हैं ... संभवतः अन्य हैं। मेरी पसंदीदा शरारती कुत्ते के बारे में कहानी है , क्योंकि मैं क्रैश बैंडिकूट गेम्स का बहुत बड़ा प्रशंसक था।

कॉमन लिस्प सीखने के लिए, मैं प्रैक्टिकल कॉमन लिस्प सुझाऊंगा । यह एक हाथ से दृष्टिकोण है कि कम से कम मेरे लिए मेरे द्वारा देखी गई अन्य पुस्तकों की तुलना में आसान है।


2

आप क्लोज़र का उपयोग कर सकते हैंजावा वीएम के शीर्ष पर परीक्षण और स्क्रिप्ट लिखने के लिए आज । जेवीएम पर लागू होने वाली अन्य लिस्प भाषाएं हैं, मुझे लगता है कि क्लोजर जावा के साथ एकीकरण का सबसे अच्छा काम करता है।

ऐसे समय होते हैं जब जावा भाषा स्वयं जावा कोड ("पारंपरिक वाणिज्यिक प्रोग्रामिंग" सहित) के लिए परीक्षण लिखने के तरीके से मिलती है। (मेरा मतलब यह नहीं है कि जावा के एक अभियोग के रूप में - अन्य भाषाएं एक ही समस्या से ग्रस्त हैं - लेकिन यह एक तथ्य है। चूंकि विषय, जावा नहीं, मैं विस्तृत नहीं होगा। कृपया एक नया विषय शुरू करने के लिए स्वतंत्र महसूस करें। कोई इस पर चर्चा करना चाहता है।) क्लोजर उन कई बाधाओं को दूर करता है।


2

लिस्प का उपयोग कहीं भी किया जा सकता है जहां आप पारंपरिक प्रोग्रामिंग का उपयोग करते हैं। यह अलग नहीं है, यह सिर्फ अधिक शक्तिशाली है। वेब ऐप लिखना? आप इसे लिस्प पर कर सकते हैं, एक डेस्कटॉप एप्लीकेशन लिख रहे हैं? आप इसे लिस्प पर कर सकते हैं, जो भी हो, आप इसे संभवतः लिस्प, या पायथन, या किसी अन्य सामान्य प्रोग्रामिंग पर कर सकते हैं (कुछ भाषाएँ हैं जो केवल एक कार्य के लिए उपयुक्त हैं)।

सबसे बड़ी बाधा संभवतः आपके बॉस, आपके साथियों या आपके ग्राहकों की स्वीकृति होगी। वह कुछ है जो आपको उनके साथ काम करना होगा। क्लोजर जैसा एक व्यावहारिक समाधान चुनना जो जावा इन्फ्रास्ट्रक्चर के वर्तमान इंस्टॉलेशन बेस का लाभ उठा सकता है, जेवीएम से पुस्तकालयों तक, आपकी मदद कर सकता है। इसके अलावा, यदि आपके पास जावा प्रोग्राम है, तो आप प्लग-इन आर्किटेक्चर कर सकते हैं और इसके लिए क्लॉजुर प्लग-इन लिख सकते हैं और क्लोजर में अपना आधा कोड लिख सकते हैं।


1

कोई कारण नहीं लेकिन (तुच्छ) ऑटोकैड में LISP और DCL रनटाइम समर्थन है। यदि आप VBA या उनके C ++ या .NET SDK का उपयोग नहीं करना चाहते हैं, या एक DIESEL अभिव्यक्ति इसे काट नहीं करता है, तो जटिल मैक्रोज़ (ActiveX स्वचालन सहित) लिखने का एक सुविधाजनक तरीका है।

ऑटोकैड के बहुत सारे कार्य वास्तव में एलआईएसपी रूटीन हैं।


1

यह एक ऐसा विषय है जिसे मैंने स्वयं कुछ समय के लिए टटोला है, लेकिन मैं वास्तव में एक निर्णय पर नहीं आया हूं, क्योंकि सामान्य समय मुख्य समस्या है; ...)

और जब से मैं इस लिंक को इस पोस्ट में नहीं पा सकता हूँ, मैं उन्हें सार्वजनिक हित के लिए जोड़ देता हूँ:

सफलता और असफलता की कहानी: जेपीएल में लिस्पिंग

वास्तव में प्रभावशाली सफलता की कहानी: ऑर्बिटज़ कॉर्पोरेशन में लिस्प का उपयोग

जावा के बजाय लिस्प का उपयोग करना है या नहीं इसकी तुलना और विश्लेषण: जावा के विकल्प के रूप में लिस्प


0

सिंटेक्स अप्रासंगिक है, पठनीयता नहीं है!



0

किलर ऐप? ITA सॉफ्टवेयर द्वारा उड़ान खोज इंजन एक है।

"क्यों" के रूप में, यह संभवतः आपको बेहतर डेवलपर बना देगा और आपको एक बदतर बनाने की संभावना नहीं है। हालाँकि, यह आपको अन्य भाषाओं की लिस्प बोलियों को पसंद कर सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.