प्रोग्रामिंग भाषा कितने प्रकार की होती है? [बन्द है]


30

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

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


2
यह कहना बेहतर नहीं होगा कि "किस प्रकार .." के बजाय कितने?
अमीर रज़ाई

वैसे मैंने सीखा है कि प्रोलॉग और सी जैसी चीजें मौलिक रूप से अलग हैं, इसलिए मैं सोच रहा था कि उनमें से प्रत्येक एक अलग तरह की प्रोग्रामिंग भाषा से मेल खाती है, और मैं कितने प्रकार की समझ पाने की उम्मीद कर रहा था ।
नोवा

7
2: वह प्रकार जो आप चाहते हैं और वह प्रकार जो नहीं करता है
मैट एलेन

1
विभिन्न प्रकार की प्रोग्रामिंग भाषाओं के बारे में सीखना बिल्कुल रचनात्मक है ! आप संभावित रूप से यह तर्क दे सकते हैं कि इसे एक डुप्लिकेट के रूप में बंद किया जाना चाहिए लेकिन मुझे लगता है कि वे अलग रहने के लिए पर्याप्त पर्याप्त प्रश्न हैं।
पीटर बॉटन ने

1
@ सोवा, मैं नई भाषाओं की अपनी पहली पसंद बनाने की सलाह दूंगा जो सी-आधारित सिंटैक्स का उपयोग न करने के लिए कुछ प्रयास करें। यह आपके सिर पर अधिक ध्यान केंद्रित करेगा कि यह कैसे काम करता है बनाम यह कि यह आपके द्वारा सबसे अच्छे से अलग कैसे है।
एरिक रिपेन

जवाबों:


73

यह इस बात पर निर्भर करता है कि आप भाषाओं को कैसे वर्गीकृत करना चाहते हैं। मौलिक रूप से, भाषाओं को दो प्रकारों में विभाजित किया जा सकता है: अनिवार्य भाषाएं जिसमें आप कंप्यूटर को एक कार्य करने का निर्देश देते हैं , और घोषित भाषाएं जिसमें आप कंप्यूटर को बताते हैं कि क्या करना है। घोषणात्मक भाषाओं को आगे चलकर कार्यात्मक भाषाओं में तोड़ा जा सकता है , जिसमें एक कार्यक्रम का निर्माण कार्य और तर्क द्वारा किया जाता हैप्रोग्रामिंग भाषाएं, जिसमें तार्किक कनेक्शन के एक सेट के माध्यम से एक कार्यक्रम का निर्माण किया जाता है। इम्पीरियल भाषाओं में एक समस्या को हल करने के लिए चरणों की एक सूची की तरह और अधिक पढ़ें, एक नुस्खा की तरह। इंपीरियल भाषाओं में सी, सी ++ और जावा शामिल हैं; कार्यात्मक भाषाओं में हास्केल शामिल हैं; तर्क प्रोग्रामिंग भाषाओं में प्रोलॉग शामिल हैं।

इंपीरियल भाषाओं को कभी-कभी दो उपसमूहों में विभाजित किया जाता है: प्रक्रियात्मक भाषाएं जैसे सी, और ऑब्जेक्ट-ओरिएंटेड भाषाएं । ऑब्जेक्ट-ओरिएंटेड भाषाएं समूहन के लिए थोड़े ऑर्थोगोनल हैं, हालाँकि, ऑब्जेक्ट-ओरिएंटेड फ़ंक्शनल लैंग्वेज (OCaml और Scala उदाहरण हैं)।

आप टाइप करके भाषाएं भी समूहित कर सकते हैं: स्थिर और गतिशील । वैधानिक रूप से टाइप की जाने वाली भाषाएं हैं जिनमें टाइपिंग की जाँच की जाती है (और आमतौर पर लागू) कार्यक्रम चलाने से पहले (आमतौर पर एक संकलन चरण के दौरान); गतिशील रूप से टाइप की गई भाषाएं रनटाइम के लिए जाँच को टाल देती हैं। सी, सी ++, और जावा सांख्यिकीय रूप से टाइप की जाने वाली भाषाएं हैं; पायथन, रूबी, जावास्क्रिप्ट और ऑब्जेक्टिव-सी गतिशील रूप से टाइप की जाने वाली भाषाएं हैं। ऐसी अनछुई भाषाएं भी हैं, जिनमें फोर्थ प्रोग्रामिंग भाषा शामिल है।

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


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

कैसे स्क्रिप्टिंग भाषाओं, जैसे VBScript, इस में फिट होंगे? यह थोड़ा सा प्रक्रियात्मक और थोड़ा OO हो सकता है क्योंकि व्यक्ति विभिन्न प्रकार का निर्माण कर सकता है, तो क्या यह एक संकर बना देगा?
जेबी किंग

यही वह है जिसकी तलाश में मैं हूं। आपका बहुत बहुत धन्यवाद।
सोवा

3
@ जेबी किंग ओओपी भाषाएँ आमतौर पर प्रक्रियात्मक होती हैं, कम से कम विधि निकायों के भीतर। इसके अलावा, यह एक आम गलतफहमी है कि OOP का अर्थ है "वस्तुएं"। बहुत सी भाषाओं में डेटा प्रकार और ऑब्जेक्ट होते हैं। ओओपी की सटीक परिभाषा क्या है, इस पर बहुत बहस है, लेकिन इसमें आमतौर पर प्रमुख विषयों के रूप में विरासत और / या एनकैप्सुलेशन (निजी राज्य) शामिल हैं। किसी भी रूप में बिना किसी भाषा के एक OOP भाषा के रूप में वर्गीकृत करना मुश्किल होगा।
कोडेक्सआर्केनम

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

12
  • सभा
  • प्रक्रियात्मक
    • बुनियादी
    • सी
  • वस्तु के उन्मुख
    • सी#
    • जावा
  • कथात्मक
    • Prolog
    • एसक्यूएल
  • कार्यात्मक
    • तुतलाना
    • हास्केल

ये मुख्य हैं, लेकिन वहां बहुत सारे अन्य प्रतिमान हैं, और उनके बीच बहुत अधिक अंतर है।


कैसे के बारे में घोषणात्मक (जैसे प्रोलॉग, एसक्यूएल)?
ब्रूस एल्डरमैन

@ ब्रूस, अब उन्हें मिल गया।

हाँ, यह सामान्य विचार था जो मैंने कहीं भी सीखा था।
सेवंसेकाट

6
क्या विधानसभा को प्रक्रियात्मक नहीं माना जाना चाहिए?
मैटडिवी

2
फोर्थ और फैक्टर जैसी कंसेंटिव (स्टैक-बेस्ड) प्रोग्रामिंग लैंग्वेज के बारे में कैसे? आप इसे एक प्रकार की कार्यात्मक प्रोग्रामिंग मान सकते हैं, लेकिन यह शायद पर्याप्त रूप से उल्लेख के योग्य है। en.wikipedia.org/wiki/Concatenative_programming_language
KChaloux

11

प्रोग्रामिंग भाषाओं (प्रतिमानों) के प्रकारों के लिए, यहां देखें:
http://en.wikipedia.org/wiki/Programming_parigigm

प्रोग्रामिंग भाषाओं की अन्य विशेषताओं (जैसे टाइप सिस्टम) के लिए, यहां देखें: http://en.wikipedia.org/wiki/Programming-language


आह! "प्रतिमान" कितना अच्छा शब्द है! धन्यवाद
sova

@sova मैं इसे सर्वश्रेष्ठ उत्तर के रूप में स्वीकार करूंगा, क्योंकि P.SE उत्तर में सूचीबद्ध करने के लिए बस बहुत सारे प्रतिमान हैं, प्रत्येक की बारीकियों का वर्णन करने के लिए बहुत कम।
री मियासका

9

पीडीएफ देखने के लिए चित्र पर क्लिक करें। प्रोग्रामिंग प्रतिमान पोस्टर

आपको डमीज के लिए प्रोग्रामिंग पैराडाइज पर ध्यान देना चाहिए : पीटर वैन रॉय द्वारा हर प्रोग्रामर को क्या जानना चाहिए । यह आपको एक अवलोकन देगा कि यह कैसे चल रहा है।

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


6
  • प्रक्रियात्मक: विधानसभा, जावा, सी #, एफ #, लिस्प, फोरट्रान।

  • सेट आधारित: एसक्यूएल।

  • पैटर्न आधारित: पर्ल, रेगेक्स, स्नोबोल।

  • पेड़ आधारित: XSLT।

  • सरणी आधारित: APL।


2
एक अलग प्रकार के वर्गीकरण का उपयोग करने के लिए +1, और यह भी पहचानने के लिए कि वास्तव में 'प्रक्रियात्मक' में अन्य लोगों के वर्गीकरण शामिल हैं। (निश्चित रूप से केवल इसका मतलब है कि शब्द का अर्थ बहुत कम है, और मांस ऐसे उपविभागों में है)
जेवियर

4

इसका उत्तर देने के अलग-अलग तरीके हैं, लेकिन उन्हें इस रूप में वर्गीकृत किया जा सकता है:

मशीन भाषा: मशीन भाषा एक निम्न-स्तरीय प्रोग्रामिंग भाषा है। यह कंप्यूटर द्वारा आसानी से समझा जाता है लेकिन लोगों द्वारा पढ़ना मुश्किल है। यही कारण है कि लोग उच्च स्तरीय प्रोग्रामिंग भाषाओं का उपयोग करते हैं। उच्च-स्तरीय भाषाओं में लिखे गए कार्यक्रम भी या तो मशीन भाषा में संकलित और / या व्याख्या किए जाते हैं ताकि कंप्यूटर उन्हें निष्पादित कर सकें।

असेंबली लैंग्वेज: असेंबली लैंग्वेज मशीन लैंग्वेज का एक प्रतिनिधित्व है। दूसरे शब्दों में, प्रत्येक विधानसभा भाषा निर्देश एक मशीन भाषा निर्देश में अनुवाद करता है। हालाँकि, असेंबली लैंग्वेज स्टेटमेंट्स पठनीय हैं, स्टेटमेंट्स अभी भी लो-लेवल हैं। असेंबली लैंग्वेज का एक नुकसान यह है कि यह पोर्टेबल नहीं है, क्योंकि प्रत्येक प्लेटफॉर्म एक विशेष असेंबली लैंग्वेज के साथ आता है।

उच्च-स्तरीय भाषा: उच्च-स्तरीय भाषाएँ वे हैं जो आजकल अधिकांश प्रोग्रामर उपयोग करते हैं। सी, सी ++ और जावा जैसी भाषाएं सभी उच्च स्तरीय भाषाएं हैं। उच्च-स्तरीय भाषाओं के लाभ यह है कि वे बहुत पठनीय और पोर्टेबल हैं। उच्च-स्तरीय भाषाओं का एक नुकसान यह है कि वे विधानसभा भाषाओं की तुलना में कम शक्तिशाली हैं। क्योंकि उच्च-स्तरीय भाषा में किसी एक कथन का कई मशीनी भाषा के कथनों में अनुवाद किया जाता है।

उच्च-स्तरीय भाषाओं को इस प्रकार वर्गीकृत किया जा सकता है:

  1. कार्यात्मक भाषाएं: कार्यात्मक भाषा में, एक प्रोग्राम को फ़ंक्शन परिभाषाओं में विभाजित किया जाता है। क्रियात्मक भाषा एक प्रकार की घोषित भाषा है। वे ज्यादातर स्थिरांक के साथ टाइप किए गए लंबो-कैलकुलस पर आधारित हैं। कुछ प्रसिद्ध फंक्शन लैंग्वेज स्कैला, एफ #, क्लोजर और लिस्प हैं।

  2. प्रक्रियात्मक भाषा: प्रक्रियात्मक भाषाओं में, एक कार्यक्रम चरणों के अनुक्रमों में लिखा जाता है, जिसके परिणामस्वरूप परिणाम उत्पन्न किया जाना चाहिए। COBOL, FORTRAN और C कुछ प्रक्रियात्मक भाषाएं हैं।

  3. ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग लैंग्वेज: ओओपी भाषाओं में, एक प्रोग्राम को ऑब्जेक्ट में विभाजित किया जाता है जिसमें डेटा के साथ-साथ डेटा पर काम करने वाले तरीके भी होते हैं। जावा, C # और C ++ OOP भाषाएँ हैं।

  4. लॉजिक प्रोग्रामिंग लैंग्वेज: लॉजिक लैंग्वेज का इस्तेमाल प्रोग्राम बनाने के लिए किया जाता है जो कंप्यूटर को तार्किक रूप से तर्क करने में सक्षम बनाता है। जैसे: तर्क भाषा

गहराई से अध्ययन के लिए, देखें:


3

मैं सुविधाओं के संदर्भ में सोचना चाहता हूं:

वाक्य - विन्यास:

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

संकलित बनाम व्याख्या की गई w। बिल्ड-प्रोसेस बनाम इंटरप्रिटेड / कंसोल:

मेरे पास संकलित समय बनाम रन-टाइम पर्यावरण चिंताओं के साथ बहुत कम परिचित है लेकिन मुझे लगता है कि वहाँ चिंताओं का एक पूरा बैग है जिसके बारे में मैं शायद ही कभी सोचता हूं।

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

और फिर वहाँ जावास्क्रिप्ट और पायथन है जिसे आप मक्खी पर निष्पादित कर सकते हैं, एक जीवित वातावरण में कंसोल में कमांड द्वारा कमांड। तीनों कोड लिखने के बहुत अलग तरीकों को जन्म दे सकते हैं।

गतिशील बनाम सख्त टाइपिंग:

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

ब्लॉक-स्तरीय स्कोप बनाम फ़ंक्शन स्कोप बनाम ?:

ब्लॉक-लेवल सबसे आम है (अधिकांश c- आधारित वाक्यविन्यास भाषाओं में {} के बीच कुछ भी)। जावास्क्रिप्ट स्कोप को फंक्शन्स के आसपास बनाया गया है (जिसका उपयोग ऑब्जेक्ट्स को इतनी प्रभावशाली वस्तुओं के निर्माण के लिए भी किया जाता है)। आंतरिक दायरे से बाहरी-दायरे तक आपकी पहुँच किस प्रकार की है, इसमें भी बहुत भिन्नता है। मैं अन्य स्कूपिंग योजनाओं से परिचित नहीं हूं, लेकिन मुझे यकीन है कि वे मौजूद हैं।

शास्त्रीय OOP बनाम प्रोटोटाइप OOP बनाम लगभग-OOP (C में संरचनाएं?) बनाम गैर-OOP:

यहां तक ​​कि वर्ग-आधारित OOP में भी भिन्नता के लिए बहुत कुछ है। चाहे आप कई वंशानुक्रम (ew, अच्छी तरह से अधिक, ew) कर सकते हैं, इंटरफेस को परिभाषित कर सकते हैं, आदि ...

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

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

प्रथम श्रेणी के कार्य:

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

बंद:

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

कठोर / सख्त / सुरक्षित बनाम आप सभी को वह रस्सी देना जो आप चाहते हैं:

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


बहुत धन्यवाद। बिना किसी स्पष्टीकरण के डाउन-वोट के लिए प्रयास करना वास्तव में अच्छा है।
एरिक रिपेन

2

मुझे लगता है कि इन सभी के लिए एक शॉर्ट-कट कुछ लिम्फ-उपयोगी चीजें करने के लिए पर्याप्त लिस्प सीखना है। इनमें से अधिकांश प्रतिमान लिस्प के उपयोग के तरीके के रूप में शुरू हुए, इसलिए यह चीजों को आज़माने का एक सरल तरीका है।

आस-पास भाषाओं की "प्रकार" की एक संख्या है, लेकिन नए हमेशा दिखाई दे सकते हैं। मूल रूप से, किसी भाषा का उद्देश्य विचारों, अवधारणाओं या आवश्यकताओं के एन्कोडिंग को सीधे अनुमति देना है। उस अंत तक, ऐसी परिस्थितियां हो सकती हैं जहां मौजूदा प्रतिमान वांछित हैं, और एक नए की आवश्यकता हो सकती है।

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

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

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


ठंडा। मैं LISP सीखूंगा और प्रबुद्ध हो जाऊंगा। रोमांचक: D
sova

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

@sova: मेरे लिए, सूचना सिद्धांत एक महान रहस्योद्घाटन (शैनन और कोलमोगोरोव दोनों) था। यह इस बारे में है कि कैसे बैंडविड्थ के माध्यम से एन्कोड और पारित किया जाता है, बैंडविड्थ, त्रुटि-पता लगाने, न्यूनतम कोडिंग, यादृच्छिकता, आदि की अवधारणाओं के साथ। इसलिए, डेटा एन्कोड जानकारी, और एल्गोरिदम चैनल हैं। कार्यक्रम जानकारी सांकेतिक शब्दों में बदलना, और प्रोग्रामिंग एक चैनल है। तो, क्या जानकारी एन्कोडेड है? यह कहाँ से आता है और कब आता है? यह कहां जा रहा है त्रुटियों (शोर) के स्रोत क्या हैं? उन्हें कैसे ठीक किया जाता है? मैंने पाया कि एक उपयोगी परिप्रेक्ष्य।
माइक डनलैवी

@sova: (जारी) आपको सभी ऑफ-पुटिंग गणित में महारत हासिल करने की आवश्यकता नहीं है। मेरे लिए, चीजों के बारे में सोचने के लिए मुझे जो ढांचा दिया गया, वह कितना महत्वपूर्ण था।
माइक डनलैवी

1

मुझे यह जोड़ना होगा कि विशिष्ट अनुप्रयोगों के लिए प्रोग्रामिंग भाषाएं हैं। जो मन में आता है वह है एपीटी (स्वचालित प्रोग्राम्ड टूल) जो मशीन टूल्स के निर्माण में उपयोग की जाने वाली भाषा है।


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

मैंने उन प्रोग्रामों पर काम किया है जो मिलिंग मशीनों के लिए जीओडी उत्पन्न करते हैं। मैं सचमुच आयोजित किया है और प्रोग्रामिंग कीड़े के परिणामों को देखा है, अक्सर मेरा।
डेविड थॉर्नले

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