เหตุใด BASIC จึงใช้หมายเลขบรรทัด


95

เหตุใด BASIC แบบเก่า (และภาษาอื่น ๆ ) จึงใช้หมายเลขบรรทัดเป็นส่วนหนึ่งของซอร์สโค้ด

ฉันหมายความว่ามันแก้ปัญหาอะไรได้บ้าง (พยายาม)


27
หากคุณได้ทำการทดลองอย่างจริงจังแล้วอย่าฝังข้อมูลในความคิดเห็นของคุณแก้ไขคำถามของคุณตามนั้น ยิ่งกว่านั้น Google พาฉันไปที่นี่โดยตรง: stackoverflow.com/questions/541421/…และที่นี่stackoverflow.com/questions/2435488/…
Doc Brown

13
ฉันลงคะแนนเพื่อปิดคำถามนี้เป็นแบบปิดหัวข้อเนื่องจากคำตอบอยู่ใน stackoverflowแล้ว
Andres F.

6
Applesoft BASIC เป็นภาษาโปรแกรมแรกที่ฉันได้เรียนรู้ ฉันจำได้ว่าได้ยินว่า Pascal ไม่มีหมายเลขบรรทัดและจะเป็นเช่น "แต่ฉันจะทำ GOTO โดยไม่ใช้หมายเลขบรรทัดได้อย่างไร
Jens Schauder

14
ตลกครั้งสุดท้ายที่ฉันตรวจสอบเรากำลังตัดสินว่าคำถามนั้นอยู่ในหัวข้อที่อ้างอิงจากเนื้อหาไม่ใช่เนื้อหาของไซต์อื่น ๆ (และน่าจะเป็นคำตอบที่อยู่ตรงนั้น)
MatthewRock

คำตอบ:


130

ภาษาเบสิกในยุคเริ่มต้นจะต้องคำนึงถึงบริบทเป็นหลัก ได้แก่ ฟอร์แทรน, โคบอลและการประกอบ

ย้อนกลับไปเมื่อตอนที่ฉันกำลังเล่นน้ำใน 6502 ชุด โดยไม่มีป้ายข้อความนั่นหมายความว่าเมื่อคุณพบว่าคุณต้องการเพิ่มคำสั่งที่กลางรหัสที่แน่น (ฉันเพิ่มNOP ในภายหลัง) คุณต้องผ่านและทำซ้ำทั้งหมด ที่อยู่ ใช้เวลานาน

Fortran เป็นระบบที่ใช้หมายเลขบรรทัดซึ่งมีพื้นฐานมาจาก BASIC ใน Fortran คอลัมน์ 1-5 เป็นหมายเลขบรรทัดที่จะใช้สำหรับเป้าหมายสำหรับการแยกสาขา สิ่งสำคัญกับ Fortran ก็คือคอมไพเลอร์มีแนวโน้มที่จะฉลาดกว่าล่ามพื้นฐานและการเพิ่มคำแนะนำเล็กน้อยเป็นเพียงการต่อยไพ่และวางไว้ในสำรับที่ถูกต้อง

พื้นฐานในทางกลับกันก็ต้องรักษาคำสั่งทั้งหมด ไม่มีแนวคิดเรื่อง 'ความต่อเนื่องของบรรทัดก่อนหน้า' มากนัก แต่ใน Applesoft BASIC (หนึ่งในภาษาถิ่นที่ใช้กันอย่างแพร่หลายที่ฉันคุ้นเคยและสามารถค้นหาข้อมูลได้) แต่ละบรรทัดในหน่วยความจำถูกแสดงเป็น:

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

มีสองไบต์สำหรับที่อยู่ของบรรทัดถัดไป ( NN NN) สองไบต์สำหรับหมายเลขบรรทัดของบรรทัดนี้ ( TT TT) จากนั้นรายการโทเค็น ( AA BB CC DD .. ..) ตามด้วยจุดสิ้นสุดของตัวทำเครื่องหมายบรรทัด ( 00) (นี่คือจากหน้า 84-88 ของ Inside the Apple // e )

จุดสำคัญที่ควรตระหนักเมื่อดูที่การแสดงหน่วยความจำนั้นคือเส้นที่สามารถเก็บไว้ในหน่วยความจำไม่เป็นระเบียบ โครงสร้างของหน่วยความจำคือของรายการที่เชื่อมโยงกับตัวชี้ 'บรรทัดถัดไป' ในโครงสร้าง สิ่งนี้ทำให้ง่ายต่อการเพิ่มบรรทัดใหม่ระหว่างสองบรรทัด - แต่คุณต้องกำหนดหมายเลขแต่ละบรรทัดเพื่อให้ทำงานได้อย่างถูกต้อง

หลายครั้งเมื่อทำงานกับพื้นฐานที่คุณได้จริงการทำงานในขั้นพื้นฐานของตัวเอง โดยเฉพาะอย่างยิ่งสตริงที่กำหนดได้ทั้งจำนวนเส้นและคำแนะนำขั้นพื้นฐานหรือคำสั่งเพื่อล่ามพื้นฐานเป็นหรือRUN LISTสิ่งนี้ทำให้ง่ายต่อการแยกรหัสจากคำสั่ง - รหัสทั้งหมดเริ่มต้นด้วยตัวเลข

ข้อมูลสองชิ้นนี้ระบุว่าทำไมตัวเลขจึงถูกใช้ - คุณสามารถรับข้อมูลจำนวนมากได้ใน 16 บิต สตริงที่ใช้ป้ายกำกับจะใช้พื้นที่มากขึ้นและยากต่อการสั่งซื้อ ตัวเลขนั้นง่ายต่อการทำงานเข้าใจและง่ายต่อการเป็นตัวแทน

ภาษาเบสิกในภายหลังซึ่งคุณไม่ได้อยู่ในล่ามตลอดเวลาสามารถทำทุกบรรทัดที่มีหมายเลขและจำเป็นต้องระบุหมายเลขที่เป็นเป้าหมายสาขาเท่านั้น ในผลฉลาก


3
น้ำเกรวี่ดีฉันลืมเกี่ยวกับ Mini Assembler ที่จะนำความทรงจำกลับ
Blrfl

3
@Blrfl หากหน่วยความจำทำหน้าที่ ... ] CALL -936 * F666 G $ ... อ๋อ FP พื้นฐานเริ่มต้นด้วย

3
ไม่นั่นคือตัวแก้ไขบรรทัด คำสั่งถูกระบุโดยไม่มีหมายเลขบรรทัด คำแถลงนำหน้าด้วยหมายเลขบรรทัดเพื่อระบุว่าทั้งสองเป็นข้อความสั่งและเพื่อระบุว่าเป็นไปแล้วและ / หรือบรรทัดใดที่เขียนทับ นั่นคือเครื่องมือแก้ไขบรรทัดในตัวของ BASIC ไม่ใช่เครื่องมือหรือสภาพแวดล้อมแยกต่างหาก
RBarryYoung

3
@RarryYoung ] PRINT "FOO"ดำเนินการโดยล่ามพื้นฐานในทันที มันเป็นคำสั่ง หากคุณต้องการที่จะทำงานในภายหลังคุณจะทำอย่างไรแล้ว] 10 PRINT "FOO" ] RUNในสภาพแวดล้อม AppleSoft BASIC คำสั่ง BASIC ทุกคำสั่งสามารถรันได้ทันทีหรือล่าช้า - มีเพียงไม่กี่คำสั่งที่จัดเตรียมโดย DOS ที่ไม่ได้ใช้คำสั่ง BASIC ที่ถูกต้อง ความแตกต่างระหว่างคำสั่งตอนนี้และคำสั่งในภายหลังคือหมายเลขบรรทัด คุณสามารถแก้ไขคำสั่งล่าช้าได้โดยป้อนหมายเลขบรรทัดที่สอดคล้องกันอีกครั้ง คุณสามารถใส่หลายข้อความในหนึ่งบรรทัด::

4
ดังที่ได้กล่าวไว้ในบทความ Wikipedia ( en.wikipedia.org/wiki/Dartmouth_BASIC ) " DTSS (Dartmouth Time Sharing System) ได้ใช้อินเทอร์เฟซแรก ... อินเตอร์เฟซบรรทัดคำสั่งแบบโต้ตอบ ... บรรทัดใด ๆ ที่ขึ้นต้นด้วยหมายเลขบรรทัดถูกเพิ่มเข้าไป โปรแกรมแทนที่บรรทัดที่เก็บไว้ก่อนหน้านี้ด้วยหมายเลขเดียวกันสิ่งอื่นใดถูกสันนิษฐานว่าเป็นคำสั่ง DTSS และดำเนินการทันที ... วิธีการแก้ไขนี้จำเป็นเนื่องจากการใช้ teleprinters เป็นเทอร์มินัลยูนิตสำหรับระบบ Dartmouth Timesharing "
RBarryYoung

50

ในการแก้ไขไมโครคอมพิวเตอร์ต้นเป็นไปตามสาย คุณไม่สามารถย้ายได้อย่างอิสระในซอร์สโค้ดและแก้ไข คุณมีบรรทัดเดียวที่ด้านล่างของหน้าจอที่คุณสามารถพิมพ์คำสั่งและป้อนรหัส ส่วนที่เหลือของหน้าจอเป็นรายการรหัสแบบอ่านอย่างเดียวและเอาต์พุตคำสั่ง หากคุณต้องการแก้ไข say line 90 ในโปรแกรมที่คุณเขียน " EDIT 90" และเนื้อหาของบรรทัด90ป้อนบัฟเฟอร์การแก้ไขบรรทัดเดียว เมื่อคุณแก้ไขบรรทัดที่คุณกดและรายการโปรแกรมได้รับการปรับปรุง ดังนั้นคุณต้องการหมายเลขบรรทัดเพื่อให้สามารถแก้ไขโปรแกรม

เมื่อเครื่องมือแก้ไขโค้ดก้าวหน้ายิ่งขึ้นและอนุญาตให้คุณเลื่อนเคอร์เซอร์ไปรอบ ๆ ในรายการรหัสคุณไม่ต้องการหมายเลขบรรทัดอีกต่อไป


38
กำลังแก้ไขบรรทัด? สุดหรู! BASIC แรกที่ฉันใช้ทำให้คุณพิมพ์ทั้งบรรทัดอีกครั้ง ซึ่งดูดได้จริง ๆ เมื่อคุณต้องจัดลำดับรูทีนย่อยใหม่
TMN

48
หน้าจอ? หน้าจออะไร ในพื้นฐานครั้งแรกของฉัน "หน้าจอ" เป็นม้วนกระดาษ
ddyer

18
@ddyer: ฉันเคยฝันว่าจะมีกระดาษม้วน! ทั้งหมดที่เรามีก็คืออิเล็กโทรด ในตอนเย็นเมื่องานเสร็จเราจะต้องจัดเรียงตัวเองเป็นแถวและสังเกตว่าใครเป็นคนที่ถูกไฟฟ้าดูดเพื่อดูว่าโปรแกรมทำงานได้ถูกต้องหรือไม่ ... - อย่างจริงจังฉันตกใจที่ผู้คนสามารถเขียนโปรแกรมทำงานได้ในสมัยนั้น
leftaroundabout

26
ไฟฟ้า! เลือดหรูหรา เราเคยสกัดคำสั่งของเราในหินแกรนิต
Michael Durrant

10
@TMN & ddyer ตกลงคุณทั้งคู่รู้ว่าสิ่งนี้อยู่ตรงไหนใช่ไหม? ;-D ==> dilbert.com/strip/1992-09-08 ==> imgs.xkcd.com/comics/real_programmers.png
Baard Kopperud

45

หากคุณกำลังคิดถึงภาษาพื้นฐานของไมโครคอมพิวเตอร์ที่บ้าน 8 บิตในยุค 80 คอมพิวเตอร์เหล่านั้นไม่มีโปรแกรมแก้ไขข้อความ (เว้นแต่คุณซื้อแอปพลิเคชั่นประมวลผลคำ) ไม่มีทางที่จะมีซอร์สโค้ดโปรแกรม BASIC ทั้งหมด "open in a editor" เช่นเดียวกับที่คุณจะมีเมื่อเขียนโปรแกรมวันนี้ โปรแกรมเมอร์จะไม่คิดถึงโปรแกรมเป็นไฟล์ซอร์สโค้ดหรือข้อความจริง ๆ

ตัวอย่างปัญหา

ดังนั้นสมมติว่าคุณมีโปรแกรมอย่างง่ายที่ไม่มีหมายเลขบรรทัดในหัวของคุณ:

FOR I=1 TO 42
PRINT I
NEXT I

คุณบูตเครื่องคอมพิวเตอร์ คุณมีข้อความแจ้งว่า "พร้อม" หรืออะไรทำนองนั้นและเคอร์เซอร์อยู่ที่บรรทัดถัดไป นี่เป็นเหมือนสภาพแวดล้อมREPLในปัจจุบันของภาษาสคริปต์ที่แตกต่างกันแม้ว่าจะไม่ได้อิงตามบรรทัดอย่างเคร่งครัด แต่ก็เหมือนกับบนหน้าจอ ดังนั้นไม่เหมือน REPLs ในวันนี้ แต่ปิด

ตอนนี้ถ้าคุณเริ่มเข้าสู่โปรแกรมคุณอาจได้รับข้อผิดพลาดหลังจากบรรทัดแรกเนื่องจากตัวแปลภาษาเบสิกพยายามที่จะดำเนินการทันที (และลืม) มันและมันไม่สมเหตุสมผลหากไม่มี NEXT เพื่อจบลูป นี่ไม่ใช่ตัวแก้ไขข้อความที่คุณแก้ไขข้อความนี่คือที่ที่คุณให้คำสั่งกับคอมพิวเตอร์!

สารละลายบางส่วน

ดังนั้นคุณต้องการวิธีที่จะบอกว่านี่คือรายการโปรแกรมเก็บไว้! คุณสามารถมีคำสั่งพิเศษหรือเพียงสัญลักษณ์ที่บอกว่าเฮ้นี่คือรายการโปรแกรมเก็บไว้ ลองจินตนาการถึงสิ่งนี้:

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

ตกลงตอนนี้ล่ามพื้นฐานของเราในจินตนาการเก็บโปรแกรมไว้แล้วและคุณสามารถเรียกใช้ได้ แต่ตอนนี้คุณต้องการแก้ไขบรรทัด PRINT คุณจะทำอย่างไรมันได้หรือไม่? คุณไม่ได้อยู่ในโปรแกรมแก้ไขข้อความคุณไม่สามารถย้ายเคอร์เซอร์ไปที่บรรทัดและแก้ไขได้ หรือคุณต้องการเพิ่มอีกบรรทัดเหมือนLET COUNT=COUNT+1ในลูป คุณจะระบุได้อย่างไรว่าควรแทรกบรรทัดใหม่ที่ใด

วิธีแก้ปัญหาการทำงาน

หมายเลขบรรทัดจะช่วยแก้ปัญหานี้ในวิธีที่ง่ายถ้าเป็น klunky หากคุณป้อนบรรทัดโปรแกรมที่มีหมายเลขที่มีอยู่แล้วบรรทัดเก่าจะถูกแทนที่ ตอนนี้สภาพแวดล้อม 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

ปัญหาอื่น ๆ ที่เราเพิ่งแก้ไข

มีประโยชน์ (หรือการสาปแช่งเนื่องจากเปิดใช้งานรหัสปาเก็ตตี้ BASIC ที่มีชื่อเสียง) ในการใช้หมายเลขบรรทัดเป็นโครงสร้างภาษาอย่างน้อยก็เป็นเป้าหมายของคำสั่งGOTOAND GOSUBสิ่งนี้สามารถแทนที่ด้วยป้ายกำกับได้ แต่การใช้หมายเลขบรรทัดนั้นง่ายกว่าในการใช้งานล่ามพื้นฐานซึ่งยังคงเป็นโบนัสที่แน่นอนในคอมพิวเตอร์ที่ใช้ในบ้าน 8 บิตแบบทั่วไปในยุค 80

ที่สำคัญกว่านั้นจากมุมมองประสบการณ์การใช้งานของผู้ใช้หมายเลขบรรทัดเป็นอินเทอร์เฟซที่เรียบง่าย แต่สมบูรณ์แบบสำหรับการแก้ไขโค้ด เพียงพิมพ์บรรทัดที่ขึ้นต้นด้วยตัวเลขเพื่อใส่รหัสใหม่ ใช้LIST 100-200เพื่อแสดงบรรทัด 100-200 หากต้องการแก้ไขรายการให้แสดงรายการบนหน้าจอแก้ไขข้อความบนหน้าจอและป้อนบรรทัดใหม่ หากต้องการลบบรรทัดให้แก้ไขเป็นบรรทัดว่างนั่นคือให้หมายเลขบรรทัดโดยที่ไม่มีอะไรเลย วรรคหนึ่งเพื่ออธิบายเรื่องนี้ เปรียบเทียบความพยายามที่จะอธิบายการใช้โปรแกรมแก้ไขข้อความเก่า ๆ เช่นedlin of DOS หรือedหรือexของ Unix: คุณต้องมีหนึ่งย่อหน้า (เพียงเล็กน้อยเท่านั้น) เพื่ออธิบายว่าผู้ใช้สามารถออกจากพวกเขาได้อย่างไรเมื่อเริ่มโดยไม่ตั้งใจ!

ข้อสรุป

คำตอบอื่น ๆ อธิบายว่าหมายเลขโทรศัพท์เป็นอย่างไร ฉันพยายามที่จะครอบคลุมที่นี่ทำไมตัวเลขบรรทัดรอดชีวิตตราบเท่าที่พวกเขาทำพวกเขายังคงแก้ปัญหาในโลกแห่งความจริง: พวกเขาเสนอวิธีการทำโปรแกรมที่เกิดขึ้นจริงโดยไม่ต้องแก้ไขจริงในวิธีที่ง่ายมาก เมื่อเหมาะสมโปรแกรมแก้ไขข้อความแบบเต็มหน้าจอที่ใช้งานง่ายกลายเป็นวิธีการหลักในการแก้ไขโค้ดทั้งที่ข้อ จำกัด ด้านฮาร์ดแวร์หายไปและเมื่อความเฉื่อยของคนปรับตัวสิ่งใหม่ก็เอาชนะไปแล้วหมายเลขบรรทัดพื้นฐานพื้นฐานภาษาหายไปอย่างรวดเร็ว ปัญหาการใช้งานหลักที่พวกเขาแก้ไขไม่มีปัญหาอีกต่อไป


4
คุณตอกมัน การมีหน้าจอหลายบรรทัดแทนที่จะพิมพ์ tty หรือบรรทัดเดียวทำให้ง่ายขึ้น แต่หากไม่มีแนวคิดของไฟล์ต้นฉบับมันยังคงวางแนว
JDługosz

ความจริงที่ว่าระบบเป็นสถาปัตยกรรม 8 บิตไม่ใช่ปัจจัย จำกัด จริง ๆ ตอนนี้ความจริงที่ว่ากล่าวว่าระบบอาจจะมีเพียงไม่กี่กิโลไบต์ของแรมและกำมือของกิโลไบต์ของรอมและอาจได้ไม่มีการจัดเก็บข้อมูลถาวร (ถ้ามีเทปบันทึกเสียงเทปของคุณยากจน) ...
CVn

มันยังคงเป็นการยากที่จะจินตนาการถึงการเขียนโค้ดโดยไม่ต้องใช้โปรแกรมแก้ไขข้อความ
phuclv

@ LưuVĩnhPhúcเอ่อมีอีมูเลเตอร์มากมายสำหรับเรียกใช้ "ของจริง" เช่นคอมพิวเตอร์ที่ใช้ในบ้าน 8 บิตหรือ MSDOS และ GWBASIC กับ dosbox เพียงเป็นตัวอย่างคุณอาจได้รับหนึ่งในการเลียนแบบ C64 จำนวนมากและจากนั้น Google เพื่อค้นหาคู่มือการใช้งานของมันเป็น PDF :-)
hyde

1
@phuclv - ยากที่จะจินตนาการการเข้ารหัสโดยไม่มีโปรแกรมแก้ไขข้อความในขณะนี้ ในขณะนั้นยากที่จะจินตนาการถึงความไม่สะดวกที่จะต้องใช้โปรแกรมแก้ไขข้อความบันทึกและรวบรวมมันก่อนที่มันจะสามารถทำงานได้ ... และนั่นคือสิ่งที่เกิดขึ้นถัดจากโลกพีซี Pascal และ C ทั้งสองภาษาที่คอมไพล์ทั้งสองสามารถแก้ไขได้อย่างอิสระด้วย text editor ทั้งที่ไม่ใช่สภาพแวดล้อมการเขียนโปรแกรมในตัวมันเอง (BASIC เป็นทั้งสภาพแวดล้อมการเขียนโปรแกรมและสภาวะแวดล้อมรันไทม์) ภาษาปาสคาลเป็นภาษาถัดไปของฉันและในหลาย ๆ ทางค่อนข้างเป็นอิสระ มีประสิทธิภาพมากขึ้นอย่างแน่นอน แต่ในทางอื่น ๆ น้อยกว่าที่น่าตื่นเต้น
DavidO

17

ในสถานที่และยุคที่ Basic ได้รับการพัฒนาอุปกรณ์ I / O ที่ดีที่สุดคือ teletype การแก้ไขโปรแกรมทำได้โดยการพิมพ์ (บนกระดาษ) รายการของโปรแกรมทั้งหมดหรือส่วนที่น่าสนใจของมันแล้วพิมพ์บรรทัดทดแทนด้วยหมายเลขบรรทัด

นั่นเป็นสาเหตุที่การกำหนดหมายเลขบรรทัดเริ่มต้นคือ 10 ดังนั้นจะมีตัวเลขที่ไม่ได้ใช้ระหว่างบรรทัดที่มีอยู่


1
ที่จริงแล้วเครื่องอ่านการ์ด (ที่มาพร้อมกับแป้นกด) และเครื่องพิมพ์ Line นั้นดีกว่าอุปกรณ์ I / O ที่ดีกว่าเครื่องโทรพิมพ์ แต่เครื่องโทรสารก็มีราคาถูกกว่ามาก
supercat

การนับหมายเลข 10 เป็นมาตรฐานที่แท้จริงไม่ใช่ข้อกำหนดที่เข้มงวด และ BASIC จำนวนมากมีrenคำสั่ง '' เพื่อกำหนดหมายเลขใหม่ ภาวนาทั่วไปคือren 10, 10(renumber เริ่มต้นที่สิบ incrementing สิบ - พฤติกรรมเริ่มต้นหากเพียงแค่พิมพ์ren. gotoและgosubและthen (linenumber). คำสั่งจะได้รับการปรับปรุงโดยอัตโนมัติ แต่นี้เป็นมั่นเหมาะไม่สามารถใช้ได้ในเบื้องต้นเกี่ยวกับที่เก่าแก่ที่สุด แต่ IIRC, ที่มีอยู่ในแอปเปิ้ล. Integer Basic, Applesoft FP basic, TI Basic / Extended Basic, MS Basic / GW Basic ฯลฯ
DavidO

13

"หมายเลขบรรทัด" หมายถึงบางสิ่งที่แตกต่างกัน

ก่อนอื่นโปรดจำไว้ว่าแนวคิดของ "เส้น" ไม่ได้อยู่ตลอดไป ภาษาการเขียนโปรแกรมจำนวนมากในยุคนี้ใช้การ์ดเจาะรูและการมีหมายเลขลำดับ (โดยปกติจะอยู่ในสองสามคอลัมน์สุดท้ายของการ์ด) ช่วยให้คุณกู้เด็คในลำดับที่ถูกต้องหากคุณทำการ์ดหล่น มีเครื่องจักรให้ทำโดยอัตโนมัติ

หมายเลขบรรทัดเพื่อใช้เป็นเป้าหมายของGOTOข้อความเป็นแนวคิดที่แตกต่างอย่างสิ้นเชิง ใน FORTRAN IV เป็นทางเลือกและนำหน้าคำสั่ง (ในคอลัมน์ 1-5) นอกเหนือจากการติดตั้งได้ง่ายกว่าป้ายกำกับที่มีรูปแบบอิสระแล้วยังมีแนวคิดของการคำนวณและกำหนด GOTOซึ่งอนุญาตให้คุณข้ามไปยังหมายเลขบรรทัดโดยพลการ นี่คือสิ่งที่ภาษาการเขียนโปรแกรมสมัยใหม่ส่วนใหญ่ไม่มี (แม้ว่าswitchข้อความจะเข้ามาใกล้) แต่เป็นกลอุบายที่คุ้นเคยสำหรับโปรแกรมเมอร์แอสเซมเบลอร์

พื้นฐานมาจาก FORTRAN และตั้งใจให้ง่ายต่อการใช้และทำความเข้าใจดังนั้นการบังคับให้ทุกบรรทัดมีหมายเลขบรรทัด (ทั้งสำหรับการเรียงลำดับและเป็นเป้าหมายของGOTO/ GOSUBstatement) อาจเป็นการตัดสินใจออกแบบด้วยเหตุผลดังกล่าว


2
อ๊ะคำนวณและมอบหมาย gotos ความทรงจำของอาร์เรย์ของตัวแปรเลเบลใน PL / 1 วนลูปผ่านหนึ่งอาร์เรย์เพื่อค้นหาการจับคู่จากนั้นใช้การจับคู่ดัชนีอาร์เรย์เป็นดัชนีในอาร์เรย์ของตัวแปรป้ายกำกับเพื่อทำไปที่ หรือโคบอลเปลี่ยนไป gotos และไม่ใช้หมายเลขบรรทัด! บีบีซีขั้นพื้นฐานมีคำสั่งหมายเลขที่มีประโยชน์มาก
กระตุ้น

GCC อนุญาตให้คำนวณ GOTO เป็นส่วนเสริม (แม้ว่าจะไม่ใช่หมายเลขบรรทัดโดยตรง) - คุณสามารถทำสิ่งต่าง ๆ ได้goto array_of_labels[some_computation()];
immibis

ผู้เยาว์: FORTRAN จำเป็นต้องใช้ป้ายกำกับสำหรับเป้าหมายของGOTO(หรือASSIGN) และเลขคณิต aka ดั้งเดิม threeway IFและ (ไม่ค่อยได้ใช้) ผลตอบแทนทางเลือกในCALLและเรียงลำดับของเป้าหมาย (ตัวคั่นเนื้อหา) ของDOและFORMATข้อความ ในงบอื่น ๆ พวกเขาเป็นตัวเลือก
dave_thompson_085

BASIC บางตัว (เช่น Atari's) อนุญาตให้ใช้นิพจน์ตัวเลขโดยพลการในงบ GOTO ดังนั้นด้วยการกำหนดหมายเลขบรรทัดที่เหมาะสมคุณสามารถเขียนGOTO 1000+N*100เพื่อเลียนแบบswitchคำสั่ง
dan04

6

ฉันเริ่มเขียนโปรแกรมในภาษาโคบอลซึ่งใช้หมายเลขบรรทัดในคอลัมน์ 1-6 ของแต่ละบรรทัด เนื่องจากไม่มี IDE ในยุค 70 ทุกอย่างทำผ่านการ์ดเจาะและหมายเลขบรรทัดถูกใช้เพื่อระบุว่าบรรทัดใดในแหล่งต้นฉบับจะถูกแทนที่และเพิ่มบรรทัดใหม่ เราใช้เพื่อเพิ่มจำนวนบรรทัด 100 เพื่อให้เรามีที่ว่างเพื่อเพิ่มจำนวนบรรทัด


14
COBOL ไม่ได้ใช้หมายเลขบรรทัดเหล่านั้น พวกเขามีความสะดวกสบายอย่างเข้มงวดดังนั้นเมื่อมีคนจนคนหนึ่งทิ้งดาดฟ้าเรือของเขาและการ์ดไปทุกที่เขาสามารถรวบรวมพวกเขาและวิ่งผ่านตัวเรียงลำดับการ์ดเพื่อนำพวกเขากลับมาในลำดับที่ถูกต้อง คุณไม่จำเป็นต้องกดหมายเลขบรรทัดลงในการ์ด (นักเรียนไม่ร้านค้าที่ผลิตได้)
John R. Strohm

5

BASIC มาช้ากว่า FORTRAN ในยุคของเครื่องปลายทาง มันให้ความสำคัญกับสภาพแวดล้อม read-exe-print-loop ที่มีการโต้ตอบกันมากกว่าสำรับไพ่

ฉันเรียนรู้การเขียนโปรแกรมใน BASIC บนจอแสดงผลหนึ่งบรรทัดที่มี 24 อักขระ หมายเลขบรรทัดเป็นวิธีที่เป็นธรรมชาติในการระบุตำแหน่งที่คุณต้องการให้มีการไปไม่ว่าจะเป็นการแก้ไขหรือการแทรกระหว่างบรรทัดอื่น

ฉันไม่สามารถจินตนาการได้ว่าคุณจะทำเช่นไร


2
สิ่งนี้ดูเหมือนจะไม่นำเสนออะไรมากมายเกินกว่าที่ทำคะแนนและอธิบายไว้ในคำตอบก่อนหน้า 4 ข้อ
gnat

2
นั่นทำให้มันแย่ ฉันคิดว่า Jaques ไม่ได้ครอบคลุมสาระสำคัญของการแก้ไขแบบบรรทัดเดียวด้วยความเคารพต่อการแทรกบรรทัดและการติดตามรหัสทางจิตใจ
JDługosz

1
@james large ฉันคิดถึงจุดนั้นในย่อหน้าที่ขึ้นต้นด้วย "หลายครั้งเมื่อทำงานกับ BASIC ... "? ฉันยังลังเลที่จะโทรหา BASIC ระบบปฏิบัติการ นั่นคือดอส และ DOS ไม่จำเป็นต้องมีพื้นฐาน แต่เป็นสิ่งที่คุณมีเวลาทำงานส่วนใหญ่

2
@Ian ในขณะที่มันเป็นจริงมันถูกออกแบบมาสำหรับระบบที่ใช้โทรพิมพ์สำหรับ io (ระบบการแบ่งปันเวลา Dartmouth)
จูลส์

3
@MichaelT โอ๊ะโอ! ฉันจะถอนความคิดเห็นของฉันครึ่งหนึ่ง แต่ฉันจะพูดถึงส่วนที่เกี่ยวกับ BASIC ว่าเป็นระบบปฏิบัติการในคอมพิวเตอร์บางเครื่อง ฉันกำลังคิด; Apple] [, TI 99/4, IBM 5100, HP 9830a, Compucolor 8001, TRS-80 รุ่น 1, Comodore Vic20, Sinclair ZX80 และอื่น ๆ ทั้งหมดบูตเข้าสู่ BASIC จาก ROM บางคนมีระบบปฏิบัติการทางเลือกที่สามารถโหลดได้จาก casette เสียงหรือจากฟลอปปี้ดิสก์ถ้าคุณจ่ายเงินพิเศษ $$ สำหรับฟลอปปี้ไดรฟ์
โซโลมอนช้า

1

ประเด็นหนึ่งที่ยังไม่มีใครพูดถึงคือมันง่ายสำหรับผู้เริ่มต้นที่จะให้เหตุผลเกี่ยวกับโฟลว์ของโปรแกรมที่เป้าหมายสาขาชัดเจน ดังนั้นแทนที่จะต้องจับคู่ (อาจซ้อนกัน) คำสั่ง BEGIN / END (หรือใช้ตัวคั่นบล็อกใด ๆ ) ก็ค่อนข้างชัดเจนว่าการไหลของการควบคุมไปที่ใด สิ่งนี้อาจเป็นประโยชน์เมื่อผู้ชมเป้าหมายของ BASIC (เป็นรหัสการเรียนการสอนสัญลักษณ์เริ่มต้นของผู้เริ่มต้น )


1

Dartmouth Time Sharing System ใช้อินเตอร์เฟสโทรพิมพ์ ดังนั้นจึงใช้อินเตอร์เฟสแบบคำสั่ง ในขั้นต้นหมายเลขบรรทัดถูกใช้เพื่อแก้ไขโปรแกรม คุณสามารถแทรกแทนที่หรือลบโดยใช้หมายเลขบรรทัด ไม่ปรากฏว่าเวอร์ชันก่อนหน้าใช้หมายเลขบรรทัดสำหรับคำสั่ง goto แต่เป็นการเพิ่มในภายหลังในภาษา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.