बेसिक ने लाइन नंबरों का उपयोग क्यों किया?


95

पुराने बेसिक (और शायद अन्य भाषाओं) ने स्रोत कोड के भाग के रूप में लाइन नंबरों का उपयोग क्यों किया?

मेरा मतलब है, क्या समस्याओं को हल करने की कोशिश की?


27
यदि आपने पहले ही कुछ गंभीर रीचेक प्रयास किए हैं, तो टिप्पणियों के अंदर इसके बारे में जानकारी को दफन न करें, तदनुसार अपने प्रश्न को संपादित करें। इसके अलावा, Google ने मुझे सीधे यहाँ ले लिया: stackoverflow.com/questions/541421/… और यहाँ stackoverflow.com/questions/2435488/…
Doc Brown

13
मैं इस प्रश्न को ऑफ-टॉपिक के रूप में बंद करने के लिए मतदान कर रहा हूं क्योंकि इसका जवाब पहले से ही स्टैकओवरफ्लो पर है
एंड्रेस एफ।

6
Applesoft BASIC पहली प्रोग्रामिंग भाषा थी जिसे मैंने सीखा था। मुझे याद है कि पास्कल के पास लाइन नंबर होते हैं और जैसे "लेकिन मैं बिना लाइन नंबर के GOTO कैसे करूं? कैसे काम करना है?"
जेन स्काउडर

14
मज़ेदार, पिछली बार जब मैंने जाँच की थी, तो हम निर्णय कर रहे थे कि यदि प्रश्न इसकी सामग्री पर आधारित था, अन्य साइटों की सामग्री पर नहीं (और संभवतः उत्तर जो कि वहां झूठ बोलते हैं)।
मैथ्यूॉक

जवाबों:


130

बेसिक को इसकी समकालीन भाषाओं के संदर्भ में लेने की आवश्यकता है: प्रारंभिक फोरट्रान, कोबोल और असेंबली।

जब मैं लेबल के बिना 6502 असेंबली पर डबिंग कर रहा था , इसका मतलब यह था कि जब आपने पाया कि आपको कसकर पैक कोड के बीच में एक निर्देश जोड़ने की आवश्यकता है (मैंने बाद में एनओपी एस जोड़ा ) तो आपको पूरी तरह से कूदने और फिर से बनाने की आवश्यकता थी। पतों। यह समय लेने वाला था।

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

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

NN NN   TT TT   AA BB CC DD .. .. 00

अगली पंक्ति के पते के लिए इसमें दो बाइट्स थे ( NN NN)। इस लाइन की लाइन संख्या के लिए दो बाइट्स ( TT TT), और फिर AA BB CC DD .. ..लाइन मार्कर ( 00) के अंत के बाद टोकन ( ) की एक सूची । (यह ऐप्पल // ई के अंदर पेज 84-88 से है )

उस मेमोरी प्रतिनिधित्व को देखते हुए महसूस करने के लिए एक महत्वपूर्ण बिंदु यह है कि लाइनों को ऑर्डर से बाहर मेमोरी में संग्रहीत किया जा सकता है। स्मृति की संरचना संरचना में एक 'अगली पंक्ति' सूचक के साथ जुड़ी हुई सूची की थी। इससे दो लाइनों के बीच नई लाइनों को जोड़ना आसान हो गया - लेकिन आपको इसे ठीक से काम करने के लिए प्रत्येक पंक्ति को नंबर देना था।

कई बार जब BASIC के साथ काम करते हैं, तो आप वास्तव में BASIC में ही काम कर रहे थे । विशेष रूप से, एक दिया गया स्ट्रिंग या तो एक पंक्ति संख्या और आधार निर्देश था, या मूल दुभाषिया के लिए एक कमांड RUNया LIST। इससे कोड को आदेशों से अलग करना आसान हो गया - सभी कोड संख्याओं से शुरू होते हैं।

जानकारी के ये दो टुकड़े पहचानते हैं कि संख्याओं का उपयोग क्यों किया गया था - आप 16 बिट्स में बहुत सारी जानकारी प्राप्त कर सकते हैं। स्ट्रिंग आधारित लेबल अधिक जगह लेगा और ऑर्डर करने के लिए कठिन हैं। संख्याओं को समझने में आसान, समझने योग्य और आसान तरीके से काम करना आसान है।

बाद में BASIC बोलियाँ जहाँ आप हर समय दुभाषिया में नहीं थे, हर पंक्ति के साथ दूर करने में सक्षम थे और इसके बजाय केवल उन रेखाओं की संख्या की आवश्यकता थी जो शाखा लक्ष्य थीं। प्रभाव में, लेबल।


3
अच्छा ग्रेवी, मैं मिनी असेंबलर के बारे में भूल गया था। वह यादें वापस लाता है
ब्लर एफएल

3
@Blrfl यदि स्मृति कार्य करती है ... ] CALL -936 * F666 G $ ... हां, एफपी बुनियादी के साथ शुरू करने के लिए।

3
नहीं, वह था लाइन संपादक। लाइन नंबर न होने से कमांडों की पहचान की गई थी। दोनों को इंगित करने के लिए कथन संख्या रेखाओं से पहले दिए गए थे कि वे कथन थे और यह इंगित करने के लिए कि वे गए थे और / या वे किस पंक्ति से आगे निकले थे। यह BASIC का बिल्ट-इन लाइन एडिटर पार्ट था, यह एक अलग टूल या एनवायरनमेंट नहीं था।
RBarryYoung

3
@RBarryYoung ] PRINT "FOO"को मूल रूप से दुभाषिया द्वारा चलाया गया था। यह एक बयान है। यदि आप इसे बाद में चलाना चाहते हैं, तो आप ] 10 PRINT "FOO"और फिर करेंगे ] RUN। AppleSoft BASIC वातावरण में, हर BASIC स्टेटमेंट को तुरंत या देरी से चलाया जा सकता है - केवल कुछ ही कमांड थे जो DOS द्वारा प्रदान किए गए थे जो कि मान्य BASIC स्टेटमेंट नहीं थे। अब एक बयान और बाद में एक बयान के बीच अंतर लाइन नंबर था। आप संबंधित पंक्ति संख्या को फिर से दर्ज करके विलंबित विवरण को भी संशोधित कर सकते हैं। आप एक लाइन पर कई स्टेटमेंट भी डाल सकते हैं::

4
जैसा कि विकिपीडिया लेख ( en.wikipedia.org/wiki/Dartmouth_BASIC ) में उल्लेख किया गया है, " DTSS (डार्टमाउथ टाइम शेयरिंग सिस्टम) ने एक प्रारंभिक ... इंटरैक्टिव कमांड लाइन इंटरफ़ेस लागू किया है। ... एक लाइन नंबर के साथ शुरू होने वाली किसी भी लाइन को जोड़ा गया था। कार्यक्रम, किसी भी पहले से संग्रहीत लाइन को एक ही नंबर के साथ प्रतिस्थापित करना; और कुछ भी DTSS कमांड माना जाता था और तुरंत निष्पादित किया जाता था। ... डार्टमाउथ टाइमशैयर सिस्टम के लिए टर्मिनल इकाइयों के रूप में टेलीप्रिंटर्स के उपयोग के कारण संपादन की यह विधि आवश्यक थी। "
RBarryYoung

50

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

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


38
एक पंक्ति का संपादन ? विलासिता! आपके द्वारा उपयोग किए गए पहले आधार मैंने पूरी पंक्ति को फिर से टाइप किया। जो वास्तव में चूसा था जब आपको एक सबरूटीन का त्याग करना पड़ा था।
TMN

48
स्क्रीन? क्या स्क्रीन? मेरे पहले बेसिक में, "स्क्रीन" कागज का एक रोल था।
ddyer 20

18
@ दोस्त: मैं पेपर का रोल करने का सपना देखता था! हमारे पास सभी इलेक्ट्रोड का एक गुच्छा था। शाम को जब काम करना था, तो हमें खुद को एक पंक्ति में संरेखित करना होगा और निरीक्षण करना होगा कि कौन प्रोग्राम ठीक से काम करता है या नहीं। ... - सच में, मैं इस बात से अचंभित हूँ कि लोग वास्तव में उन दिनों में काम करने के कार्यक्रम लिखने में कामयाब रहे।
लेफ्टरनबाउट

26
बिजली! खूनी विलासिता। हम अपनी आज्ञाओं को ग्रेनाइट
माइकल डुरंट

10
@TMN और ddyer ठीक है, आप दोनों जानते हैं कि यह कहाँ जा रहा है, ठीक है ...? ; -ड ==> dilbert.com/strip/1992-09-08 ==> imgs.xkcd.com/comics/real_programmers.png
कोपरपर

45

यदि आप 80 के 8-बिट होम माइक्रो कंप्यूटर की BASIC बोलियों के बारे में सोच रहे हैं, तो उन कंप्यूटरों में टेक्स्ट एडिटर नहीं थे (जब तक कि आपने कुछ वर्ड प्रोसेसर एप्लिकेशन नहीं खरीदा है)। संपूर्ण बुनियादी कार्यक्रम स्रोत कोड "एक संपादक में खुला" रखने का कोई तरीका नहीं था, जैसे आज प्रोग्रामिंग करते समय आपके पास होगा। प्रोग्रामर प्रोग्राम के बारे में सोर्स कोड फ़ाइल, या टेक्स्ट, वास्तव में सोच भी नहीं सकता है।

उदाहरण की समस्या

तो, आपको यह बताने का मौका देता है कि आपके सिर में रेखाओं के बिना एक सरल कार्यक्रम है:

FOR I=1 TO 42
PRINT I
NEXT I

आप अपने कंप्यूटर को बूट करें। आपके पास एक "तैयार" या ऐसा कुछ है, और कर्सर अगली पंक्ति में बैठा है। यह विभिन्न स्क्रिप्टिंग भाषाओं के आज के REPL वातावरण की तरह है , हालांकि वास्तव में कड़ाई से आधारित नहीं है, स्क्रीन आधारित अधिक पसंद है। तो आज की REPLs की तरह नहीं, लेकिन करीब।

अब यदि आप प्रोग्राम में प्रवेश करना शुरू करते हैं, तो आपको पहली पंक्ति के बाद त्रुटि हो सकती है, क्योंकि BASIC दुभाषिया इसे तुरंत निष्पादित करने की कोशिश करता है (और भूल जाता है), और यह लूप को समाप्त करने के लिए NEXT के बिना कोई मतलब नहीं है। यह टेक्स्ट एडिटर नहीं है जहाँ आप टेक्स्ट एडिट करते हैं, यह वह जगह है जहाँ आप कंप्यूटर को कमांड देते हैं!

आंशिक समाधान

तो आपको कहने का कोई तरीका चाहिए, यह प्रोग्राम लाइन है, इसे स्टोर करें! आपके पास एक विशेष कमांड या सिर्फ एक प्रतीक हो सकता है जो बताता है कि हे, यह प्रोग्राम लाइन है, इसे स्टोर करें। आइए इसकी कल्पना करें:

#FOR I=1 TO 42
#PRINT I
#NEXT I

ठीक है, अब हमारे काल्पनिक बेसिक दुभाषिया ने कार्यक्रम को संग्रहीत किया और आप इसे चला सकते हैं। लेकिन अब आप प्रिंट लाइन को संपादित करना चाहते हैं। आप इसे कैसे करते हो? आप टेक्स्ट एडिटर में नहीं हैं, आप कर्सर को लाइन में नहीं ले जा सकते हैं और उसे संपादित नहीं कर सकते हैं। या आप LET COUNT=COUNT+1लूप में एक और लाइन जोड़ना चाहते हैं । आप कैसे इंगित करते हैं कि नई लाइन कहाँ डाली जानी चाहिए?

काम करने का उपाय

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

10 FOR I=1 TO 42
20 PRINT I
30 NEXT I

परिवर्तनों के साथ लाइन 20 में फिर से प्रवेश करने और नई लाइनें जोड़ने के बाद, यह हो सकता है

5 LET COUNT=0
10 FOR I=1 TO 42
20 PRINT "Index", I
25 LET COUNT=COUNT+1
30 NEXT I

अधिक समस्याएँ हमने अभी हल की हैं

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

अधिक महत्वपूर्ण रूप से, उपयोगकर्ता अनुभव के दृष्टिकोण से, कोड को संपादित करने के लिए लाइन नंबर वास्तव में आश्चर्यजनक रूप से आसान लेकिन पूर्ण इंटरफ़ेस हैं। नया कोड डालने के लिए एक संख्या के साथ शुरू होने वाली एक पंक्ति टाइप करें। LIST 100-200100-200 तक लाइनें दिखाने के लिए उपयोग करें । एक पंक्ति को संपादित करने के लिए, इसे स्क्रीन पर सूचीबद्ध करें, स्क्रीन पर पाठ संपादित करें, और फिर से लाइन दर्ज करें। एक पंक्ति को हटाने के लिए, इसे खाली होने के लिए संपादित करें, बस इसके बाद कुछ भी नहीं के साथ लाइन नंबर दें। इसका वर्णन करने वाला एक पैराग्राफ। पुराने पाठ संपादकों जैसे कि डॉस के एडलिन , या यूनिक्स के ईडी या पूर्व के उपयोग का वर्णन करने की कोशिश करें : आपको केवल एक पैराग्राफ (केवल मामूली हाइपरबोले) की आवश्यकता है, यह समझाने के लिए कि उपयोगकर्ता कैसे उनसे बाहर निकल सकता है, जब गलती से शुरू हुआ!

निष्कर्ष

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


4
आप इसे किसी न किसी। केवल प्रिंटिंग ट्टी या सिंगल लाइन के बजाय मल्टी-लाइन स्क्रीन होने से यह आसान हो जाता है, लेकिन स्रोत फ़ाइल अवधारणा के बिना यह अभी भी लाइन उन्मुख है।
JDługosz

तथ्य यह है कि प्रणाली एक 8-बिट वास्तुकला है वास्तव में सीमित कारक नहीं है, हालांकि। अब, इस तथ्य ने कहा कि सिस्टम में केवल कुछ किलोबाइट्स रैम और मुट्ठी भर किलोबाइट्स ROM हो सकते हैं, और संभवतः कोई स्थायी भंडारण भी नहीं है (यदि आपका
कैसट

पाठ संपादक के बिना कोडिंग की कल्पना करना अभी भी मुश्किल है
फुलकव

@ LưuV LnhPhúc वैसे, "असली चीज़" को चलाने के लिए बहुत सारे एमुलेटर हैं, जैसे लगभग 8-बिट होम कंप्यूटर, या MSDOS और इसके GWBASIC के साथ dosbox। एक उदाहरण के रूप में, आप कई C64 एमुलेटरों में से एक प्राप्त कर सकते हैं, और फिर Google को अपने यूजर गाइड को पीडीएफ :-) के रूप में खोजने के लिए
15:12 पर 15:12

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

17

बेसिक विकसित होने के स्थान और युग में, सबसे अच्छा उपलब्ध I / O डिवाइस एक टेलेटाइप था। किसी प्रोग्राम को एडिट करना (कागज पर) पूरे प्रोग्राम की एक सूची, या उसके दिलचस्प भाग को सूचीबद्ध करके, और फिर लाइन नंबर के साथ रिप्लेसमेंट लाइन्स टाइप करके किया गया था।

यही कारण है कि डिफ़ॉल्ट लाइन नंबरिंग 10 तक थी, इसलिए मौजूदा लाइनों के बीच अप्रयुक्त संख्याएं होंगी।


1
असल में, कार्ड रीडर (कीपंच के साथ) और लाइन प्रिंटर टेलीप्रिंटर की तुलना में बेहतर I / O डिवाइस थे, लेकिन टेलीप्रिंटर्स काफी सस्ते थे।
सुपरकैट

10 से लाइन नंबरिंग एक वास्तविक मानक था, कठोर आवश्यकता नहीं। और कई BASICs के पास एक ren'कमांड' था, जिसे फिर से बनाना था । एक ठेठ मंगलाचरण था ren 10, 10(दस से शुरू फिर से अंकित करना, दस से incrementing - डिफ़ॉल्ट व्यवहार करता है, तो एक टाइप ren। The gotoऔर gosubऔर then (linenumber)। आदेशों स्वचालित रूप से अपडेट किया जाएगा लेकिन यह निश्चित रूप से जल्द से जल्द बुनियादी बातों में उपलब्ध नहीं था लेकिन IIRC, एप्पल में उपलब्ध था। इंटेगर बेसिक, अप्लेसॉफ्ट एफपी बेसिक, टीआई बेसिक / एक्सटेंडेड बेसिक, एमएस बेसिक / जीडब्ल्यू बेसिक, इत्यादि
डेविड

13

"लाइन नंबर" का अर्थ कुछ अलग चीजें हैं।

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

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

BASIC को FORTRAN से प्राप्त किया गया था, और इसे लागू करने और समझने के लिए सरल होने का इरादा था, इसलिए प्रत्येक "लाइन" को एक लाइन नंबर (दोनों अनुक्रमण के लिए और GOTO/ GOSUBबयानों के लक्ष्य के रूप में ) के लिए मजबूर करना संभवतः उस कारण के लिए बनाया गया एक डिज़ाइन निर्णय था।


2
आह, गणना और नियत गोटो। PL / 1 में लेबल चर की सरणियों की यादें, एक मैच खोजने के लिए एक सरणी के माध्यम से लूपिंग और फिर एक गेटो करने के लिए लेबल चर के सरणी में सूचकांक के रूप में उस मिलान सूचकांक का उपयोग करता है। या कोबोल ने गोटो को बदल दिया। और न ही लाइन नंबर का उपयोग कर! बीबीसी बेसिक में एक रेनमर स्टेटमेंट था जो बहुत उपयोगी था।
किकस्टार्ट

GCC एक विस्तार के रूप में गणना किए गए GOTO की अनुमति देता है (हालांकि सीधे एक पंक्ति संख्या के साथ नहीं) - आप सामान कर सकते हैं जैसेgoto array_of_labels[some_computation()];
इमिबिज़

माइनर: फोरट्रान को GOTO(या ASSIGN) और मूल उर्फ ​​अंकगणित उर्फ ​​थ्रेवे के लक्ष्यों के लिए लेबल की आवश्यकता होती है IF, और (और शायद ही कभी इस्तेमाल किया जाता है) वैकल्पिक रिटर्न CALL, और प्रकार के लक्ष्य (यकीनन सीमांकक) DOऔर FORMATबयान। अन्य बयानों पर वे वैकल्पिक थे।
dave_thompson_085

कुछ बुनियादी (जैसे, अटारी) ने भी गोटो बयानों में मनमाने ढंग से संख्यात्मक अभिव्यक्तियों का उपयोग करने की अनुमति दी। तो, एक उचित लाइन नंबरिंग कन्वेंशन के साथ, आप GOTO 1000+N*100एक switchस्टेटमेंट का अनुकरण करने के लिए लिख सकते हैं ।
dan04

6

मैंने COBOL में प्रोग्रामिंग शुरू की जिसमें प्रत्येक पंक्ति के 1-6 कॉलम में लाइन नंबर का उपयोग किया गया था। क्योंकि 1970 के दशक में कोई आईडीई नहीं था, सब कुछ छिद्रित कार्ड के माध्यम से किया गया था और यह पहचानने के लिए कि मूल स्रोत में कौन सी लाइनें बदलनी हैं और कौन सी नई लाइनें जोड़ी गई थीं, यह पहचानने के लिए लाइन नंबर का उपयोग किया गया था। हम अधिक संख्याओं में जोड़ने के लिए कमरा देने के लिए 100 की संख्या में वृद्धि करते थे।


14
COBOL ने उन लाइन नंबरों का उपयोग नहीं किया। वे सख्ती से एक सुविधा थे, ताकि जब कुछ गरीब विद्वान अपना डेक गिरा दें, और कार्ड हर जगह चले गए, तो वह उन्हें इकट्ठा कर सकता था और कार्ड सॉर्टर के माध्यम से उन्हें सही क्रम में वापस लाने के लिए चला सकता था। आपको कार्ड में लाइन संख्या को पंच करने की आवश्यकता नहीं थी। (स्टूडेंट्स ने नहीं किया। प्रोडक्शन शॉप्स ने किया।)
जॉन आर। स्ट्रोम

5

बेसरिक फोरट्रान की तुलना में बाद में बेस-टर्मिनल युग में आया। इसमें रीड-एग्ज-प्रिंट-लूप का माहौल दिखाया गया था जो कार्ड के डेक की तुलना में अधिक इंटरैक्टिव था।

मैंने 24 अक्षर वाले एक लाइन डिस्प्ले पर, BASIC में, प्रोग्राम करना सीखा । पंक्ति संख्याएँ यह निर्दिष्ट करने का एक स्वाभाविक तरीका था कि आप कहाँ जाना चाहते हैं, चाहे एक का संपादन हो या दूसरों के बीच डालने का।

मैं वास्तव में कल्पना नहीं कर सकता कि आप इसे कैसे करेंगे।


2
इससे पहले किए गए अंकों से अधिक कुछ भी उपलब्ध नहीं होता है और पहले के 4 जवाबों में समझाया गया है
gnat

2
यह बुरा बनाता है? मुझे लगता है कि जैक्स वास्तव में लाइनों को डालने और कोड को मानसिक रूप से ट्रैक करने के संबंध में एक-पंक्ति के संपादन का सार कवर नहीं करता था।
JDługosz

1
@jameslarge क्या मुझे उस अनुच्छेद की याद आती है जिसकी शुरुआत "कई बार BASIC के साथ काम करते समय होती है ..."? मैं भी BASIC को ऑपरेटिंग सिस्टम कहने में संकोच करता हूँ। वह DOS था। और डॉस को बेसिक की जरूरत नहीं थी, बस इसके लिए आपके पास काम करने का सबसे ज्यादा समय था।

2
@ जब तक यह सच है, यह एक ऐसी प्रणाली के लिए डिज़ाइन किया गया था जिसमें io (डार्टमाउथ टाइम शेयरिंग सिस्टम) के लिए टेलेटाइप्स का उपयोग किया गया था ।
जूल्स

3
@ मिचेल्ट, उफ़! मैं अपनी टिप्पणी के आधे हिस्से को वापस ले लूंगा, लेकिन मैं कुछ कंप्यूटरों के आधार पर ओएस होने के बारे में कहूंगा। मै सोच रहा हूँ; Apple] [, TI 99/4, IBM 5100, HP 9830a, Compucolor 8001, TRS-80 Model 1, Comodore Vic20, Sinclair ZX80, और अन्य। सभी ROM से BASIC में बूट हुए। कुछ के पास एक वैकल्पिक ऑपरेटिंग सिस्टम था जिसे एक ऑडियो कैसट से लोड किया जा सकता था या, फ्लॉपी डिस्क से अगर आपने फ्लॉपी ड्राइव के लिए अतिरिक्त $ $ का भुगतान किया था।
सोलोमन स्लो

1

एक बिंदु जिसका किसी ने अभी तक उल्लेख नहीं किया है, वह यह है कि शुरुआती लोगों के लिए कार्यक्रम प्रवाह के बारे में तर्क करना आसान है जहां शाखा लक्ष्य स्पष्ट हैं। इसलिए मैच (संभवत: नेस्टेड) ​​BEGIN / END स्टेटमेंट्स (या जो भी ब्लॉक डेलीमीटर उपयोग किए गए थे) से मिलान करने के बजाय, यह बहुत स्पष्ट था कि कंट्रोल फ्लो कहां गया। यह संभवतः बेसिक के लक्षित श्रोताओं के लिए उपयोगी था (यह शुरुआत का सर्व-उद्देश्यीय प्रतीक निर्देश है, आखिरकार)।


1

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

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