प्रत्येक प्रकार की प्रोग्रामिंग भाषा सीखना


24

मैंने कई बार सुना है कि प्रत्येक प्रोग्रामर को प्रत्येक प्रकार की भाषा सीखनी चाहिए। अब, यह जरूरी सच नहीं है, लेकिन मेरा मानना ​​है कि यह एक अच्छा विचार है।

मैंने एक प्रक्रियात्मक भाषा (पर्ल) सीखी है, लेकिन अन्य प्रकार क्या हैं ?

उनके बीच क्या अंतर हैं और प्रत्येक के कुछ उदाहरण क्या हैं?


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

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

3
पीटर नॉरविग की सलाह : कम से कम आधा दर्जन प्रोग्रामिंग भाषाओं को जानें। क्लास एब्स्ट्रैक्शन (जैसे जावा या C ++) को सपोर्ट करने वाली एक भाषा को शामिल करें, एक जो कार्यात्मक एब्स्ट्रैक्शन (जैसे लिस्प या एमएल) का समर्थन करती है, एक वह जो सिंथैटिक एब्स्ट्रैक्शन (लिस्प की तरह) का समर्थन करती है, एक वह जो घोषणात्मक विशिष्टताओं (जैसे प्रोस्पेक्टस या सी ++ टेम्प्लेट) का समर्थन करती है, एक जो कोरटाइन्स (जैसे आइकन या स्कीम) का समर्थन करता है, और एक जो समानता (जैसे सिसल) का समर्थन करता है।
लीजेंड्स 2

जवाबों:


34

भले ही शब्दावली मानकीकृत से दूर है, एक सामान्य तरीका प्रमुख प्रोग्रामिंग प्रतिमानों को वर्गीकृत करना है

  • प्रक्रियात्मक
  • कार्यात्मक
  • तार्किक
  • वस्तु के उन्मुख
  • सामान्य

आप पहले से ही जानते हैं कि प्रक्रियात्मक प्रोग्रामिंग क्या है।

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

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

लॉजिकल प्रोग्रामिंग में बड़ा विचार यह है कि कंप्यूटर को चीजों की गणना करने का तरीका बताने के बजाय , आप यह बताते हैं कि चीजें क्या हैं। उदाहरण: PROLOG।

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

जेनेरिक प्रोग्रामिंग को पहली बार 1983 में Ada में पेश किया गया था, और C ++ में टेम्प्लेट की शुरुआत के बाद व्यापक हो गया। यह विचार है कि आप वास्तविक डेटा प्रकारों को निर्दिष्ट किए बिना कोड लिख सकते हैं जो इसे संचालित करता है, और संकलक का आंकड़ा है। उदाहरण के लिए लिखने के बजाय

void swap(int, int);
void swap(float, float);
....

आप लिखेंगे

void swap(T, T);

एक बार, और कंपाइलर जो कुछ भी Tहो, के लिए विशिष्ट कोड उत्पन्न करता है, जब swap()वास्तव में कोड में उपयोग किया जाता है।

जेनेरिक प्रोग्रामिंग को C ++, Java, और C # द्वारा अलग-अलग डिग्री के लिए समर्थित किया जाता है।

यह ध्यान रखना महत्वपूर्ण है कि कई भाषाएँ, जैसे C ++, कई प्रतिमानों का समर्थन करती हैं। यह भी सच है कि जब किसी भाषा को किसी विशेष प्रतिमान का समर्थन करने के लिए कहा जाता है, तब भी वह सभी प्रतिमानों की विशेषताओं का समर्थन नहीं कर सकता है। यह उल्लेख नहीं करने के लिए कि बहुत अधिक असहमति है कि किसी विशेष प्रतिमान के लिए किन विशेषताओं की आवश्यकता है।


2
एसक्यूएल किस श्रेणी में आएगा?
कर्क कुक्केंडल

@KirkKuykendall SQL एक विशेषज्ञ, या "छोटा", भाषा होगा।
केविन लैक्मेमेंट

17
SQL एक Declarative भाषा है। आप इसे बताएं कि आप क्या चाहते हैं, यह पता लगाता है कि इसे कैसे प्राप्त किया जाए। ("लॉजिकल" भाषा जैसे
प्रोलॉग

3
उत्तर को और अधिक पूर्ण बनाने के लिए क्या हमारे पास प्रक्रियात्मक का विवरण हो सकता है?
डेवोरडे

3
@ दीमा अच्छा सारांश। हालाँकि, एक अपेक्षाकृत मामूली नाइटपिक: "जेनेरिक प्रोग्रामिंग" C ++ में टेम्प्लेट के उपयोग के बारे में नहीं आया, और यह अक्सर हास्केल जैसी कार्यात्मक भाषाओं में भी उपयोग किया जाता है।
एंड्रेस एफ।

11

प्रोग्रामिंग भाषाओं में ज्यादातर ऑर्थोगोनल विशेषताएं हैं; सबसे प्रमुख वह प्रतिमान या प्रतिमान है जिसमें वे समर्थन करते हैं। विकिपीडिया लेख मानदंड विस्तृत रूप से शामिल किया गया है; सबसे महत्वपूर्ण प्रतिमान शायद ये हैं:

  • प्रक्रियात्मक / संरचित
  • कार्यात्मक
  • वस्तु के उन्मुख
  • घटना-चालित और पहलू-उन्मुख
  • सामान्य
  • तर्क

लेकिन भाषाएं अन्य तरीकों से भी भिन्न हैं:

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

2

वर्तमान में प्रचलित कई अलग-अलग प्रोग्रामिंग प्रतिमान हैं:

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

क्या ये केवल अन्य प्रकार हैं?
डायनेमिक

@ perl.j - नहीं, लेकिन ये मुख्य हैं जो इन दिनों व्यापक प्रसार का उपयोग करते हैं। विकिपीडिया देखें - प्रोग्रामिंग प्रतिमान
ऊद

@ perl.j में स्टैक-आधारित भी है: जैसे कि फोर्थ और पोस्टस्क्रिप्ट। लॉजिक: जैसे प्रोलॉग।
जेटी

2
और शून्य प्रकार C है;)
yati sagade

असली सवाल यह है कि इनमें से कितने को सबसे अधिक प्रोग्रामिंग समस्याओं को प्रभावी ढंग से कोड करने की आवश्यकता होती है।
जेएफओ

0

प्रोलॉग एक लॉजिक प्रोग्रामिंग भाषा है और इसके साथ आरंभ करना अपेक्षाकृत आसान है। यह प्रक्रियात्मक प्रोग्रामिंग की तुलना में पूरी तरह से अलग सोच की आवश्यकता है इसलिए यह पता लगाने के लिए अच्छा है कि आप अपने मस्तिष्क को फैलाने की कोशिश कर रहे हैं।

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


0

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

  • स्प्रेडशीट भाषाएँ (एक्सेल, गूगल फॉर्म्स): सारणीबद्ध डेटा को संभालने के लिए डिज़ाइन की गई।
  • ऐरे लैंग्वेज (APL, J): बहु-आयामी सरणियों को जल्दी से संसाधित करने के लिए डिज़ाइन किया गया। J में, (+/ % #)&.:*:एक सरणी के RMS की गणना करता है। संक्षिप्त होने के लिए प्रसिद्ध, अपठनीय होने के लिए कुख्यात।
  • ऑटोमेशन लैंग्वेज (AutoHotkey, Bash): सामान्य कार्यों को कारगर बनाने के लिए बनाया गया है, जैसे फॉर्म भरना, फाइल अपलोड करना आदि।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.