वेब सेवाओं के लिए हास्केल बनाम एरलैंग


30

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

मुझे हास्केल का मजबूत टाइप सिस्टम और शुद्धता पसंद है। मुझे लगता है कि इससे वास्तव में विश्वसनीय कोड लिखना आसान हो जाएगा। और मुझे लगता है कि हास्केल की शक्ति मुझे कुछ आसान करना चाहती है।

माइनस साइड में मुझे यह महसूस होता है कि हास्केल पर वेब सामान करने के लिए कुछ फ्रेमवर्क जैसे यसोड उनके एर्लांग काउंटर भागों के रूप में उन्नत नहीं हैं।

मैं थ्रेड्स के लिए एरलंग दृष्टिकोण और गलती सहिष्णुता को पसंद करता हूं। मुझे लगता है कि एर्लैंग की मापनीयता एक प्रमुख प्लस हो सकती है।

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


4
यदि आप आवश्यकताओं को निर्दिष्ट नहीं करते हैं, तो यह बताना असंभव है। बस एक सिक्का या ऐसा ही कुछ फेंक दो।
विटोर पाय

1
मेरे पास इस निष्कर्ष का कोई सबूत नहीं है, लेकिन फेसबुक का एर्लैंग का उपयोग मुझे इंगित करता है कि यह शक्तिशाली और विश्वसनीय दोनों है।
मत्ती

1
@ मैथ्यू: फेसबुक अपने चैट सिस्टम के लिए एर्लांग का उपयोग करता है, संभवतः इसके व्यापक समानांतर गुणों के लिए।
रॉबर्ट हार्वे


8
एक पुरानी कमोडोर 64 पत्रिका में, उनके पास नकली भाषाओं पर एक लेख था। सबसे अच्छा एक "लिथप" था, जो बिल्कुल लिस्प की तरह था, सिवाय इसके कि 'एस' वर्ण को बाहर रखा गया था। इसने सभी 'लिथ' डेवलपर्स को 'एस' के लिए 'वें' स्थानापन्न करने के लिए मजबूर किया। :)
बेरिन लोरिट्स

जवाबों:


17

मेरे पास एकमात्र प्रश्न यह है कि आपकी वेब सेवा क्या कर रही है? यदि वेब सेवा वास्तव में एक कार्यात्मक समस्या है, तो हास्केल एक बेहतर फिट होगा।

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

प्रक्रियात्मक और कार्यात्मक प्रोग्रामिंग के बीच अंतर के अवलोकन के लिए यह पृष्ठ * देखें । (सियान पृष्ठ पर बदसूरत काले के लिए अग्रिम में माफी)।

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

(* Wayback मशीन के माध्यम से लिंक। मूल फ़ाइल को हटा दिया गया है)


यह ऐसा कुछ होने जा रहा है जो सोशल नेटवर्क की तरह दिखता है। इस बिंदु पर एक 90% संभावना है कि यह हैस्केल में किया जाएगा।
ज़ाचरी के

12
एरलंग एक क्रियात्मक भाषा है, प्रक्रियात्मक भाषा नहीं है। इसमें पैटर्न मिलान के लिए बहुत समर्थन है और यह प्रति बिट से मेल खाने वाला अद्वितीय पैटर्न है जो नेटवर्क सेवाओं को करते समय बहुत सहायक होता है।
जोनास

@Berin हमेशा बाहरी लिंक के साथ समस्या है, यह अब मर चुका है।
thecoshman

@thecoshman, मेरी आशंकाएँ ... 3 साल बाद मैं उस सामग्री को याद भी नहीं कर सकता, जो पेज पर हुआ करती थी।
बेरिन लोरिट्स

कोई चिंता नहीं: डी ¬_¬ बस इसे फिर से कभी नहीं होने दें। (इससे पहले कि लोगों को बाहर कर रहा हूँ, मैं मजाक कर रहा हूँ)
thecoshman

11

आपके द्वारा उल्लेखित दो के बीच, निश्चित रूप से हास्केल अकादमिक है, जबकि एरलंग का उपयोग वास्तविक जीवन में उच्च-मापनीय परियोजनाओं में किया जाता है। इसलिए वेब सेवाओं के लिए मैं Erlang चुनूँगा।

लेकिन मैं कहूंगा कि आपके पास तीसरी पसंद है: स्काला , एक ऐसी भाषा जो हास्केल और एर्लैंग दोनों से काफी प्रभावित है। इसका उपयोग Twitter या Foursquare जैसी शीर्ष पायदान वेब सेवाओं के निर्माण के लिए किया जाता है। यहां तक ​​कि लिफ्ट , एक वेब फ्रेम है जो रेल और Django से प्रेरित है, हालांकि थोड़ा अलग, अधिक कार्यात्मक दृष्टिकोण के साथ। Foursquare Lift का उपयोग कर रहा है।


2
बहुत अंतिम वाक्य को छोड़कर, आपके उत्तर से सहमत हैं। लिफ्ट रेल से बहुत अलग है। रेल मॉड्यूलर है, लिफ्ट अखंड है। रेल एक MVC फ्रेमवर्क है, लिफ्ट नहीं है। रेल वस्तु उन्मुख है, लिफ्ट अधिक कार्यात्मक है।
dbyrne

@ डर्बीने: ठीक है, संपादित
vartec

3
वेब सेवाओं के लिए स्काला के साथ समस्या यह है कि सबसे लोकप्रिय जावा एप्लिकेशन सर्वर इरलांग और हास्केल में लिखे गए सर्वरों की तुलना में वास्तव में खराब हैं।
जोनास

1
@ जोनास: उदाहरण के लिए vert.x vertx.io है
vartec

Lala अब Scala के लिए वास्तविक संरचना नहीं है। यह अब Play है , जो पूरी तरह से MVC और स्टेटलेस है। मैं जवाब से सहमत हूं। वास्तविक दुनिया के लिए स्काला एक बेहतर विकल्प है। अर्लंग और हास्केल की तुलना में स्काला डेवलपर्स प्राप्त करना आसान है।
जूस 12

7

आमतौर पर मैं कहता हूं: "जहाँ तक संभव हो अपने आराम के क्षेत्र से चीजें सीखें, यह आपको एक बेहतर प्रोग्रामर बना देगा, भले ही आप इसे अभ्यास में कभी इस्तेमाल न करें"।

इस मामले में, इसका मतलब शायद हास्केल हो सकता है; लेकिन Erlang केवल नहीं होता जा रहा है लगभग सामाजिक रूप से स्वीकार्य; लेकिन कई अन्य 'व्यावहारिक' प्लेटफार्मों पर मुख्य बिंदु (प्रकाश प्रक्रियाएं, संदेश पारित करना, विशाल मापनीयता) आ रहे हैं, इसलिए सीखे गए पाठों में अधिक 'वास्तविक' कार्य पर बड़ी और तत्काल प्रयोज्यता है।

मेरी सलाह: यदि यह मनोरंजन के लिए है, तो हास्केल करें। यदि यह प्रशिक्षण के लिए है, तो एरलांग जाओ।


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