2010-03-12 15 views
20

संभव डुप्लिकेट:बेसिक की संख्या क्यों थी?

42 PRINT "Hello world!" 

पाठ संपादक वापस:
Why did we bother with line numbers at all?

के बारे में मैं क्यों बुनियादी प्रोग्रामिंग भाषा के प्रारंभिक संस्करणों लाइन में की तरह नंबर था उत्सुक हूँ तो कोई लाइन नंबरिंग नहीं था?

संपादित करें: हाँ, मुझे पता है कि वे GOTO के लिए उपयोग किए जाते हैं, लेकिन क्यों? मेरा मतलब है लेबल लेना बहुत कम्प्यूटेशनल महंगा था?

+13

जब मैंने पृष्ठ लोड किया, तो कोई जवाब नहीं था। जब मैंने अपना टाइपिंग समाप्त कर लिया, तो मेरे सहित छः भी थे। जवाब ओवरफ्लो। –

+3

मुझे लगता है कि आपने यहां नॉस्टलग्जा बटन मारा होगा ... बहुत सारे * शौकीन * दिनों से यादें ... – NealB

+1

डुप्लिकेट: http: // stackoverflow।कॉम/प्रश्न/541421/क्यों-किया-हम-परेशान-साथ-लाइन-संख्या-सभी – gnovice

उत्तर

26

कई माइक्रो-कंप्यूटरों रोम में एक BASIC इंटरप्रेटर कि बूटअप पर शुरू होता था। समस्या यह थी कि बात करने के लिए कोई टेक्स्ट एडिटर या फाइल सिस्टम नहीं था। आप सब कुछ करने के लिए एक इंटरेक्टिव प्रॉम्प्ट था। यदि आप कोड की एक पंक्ति डालना चाहते थे, तो आपने लाइन नंबर से शुरू करके इसे टाइप किया था। यह आपको कोड में सही स्थान पर डालेगा। उदाहरण के लिए:

 
>10 print "hello" 
>30 goto 10 
>20 print "world" 
>list 
10 PRINT "hello" 
20 PRINT "world" 
30 GOTO 10 
> 

(कि उदाहरण में> बुनियादी शीघ्र है)

आप एक लाइन को मिटाने के लिए चाहते हैं तो आपके ERASE 20 की तरह कुछ टाइप करेंगे। कुछ वास्तव में फैंसी सिस्टम ने आपको एक लाइन एडिटर दिया (यानी EDIT 10) और यदि आपने अपनी लाइन संख्याओं की योजना नहीं बनाई है और बाहर चलाया है (मैं 10 और 11 के बीच एक रेखा कैसे डालूं?) कुछ सिस्टम आपको RENUM कमांड देंगे अपना कोड रेंडर करें (और GOTOs और GOSUBs उचित रूप से समायोजित करें)।

मज़ा टाइम्स!

+7

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

9

वे गोटो और Gosub

के लिए लेबल इस तरह

रूप में इस्तेमाल किया गया:

10 PRINT "HELLO WORLD" 
20 GOTO 10 

कुछ शुरुआती बुनियादी संस्करणों

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

तो अगर आपके द्वारा लिखे गए:

15 PRINT "AND THE UNIVERSE" 

कार्यक्रम बन जाएगा:

10 PRINT "HELLO WORLD" 
15 PRINT "AND THE UNIVERSE" 
20 GOTO 10 

जब आप लाइन नंबर से बाहर भाग, आप में सभी लाइनों फिर से अंकित करने के लिए एक "renumbering" उपकरण चला सकते हैं अपने कार्यक्रम, लेकिन कमोडोर 64 और अन्य घरेलू कंप्यूटर के शुरुआती दिनों में, हमारे पास यह भी नहीं था, इसलिए आपको मैन्युअल रूप से किराए पर लेना होगा। यही कारण है कि आपको लाइन नंबरों में 10 या उससे अधिक के अंतराल छोड़ना पड़ा, ताकि आप आसानी से लाइनों को जोड़ सकें।

आप कमोडोर 64 दुभाषिया आज़माने के लिए, बाहर की जाँच इस C64 एमुलेटर फ्लैश में लिखा चाहते हैं: http://codeazur.com.br/stuff/fc64_final/ (कोई आवश्यक स्थापित)

+0

("तो अगर आपने टाइप किया है") क्या आप उस पाठ संपादक का नाम दे सकते हैं जिसका आप उल्लेख कर रहे हैं? –

+1

कोई टेक्स्ट एडिटर नहीं था। बस एक कमांड लाइन जहां आप अपना कोड –

+0

टाइप करेंगे हाँ, लेकिन इसके लिए कोई नाम है कमांड लाइन? मुझे वेब पर इसका कोई संदर्भ नहीं मिल रहा है, कोई स्क्रीनशॉट नहीं, कुछ भी नहीं। –

3

लाइन नंबर नियंत्रण प्रवाह में इस्तेमाल किया गया। कोई नामित subroutines थे। तुम्हें पता है, GOSUB 60 उपयोग करने के लिए उदाहरण के लिए, सबरूटीन लाइन 60.


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

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

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

+0

यह मुद्दा "कट्टरपंथी" नहीं था - एल्गोल -60 का उपयोग करने से पहले असेंबलरों के पास लेबल थे। यह लेबल के "बहु-पास" संकल्प है। शुरुआती असेंबलरों (और कंपाइलर्स) को लेबल नामों को हल करने के लिए कई बार संपूर्ण प्रोग्राम स्रोत को पढ़ना पड़ा। यह बस धीमा था। –

+0

@ एसएलॉट: मुझे लगता है कि मेरी "ALGOL-60" टिप्पणी खो गई है। –

+0

डाउनवोट के कारण, कृपया। –

2

आईआईआरसी, लाइन नंबरों को ज्यादातर गोटो और गोसब बयान के लिए लेबल के रूप में उपयोग किया जाता था, क्योंकि बेसिक के कुछ (सबसे?) स्वादों में कोड के एक वर्ग को लेबल करने का कोई तरीका नहीं था।

10

मूल बुनियादी लाइन नंबर वास्तव में भाषा का एक अभिन्न हिस्सा था, और नियंत्रण प्रवाह के लिए इस्तेमाल किया।

गोटो और Gosub आदेशों लाइन ले, और नियंत्रण प्रवाह के लिए यह प्रयोग करेंगे। यह तब आम था (भले ही यह अब निराश हो)।

+4

जबकि आपका उत्तर गलत नहीं है, एक और पूरा उत्तर इंगित करेगा कि इंटरैक्टिव टेक्स्ट संपादकों की कमी ने एक आवश्यक बुराई की संख्या बनाई है; ताकि कोई पहले दर्ज लाइनों के बीच कोड की अतिरिक्त लाइनों को सम्मिलित कर सके। –

+0

@roygbiv: वास्तव में बेसिक –

+0

@ फिलिप में पंक्ति संख्याओं के अस्तित्व के लिए यह सबसे महत्वपूर्ण कारण था: "एक महत्वपूर्ण कारण", सबसे महत्वपूर्ण नहीं है। कार्यक्रम GOTO या GOSUB के बिना दिलचस्प नहीं थे। –

8

बेसिक में, लाइन संख्या अनुक्रम दर्शाती है।

इसके अलावा, कई बड़े संपादक फ़ाइलों के लिए नहीं थे, लेकिन बस लाइनों ("लाइन संपादकों", उदा ed, the standard editor)। उन्हें इस तरह से नंबर करके, आप जानते थे कि आप किस लाइन पर काम कर रहे थे।

4

वे बयान के लिए लेबल थे, ताकि आप लाइन नंबर GOTO सकता है। बयानों की संख्या को फ़ाइल में भौतिक रेखा संख्याओं से मेल खाना जरूरी नहीं था।

+0

के लिए लाइन ऑर्डरिंग और लेबलिंग वास्तव में यह सामान्य था और पूरे कार्यक्रम को पुनर्निर्मित किए बिना अतिरिक्त बनाने के लिए 5-10 के अंतराल को छोड़ने के लिए बहुत जरूरी था। – Buggabill

2

उन्होंने यह भी संपादक द्वारा इस्तेमाल किया गया - यानी आप ने कहा:

edit 100 

लाइन 100

+5

@Neil: आपके पास _editor_ था? हमें किसी भी _editor_ की आवश्यकता नहीं थी! हमने अभी लाइन को फिर से टाइप किया है। –

+0

@ जॉन मूल डार्टमाउथ बेसिक से मैंने कभी भी बेसिक के सभी संस्करणों का उपयोग किया था, जिसमें एक लाइन संपादक बनाया गया था। निश्चित रूप से माइक्रोसॉफ्ट (कई संस्करणों) और डीईसी-सिस्टम 10 पर एक जो (जैसा कि आप प्राप्त कर सकते हैं रेट्रो के रूप में है) किया था। –

+0

@Neil: क्या वह एक "रेखा संपादक" था, या यह दुभाषिया था? क्या यह एक अलग कार्यक्रम था? आपने इसे कैसे शुरू किया? –

2

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

बेशक, ऐसा कोई कारण है कि यह अब और नहीं किया गया है। कल्पना करें कि यदि आप लाइन 10 पर गोटो 20 कहते हैं, और बाद में आपको एहसास हुआ कि आपको लाइन 10 के बाद कोड की 10 और पंक्तियां लिखनी होंगी। अचानक, आप 20 के खिलाफ टूट रहे हैं ताकि आपको या तो अपने सबराउटिन को दूर से स्थानांतरित करने की आवश्यकता हो (उच्च संख्या) और अपना गोटो मूल्य बदलें, या आपको कोड में आगे बढ़ने वाली एक और सबराउटिन लिखनी होगी।

दूसरे शब्दों में, यह सच स्पेगेटी कोड का एक बुरा सपना बन गया है और बनाए रखने के लिए मजेदार नहीं है।

7

दिन में सभी भाषाओं में अनुक्रम संख्या थी, सब कुछ पेंच कार्ड पर था। प्रति कार्ड एक पंक्ति थी। कार्ड के डेक आपके प्रोग्राम को बनाते हैं।

जब आप कार्ड गिरा दिया, यदि आप एक कार्ड सॉर्टर कि उन अनुक्रम संख्याओं का उपयोग किया में डाल चाहते हैं।

और बेशक, उन्हें नियंत्रण प्रवाह संरचनाओं द्वारा संदर्भित किया गया था।

+0

मनोरंजक और सही के लिए धन्यवाद! –

+0

आपको शायद यह कहने के लिए एक लिंक प्रदान करना चाहिए कि कौन से पेंच कार्ड हैं, क्योंकि अधिकांश अन्य उत्तरों के आधार पर, यहां अधिकांश लोग उनके साथ अपरिचित हैं। – Gabe

2

कुछ संपादकों के पास केवल "ओवरराइट" मोड था और कोई "सम्मिलित" मोड नहीं था। इसने मौजूदा कोड का संपादन बेहद दर्दनाक बना दिया। कि लाइन नंबर सुविधा जोड़कर, आप फिर भी फ़ाइल के भीतर कहीं से भी मौजूदा कोड पैच सकता है:

100 PRINT "Broken Code" 
200 PRINT "Foobar" 
... 
101 patch the broken code 
102 patch more broken code 

क्योंकि लाइन नंबर फ़ाइल के भीतर का आदेश दिया जा करने के लिए नहीं था।

5

सी 64 पर, यहां तक ​​कि एक असली संपादक भी नहीं था (कम से कम अंतर्निहित)। प्रोग्राम के एक हिस्से को संपादित करने के लिए, आप LIST 100-200 की तरह कुछ करेंगे, और फिर आप केवल उन पंक्तियों को संपादित करने में सक्षम होंगे जो वर्तमान में स्क्रीन पर प्रदर्शित होते थे (ऊपर स्क्रॉलिंग नहीं!)

+0

क्या आपके पास इस 'संपादक' के लिए कोई संदर्भ है? –

+1

हां - संपादक मूल रूप से स्क्रीन मेमोरी था, फिर 8 बिट मशीनों पर काफी आम था। –

+3

ठीक है, यह दुभाषिया का हिस्सा था जिसने सी64 चालू होने के तुरंत बाद शुरू किया था। यह अपरिवर्तनीय रॉम का हिस्सा था (और यह आपको 64k कुल रैम के लगभग 40k के साथ छोड़ दिया गया था, क्योंकि इसे पहले रैम में कॉपी करना था)। इसका उपयोग मूल खोल (कार्यक्रमों को लोड करने आदि) के रूप में भी किया जाता था। हो सकता है कि आप एक C64 एमुलेटर (http://en.wikipedia.org/wiki/List_of_computer_system_emulators#Commodore_64) की कोशिश करना चाहते हैं - यह मजेदार :-) –

7

A simple google reveals what wikipedia has to say about it:।

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

+0

@Helltone है - यदि इससे आपके प्रश्न का उत्तर नहीं मिलता है, तो जवाब में से कोई भी, इस सवाल का जवाब आपका प्रश्न। –

+0

@ एसएलॉट मुझे नहीं लगता कि यह यहां पूछने के लिए घमंडी है। हम में से अधिकांश को कुर्टज़ तक पहुंच नहीं है। क्या आप? –

+0

@zneak - मेरी टिप्पणी इस तथ्य को संदर्भित करती है कि हेलटोन ने मेरी पोस्ट को एक टिप्पणी के साथ घटा दिया था, जिसमें कहा गया था कि 'यह मेरे प्रश्न का उत्तर नहीं देता है।' तब से उन्होंने उस टिप्पणी को हटा दिया है। मेरी प्रतिक्रिया बस इंगित करती है कि मेरा जवाब दूसरों को क्या कह रहा है, इस बारे में बताता है, इसलिए इस उत्तर को 'गलत' के रूप में लेबल करना गलत रूप से सभी के उत्तरों को लेबलिंग के रूप में लेबल कर रहा है। इसका अहंकार करने के लिए कुछ भी नहीं है। –

2

यह कई मामलों में कमांड लाइन पर में दर्ज किया गया था (या था, मेरे पुराने कमोडोर 64 पर) तो वहाँ नहीं हो सकता है हमेशा एक पाठ संपादक रहे हैं, या अगर कोई था, यह काफी बुनियादी था ।

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

अर्थात्:

10 PRINT "HELLO" 
20 GOTO 10 
15 PRINT " WORLD" 

जहां यह तार्किक 10 में जाना होगा 15 20

2

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

10 PRINT "howdy" 
20 GOTO 10 
10 PRINT "WOOPS" 
15 PRINT "MORE WOOPS" 
20 
RUN 

आप मिलेगा:

WOOPS 
MORE WHOOPS 

खाली 20 effectivly कि लाइन को हटाना होगा।

संबंधित मुद्दे