कार्यात्मक प्रोग्रामिंग की वास्तविक दुनिया कार्यान्वयन? [बन्द है]


9

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

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

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


5
"और मुझे लगता है कि हर भाषा कम से कम एक चीज पर बहुत अच्छी है, क्योंकि यह एक विशिष्ट क्षेत्र या क्षेत्र में एक मानक बन जाती है" जो आम तौर पर सच है। यह सोचना एक खतरनाक धारणा है कि भाषाएं किसी तरह "विशेष" होती हैं। कुछ भाषाओं में niches हैं, लेकिन यह सामान्य रूप से सच नहीं है।
S.Lott

6
"मुझे नहीं पता कि कैसे और कहाँ शुरू करना है।" क्या आप ट्यूटोरियल के साथ शुरू करने से रोकता है? क्या आप बता सकते हैं कि इन भाषाओं के लिए ट्यूटोरियल उपयोगी या उपयोगी क्यों नहीं हैं?
S.Lott

"सी ++ और जावा" बहुत, बहुत कम एक दूसरे के साथ क्या करना है।
15-16 बजे डेडएमजी

क्या मैं आपको यह बता सकता हूं कि वास्तव में आपको क्लोज़र या लिस्प सीखने के लिए प्रेरित किया गया था, इस कारण से कि वे कार्यात्मक प्रोग्रामिंग प्रतिमान का पालन करते हैं?
15

3
जब आप "वास्तविक समय" कहते हैं, तो क्या आप किसी भी संयोग से "वास्तविक दुनिया" का मतलब है? यह इस प्रश्न के संदर्भ में कुछ अधिक समझ में आता है।
sepp2k

जवाबों:


13

आप कहते हैं कि वास्तविक दुनिया में कार्यात्मक प्रोग्रामिंग, मुझे लगता है कि एर्लांग।

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

http://www.erlang.org/


3
+1 कोरटेरियो! इसके अलावा, मैं यह जोड़ना चाहूंगा कि कार्यात्मक भूमि में शुरुआती लोगों के लिए, "शुद्धतम" कार्यात्मक भाषा हास्केल के आसपास होगी :)
यति सगाडे

5

स्टैनफोर्ड यूनिवर्सिटी द्वारा कार्यात्मक प्रोग्रामिंग पर एक महान व्याख्यान श्रृंखला है। आप उन्हें YouTube पर देख सकते हैं।

मैं आपको LISP के बजाय स्कीम देखने की सलाह दूंगा। योजना आगे के संवर्द्धन के साथ लिस्प का एक संशोधित संस्करण है। स्कीम का इस्तेमाल ज्यादातर अकादमिक और प्रशिक्षण के लिए किया जाता है। यह एक महान भाषा है अगर आप थोरैटिक कम्पुटर साइंस में शोध करना पसंद करते हैं।

अनुप्रयोग :

एंड्रॉइड उपयोग योजना के लिए Google ऐप आविष्कारक, जहां कावा का उपयोग एंड्रॉइड डिवाइसों पर चलने वाले जावा वर्चुअल मशीन के लिए स्कीम कोड को बाइट-कोड करने के लिए किया जाता है। एल्क स्कीम का उपयोग Synopsys द्वारा अपनी तकनीक CAD (TCAD) टूल्स के लिए एक स्क्रिप्टिंग भाषा के रूप में किया जाता है।

FYI करें: योजना का उपयोग


आश्चर्य है कि अगर यह सवाल आपकी मदद कर सकता है: programmers.stackexchange.com/questions/25056/…
Maxood

1
और यह वहाँ है (नि: शुल्क और ऑनलाइन!) LISP पुस्तक: gigamonkeys.com/book यह एक ID3 टैग पार्सर, वेब प्रोग्रामिंग, और स्पैम फ़िल्टरिंग जैसे "व्यावहारिक" परियोजनाओं को शामिल करता है।
FrustratedWithFormsDesigner

5

Mailrank.com के संस्थापक (फेसबुक द्वारा अधिग्रहित) ब्रायन ओ 'सुलिवन ने हास्केल में इस सॉफ्टवेयर के पूरे सर्वर साइड का निर्माण किया था। उन्होंने स्ट्रेंज लूप 2011 में इस पर प्रस्तुत किया , वीडियो और स्लाइड ऑनलाइन उपलब्ध हैं।

उसी आदमी ने रियल वर्ल्ड हास्केल नामक एक किताब लिखी । कई लोगों ने प्रोग्रामिंग ट्यूटोरियल का उल्लेख किया। यह आपके हितों के लिए काफी उपयुक्त हो सकता है (मुझे एर्लांग सुझाव भी पसंद है)।


4

मैं वित्त में दोस्तों से जानता हूं कि क्वांटिटेटिव ट्रेडिंग फर्म जेन स्ट्रीट अपनी ट्रेडिंग रणनीतियों को लागू करने के लिए OCaml का उपयोग करती है। उनके पास एक पेज है जहां वे इस बारे में बात करते हैं कि विषय पर बातचीत के लिए लिंक क्यों हैं।


2

आम लिस्प की सफलता की कहानियों की एक सूची है:

http://wiki.alu.org/Industry%20Application

http://www.franz.com/success/

http://www.lispworks.com/success-stories/index.html

हालांकि कॉमन लिस्प केवल आंशिक रूप से कार्यात्मक है (यह ओओपी और प्रक्रियात्मक का समर्थन करता है, साथ ही साथ आप अपने स्वयं के, या एक पुस्तकालय के साथ लागू करना चाहते हैं), यह एक बहुत ही व्यावहारिक भाषा है, और एक सक्षम प्रोग्रामर के हाथों में बहुत शक्तिशाली है। मैं वास्तव में इसका उपयोग उत्कृष्ट RESTAS ढांचे के साथ वेब एप्लिकेशन लिखने के लिए करता हूं

और व्यावसायिक पायथन परियोजना जो मैं अभी काम कर रहा हूं, अंततः लिस्प में लिखी गई सेवाओं द्वारा पूरक होगी (RESTAS जैसा कि इसके नाम से पता चलता है, Restful सेवाओं के लिए उत्कृष्ट है)।


1

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


0

आप ह्यूम पर एक नज़र डालना चाह सकते हैं ।

से ह्यूम प्रोग्रामिंग भाषा पेज:

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

से विकिपीडिया ह्यूम पेज:

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

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

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