कई प्रोग्रामिंग भाषाओं में बयान अर्धविराम द्वारा क्यों समाप्त किए जाते हैं?


130

क्या कोई कारण है कि एक अर्ध-उपनिवेश को एक अलग प्रतीक के बजाय एक लाइन टर्मिनेटर के रूप में चुना गया था?

मैं इस फैसले के पीछे के इतिहास को जानना चाहता हूं, और उम्मीद करता हूं कि उत्तर भविष्य के फैसलों को प्रभावित कर सकते हैं।


6
एरलैंग और प्रोलॉग फुलस्टॉप का उपयोग करते हैं।
डेव क्लार्क

13
मुझे आश्चर्य है कि आप कितनी प्रोग्रामिंग भाषाएं जानते हैं? ऐसी बहुत सी भाषाएं हैं जो अर्धविराम का उपयोग नहीं करती हैं।
चाकू मारना

50
मैं शर्त लगाता हूं कि उत्तर कुछ ऐसा निकलेगा, "सेमीकॉलन का एएससीआईआई मूल्य विशेष रूप से टिकाऊ है जब एक 80-चरित्र पंच-कार्ड पर अंतिम चरित्र के रूप में उपयोग किया जाता है।"
रयान थॉम्पसन

22
आपका प्रश्न बहुत दूर नहीं जाता है। असली सवाल यह है कि, "किसी भी प्रतीक पर क्यों?"
कोनराड रूडोल्फ

5
क्योंकि यह एक qwerty कीबोर्ड की होम रो पर है?
विम

जवाबों:


132

अंग्रेजी में अर्धविराम का प्रयोग बयानों की सूची में वस्तुओं को अलग करने के लिए किया जाता है, उदाहरण के लिए

उसने तीन लोगों को देखा: जेमी, जो न्यूजीलैंड से आई थी; जॉन, दूधवाले का बेटा; और जॉर्ज, एक भद्दा किस्म का आदमी।

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

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

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

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

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


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

40
@ alex.p वास्तव में अर्धविराम का एक स्वीकार्य उपयोग अल्पविराम के स्थान पर है जब यह एक वाक्य को भ्रामक बना देगा, जो इसे सही बनाता है।
रियाथल

13
अर्धविराम के बारे में महत्वपूर्ण जानकारी: theoatmeal.com/comics/semicolon
एड जेम्स

7
@ alex.p: ऐसा प्रतीत होता है कि आप कह रहे हैं कि इयान का उपयोग गलत है, लेकिन आप बस यह कह सकते हैं कि हम अर्ध-कॉलनों का उपयोग कैसे करते हैं, इसका विवरण अधूरा है। यदि आप कह रहे हैं कि वह गलत है, तो आप गलत हैं। अर्ध-कॉलनों का उनका उपयोग पूरी तरह से पारंपरिक है, और मैं आपके द्वारा दिए गए उदाहरण से बहुत अधिक सामान्य अनुमान लगाऊंगा। यदि आप बस कह रहे हैं कि वह एक विस्तृत विवरण नहीं देता है, तो मुझे यकीन नहीं है कि यह वास्तव में उल्लेख के लायक क्यों है।
आइकनोक्लास्ट

17
@ "यह एक दमन होना है, मैं उस समय वहां नहीं था" आप (सही ढंग से) एक अर्धविराम का उपयोग करने का एक सही मौका चूक गए :)
ट्रैविस क्रिश्चियन

70

कई भाषाएं सिंटैक्स का उपयोग करती हैं जो सी के बाद मॉडलिंग की जाती है (जो बी के बाद मॉडलिंग की गई थी - धन्यवाद @ क्रॉलर)। जैसा कि टिप्पणियों में देखा जा सकता है, ऐसी भाषाओं की एक लंबी श्रृंखला है ... बी पीएल / आई से प्रेरित था, जो ;कि एक विभाजक के रूप में ALGOL द्वारा पूर्ववर्ती था ।

चूंकि C में स्टेटमेंट टर्मिनेटर है ;, इसलिए ये भाषाएं सूट का पालन करती हैं।

के रूप में क्यों यह सी में एक बयान टर्मिनेटर के रूप में चुना गया था - संभवतः अंग्रेजी में इसके उपयोग के कारण "अन्योन्याश्रित बयानों को इंगित करने के लिए"

C का आविष्कार भी PDP-11 में ऐसे समय में हुआ था जब सीमित मात्रा में वर्ण सेटों के लिए स्मृति उपलब्ध थी, इसलिए भाषाओं के अन्वेषकों को इन बाधाओं के भीतर काम करना पड़ा।


8
सी ने अपने पूर्ववर्ती 'बी' द्वारा उपयोग किए गए अर्धविरामों के उपयोग की परंपरा का पालन किया
क्रॉलस्टर

8
B ने अपने पूर्ववर्ती 'PL / I' :) द्वारा उपयोग किए गए अर्धविरामों के उपयोग के सम्मेलन का अनुसरण किया:
Skomski

15
@Skomski - जो पीछा किया? मैं उस अंतिम कछुए के आने की प्रतीक्षा कर रहा हूं;)
ऊद

26
-1; दोस्तों, हम सभी प्रभावशाली ALGOL भूल गए हैं? यह सब कुछ आप उल्लेख कर रहे हैं से पहले बयान विभाजक के रूप में अर्धविराम था। (मुझे नहीं पता कि यह विचार कहीं और से लिया गया है)
हगोमग

13
@Oded - मुझे लगता है कि आप पाएंगे कि यह कछुए नीचे है । * 8 ')
मार्क बूथ

54

फोरट्रान ने कैरिज रिटर्न का प्रयोग किया है। COBOL इस्तेमाल की अवधि। LISP कुछ भी उपयोग नहीं किया, सब कुछ के लिए कोष्ठक पर निर्भर है। ALGOL सेमीकॉलन को अलग-अलग बयानों का उपयोग करने वाली पहली भाषा थी। PASCAL ने अलग-अलग बयानों के लिए अर्धविराम का उपयोग करते हुए ALGOL की लीड का अनुसरण किया।

PL / I ने बयानों को समाप्त करने के लिए अर्धविराम का उपयोग किया। एक अंतर है, और यह PASCAL में आसानी से देखा जा सकता है। एडीए ने ALGOL के बजाय इस एक आइटम पर PL / I का नेतृत्व किया।

स्टेटिक सेपरेटर या टर्मिनेटर के रूप में अर्धविराम को कंप्यूटर विज्ञान समुदाय द्वारा एक उपयोगी संकेतन के रूप में जल्दी से स्वीकार कर लिया गया था, और जहाँ तक मुझे पता है, प्रत्येक बाद की ब्लॉक-स्ट्रक्चर्ड भाषा ALGOL की लीड का अनुसरण करती थी और अर्धविराम का उपयोग बयानों को अलग या समाप्त करने के लिए करती थी।

मुझे कई साल पहले बताया गया था कि BCPL ने सेमीकॉलन और कैरिज रिटर्न दोनों को स्टेटमेंट सेपरेटर / टर्मिनेटर के रूप में इस्तेमाल किया है, लेकिन मैंने कभी भी स्वयं भाषा का इस्तेमाल नहीं किया और इसे सत्यापित करने में असमर्थ हूं। कुछ बिंदु पर, BCPL के वंशजों से अलग होने या बयान समाप्त करने के लिए गाड़ी वापसी का उपयोग किया गया था। BCPL begat B, B begat C, C begat C ++, Java, D और चीजों की एक पूरी मेजबानी PASCAL और Ada की तुलना में काफी कम सुविचारित है।


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

2
+1, PASCAL और Ada की तुलना में "काफी कम सुविचारित" के लिए
आदित्य

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

5
@kevincline: क्या आप बोइंग 777 को आम उपयोग में मानेंगे? एविओनिक्स सॉफ्टवेयर की हर पंक्ति जो उड़ती है कि हवाई जहाज एडीए में लिखी गई है।
बजे जॉन आर। स्ट्रोह

2
@kevincline Skype: डेल्फी (पास्कल।) में लिखा गया है कि माइक्रोसॉफ्ट ने इसे हासिल करने के बाद इसे बदलने का प्रयास किया, लेकिन वे इसे सफलतापूर्वक पोर्ट नहीं कर सके, इसलिए अब वे डेल्फी लाइसेंस खरीद रहे हैं। कभी अमेरिका में टीवी देखते हैं? डेल्फी में लिखे गए वाइडऑर्डबिट द्वारा स्टेशन शायद सॉफ्टवेयर पर चलता है; वे एक बड़े अंतर से बाजार के नेता हैं। कभी किसी थीम पार्क में गए हैं? एक अच्छा मौका टिकट बुकिंग प्रणाली डेल्फी में लिखा गया था। पास्कल सब जगह है; यह सिर्फ इतना है कि यह इतना मजबूत प्रतिस्पर्धात्मक लाभ प्रदान करता है कि बहुत सारे लोग इसके बारे में चुप रहने की कोशिश करते हैं ताकि उनके प्रतियोगियों को पता न चले।
मेसन व्हीलर

14

कोई और प्रतीक क्यों नहीं?

कुछ भाषाओं ने अन्य प्रतीकों का उपयोग किया है - एक उदाहरण के लिए, इसके बजाय BASIC के पुराने संस्करणों ने एक बृहदान्त्र का उपयोग किया।

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

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

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

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


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

3
@ ब्रेंडन: मैंने निश्चित रूप से यह कहने का इरादा नहीं किया था कि जीयूआई डिजाइन के सभी हिस्से मनमानी हैं - शायद मुझे "सबसे" के बजाय "कुछ" कहना चाहिए था। यह एक्स नहीं होगा जो "क्लोज विंडो" आइकन के लिए किसी विशेष आकार को परिभाषित करता है - जो एक व्यक्तिगत विंडो मैनेजर तक होगा।
जेरी कॉफ़िन

मेरे स्मरण के सर्वश्रेष्ठ के लिए, मूल डार्टमाउथ बेसिक ने केवल बयानों को समाप्त करने के लिए गाड़ी वापसी का उपयोग किया (यानी, प्रति पंक्ति एक बयान)। मुझे लगता है कि कॉलन द्वारा अलग किए गए एक लाइन पर कई स्टेटमेंट्स थे, एक Microsoft एक्सटेंशन था।
बजे जॉन आर। स्ट्रोहम

7

अर्धविराम मूल रूप से अल्गोल 60 में एक बयान विभाजक के रूप में प्रस्तावित किया गया था , एक टर्मिनेटर नहीं।

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

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

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

    एक [i]: = 0;
    i: = i + 1

और अर्धविराम वास्तव में पहले बयान के लिए एक टर्मिनेटर की तरह लग रहा था। यदि प्रोग्रामर अर्धविराम को एक टर्मिनेटर के रूप में मानते हैं, तो इस तरह का कथन एक वाक्यविन्यास त्रुटि देगा:

    अगर मैं 0 तो
      एक [i]: = 0;
    अन्य
      [[i]: = १;

क्योंकि अर्धविराम "यदि" को समाप्त करता है और इसलिए, "और" झूलता है। प्रोग्रामर पूरी तरह से भ्रमित थे।

इसलिए, PL / I, जो कि फोर-ओरिएंटेड फोरट्रान के लिए IBM का उत्तराधिकारी था, ने अर्धविराम को एक विभाजक के बजाय स्टेटमेंट टर्मिनेटर बनाने का निर्णय लिया । प्रोग्रामर उस पसंद से खुश थे। प्रोग्रामिंग भाषाओं के बहुमत के अनुरूप था। (पास्कल ने इस प्रवृत्ति का विरोध किया, लेकिन इसके उत्तराधिकारी एडा ने इसे छोड़ दिया।)

[नोट जोड़ा गया: प्रोग्रामिंग लैंग्वेज की तुलना पर विकिपीडिया के लेख में एक अच्छी सारणी दी गई है जिसमें बताया गया है कि विभिन्न प्रोग्रामिंग भाषाओं में अर्धविराम का कैसे व्यवहार किया जाता है।]


6

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

अर्धविराम इसलिए चुना गया क्योंकि यह आलस्य और सादगी पर आधारित सर्वश्रेष्ठ चरित्र था।


आपके यहाँ एक अच्छी बात है; मैं केवल "चुने हुए" (जो साबित करना मुश्किल है) को फिर से शब्द दूंगा जैसे "... अर्धविराम जीता है क्योंकि यह आलस्य और सादगी पर आधारित सबसे अच्छा चरित्र था"
gnat

2
मुश्किल से। स्टेटिक टर्मिनेटर / सेपरेटर के रूप में सेमीकॉलन ALGOL (1958) में शुरू हुआ, जो ASCII (1960 से शुरू हुआ, पहला रिलीज 1963, प्रमुख रिलीज 1967, आखिरी अपडेट 1986) से शुरू हुआ।
जॉन आर। स्ट्रोह

@ JohnR.Strohm अच्छी तरह से मुझे खबर है, लेकिन यह सब मेरे लिए बहुत प्राचीन इतिहास है
रयथल

6
यह एक महान सिद्धांत है, लेकिन वास्तविकता यह है कि कीपंचों को अर्धविराम पर जाने के लिए शिफ्ट कुंजी की आवश्यकता होती है, जब तक कि 70 के दशक में आधुनिक कीबोर्ड इनपुट दिखाई नहीं देता। (विकि लेख के निचले हिस्से के पास कई अच्छी तस्वीरें हैं: en.wikipedia.org/wiki/Keypunch ) यह सबसे अधिक संभावना है कि यह केवल प्राकृतिक अंग्रेजी भाषा के नियमों पर आधारित है, एक सनक जो विशेष रूप से एक ही समय में लोकप्रिय थी। (मैं एलआईजीपी को छोड़कर, एलजीओएल, फोरट्रान, कोबोल और एसक्यूएल के सभी 50 भाषाओं को शामिल करूंगा। एलजीओएल का अर्ध-उपनिवेश केवल कई अंग्रेजी भाषा के सम्मेलनों में से एक है, जिसका उपयोग बाद में बेसर ने आगे किया।
सिल्वरबैकनेट

@SilverbackNet जो "शुद्ध अनुमान कार्य" है, शायद यहाँ एक उत्तर का आधार नहीं होना चाहिए।
user1717828

6

यह काफी हद तक एक मनमाना विकल्प है। कुछ भाषाओं ने अन्य विकल्प बनाए हैं। COBOL .चरित्र के साथ कथनों को समाप्त करता है। फोरट्रान, बेसिक, और पायथन आम तौर पर नए बयानों के साथ बयानों को समाप्त करते हैं (मल्टी-लाइन स्टेटमेंट के लिए विशेष वाक्यविन्यास के साथ)। और लिस्प कोष्ठक के साथ अपने बयानों को कोष्ठक करता है।

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

एक अलग प्रतीक के बजाय?

आप और क्या प्रतीक चुन सकते हैं?

ASCII अक्षर # $ @ [] ^ _ `{|} ~ हमेशा आईएसओ 646 जैसे प्रारंभिक चरित्र एन्कोडिंग में मौजूद नहीं थे ।

वर्ण ()*+-/<=>आमतौर पर गणितीय ऑपरेटरों के रूप में उपयोग किए जाते हैं और स्टेटमेंट टर्मिनेटर के रूप में उपयोग किए जाने पर पार्सिंग अस्पष्टता पैदा करेंगे।

product = a * b *  // If '*' were a statement terminator,
c * d *            // Are there two factors, or four?

इसी तरह की समस्याएं लागू होंगी 'और ", जो आमतौर पर स्ट्रिंग सीमांकक के रूप में उपयोग की जाती हैं; ,, जो आमतौर पर फ़ंक्शन तर्कों को अलग करने के लिए उपयोग किया जाता है, और ., जो आमतौर पर दशमलव बिंदु के रूप में उपयोग किया जाता है (या जैसे निर्माण में एक सीमांकक के रूप में some_struct.some_field)।

वह निकल जाता है !%&:;?

चुनने !या ?संभवतः तकनीकी कठिनाइयों का कारण नहीं होगा, लेकिन उनके अंग्रेजी अर्थ कार्यक्रम को गलत मूड देंगे।

print(x)?  # Yes, you should.
           # It's an IMPERATIVE language; stop questioning my commands.
print(x)!  # OK!  You don't have to shout!

&एक बयान विभाजक (नहीं टर्मिनेटर) के रूप में एक और अधिक समझदार विकल्प होगा क्योंकि

do_thing_a() &
do_thing_b()

बात एक करने के लिए एक आदेश के रूप में पढ़ा जा सकता है और बात बी लेकिन सबसे अधिक भाषाओं कर एक साथ तो &एक तार्किक या बिटवाइज़ के रूप में उपयोग ऑपरेटर और बजाय।

%संकेत की तरह बयान में भ्रम की स्थिति पैदा हो सकती है interest_rate = 2.99%(जो चर करने के लिए सेट हैं 2.99उम्मीद के बजाय 0.0299)। बेशक, जाने-माने गणितीय अर्थ %ने सी को शेष ऑपरेटर के रूप में उपयोग करने से नहीं रोका।

ताकि छोड़ देता है :और ;

: एक समझदार विकल्प है, और वास्तव में BASIC की अधिकांश बोलियों में इंट्रा-लाइन स्टेटमेंट विभाजक के रूप में उपयोग किया जाता है।

लेकिन ;इसकी तरफ अंग्रेजी व्याकरण है; इसका उपयोग वाक्य के भीतर अलग-अलग खंडों के लिए किया जा सकता है।


3

अपने शीर्षक प्रश्न का उत्तर देने की कोशिश करने के बजाय, मुझे लगता है कि आपके निहित प्रश्न पर ध्यान देना बेहतर है:

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

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

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

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

विशेष रूप से वह अंतिम भाग महत्वपूर्ण है: यह पता लगाने की कोशिश करने के बजाय कि कौन सी प्रोग्रामिंग भाषा कभी अर्धविराम के रूप में टर्मिनेटर के रूप में उपयोग की गई थी और बहुत सारी अन्य प्रोग्रामिंग भाषाओं की नकल क्यों की गई थी, आप शायद उन भाषाओं को देखकर अधिक सीखेंगे जो कॉपी नहीं की थीं यह। उदाहरण के लिए, जबकि स्मॉलटाक ने सिमुला से बहुत प्रेरणा ली, यह नहीं कियाइसके सिंटैक्स की नकल करें और विशेष रूप से स्टेटिक टर्मिनेटर के रूप में अर्धविरामों के उपयोग की। इसने टर्मिनेटर (विभाजक वास्तव में) को पूर्ण विराम में बदल दिया, और अर्धविराम का उपयोग किसी और चीज के लिए किया। इसके विपरीत, पहली भाषा जो कभी स्टेटमेंट टर्मिनेटर के रूप में अर्धविराम का उपयोग करती थी, हो सकता है कि इसे इससे बदलने का एक कारण यह हो कि इससे पहले आई भाषाओं में इसका क्या उपयोग किया गया था। यह भी संभव है कि स्टेटमेंट टर्मिनेटर (या अन्य भाषाओं के स्वतंत्र रूप से ऐसा किया हो) की पूरी अवधारणा को पेश करने वाली पहली भाषा थी और अर्धविराम का उपयोग किसी कारण से किया गया था जो अब समय के लिए खो गया है। (मुझे संदेह है कि उत्तरार्द्ध यहां मामला है, क्योंकि अन्य उत्तरदाताओं में से कोई भी व्यक्ति उस व्यक्ति से उद्धरण नहीं पा सकता है जिसने अर्धविराम की पेशकश की बजाय यह दावा किया कि अर्धविराम क्यों एक अच्छा विकल्प था। लेकिन मुझे शांत करने के लिए। बिंदु, मुझे लगता है कि आप इस बात को देखकर और अधिक सीखेंगे कि भाषा डिजाइनरों ने चीजों को क्यों बदल दिया, बजाय इसके कि उन्हें कॉपी / रखा जाए। जब लोग उन चीजों को बदलते हैं जो वे आमतौर पर चाहते हैं या परिवर्तन की व्याख्या करनी होती है, जबकि वे ऐसा नहीं करते हैं जब चीजों को कॉपी करते हैं या एक ही रखते हैं क्योंकि “हम इसे क्यों बदलेंगे? बस यही तरीका है! ”


2

इसकी दृश्यता के बारे में।

प्रारंभिक वक्तव्य विभाजक 'थे।' COBOL और नई लाइन के रूप में, FORTRAN में गाड़ी वापसी।

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

पूर्ण विराम एक अधिक दिलचस्प समस्या का कारण बना। जब आप अंग्रेजी पाठ पढ़ते हैं तो आपका मस्तिष्क एक अचेतन स्तर पर पूर्ण विराम की प्रक्रिया करता है, आप सचेत हैं कि एक वाक्य समाप्त हो गया है और आप सांस के लिए रुक सकते हैं लेकिन आप वास्तव में ध्यान नहीं देते हैं। यह संकेत दिया। साथ ही कई फोंट में '।' कभी-कभी एकल पिक्सेल के रूप में गाया जाने वाला सबसे छोटा संभव चरित्र है। COBOL प्रोग्राम में त्रुटियों का सबसे आम कारण मिसिंग या अतिरिक्त अवधि बन गया।

इसलिए शुरुआती गलतियों से सीखते हुए ALGOL एक विशिष्ट टर्मिनेटर चुनता है जो एक स्टेटमेंट को कई लाइनों में प्रवाहित करने की अनुमति देता है, और, एक ऐसा पिकअप जो आसानी से दिखाई देता है और आसानी से मानव पाठकों द्वारा देखा जाता है। अर्ध-बृहदान्त्र दोनों सामान्य और बड़े सामान्य अंग्रेजी में पर्याप्त रूप से संसाधित नहीं किया जा सकता है।


1

यह मेरी समझ थी कि इसे इसलिए चुना गया क्योंकि गाड़ी-वापसी / नई-लाइन के अलावा एक स्पष्ट विवरण-टर्मिनेटर की आवश्यकता थी। 80-कॉलम स्क्रीन के दिनों में, वास्तव में कई लाइनों में कोड रैप की एक ही लाइन होना आम बात थी कि स्टेटमेंट टर्मिनेटर के लिए \ r या \ n का उपयोग करने से काम नहीं चलेगा।

अर्धविराम केवल सुविधाजनक थे क्योंकि उनका उपयोग तर्क / गणित विवरणों में नहीं किया गया है। जैसे, वे किसी भी महत्वपूर्ण सीमा तक बयानों की वास्तविक सामग्री के साथ संघर्ष नहीं करते हैं।


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


3
डार्क एग्स में वापस, "80-कॉलम स्क्रीन" नहीं थे। 80-स्तंभों वाले कार्ड थे, और विभिन्न स्तंभों के साथ प्रिंटर थे। (लगभग 130 या तो आम था।) फोरट्रान ने कार्ड के अंत में बयानों को समाप्त कर दिया, लेकिन बयान जारी रखने के लिए निरंतरता कार्ड की अनुमति दी। कार्ड के कॉलम 6 में अंकित चरित्र द्वारा निरंतरता कार्ड चिह्नित किए गए थे। (कोई भी चरित्र काम करेगा। स्थानीय सम्मेलन के आधार पर, आप आमतौर पर या तो एक + चिह्न या एक अंक, कई निरंतरता कार्डों के लिए अंकों की गिनती
देखेंगे

1
सी। के शुरुआती दिनों में मौजूद कंप्यूटरों के लिए पायथन जैसी भाषा अव्यावहारिक रही होगी। स्टेटमेंट टर्मिनेशन कैरेक्टर का इस्तेमाल करने से पर्सिंग सरल हो जाती है और दशकों पहले कंपाइलरों की मेमोरी और सीपीयू लोड को कम करना बहुत जरूरी था। विशेष रूप से उन कंप्यूटरों पर जहां आपने दूसरी बार सीपीयू समय के लिए भुगतान किया था।
१०:३५ पर गीगाट्रॉन

@ गिगाट्रॉन - मैं केवल एक बयान को समाप्त करने के लिए गाड़ी के रिटर्न के उपयोग की बात कर रहा था , अजगर के उच्च-स्तरीय पहलुओं में से किसी में नहीं।
फर्जी नाम

1
@Gigatron, आप LISP पर और विशेष रूप से IBM 704 पर इसके शुरुआती इतिहास पर एक नज़र डाल सकते हैं। आपको आश्चर्य हो सकता है कि Ancients क्या कर सकते हैं, यहां तक ​​कि पत्थर के चाकू और भालू के साथ काम करना।
जॉन आर। स्ट्रॉहम

1
@Gigatron: FORTRAN एक ही कंप्यूटर पर चलता है, और यह अलग-अलग स्टेटमेंट के लिए नईलाइन (मल्टी-लाइन स्टेटमेंट के लिए विशेष सिंटैक्स के साथ) का उपयोग करता है।
dan04

0

यहाँ दो प्रश्न हैं: ALGOL को अर्धविराम क्यों मिला और इसके बाद अन्य भाषाएँ क्यों चली गईं।

पहला प्रश्न पहले से ही यहां कई तरह से उत्तर दिया गया है।

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


0

मैं गलत हो सकता हूं, लेकिन मुझे लगता है कि इसका इस तथ्य से कुछ लेना-देना है कि कई असेंबलरों में एक टिप्पणी शुरू करने के लिए एक अर्धविराम का इस्तेमाल किया जाता था, आमतौर पर एक निर्देश के बाद। सब कुछ ;एक टिप्पणी के बाद था, और अब निर्देश का हिस्सा नहीं था।

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

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

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

Inb4: नहीं, यह एक ऐतिहासिक खाता नहीं है। मेरे पास कोई सबूत नहीं है कि यह वास्तविक तरीका है जो अर्धविराम जीवन के लिए आया था। यह सिर्फ इतना है कि मैं कल्पना करता हूं कि यह संभवतः हो सकता है।


-1

अधिकांश भाषाओं ने अर्ध-उपनिवेश लिया क्योंकि यह पहले से ही उस उद्देश्य के लिए व्यापक रूप से उपयोग में था और बदलते हुए इसका कोई मतलब नहीं था।

और उस विकल्प को बनाने के लिए पहली भाषाओं पर विचार करते हुए, आपको विचार करना होगा कि विकल्प क्या हैं। भाषा को डिज़ाइन करते समय, आप चाहते हैं कि आवश्यक वर्ण उपलब्ध हों, और इस समय वर्ण सेट 6 बिट्स पर कोडित किए गए थे, अक्सर कुछ पैटर्न आरक्षित होते हैं, अक्सर कुछ वर्णों को दृढ़ता से परिभाषित नहीं किया जाता है (बाद की घटना के लिए, इस बारे में सोचें ISO-646 के राष्ट्रीय वेरिएंट - US वेरिएंट को ASCII नाम के तहत अच्छी तरह से जानते हैं - जो "सामान्य" वर्णों के लिए कोड का पुन: उपयोग करता है [, #या $एक संदर्भ में प्रभाव को देखता है जहां कई कोड स्थिति के रूप में केवल आधा है उपलब्ध है और उन लोगों के आधे से अधिक पत्र और अंक)।

शायद कोई अन्य चरित्र नहीं था जिसे सहज रूप में स्टेटमेंट सेपरेटर के रूप में इस्तेमाल किया जा सकता है (जो .कि पहले से ही उस मानदंड के लिए एकमात्र गंभीर दावेदार है) और एक समय में लेक्सिंग या पार्सिंग कठिनाइयों को पेश किए बिना जब पार्स और लेक्सिंग सिद्धांत अभी भी विस्तार में था ( .अब है) वास्तविक संख्या में इसके उपयोग के कारण प्रश्न से बाहर)।


-1

अर्धविराम का उपयोग करने का एक और कारण है क्योंकि यह उन पात्रों में से एक है जिनकी हमें अधिक बार आवश्यकता नहीं होती है या उनका उपयोग नहीं किया जाता है।

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

मेरा मानना ​​है कि सी स्टाइल प्रोग्रामिंग भाषाओं ने इसे लोकप्रिय बना दिया और फिर नई प्रोग्रामिंग भाषाओं के लेखकों ने पहिए को सुदृढ़ करना नहीं चाहा और वे अब तक इसका उपयोग करते रहे।

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