क्या कोई प्रोग्रामिंग भाषाएं हैं जो न्यूनतम विकास दृष्टिकोण का पालन करती हैं?


26

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

वहाँ हो सकता है या वहाँ भाषाएँ हैं जहाँ संस्करण 1.0 अंतिम संस्करण है? बेशक बग फिक्स को इससे छूट दी गई है, लेकिन सेट सुविधा हमेशा एक ही रहती है?

इस तरह से भाषा की प्रत्येक विशेषता अच्छी तरह से एक साथ बैठती है और ऐसा प्रतीत नहीं होता है कि पीछे की ओर अनुकूलता के कारण अप्रचलित सुविधाओं के साथ इस तथ्य के बाद उन पर बोल्ट लगाया जाता है।

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

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

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


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

4
अच्छी तरह से हर कोई जो कार्यक्रम जरूरी नहीं है एक पूर्णकालिक प्रोग्रामर है। यह कई अन्य व्यवसायों के लिए सिर्फ एक और उपकरण है।
जोन वेंज

4
फिर, फिर से, कोई भी आपको कुछ भी सीखने के लिए मजबूर नहीं करता है। यदि C # 1.0 आपकी आवश्यकताओं को हल करता है, तो अपना समय बर्बाद न करें और कुछ सीखने की ज़रूरत है।
आर्सेनी मूरज़ेंको

11
मुझे लगता है कि सवाल वैध है: क्यों हम भाषाओं प्रोग्रामिंग करने के लिए सॉफ्टवेयर कलाकृतियों को KISS और YAGNI सिद्धांतों को लागू लेकिन नहीं करना चाहिए? जब किसी भाषा में पर्याप्त मुख्य विशेषताएं होती हैं, तो आगे विकास (IMHO) मुख्य रूप से विपणन के कारण होता है (अन्य भाषाओं के साथ प्रतिस्पर्धा जो कंपनियों को अपने ग्राहकों को रखने के लिए सुविधाओं के साथ भाषाओं को सामान करने के लिए मजबूर करती है)।
जियोर्जियो

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

जवाबों:


32

लिस्प, स्मालटाक। संयोग से, वे पूरे समूह में सर्वश्रेष्ठ भाषा भी हैं।

लिस्प और स्मॉलटाक दोनों ही ऐसी भाषाएं हैं, जो मजबूत एकीकृत रूपक के आसपास बनाई गई हैं। लिस्प का रूपक "सब कुछ एक सूची है; यह सूची डेटा और कोड (कार्यों के रूप में) दोनों का प्रतिनिधित्व करती है"। स्मॉलटाक का रूपक "सब कुछ एक वस्तु है; एक व्यवहार को लागू करने का एकमात्र तरीका किसी वस्तु को संदेश पास करना है"। ये रूपक भाषाओं को स्थिर, न्यूनतम और शक्तिशाली बनाने की अनुमति देते हैं। शेष पुस्तकालय में है।

ऐसी चीजें जिन्हें सभी गैर-न्यूनतम में "नियंत्रण संरचनाएं" कहा जाता है (मैं "फूला हुआ" लिखना चाहता था) भाषाएं, यहां पुस्तकालय का हिस्सा हैं (उदाहरण के लिए: condलिस्प में कार्य; ifTrue:/ ifFalse:संदेशों की परिवार स्मालटाक में दोनों एक सशर्त लागू करते हैं, जहाँ अन्य भाषाओं में ifखोजशब्द हैं)।

यह देखा जा सकता है कि लिस्प / स्मॉलटालक उनके प्रतिमान के लगभग न्यूनतम अवतार हैं और इससे अधिक कुछ नहीं (एल:: कार्यात्मक प्रोग्रामिंग; स्मॉलटाकल: ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग)।


4
अच्छा लिस्प क्रियान्वयन सी के साथ प्रतिस्पर्धा कर सकता है, अच्छा स्मॉलटॉक कार्यान्वयन सी ++ के साथ प्रतिस्पर्धा कर सकता है। ओह, Oracle की HotSopt JVM, इस ग्रह पर सबसे तेजी से वीएम, है एक स्मालटाक वी एम, तो यह और भी अपने अनुकूलन के लिए स्थिर प्रकार की जानकारी का उपयोग नहीं करता।
जोर्ग डब्ल्यू मित्तग


9
यह उत्तर रचनात्मक होने के लिए बहुत छोटा है। विस्तार या सहायक सबूतों की कमी।
जिमी हॉफ

2
-1 लिस्प? LISP ? गंभीरता से? 1970 के एलआईएसपी युद्धों के बाद, बार-बार एलआईएसपी यूनिटी का प्रयास करता है, और आखिरकार कॉमन लिस्प? नहीं, यहां तक ​​कि LISP ने 1.0 पर "किया" तक नहीं किया।
रॉस पैटरसन

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

6

TeX , टाइपसेटिंग सिस्टम, संस्करण 3 के बाद से बहुत स्थिर है।

संस्करण 3 के बाद से, TeX ने एक idiosyncratic संस्करण नंबरिंग प्रणाली का उपयोग किया है, जहां दशमलव के अंत में एक अतिरिक्त अंक जोड़कर अपडेट का संकेत दिया गया है, ताकि संस्करण संख्या स्पर्शोन्मुख रूप से X तक पहुंच जाए। यह इस तथ्य का प्रतिबिंब है कि TeX अब बहुत स्थिर है, और केवल मामूली अपडेट अनुमानित हैं। TeX का वर्तमान संस्करण 3.1415926 है; इसे आखिरी बार मार्च 2008 में अपडेट किया गया था। डिज़ाइन को 3.0 संस्करण के बाद फ्रीज किया गया था, और कोई नई सुविधा या मूलभूत परिवर्तन नहीं जोड़ा जाएगा, इसलिए सभी नए संस्करणों में केवल बग फिक्स होंगे। भले ही डोनाल्ड नुथ ने खुद कुछ क्षेत्रों का सुझाव दिया है जिसमें टीएक्स में सुधार किया जा सकता था, उन्होंने संकेत दिया कि उनका मानना ​​है कि अपरिवर्तित प्रणाली होने से अब वही उत्पादन होगा और भविष्य में नई सुविधाओं को पेश करने की तुलना में अधिक महत्वपूर्ण है। इस कारण से, उन्होंने कहा है कि "

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


6

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

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


1
मैं सी के न्यूनतर डिजाइन से सहमत हूं। भले ही भाषा वर्षों के दौरान अपडेट की गई थी, लेकिन भाषा का मूल डिजाइन और प्रोग्रामिंग मॉडल अभी भी पहचानने योग्य है (अन्य भाषाएं हर 5 से 10 साल में एक क्रांति से गुजरती हैं)। बेशक, सी एक सामान्य-उद्देश्य वाली भाषा नहीं है जैसा कि यह हुआ करता था, क्योंकि इसे विशिष्ट एप्लिकेशन डोमेन (डेस्कटॉप एप्लिकेशन, वेब एप्लिकेशन, और इसी तरह) में अन्य भाषाओं द्वारा प्रतिस्थापित किया गया है।
जियोर्जियो

@ जियोर्जियो: सभी नहीं। न्यूनतम वाले (जैसा मैंने उल्लेख किया है) नहीं। स्मॉलटाकल सिंटैक्स में कोई परिवर्तन नहीं हुआ था क्योंकि इसकी शुरुआत से ही एक को छोड़कर, स्क्वीक द्वारा लाया गया था: घुंघराले-लटके हुए कंप्रेस्ड ऐरे। लाइब्रेरी भी कोर ( Behaviorऔर Collectionपदानुक्रम) पर बहुत स्थिर है । यह मुझे लगता है कि सी उन सभी C89, C99 और whatnot के साथ बहुत कम स्थिर है।
हर्बी

1
@herby: आप शायद सही कह रहे हैं कि स्मालटाक जैसी अन्य भाषाएं सी। की तुलना में अधिक स्थिर हैं, सी का मूल प्रोग्रामिंग मॉडल वैसा ही है जैसा 20 साल पहले था। अन्य भाषाओं में गहरे बदलाव हुए हैं। इसलिए, फिर से, मैं यह दावा नहीं करता कि C सबसे स्थिर भाषा है, फिर भी, IMO यह कई अन्य मुख्यधारा की भाषाओं की तुलना में बहुत अधिक स्थिर है।
जियोर्जियो

6

दूसरों ने पहले ही कहा है कि लिस्प तो मुझे फोर्थ लाना होगा । इसे लागू करना बहुत आसान है और भाषा के नियमों का पालन करना सरल है।

यह "शब्दों के शब्दकोश" के साथ एक स्टैक-आधारित भाषा है। आप कुछ अंतर्निहित विशेषताओं का उपयोग करके आसानी से भाषा का विस्तार कर सकते हैं।

कछुए ग्राफिक्स का एक बहुत ही आकर्षक उदाहरण:

\ 8.8 fixed point sine table lookup
-2 var n F9F2 , E9DD , CEBD , AA95 , 7F67 , 4E34 , 1A c,
: s abs 3C mod dup 1D > if 3C swap - then dup E > if
  -1 1E rot - else 1 swap then n + c@ 1+ * ;

0 var x 0 var y 0 var a
0 var q 0 var w 
: c 9380 C80 0 fill ; \ clear screen
: k >r 50 + 8 << r> ! ;
: m dup q @ * x +! w @ * y +! ; \ move n-pixels (without drawing)
: g y k x k ; \ go to x,y coord
: h dup a ! dup s w ! 2D + s q ! ; \ heading
: f >r q @ x @ y @ w @ r 0 do >r r + >r over + \ forward n-pixels
  dup 8 >> r 8 >> plot r> r> loop o y ! x ! o r> o ;
: e key 0 vmode cls ; \ end
: b 1 vmode 1 pen c 0 0 g 0 h ; \ begin
: t a @ + h ; \ turn n-degrees

फिर इसे चलाने से : squiral -50 50 g 20 0 do 100 f 21 t loop ;आपको मिलता है:

कुंडली

इस Microsoft कर्मचारी के ब्लॉग का श्रेय ।


1
यह फिर से कैसे उठ गया? फोर्थ एक अच्छा उम्मीदवार हो सकता है, लेकिन दिए गए उदाहरण निष्पादन योग्य लाइन शोर से बेहतर नहीं है; पीएलटी का झुकाव के साथ जुनून क्यों होता है इसका एक प्रमुख उदाहरण पेशेवरों की वास्तव में आवश्यकता है।
तेलस्तीन

4
@Telastyn यह उनका सवाल नहीं था।
ऑस्टिन हेनले

4

हालांकि लिस्प का उल्लेख किया गया था, मुझे पता है कि सबसे न्यूनतम भाषा योजना है । मुझे विश्वविद्यालय के पाठ्यक्रमों में यह समझने में कठिन समय था कि मुझे कहाँ जाना है। लेकिन इसने प्रोग्रामिंग के बारे में मेरे सोचने के तरीके को बदल दिया, और यह बहुत कम है। न्यूनतम के रूप में अपने पूरे वाक्यविन्यास कोष्ठक ()और रिक्त स्थान हैं।

भाषा में केवल परिवर्तन की तरह पुरातन कन्वर्ट करने के लिए निर्णय था +, defineबनाया-इन करने के लिए (और कुछ अन्य)। मतलब वे लॉन्च पर उपलब्ध हैं, लेकिन रन-टाइम के दौरान उन्हें फिर से परिभाषित किया जा सकता है।


2

Tcl, जो पहली जगह में न्यूनतम होने के लिए डिज़ाइन किया गया था

पृष्ठ http://www.tcl.tk/about/features.html के बारे में वहाँ से , एक विशेषता यह है कि यह सीखना बहुत आसान है और जहां आकस्मिक प्रोग्रामर या गैर प्रोग्रामर भी इसका उपयोग कर सकते हैं।


3
यह मेरे लिए सटीक लगता है, लेकिन किसी भी सहायक जानकारी या विवरण के साथ एकल पंक्ति उत्तर किसी के लिए उपयोगी होने के लिए बहुत कम गुणवत्ता वाले हैं। कृपया कुछ अच्छा विवरण जोड़ें (और इसका कोई सारांश नहीं है) और आपको मुझसे एक वोट मिलेगा
जिमी हॉफ

ठीक है, हालांकि सवाल बंद होने के कारण पता नहीं चलेगा कि इसकी कीमत कितनी है
ईगरिन

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

मैं सहमत हूं और काम से
हटने

"TCL केस पर एक केस स्टडी", "Tcl: एक एम्बेड कमांड भाषा" और tcl.tk/about/history.html के लिए Google खोजें - वे कुछ प्रमुख बिंदु देते हैं। हालांकि, मुझे यकीन नहीं है कि वे ओपी की इच्छा का समर्थन करते हैं - ऐसा प्रतीत होता है कि टीसीएल को अपने मूल 1.0 से बढ़ाया गया है (देखें wiki.tcl.tk/1721 )

2

ऐसी कुछ भाषाएं हैं, जो गूढ़ के बाहर अपनी स्थापना के बाद से अपेक्षाकृत अपरिवर्तित बनी हुई हैं, जो उन भाषाओं के बाहर होने की संभावना नहीं है जो वांछित हैं (मुझे बेफुन्ज में कुछ सार्थक लिखने की कोशिश करने से नफरत होगी (हालांकि यह अपने मूल 1.0 के बाद भी संशोधित किया गया है) विज्ञप्ति))।

ऐसी भाषाएँ जो कुछ भी नया नहीं सीखने की इच्छा को भरने की सबसे अधिक संभावना है, वे भाषाएँ हैं जो अन्य कार्यक्रमों के बीच 'गोंद' में विशेषज्ञ हैं। Jcl , bash, और जैसी भाषाएं । सरल स्क्रिप्टिंग भाषा भी इस में गिर सकती है - जागरण एक नेताओं में से एक है।

एक बार इस दायरे से निकलने के बाद विकास होता है। या तो भाषा या रूपरेखा। कुछ स्थितियों में कुछ रूपरेखा के बिना भाषा के लिए कोड करना 'मुश्किल' है, जो जल्दी से फिर से हो रहा है।

कई भाषाओं में कुछ हद तक पश्चगामी संगतता है। कोई भी आज भी जावा 1.4 लिख सकता है, हालांकि यह शायद अनुशंसित नहीं है - लोग इसके लिए लिखने वाले ढांचे भाषा की तुलना में तेजी से बदल रहे हैं। एक अभी भी f77 और f90 संकलक वहाँ एक भाषा कल्पना के लिए खोज सकते हैं जो 20 या 40 वर्षों में नहीं बदला है। सी, ऑब्जेक्टिव सी, सी ++ को अभी भी भाषा के पुराने विनिर्देशों के लिए कोडित किया जा सकता है - किसी को किसी के कोड को अपडेट करने की आवश्यकता नहीं है क्योंकि एक नया चश्मा जारी किया गया था या एक नया ढांचा बाहर है।

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

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


2

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

(दी, यह एक सुविधा सेट के समान नहीं है जो संस्करण 1 से समान रहा, लेकिन मुझे लगता है कि भाषाओं का मूल्यांकन करने के लिए यह एक बहुत ही मनमाना तरीका है, यह देखते हुए कि भाषा लेखक इसे जब चाहें तब संस्करण 1 कह सकते हैं।)


Dec 2012 उत्तर तिथि आपको एक नि: शुल्क पास प्रदान करती है, क्योंकि तब से हमारे पास Python 3 के रूप में जाना जाने वाला राक्षसी है, जो C ++ को कूड़े के ढेर को जोड़ना चाहता है, जबकि वास्तव में सादगी को दूर करता है। यह अब कंप्यूटिंग में सबसे अधिक बाहरी एडऑन-इनसाइट भाषाओं में से एक है।
थॉमस ब्राउन

-1

मुझे लगता है कि "न्यूनतम" डिजाइन दृष्टिकोण को टीईसी द्वारा अनुकरण किया जाएगा। एक उदाहरण के रूप में, आप {return -code n} मानों के साथ {पकड़} कमांड का उपयोग कर सकते हैं किसी भी नियंत्रण संरचना को लागू करने के लिए जो आपकी कल्पना को गर्भ धारण कर सकता है, पर्ल को एक दशक तक इंतजार करना पड़ा (आधिकारिक तौर पर) {स्विच} - (पर्ल नहीं) कभी इसकी जरूरत है)। इसके अलावा आप देखेंगे कि Dodekalogue http://wiki.tcl.tk/10259 Tcl के व्याकरण को पूरी तरह से कवर करता है - बाकी, आप जिस भी प्रोग्रामिंग प्रतिमान के साथ काम करना चाहते हैं, उसे इस व्याकरण में व्यक्त किया जा सकता है।


इस केवल मुद्दा बनाया और में विस्तार से बताया पुनरावृत्ति एक जवाब दो साल पहले पोस्ट
कुटकी

मूल पद का जिक्र करते हुए, मुझे लगता है कि मैं केवल रूढ़िवादिता = इतिहास (सी भाषाओं का परिवार) और हाल की क्रॉस-भाषा अस्मिता कह सकता हूं; मैंने ओएस पर एमवीसी वेब फ्रेमवर्क, कोराउटाइन्स, और सी को सामान्यीकृत करने के लिए सभी भाषाओं के बीच एक दृष्टिकोण देखा है। उस प्रवृत्ति के बाहर मैं C11 और आगामी जावा लैम्ब्डा (जो ओएस में "दोनों मिरर डेवलपमेंट" लैंगिंग "लैंग्स) के उल्लेखनीय जोड़ को नोट कर सकता हूं।
user132043
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.