2008-09-19 18 views
13

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

क्या हास्केल, एमएल, या किसी अन्य पारंपरिक कार्यात्मक भाषाओं का उपयोग करके वेब सेवा बनाना संभव है, या क्या स्कैला या एफ # के साथ जाना बेहतर होगा? कोई अन्य सुझाव?

+0

http://stackoverflow.com/questions/105834/does-the-jvm-prevent-tail-call-optimizations आपके दावे के बारे में पूछता है पुन: पूंछ रिकर्सन। क्या आप यहां या वहां विस्तार कर सकते हैं? – rcreswick

+0

उपकरण अनुशंसा के रूप में बंद करने और बहुत व्यापक वोटिंग। –

+1

@Ciro Santilli - मैं सहमत हूं, विशेष रूप से अब इस तरह के प्रश्नों के लिए एक प्रोग्रामर स्टैक एक्सचेंज साइट है। – Sam

उत्तर

10

यदि .NET प्लेटफ़ॉर्म के लिए एक विकल्प है, तो अपने युवाओं की वजह से F # को छूट न दें। चूंकि यह आधिकारिक उत्पाद बनने के करीब आता है, यह विजुअल स्टूडियो के साथ बेहतर और बेहतर एकीकरण हो रहा है और .NET द्वारा प्रदान की जाने वाली सभी भलाई को विरासत में मिला है।

माइक्रोसॉफ्ट और उत्साही समुदाय दोनों के द्वारा सक्रिय और सुलभ समर्थन भी है।

0

हालांकि मैं इसकी अनुशंसा नहीं कर सकता क्योंकि मैं अभी भी इसके साथ खेल रहा हूं, एरलांग बहुत शक्तिशाली है।

5

हास्केल:

इस सवाल पर एक नज़र डालें: What is the simplest way to write web apps in Haskell?

असल में, WASH, HAppS और Janus पल में हास्केल में तीन बड़े होते हैं। मेरा वोट HAppS के लिए है, इस समय सबसे अच्छा tutorial है।

HSP भी है लेकिन मैंने इसे हाल ही में देखा नहीं है या इसके बारे में सोचा नहीं है।

2

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

अस्वीकरण: एआरसी या पॉल ग्राहम

8

OCaml के साथ संबद्ध नहीं Ocsigen/Eliom है ... मैं नहीं कह सकता कि मैं इसे का उपयोग किया है, हालांकि। यह शुरुआती चरणों में भी है।

+1

मैं अब कुछ हफ्तों के लिए ओसीसीजन का उपयोग कर रहा हूं, और इसके लिए बहुत अच्छी तरह से काम कर सकता हूं। यह अब 1.2 पर भी है, इसलिए वे इसे वास्तविक संस्करण संख्या देने के लिए कम से कम आत्मविश्वास में हैं। –

5

एरलांग, Yaws के साथ। यह एक मजेदार, शक्तिशाली भाषा है, उल्लेखनीय रूप से अच्छी तरह से स्केल है, और 100 या 1000 प्रक्रियाओं का उपयोग सुरक्षित और आसान बनाता है। और आनंद।

(मैं भी लगता है कि यह सुंदर है।)

4

कृपया F# and ASP.NET पर इस परिचय जो आपको एक अच्छी शुरुआत दे देंगे पढ़ें।

वेब पर कई उदाहरण हैं जिनमें वेब अनुप्रयोगों में F # का उपयोग किया जाता है। उनमें से एक उदाहरण के लिए टॉमस पेट्रीसेक के autocompleter है, जिसे उन्होंने अपने लेख "F# Web Tools: Ajax applications made simple" पर एक उदाहरण के रूप में बनाया है। मैंने स्वयं एक webservice के हिस्से के रूप में F # का उपयोग किया है और मैं आपको गारंटी देता हूं कि यह अच्छी तरह से काम करता है :)।

1

रेडडिट लिस्प पर बनाया गया था, है ना? और Paul Graham speaks very highly इसकी चपलता, खासकर वेबएप के साथ।

-1

पिछली पीढ़ी की कार्यात्मक भाषाओं में ओसीसीगेन (ओकैमल के लिए) और हैपस (हास्केल के लिए) जैसे उपकरण हैं लेकिन उनके पास लगभग कोई उपयोगकर्ता नहीं है: वे पूरी तरह से अनचाहे सॉफ़्टवेयर हैं।

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

+0

एफ # हास्केल के विकास उपकरण से बहुत दूर है? FUD। – alternative

1

आप क्लोजर पर विचार कर सकते हैं - यह एक बहुत ही नई भाषा है, लेकिन स्केलेबल समवर्ती अनुप्रयोगों के लिए बहुत ही आशाजनक लग रहा है और इसमें बहुत अच्छा JVM एकीकरण और सभी जावा पुस्तकालयों (जैसे स्कैला की तरह) का लाभ है।

Clojure भी काफी कुछ डिजाइन सुविधाओं जो पूंछ प्रत्यावर्तन समस्या के समाधान मिलता है (विशेष पुनरावृत्ति होना निर्माण, कई प्रमुख कार्यों iteratively आदि लागू किया जाता है)

0

मैं Clojure के लिए सिफारिश से सहमत होना आवश्यक है। मैंने अभी news feed service written in Clojure का लोड टेस्ट समाप्त किया है जो एम 1.मेडियम ईसी 2 इंस्टेंस पर चल रहे प्रति क्लोजर वेब सर्वर प्रति सेकेंड 80 आउटबाउंड गतिविधि पोस्ट बनाए रखता है।