क्या लिस्प में (गंभीर) वेब विकास करना संभव है? [बन्द है]


99

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


2
निर्भर करता है कि आप "व्यावहारिक" से क्या मतलब है। संभव है, हाँ। व्यावहारिक, शायद अधिकांश के लिए नहीं। क्या आपने अपनी साइट को होस्ट करने की योजना बनाई है? क्या आप अपना स्वयं का समर्पित बॉक्स संचालित करने जा रहे हैं, जहाँ आपका रूट कंट्रोल होगा? आप इसमें कितना प्रयास करने को तैयार हैं?
कोर

लियोनार्डो, मैं अब इस विषय पर एक पुस्तक रख रहा हूं, और लिस्प में रुचि रखने वाले वेब डेवलपर्स से प्रतिक्रिया प्राप्त करना चाहूंगा। यदि आप चाहें, तो क्या आप मुझे बता सकते हैं कि आपको लिस्प का उपयोग करने का विचार कैसे आया, और आप ऐसी पुस्तक में क्या देखना चाहेंगे? vsedach@gmail.com
vsedach

@chris - मैंने हाल ही में अपने कुछ साइड प्रोजेक्ट्स के लिए स्कीम होस्टिंग की स्थापना की है; यह जितना मैंने सोचा था कि यह उतना
gcbenison

2
पॉल ग्राहम के निबंधों को पढ़ें। मुझे संदेह है कि वेब अनुप्रयोगों के लिए LISP का उपयोग करने की चर्चा में वह कुछ भी याद कर रहा है, साथ ही वह एक महान लेखक है। paulgraham.com/avg.html उनका मुख पृष्ठ है: paulgraham.com/index.html
केली एस। फ्रेंच

साथी गूगलेर्स: भयानक सीएल सूची में उत्तर के उत्तर और अधिक हैं ।
एहविंस

जवाबों:


82

हां, वेब विकास आज कॉमन लिस्प की ताकत में से एक है।

  • एक वेब सर्वर के रूप में, का उपयोग Hunchentoot , पूर्व tbnl के रूप में जाना, डॉ एडमंड वेईत्ज़ द्वारा।

    आप इसे रिवर्स प्रॉक्सी के रूप में, या स्टैंड-अलोन सर्वर के रूप में mod_proxy का उपयोग करके अपाचे के बैक-एंड के रूप में चला सकते हैं।

  • विभिन्न HTML पीढ़ी के समाधान उपलब्ध हैं, PHP- शैली के टेम्पलेट्स से लेकर लिस्प मैक्रो हैक तक XSLT। बस आप अपनी पिक ले लो।

    HTML-TEMPLATE एक उदाहरण है।

  • बंद एक्सएमएल एक्सएमएल पार्सिंग, क्रमांकन, एक्सपीथ 1.0, एक्सएसएलटी 1.0 के लिए उपलब्ध है। HTML टैग सूप पार्सिंग के लिए क्लोजर HTML भी है।

    (पूर्ण प्रकटीकरण: मैं बंद एक्सएमएल और क्लोजर HTML का अनुरक्षक हूं।)

  • यदि आप चाहें, तो Parenscript आपके जावास्क्रिप्ट अनुभव को लिस्पियर बना सकती है, लेकिन आप खुद भी सादे पुराने जावास्क्रिप्ट लिख सकते हैं, निश्चित रूप से।

    एक और अच्छा जावास्क्रिप्ट jwacs में समाधान को बढ़ाता है , जो कॉमन लिस्प में लिखा गया है और निरंतरता समर्थन को जोड़ने के लिए जावास्क्रिप्ट को बदल देता है।

  • वेब सेवा परियोजनाओं को सर्वर के अलावा HTTP क्लाइंट की आवश्यकता हो सकती है।

    Drakma आज के लिए उपयोग करने के लिए पुस्तकालय है।

    URI हेरफेर के लिए PURI उपयोगी है।

    और वहाँ अधिक है! एक प्रारंभिक बिंदु क्लिकी है, उदाहरण के लिए cliki.net/web

वेब पर, कोई भी नहीं जानता कि आपका सर्वर कॉमन लिस्प में लिखा है :-)


1
और यह केवल आम लिस्प के लिए है और केवल एक उपकरण है ...
अत्तिला लेंदवई


1
@MattBall woof याप। चीख़।
अप्रकाशित

इंटरनेट पर कोई भी आपके लिस्प सर्वर की चीख नहीं सुन सकता है।
kd4ttc

31

कॉमन लिस्प में वेब विकास प्रभावी और मजेदार दोनों है।

कुछ उदाहरण:

CL-WHO आपको एक बंद टैग को बिना फिर से HTML लिखने की अनुमति देता है।

वेबलॉक आपको रूपों को अंतर्निहित मान्यता के साथ औपचारिक रूप से परिभाषित करने देता है:

(defview signup (:type form :caption "Sign up")
  (username :satisfies #'valid-username)
  (password :present-as dual-password :parse-as dual-password)
  (receive-newsletter-p :present-as checkbox :parse-as predicate))

यह पूरी तरह से स्वचालित तरीके से AJAX का भी समर्थन करता है, यदि ब्राउज़र इसका समर्थन नहीं करता है तो सामान्य लिंक पर वापस गिरता है।

cl-prevalence SQL का एक अविश्वसनीय रूप से सरल विकल्प है।

काफी लोग मिशन-महत्वपूर्ण अनुप्रयोगों के लिए हाल ही में इन तकनीकों का उपयोग कर रहे हैं - सफलता के साथ।

वास्तव में सबसे महत्वपूर्ण सीएल ओपन-सोर्स प्रोजेक्ट में उत्कृष्ट सामुदायिक समर्थन होता है।


19

वेब विकास के लिए कुछ वेब रूपरेखाएँ हैं। अच्छी तरह से देखिए:

यदि आप अच्छी तरह से समर्थित लिस्प टूल चाहते हैं तो आपको उनके लिए भुगतान करना होगा। ओपन सोर्स टूल्स के आसपास बस एक बहुत बड़ा समुदाय नहीं है, इसलिए उनके पास दस्तावेजीकरण / गोद लेने के समान स्तर नहीं है, जैसे कि, पायथन पर Django।

यहाँ कुछ वाणिज्यिक लिस्प उत्पाद हैं:

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


वह कहते हैं कि पुस्तकालय "सबसे बड़ा मुद्दा" थे, लेकिन इसके ठीक पहले उन्होंने कहा कि "मेरे मैक पर रेडिट नहीं चलेगा"; उस समय, मैक के लिए केवल एक थ्रेडेड सीएल था, जो उनके निम्न-स्तरीय सॉकेट कोड को नहीं चला सकता था। ऐसा लगता है कि कम से कम एक सौदाकर्ता के रूप में ज्यादा है।
केन

3
मैं एक बड़ा लिस्प प्रशंसक हूं, यह मेरे लिए अजगर की जगह ले रहा है। लेकिन मैं सी ++ में काम करता हूं। मुझे अन्य पायथन प्रोग्रामर मिल सकते हैं जो पायथन प्रोटोटाइप को समझेंगे, लेकिन जब तक वर्तमान लिस्प पुनरुद्धार में अधिक सफलता नहीं होती, तब तक मैं बिना अंतहीन सवालों के काम में इसका उपयोग नहीं कर सकता "आपने पायथन या रूबी का उपयोग क्यों नहीं किया?"
हारून

10

मैं अन्य चौखटों से बात नहीं कर सकता, लेकिन मैंने एक वेबसर्वर के लिए हुंचेंटूट का उपयोग करके बहुत अच्छी किस्मत पाई है (यह अपने आप ठीक होता है, या आप इसे अपाचे के पीछे रख सकते हैं )। क्या यह वास्तव में चमकता है (यह शायद कुछ के लिए एक झटके के रूप में आएगा) पुस्तकालयों हैं!

  • लिस्-स्टाइल सिंटैक्स में सरल HTML लिखने के लिए CL-WHO का उपयोग करें
  • Parenscript आपको वह कोड लिखने की अनुमति देता है जो जावास्क्रिप्ट को संकलित करता है
  • डेटाबेस कनेक्टिविटी के लिए PostgreSQL से बात करने के लिए पोस्टमॉडर्न का उपयोग करें

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


क्या आप ऐसी किसी भी चीज़ के बारे में जानते हैं जो LISP को MongoDB के साथ हस्तक्षेप करने योग्य बनाती है?
MadPhysicist

9

इस मिथक को आगे बढ़ाने में मदद के लिए कि लिस्प वेब फ्रेमवर्क नहीं हैं, यहां वे हैं जिनका अभी तक उल्लेख नहीं किया गया है:

जाहिर है कि बहुत से लोगों को लगता है कि बहुत सारे वेब फ्रेमवर्क लिखने के लिए लिस्प काफी अच्छा है।

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

एडम पीटर्सन ने पिछले साल इस शैली में लिस्प वेब अनुप्रयोगों का निर्माण शुरू करने के लिए एक उत्कृष्ट परिचयात्मक ट्यूटोरियल प्रकाशित किया:

http://www.adampetersen.se/articles/lispweb.htm


8

मुझे लगता है कि कोई भी बिना ज्यादा घबराहट के हां कह सकता है।

  1. पहले HTTP सर्वर में से एक cl-http था

  2. DrScheme के आसपास के लोगों ने इस पर एक उत्कृष्ट राशि खर्च की है:

  3. www.franz.com उनके अपने वेबसर्वर (AllegroServer) और webframework (वेबपेज) पर चलता है

  4. यदि आप संदेह में हैं, तो एडी वेइट्ज से आम लिस्प पैकेजों की जांच करें। वे आम तौर पर काम करते हैं।

तो हाँ आम लिस्प के साथ "गंभीर" वेब-प्रोग्रामिंग कर सकते हैं। मैं अपने हिस्से के लिए वर्तमान में कुछ सामान्य लिस्प मार्ग या रूबी पर पटरियों का पालन करने के लिए अनिच्छुक हूं। मैं कुछ भी पसंद करते हैं। NET ....


4

पॉल ग्राहम की कंपनी वाएवेब ने कॉमन लिस्प में एक उत्पाद लिखा जो बाद में याहू की दुकानें बन गईं। जाहिरा तौर पर याहू ने बाद में इसे सी ++ में फिर से लिखा। लिस्प progamming के लिए काफी कुछ वेब संसाधन हैं।


1
यदि याहू के बारे में यह सच है, तो कुछ इसे सीएल की विफलता के रूप में एक वेब भाषा के रूप में देख सकते हैं। लेकिन मैं इसे वेब प्रोटोटाइप भाषा के रूप में सीएल की सफलता के रूप में देखूंगा।
gcbenison

3
मैं शायद ही फिर से एक विफलता पर विचार करूंगा, जैसा कि पॉल ग्राहम ने बीटिंग द एडवर्स पर खुद को नोटों में कहा था: "जनवरी 2003 में, याहू ने सी ++ और पर्ल में लिखे गए संपादक का एक नया संस्करण जारी किया। यह कहना मुश्किल है कि क्या यह कार्यक्रम नहीं है। अब लिस्प में लिखा गया है, हालांकि, इस कार्यक्रम को सी ++ में अनुवाद करने के लिए, उन्हें शाब्दिक रूप से एक लिस्प दुभाषिया लिखना पड़ा: सभी पेज-जनरेटिंग टेम्प्लेट की स्रोत फाइलें अभी भी हैं, जहां तक ​​मुझे पता है, लिस्प कोड। "
प्रोटिस्ट

किसी अन्य भाषा, c ++ में फिर से लिखने के लिए सामान्य लाइस्प में थ्रूवेब का प्रोटोटाइप नहीं बनाया गया था। इसका उद्देश्य उत्पादकों द्वारा लिस्प में लिखा और चलाना है, जो उनके द्वारा बताए गए विभिन्न स्पष्ट कारणों, भाषा शक्ति, तेजी से, हाँ प्रोटोटाइपिंग और तेजी से उत्पादन के कारण है, वह लिस्प को बहुत अच्छी तरह से जानते थे आदि वे इसे वे संस्करण के साथ चलाते हैं। लिस्प में लिखा है, इसके कुछ हिस्से वास्तव में लिस्प में थे। अफवाह के बाद उन्होंने इसे अफवाह के अनुसार फिर से लिखा, मुझे यकीन नहीं है। यह पाने वाले की पसंद है, thye भी vbasic, या पास्कल फोरट्रान में wirte सकता है।
sçuçu

2

आप इस प्रश्न में लिस्प वेब अनुप्रयोगों के लिए टूलिंग के बारे में कुछ सामान पा सकते हैं ।

यह स्टैक ओवरफ्लो पॉडकास्ट 27 को सुनने के लायक भी हो सकता है जहां रेडिट के लोग लिस्प पर एक वेबसाइट (और उनके पायथन पर स्विच) के उनके अनुभव के बारे में थोड़ी बात करते हैं।


2

राय अलग-अलग हैं। सामान्य ज्ञान यह है: बेहतर एक अलग भाषा का उपयोग करें, या एक अलग वेब स्टैक, जैसे LAMP, .NET, रूबी ऑन रेल्स, जावा। लिस्प में अच्छी तरह से ज्ञात सफल वेब परियोजना पॉल ग्राहम की वायावेब थीरेडिट को शुरू में लिस्प में लागू किया गया था, लेकिन फिर अजगर को बदल दिया गया । यदि आप लिस्प का उपयोग करने का निर्णय लेते हैं, तो सिबेल की पुस्तक देखें: प्रैक्टिकल कॉमन लिस्प


1
किसी भी मौका आपके अपने पोस्ट में थोड़ा और FUD जोड़ सकता है?
जॉकवे

@ युवल सही है। यह सामान्य ज्ञान है। रेडिट ने स्विच किया। मुझे लगता है कि पोस्ट पूछ रही है कि क्या उस सामान्य ज्ञान के पीछे कोई सच्चाई है।
स्टीव रोव

1
@ जिक्रवे और स्टीव रो - एक कारण के लिए सामान्य ज्ञान है। मुझे नहीं लगता कि यह FUD है। मैंने ViaWeb के बाद से LISP में लिखी गई एक सफल वेब साइट के बारे में नहीं सुना है। अगर मैं गलत हूं तो कृपया मुझे सुधारें। मेरा मानना ​​है कि प्रोग्रामिंग भाषा का इस्तेमाल विचारधारा के बजाय उनकी योग्यता के अनुसार किया जाना चाहिए।
युवल एफ


0

एलेग्रो कॉमन लिस्प पर एक नजर। इसमें कुछ पुस्तकालय हैं, जिनमें एक वेब सर्वर शामिल है, विशेष रूप से वेब विकास के लिए।

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