[HN Gopher] Ask HN: Why did BASIC use line numbers instead of a ...
___________________________________________________________________
Ask HN: Why did BASIC use line numbers instead of a full screen
editor?
Home computers in the early 80s were certainly capable of providing
responsive full screen editing, so why did they use line numbers
for BASIC?
Author : amichail
Score : 15 points
Date : 2023-01-21 12:26 UTC (1 days ago)
| knuckleheadsmif wrote:
| Well back in the day... I did my Basic programming on a real
| Teletype Terminal (not an TTY screen) connected via an acoustic
| coupler running at 300 baud to a Honeywell timesharing system and
| saved/loaded programs via punch paper tape on the mid 70s.
| gonzo wrote:
| 300 baud? Luxury on an acoustic coupler.
|
| 150 baud (as a channel for a terminal running at 110 baud) was
| far more typical.
| syntheweave wrote:
| It cost RAM to have a screen editor. A line editing routine is
| compact, saves a lot of bytes over making something that can
| scroll, copy-paste etc. The point of a built-in BASIC was that it
| was complete as-is and could run programs instantly. Thus while
| many languages for microcomputers used a batch compilation model
| and could do away with bookkeeping, BASIC was always slimmed to
| hit a nice small size and leave more room for user code.
| skissane wrote:
| The first version of Microsoft BASIC was written for the MITS
| Altair 8800 - which didn't come with any graphics hardware, it
| was normally used over a serial port, from a teletype. Given a
| serial port talking to a teletype, full-screen editing is
| impossible.
|
| Microsoft went on to port their BASIC to more platforms, many of
| which were capable of full-screen editing, yet they kept with the
| line-oriented interface-why? It was a lowest common denominator
| which worked across all hardware and was trivial to bring up on a
| new hardware platform or operating system-full screen editing
| would have required a lot more platform-specific code to be
| written, and would have been more affected by differences in
| capabilities between different platforms (screen sizes/etc).
| scarface74 wrote:
| Microsoft didn't "port" their software in the traditional
| sense. It was a clean rewrite for each platform.
|
| For instance, the Apple // graphics memory layout was really
| weird.
| miohtama wrote:
| Full screen editing also requires much more RAM. Late 70s and
| early 80s computers might have had 4 KB - 32 KB RAM. With such
| limited system, it is hard to host a full screen editor or any
| advanced compiler with jump labels.
| Leftium wrote:
| QuickBasic (1985) apparently did not need line numbers: "Although
| still supported in QuickBASIC, line numbers became optional."
|
| - https://www.wikiwand.com/en/QuickBASIC
|
| And BASIC itself was developed in 1963, when full screen editors
| may not have been as feasible.
|
| - https://www.wikiwand.com/en/BASIC
| joezydeco wrote:
| Another reason: BASIC had a GOTO statement to change program flow
| to any point in the code. There was no idea of nested blocks of
| code that executed conditionally. The GOSUB directive was only
| useful in some situations.
|
| GOTO needed somewhere to jump to and the easiest thing to
| delineate was a line number.
| neilv wrote:
| Here's a video approximating coding on a early-'80s home
| computer, complete with some simulated(?) NTSC TV ambiance
| effects:
|
| https://www.youtube.com/watch?v=mOqguR3bBsk&t=1m8s
|
| (Some things I didn't notice them getting into were `RESEQUENCE`,
| retyping a line with its number to edit a line, storing the
| program to flaky audiocassette, and losing the only copy of the
| game you were developing because you left your tape in, and your
| little brother absent-mindedly pressed the Record button while
| waiting his turn to play Parsec.)
| fortran77 wrote:
| I first programmed in BASIC on an ASR-33 terminal. Try using a
| full screen editor on that device!
| wruza wrote:
| BASIC had to work on tiny chips and not fill the entire ROM and
| RAM by itself. Probably that's the reason. Later basics (Quick,
| Turbo) worked as "IDEs".
|
| As a side note, neither early DOS nor CP/M had a full screen
| editor either, _afair iirc_. Edlin (poor man's ed) is my earliest
| memory, which was a line-oriented editor.
| https://en.wikipedia.org/wiki/Edlin
| scarface74 wrote:
| I didn't realize that the "Edit" program didn't come with DOS
| until 1991
| ChrisMarshallNY wrote:
| _> Home computers in the early 80s were certainly capable of
| providing responsive full screen editing_
|
| Not exactly. Home computers leveraged televisions; often by
| generating radio signals (as opposed to direct video input).
|
| The quality was _awful_. You couldn 't rely on the screen to do
| much better than 320 X 240.
|
| Also, in those days, most of us used 300-baud terminals, which
| were VGA (640 X 480). Not much room for chrome.
|
| The displays were ASCII-driven. Basically the precursor to
| Emacs/Vi.
|
| Also, as was pointed out in another comment, structured
| programming was still in the future. If you were lucky, you had
| GOTO.
|
| Line numbers didn't use up characters. They could be inferred.
| Memory was _not cheap_. It was also _very_ limited. Every
| character (including comments), used up memory, and impacted
| performance.
|
| _< GrumpyOldManVoice>_
|
| You kids don't know how good ya got it. Back in my day, we had to
| use a morse code keypad for data entry...
|
| Get off my lawn...
|
| _< /GrumpyOldManVoice>_
| scarface74 wrote:
| On Apple II computers you did have a screen editor of sorts. You
| listed the line you wanted to edited, you pressed ESC and you
| could move your cursor up to the line you wanted to change and
| overwrite it.
| ChicagoDave wrote:
| I'm on the floor (laughing).
|
| Most computer labs had punch card stations and paper terminals
| when BASIC was created.
|
| You often used LIST to see your program and edited it by adding,
| removing, replacing line numbers.
|
| Later on DEC terminals we had an editor named TECO that allowed
| you to do search and replace, inserts, and other line-oriented
| changes. I'd have my school programs memorized so I could type
| commands without a list.
|
| Video terminals (and PCs) became common in the mid 80's. Screen
| editors were still slow on video terminals (connected to shared
| runtime systems), but awesome on PCs.
| h2odragon wrote:
| It wasn't invented for home computers, it was invented for line
| printer terminals, where "line numbers" and the ability to
| edit/insert that gave was a real improvement.
| eternalban wrote:
| First lessons in extensibility were in BASIC, when the very
| young future software designer strategized line number
| increments.
| knuckleheadsmif wrote:
| Anyone whoever programmed on punch cards always numbered them
| so the you could sort them if you ever dropped your deck.
| Strategic numbering was even more important then. Most of us
| preprogrammed the punch machines, via a punch card itself
| mounted to a drum, to help with the numbering.
| greenbit wrote:
| Don't forget to draw a diagonal line across the side of
| your card deck. Don't skimp and use a pencil, get a nice
| felt tip marker.
| benj111 wrote:
| I don't think that quite explains it though. It wasn't as if
| the idea of a screen editor hadn't occurred to them.
|
| So if that was the reason it was because of compatibility.
|
| There's probably also the issue of keeping the code text in
| memory, an issue when talking about the zx80 end of the
| /spectrum/
| Jtsummers wrote:
| BASIC was from 1964, screen editors weren't a common thing at
| that point in history. Many of the implementations that made
| it into early home computers weren't too distantly altered
| from that original version.
| benj111 wrote:
| I mean at the point when basic was being ported to home
| computers, thus the comment about backward compatibility.
| zabzonk wrote:
| basic was not developed in the early 80s - early 60s
| greenbit wrote:
| It was a combination of things. It allowed a simple line entry
| system to organize a collection of lines as a linked list,
| yielding a really simple program editor AND at the same time
| provided convenient (for the interpreter) labels to use as
| targets for the likes of GOTO and GOSUB
| readthenotes1 wrote:
| The last time I programmed BASIC was in the 1970s, and it was
| already over a decade old.
|
| All the answers from the '80s make me laugh.
|
| (Well, at least the laughing is true. )
| msh wrote:
| I think this stackoverflow answer gives a good answer:
|
| https://softwareengineering.stackexchange.com/questions/3097...
| ratboy666 wrote:
| Memory constraints. BASIC will run in 4 to 8 Kbyte (4000 to 8000)
| ROM. That budget was for editor, SAVE/LOAD,interpreter and
| overhead functions. The goal is to make the interpreter fast!
|
| And, these were pre-IBM PC systems. (apple, radio shack 8 bit
| systems, many others).
___________________________________________________________________
(page generated 2023-01-22 23:00 UTC)