BASIC was unusual in its (clearly unwise) tight integration of line numbers as both labels and line identifiers for editing. Though other languages, such as early FORTRAN, did sometimes use numbers as labels, these were not line numbers in the BASIC sense: not every line was required to be numbered (most were not) and labels need not be in monotonically increasing numerical order. (You can see an example here.)
This was so weird that it actually introduced what I would call a new major form of program editing to the world, to go along with punched cards, traditional line editing (best known from Unix ed
but available in many other implementations on all sizes of computers) and screen editors along the lines of Emacs and vi
.
(I should make it clear here that though line editors such as ed
may appear superficially similar to editing in a typical BASIC environment, it is actually vastly different. I believe that anybody who’s made extensive use of both and learned them well, as I have, would agree that the former is significantly faster and more powerful than the latter.)
It would be interesting to see a study of how this came about, since even by 1964 when BASIC was introduced programmers had long realized the value of using arbitrary symbolic names (without ordering requirements) over numbers to reference things. (This was one of the major advances made by assembly language!) Even the designers of BASIC themselves subscribed to this to some degree, choosing to use letters and symbols rather than numbers to reference storage, and not requiring the ordering of these to match any particular ordering of the source code.
Anyway, this binding of explicit line numbering and labels made having a “renumber” command of some sort (often an external program) nearly essential for any large program under active development. A number of BASICs have this built in, but I had to use something external on the Apple II; there were a wide variety available but I don’t recall any of them.
And back when the Apple II+ was my primary platform, I too used GPLE. (Program here; sadly I cannot seem to find a copy of the manual though I’m sure I’ve seen one somewhere.) These days even for BASIC I generally do cross-development (with a Linux/Unix or occasionally modern Windows platform as host), which as well as being faster and easier for more than trivial amounts of code also provides easier backup, version control, and so on.
Small changes during testing and debugging I still usually do on the machine itself, but since the changes are small, there’s little need for anything special in terms of editing. I may use an EDIT
command or “screen editing” if that’s available, but as often as not it’s about as quick to retype the line, especially given the typically impoverished cursor movement commands offered in these environments.