[HN Gopher] BASIC turns 60
       ___________________________________________________________________
        
       BASIC turns 60
        
       Author : rbanffy
       Score  : 114 points
       Date   : 2024-05-01 16:24 UTC (6 hours ago)
        
 (HTM) web link (arstechnica.com)
 (TXT) w3m dump (arstechnica.com)
        
       | duxup wrote:
       | I distinctly remember being taught BASIC in school in the 1980s
       | and quickly thinking "this is awfully basic" and not wanting much
       | to do with it.
       | 
       | Now I don't know if my childhood evaluation was correct but I do
       | wonder:
       | 
       | Were there many complex programs written in BASIC? Or was it
       | largely a teaching tool?
        
         | pjmlp wrote:
         | Plenty, outside 8 bit computing, BASIC was structured and had
         | enough compilers to chose from.
        
         | ajross wrote:
         | Lots and lots of BASIC was used in production for routine IT-
         | ish tasks at the dawn of the personal computing era. It was the
         | only meaningful way to implement custom tasks until the
         | mid-80's when environments like Turbo Pascal showed up. For
         | years and years technically-savvy small businesses were buying
         | Apples and PC's and then writing their own BASIC to glue
         | together whatever automation they needed.
         | 
         | Was much _commercial_ software written in BASIC? ( _Edit,
         | because this is being misunderstood: I 'm not talking about the
         | evolved BASICs being pushed by the late 80's, only about the
         | ones like Applesoft and GWBASIC the commenter is asking about_)
         | No, very little. As you point out BASIC doesn't offer much to
         | developers who already understand a macro assembler. But the
         | market was much bigger than that.
        
           | SoftTalker wrote:
           | There was some business use.
           | 
           | https://en.wikipedia.org/wiki/Business_Basic
           | 
           | Was popular with some smaller companies for their internal
           | custom systems. Had some similar capabilities as COBOL
           | without the IBM tax.
        
             | skissane wrote:
             | > Had some similar capabilities as COBOL without the IBM
             | tax.
             | 
             | COBOL never had an "IBM tax", because almost every non-IBM
             | vendor had a COBOL compiler. If you didn't want your COBOL
             | from IBM, you could buy it from DEC, HP, Wang, Unisys, NCR,
             | Honeywell, Microsoft, Micro Focus, Watcom...
             | 
             | That said, if your COBOL was running on an IBM platform,
             | you often were using lots of IBM proprietary features (e.g.
             | CICS) which made it hard to port to another vendor-and that
             | could indeed be an "IBM tax". But that's wasn't due to
             | COBOL in itself. If you limited yourself to standard COBOL,
             | and avoided IBM proprietary stuff, moving your COBOL app to
             | another vendor didn't have to be difficult
             | 
             | BASIC attracted business users because it was viewed as
             | simpler and easier to learn, because it could run on
             | smaller machines, because (often) using an interpreter
             | instead of compiler resulted in faster development (no
             | edit-compile cycle).
        
               | chasil wrote:
               | A free copy of DEC's original COBOL compiler for the VAX
               | can be found in the VMS 1.0 image at this site:
               | 
               | https://www.wherry.com/gadgets/retrocomputing/vax-
               | simh.html
               | 
               | Modern GNU COBOL can be found at this site:
               | 
               | https://www.gnu.org/software/gnucobol/
               | 
               | A great deal of the COBOL that we use relies on OS2200
               | DMS, originally from Univac.
        
           | skissane wrote:
           | > Was much commercial software written in BASIC? No, very
           | little.
           | 
           | There was a huge amount of commercial software written in
           | BASIC dialects such as classic Visual Basic and ASP,
           | Pick/BASIC, HP Business Basic, Wang 2200 Basic, DEC BASIC-
           | PLUS, etc. Boring business software you would likely have
           | never heard of but which was (and in some cases still is)
           | essential to running all kinds of different businesses.
           | 
           | I used to work for a university and both the student
           | administration system and the accounting system were off-the-
           | shelf software, mostly written in VB6 and classic ASP (I
           | believe the vendor also had some COM components written in
           | C++, they had their own app framework, but the business logic
           | was all VB6). At the time, we were waiting for the vendor to
           | finish porting it to VB.NET. 20 years later, it probably
           | still is in VB.NET.
        
             | Locutus_ wrote:
             | I was surprised to get an email today notifying me of the
             | X86 release of the DEC BASIC PLUS compiler...
        
             | ajross wrote:
             | FWIW those are all third generation "structured BASIC"
             | languages, not what I understand the upthread commenter to
             | be asking about. Obviously you can evolve the syntax into a
             | more popular language, and Microsoft did to great effect.
             | But that's not the BASIC that was "taught in school in the
             | 80's".
        
               | skissane wrote:
               | > FWIW those are all third generation "structured BASIC"
               | languages, not what I understand the upthread commenter
               | to be asking about.
               | 
               | They weren't. Many minicomputer BASICs of the 1970s and
               | early 1980s, such as Wang's, lacked those structured
               | programming features you are talking about, at least
               | originally. They were classic GOTO/GOSUB line number
               | spaghetti code. And huge amounts of business software was
               | written in them.
               | 
               | Some of those apps still run today, because the languages
               | have been ported to Windows/Linux/etc. And eventually,
               | just like Microsoft did, they added a lot of those
               | structured programming features. But sometimes you'll
               | find pre-structured spaghetti-style code surviving long
               | after the dialect gained the ability to do better.
        
             | dole wrote:
             | Suffered from a few very large non-starts in attempting to
             | port it all to browser-agnostic JS and other frameworks by
             | offshored teams. Couldn't capture the same UX and layouts;
             | too much proprietary business logic in the background that
             | less and less people have knowledge of. Unconvincing demos,
             | bad sales, sunk cost. Good guess.
        
           | mypalmike wrote:
           | Lots of commercial software was written mainly in BASIC.
           | Plenty of games (a couple popular examples are Temple of
           | Apshai and Questron, but there are certainly hundreds,
           | particularly if you look at educational games of the 80s).
           | And a lot of productivity stuff was written in BASIC, like
           | database management (e.g. APX Data Management System - lots
           | of the APX titles were written in BASIC), accounting (early
           | versions of the very popular Peachtree accounting software),
           | and even tax software (early versions of TaxCut).
        
           | HeyLaughingBoy wrote:
           | > technically-savvy small businesses were buying Apples and
           | PC's
           | 
           | The outfit I worked for at the time sold directly into this
           | area. We had a product line of simple I/O modules for
           | physical automation (measuring temperatures, controlling
           | motors, etc...) and all our programming instructions and
           | examples were given in BASIC because it was on all computers
           | and it was the one language that we knew everyone would be
           | familiar with.
        
         | rootedbox wrote:
         | It's Turing complete.. and my apple II library had all sorts of
         | crazy apps written in basic. I remember taking them apart when
         | I was like 10.. and being like who has the time to write all
         | these lines! Which.. I still think is crazy considering no IDE
         | and how you would just input them line by line... leaving space
         | between lines just in case you needed to put a new line in
         | later.
        
           | pan69 wrote:
           | When using line numbers you wouldn't go from 1 to 2 to 3 etc,
           | but from 10 to 20 to 30 so that you can always insert a line
           | (e.g. 11) between 10 and 20. After a while when the numbering
           | became to messy, you'd issue a RENUM command to renumber the
           | entire program, e.g. RENUM 10 would make the first line 10,
           | and then use increments of 10 for subsequent lines. At that
           | point you start over by re-inserting new lines between the
           | others.
        
             | rootedbox wrote:
             | the good old days
        
         | marssaxman wrote:
         | It depends on what you mean by "BASIC". Nobody in that world
         | cared much about portability or standardization, so the
         | language had a protean quality; every vendor offered their own
         | flavor, tailored to the needs of its platform. The variant you
         | used may well have been a mere teaching tool, but there
         | certainly were other dialects which served as serious
         | application development platforms.
         | 
         | I was a big fan of BASIC when I was young, and that led to
         | spending the early portion of my career working on a series of
         | BASIC compilers, all of them intended for complex software
         | development. Two of them still sort of exist, in much-mutated
         | form; one is now called "Xojo", and the other is Microsoft's
         | rather-better-known Visual Basic.
        
           | HeyLaughingBoy wrote:
           | Right. Still remember the day in college when I booted up my
           | Radio Shack Micro Color Computer (MC-10) and someone
           | exclaimed excitedly, "it has Microsoft BASIC."
        
         | georgeecollins wrote:
         | VBA was used for tons of enterprise applications in the late
         | '90s and early oughts. The implementation in things like Excel
         | was surprisingly powerful and they had to sort of dial it back
         | because they realized it was a huge security risk. (You could
         | open up a spreadsheet that was a powerful virus.)
         | 
         | In the '90s when we were developing a 3D game (in C++) I made
         | an early iteration of the level designer in VBA on Excel. You
         | would color cells in a spreadsheet and then hit a button, and
         | the button would output a text file that told the game engine
         | what mesh or object to put where. Terrible way to do it, but a
         | great way to work fast in those primitive days.
        
           | 7thaccount wrote:
           | People still use VBA all the time. I think of it differently
           | than the basic language of the 80s or even the more powerful
           | commercial compilers used by some today like PowerBasic. VBA
           | is just so highly tied to Excel. There is a new way to also
           | script Excel with some kind of typescript. It's built into
           | the latest version of Excel and seems to be more
           | straightforward.
        
             | nxobject wrote:
             | At this point, I think there are multiple sufficiently
             | general-purpose languages bolted onto Excel if you have 365
             | (sadly enough, I work at a place with LTSC) - Power Query,
             | the array language subset of Excel's formula language,
             | Python, Office.js, VBA. But if you're collaborating with
             | people I think you only predictably have VBA.
        
           | HeyLaughingBoy wrote:
           | Ugh!
           | 
           | I still have nightmares about having to write the Validation
           | procedure documents for a medical device production Quality
           | system written in VBA/Excel. The program had started out as
           | some scientist's desktop tool and somehow over the years,
           | morphed into an actual production tool that now needed to be
           | formally validated since we needed to make a change to it.
           | Worst combination of spaghetti code and Big Ball of Mud that
           | I've ever seen. I had the misfortune of being the only SW dev
           | who was senior enough to do the task and who wasn't busy at
           | the time, so I drew short straw!
           | 
           | I shudder to think of the millions of dollars of product that
           | have been shipped as a result of that code!
        
           | Narishma wrote:
           | IIRC the first couple of versions of the Unreal Engine editor
           | were written in VB.
        
         | TillE wrote:
         | Except for some graphics code, Ultima I was written in
         | Applesoft BASIC.
         | 
         | Akalabeth was entirely BASIC, but that's somewhat less
         | impressive.
        
           | krumpet wrote:
           | I still play Ultima IV at least a couple times a year. Never
           | gets old.
        
         | MarkusWandel wrote:
         | Based on my limited exposure to "professional" software in the
         | BASIC era... some pretty good stuff was a hybrid of BASIC and
         | assembly language, leveraging the best of both (BASIC was
         | pretty good at laying out screens, input fields etc, at least
         | on the Commodore PET, whereas hand-coded assembly language had
         | the code density and speed).
         | 
         | Was it a "toy" language? Sure. I once implemented a non-
         | scrolling toy spreadsheet program with it - just a fixed grid
         | of cells - with some simple formula capacity and a manual
         | "recalculate" trigger. Was that educational? You bet. Was it
         | sophisticated? Not really.
         | 
         | But I'll bet there were absolute tons of one-off business
         | applications written in it. A simpler version of what Excel was
         | used for later, and still is. And scientific calculations? If
         | Fortran could do it, BASIC could. Until something better came
         | along to replace both.
        
         | MarkusWandel wrote:
         | Also "awfully basic" compared to what? For me it was the first
         | exposure to programming, period, and totally got me excited.
         | Heck, back then even programmable calculators were exciting.
         | There was just this hunger to program something, anything.
        
         | reaperducer wrote:
         | _Were there many complex programs written in BASIC? Or was it
         | largely a teaching tool?_
         | 
         | People who weren't old enough to be in business remember BASIC
         | as something from their home computers, but BASIC was integral
         | to many businesses in the early years of general purpose
         | computing.
         | 
         | There were plenty of business programs written in BASIC, and
         | part of its appeal was that any business owner with a little
         | time could learn how to customize those programs to suit their
         | particular business' needs.
         | 
         | BASIC wasn't just for homes and home computers. Virtually every
         | computer or computing device produced in that era had BASIC
         | available for it, and for good reason. It was quick to learn,
         | versatile, and when you knew the basics on one system, you
         | could use that knowledge on other systems.
         | 
         | BASIC was available on machines ranging from $250 to $200,000
         | or more. There wouldn't be BASIC on $50,000 machines if there
         | wasn't a demand for it.
         | 
         | My memory is a bit fuzzy on this specific, but I'm pretty sure
         | that HP had a computer that came with both BASIC and AP/L.
         | Nobody was using that machine in their homes.
        
         | bombcar wrote:
         | I seem to remember some pretty serious (as in actual paid)
         | programs written in QuickBASIC - the compiled version of
         | QBASIC.
         | 
         | Lots and lots of 'business middleware' was written in various
         | forms of BASIC, the most famous being VBA, but also quite a bit
         | in things like QuickBASIC in an older period.
         | 
         | https://qb64.com keeps the dream alive.
        
         | satiated_grue wrote:
         | I was recently playing a commercial Atari game from 1981 called
         | "Ricochet" that was written in BASIC, which came on a cassette.
         | 
         | Atari BASIC stored its programs in memory using a tokenized
         | format - it did syntax checking when the line was typed in, and
         | then the tokenized form was stored to save memory. There was a
         | table of variable names, indexed by token. So a quick and easy
         | obfuscation technique was to overwrite the variable names with
         | something like just carriage returns, so that when you LISTed
         | the program it had no variable names and lots of extra line
         | breaks.
         | 
         | As I recall, at least. Haven't reinforced those memories in a
         | while.
        
         | magoghm wrote:
         | MAI Basic Four Inc. was a relatively succesful computer
         | manufacturer that sold business computers that used BASIC as
         | the development language for business applications:
         | https://en.wikipedia.org/wiki/Basic/Four
        
         | bitwize wrote:
         | MAI Basic Four was one of _the_ business software platforms for
         | small businesses in the 1970s. MAI sold it as a turnkey
         | solution including the computer which was a rebadged Microdata
         | 1600. It was almost a BASIC machine the way Lisp machines were
         | Lisp machines: all application level code, including that used
         | for system maintenance, was written in BASIC.
         | 
         | The dialect was one of many called "Business BASIC", which
         | basically extended normal BASIC with COBOL-like capabilities
         | like better string handling, decimal math for currency
         | handling, and ISAM-like file manipulation. It allowed for
         | developing the same kinds of applications as COBOL while having
         | a nicer development environment than COBOL.
         | 
         | The major accounting suites for small business of the 1970s,
         | MAS 90 and MAS 200, were written in Basic Four BASIC. A lot of
         | applications were. Other dialects, like Pick BASIC, supported
         | business applications as well. All of these were much more
         | fully featured than like Microsoft BASIC on
         | Commodore/Apple/Tandy machines. Those were toys in comparison
         | to minicomputer BASICs.
         | 
         | Basic Four itself shipped on some microcomputers like the Tandy
         | 2000. Compatible environments came out for PC, including AB86
         | for DOS, Thoroughbred/OS, BASIS BBj, and ProvideX. Keeping
         | those old systems running on newer hardware was an enticing
         | business, just like for COBOL programs.
        
         | emorning3 wrote:
         | In the late 1980's I rewrote a very large pension actuarial
         | forecasting system, written in Fortran, to Basic.
         | 
         | I'm very not sure, so I'm guessing that the system had several
         | hundred thousand LOC.
         | 
         | The idea was to stop spending a fortune on mainframe time and
         | run pensions valuations on a microcomputer.
         | 
         | The Fortran system, running on a mainframe, might take 60s to
         | run a valuation.
         | 
         | The same valuation would take a full day to run on a
         | microprocessor, but it worth it because it reduced costs by a
         | lot.
        
           | lyk2005 wrote:
           | I am curious how do you write software that takes a day to
           | run. Today I can write line by line, and because computers
           | are so fast, even "long" tasks complete/crash fast enough for
           | me to iterate. I assume you had test cases but I still want
           | to know.
        
             | Jtsummers wrote:
             | Do you mean how do you write something that takes that long
             | at all? By having data that takes that long to process.
             | 
             | If you mean the actual accomplishment of it in general:
             | 
             | 1. Get a subset of data that lets you create a
             | representative set of test cases. You can validate your
             | code in minutes, not hours or days. Then you run it on the
             | full thing once you've seen that the 5-minute job works as
             | expected.
             | 
             | 2. Sacrifice a goat, pray to hopefully the right god, and
             | hope it wasn't their son from a goat mother that you
             | sacrificed.
             | 
             | 3. Spend a lot more time thinking before doing.
             | 
             | 4. Read a lot.
             | 
             | (1) works if you can run the task on your own system or
             | have access to a system to run it on. This is the best
             | option, or some variation on it.
             | 
             | (2) is unfortunately what happens a lot, they usually
             | sacrifice the wrong goat and end up cursed instead of
             | blessed.
             | 
             | (3) and (4) are the next best option after (1), and should
             | be done alongside (1) anyways. The system I'm on now is
             | legacy and being upgraded. The test bed is available to me
             | maybe 1 hour a week right now because everyone needs it and
             | everything is urgent, apparently. I spent a lot of time
             | reading the code, the documentation, and thinking about how
             | to structure my solution to a problem our users have. My
             | first pass validated the solution concept and took 3 days
             | or so of thinking hard about the problem and 5 minutes of
             | coding. The second pass is more robust (error handling)
             | that took several more days of reading and thinking to
             | identify what error cases could even occur, and two hours
             | of coding.
             | 
             | Yeah, if I could run it locally I probably could have
             | finished it all in those first 3 days (honestly my 5
             | minutes of coding was figured out by the end of day 1, but
             | I wasn't certain since I was new to the codebase). But when
             | that's not an option, you spend more time thinking about
             | the problem you're solving and the problems your solution
             | will generate so you solve it before you run it in the
             | first place.
        
         | garfij wrote:
         | We had a version of Bomberman that was written in some version
         | of BASIC in high school (maybe QBasic?). It was great because
         | we could hack on it to modify the game and immediately play
         | with those modifications.
        
         | HeyLaughingBoy wrote:
         | At my first job, our order entry system was written in BASIC.
         | The second version of the system was written in QBasic. I wrote
         | lots of test and demo code in the language. We used it in all
         | our manuals, since it was the one language that we knew our
         | customers (mostly engineers and scientists) would be able to
         | program in.
         | 
         | I started writing a spreadsheet in BASIC, but never finished. I
         | wrote a couple of simple games in it also.
         | 
         | There are more, but I've forgotten about them.
         | 
         | Now, if we expand the definition to include VisualBASIC, then
         | the amount of production software written in the language
         | explodes into at least 100,000 programs.
        
         | boznz wrote:
         | Gorillas ( https://en.wikipedia.org/wiki/Gorillas_(video_game)
         | )
        
         | ykonstant wrote:
         | I wrote tons of cryptography and cryptanalysis code in a
         | combination of assembly and BASIC on MS-DOS.
        
         | JohnFen wrote:
         | > Were there many complex programs written in BASIC?
         | 
         | I don't know generally, but I worked in housekeeping at a large
         | hotel for a few years in my younger days, and the software they
         | used to track the rooms was in interpreted BASIC.
         | 
         | I didn't know that until my manager started cursing because the
         | software broke. When I looked at the screen, the error message
         | syntax was clearly that of BASIC. I just typed "RUN" at the
         | prompt and everything worked again. She thought I was a genius.
        
         | themadturk wrote:
         | I wrote a document management system in VBA for Word for a law
         | firm I worked for in the late 1990s. Created a unique filename
         | for new documents, stored and retrieved, maintained an index of
         | titles, etc. We replaced it a year later with a much better
         | system, but it was a valuable stopgap for something we
         | desperately needed.
        
       | pjmlp wrote:
       | Happy birthday BASIC!
       | 
       | A short reminder that the original Dartmouth BASIC was actually
       | JIT compiled, including while using the REPL.
       | 
       | And most big iron OSes like VAX/VMS had proper compilers.
       | 
       | It was due to the 8 bit home microcomputers that it got the fame
       | of being interpreted, as naturally there is only so much that
       | fits into 16 - 64 KB.
        
         | rbanffy wrote:
         | As a language, it's very low-level. It has nicer syntax than
         | assembly had, and is relatively portable, but the concepts are
         | all really close to the metal.
        
           | pjmlp wrote:
           | Which meant a quite good performance, in a memory managed
           | language, and ability to do systems programming.
           | 
           | There was nothing missing in VMS Basic, Turbo Basic,
           | QuickBasic, DevPac BASIC, that would make me reach out to C.
        
             | rbanffy wrote:
             | On my Apple II's (with AppleSoft BASIC) I missed proper
             | functions and the ability to use a stack. Recursion was
             | next to impossible to express.
        
               | pjmlp wrote:
               | Yeah, but that was a 8 bit system, not what made BASIC in
               | first place.
        
               | rbanffy wrote:
               | 8-bit computers were pretty important for the widespread
               | adoption of BASIC. For most of them, BASIC was the OS
               | shell.
        
               | pjmlp wrote:
               | Moving goalposts, I explicitly mentioned that 8 bit home
               | computers were the ones to blame for the fame of BASIC
               | being interpreted, and unstructured.
               | 
               | Dialects like VMS Basic predate them.
        
               | Jtsummers wrote:
               | > I explicitly mentioned that 8 bit home computers were
               | the ones to blame for the fame of BASIC being
               | interpreted, and unstructured.
               | 
               | Interpreted yes, unstructured no. Dartmouth BASIC was
               | unstructured until 7th edition (1980). The home BASICs
               | started coming out before then and could fairly claim
               | their unstructured nature as a consequence of the
               | contemporary, to them, Dartmouth BASIC.
        
               | pjmlp wrote:
               | Ignoring mainframes during the 1970's, predating home
               | micros.
               | 
               | Why don't you actually read my comments fully?
        
               | rbanffy wrote:
               | If you look at the BASIC that's 60 now, you won't see a
               | lot of the features that appeared later in SBASIC (in the
               | late 70's) and on dialects from Dec, IBM, Nixdorf, and
               | others. In 1964, it was a very simple language with the
               | impressive feature - and this is the most important
               | ergonomic aspect - of allowing interactive exploration.
               | 
               | http://www.bitsavers.org/pdf/dartmouth/BASIC_Oct64.pdf
               | 
               | https://support.hpe.com/hpesc/public/docDisplay?docId=emr
               | _na...
        
               | AlexeyBrin wrote:
               | The BASIC version that run BBC Micro had proper functions
               | and subroutines with local variables (I think it even had
               | recursion, but I'm not 100% sure).
               | 
               | AFAIK, all Microsoft BASIC (of which AppleSoft BASIC was
               | a descendent) versions did not have the above until
               | QBasic.
        
               | masfuerte wrote:
               | It did have recursion.                   >LIST
               | 10PRINT FNFACT(6)              20END
               | 30DEFFNFACT(N)             40IF N=1 THEN =1 ELSE
               | =N*FNFACT(N-1)                >RUN                720
        
             | SoftTalker wrote:
             | Structured programming was not easy.
             | 
             | You didn't have functions, you had GOSUB to a line number,
             | which was just a slightly glorified GOTO. There was one
             | global scope.
        
               | bartread wrote:
               | That depends a lot on the implementation. Global scope
               | certainly wasn't the only scope for all of them: dialects
               | such as AMOS on the Amiga had procedure level scope as
               | well. BBC BASIC definitely had DEF PROC but I can't
               | remember whether it supported different levels of scope.
        
               | pjmlp wrote:
               | Yeah, if you ignore the BASIC dialects that actually
               | provided such features.
        
               | jhbadger wrote:
               | Which were created decades after the original versions
               | and are only identifiable as "BASIC" in that they share a
               | few keywords like PRINT and FOR...NEXT.
               | 
               | The later "structured BASIC" dialects resemble more COMAL
               | than traditional BASIC.
               | 
               | https://en.wikipedia.org/wiki/COMAL
        
               | pjmlp wrote:
               | Again, ignoring mainframes during the 1970's.
        
           | personalityson wrote:
           | VBA in Excel is only 4 times slower than C, I think (if you
           | do typed code).
        
             | pjmlp wrote:
             | Also proper VB used the same backend as Visual C++ since
             | version 5.
        
         | chuckadams wrote:
         | I've never heard of the original BASIC being compiled in any
         | way, JIT or otherwise. Far as I know, the most it did was
         | tokenize keywords into one or two bytes, something every other
         | BASIC interpreter took up as a matter of course.
        
           | reaperducer wrote:
           | _I 've never heard of the original BASIC being compiled in
           | any way, JIT or otherwise. Far as I know, the most it did was
           | tokenize keywords into one or two bytes, something every
           | other BASIC interpreter took up as a matter of course._
           | 
           | There were dozens and dozens of BASIC compilers available,
           | for all kinds of platforms from Commodore 64's to mainframes.
           | 
           | Microsoft BASIC Compiler for IBM: https://archive.org/details
           | /stx_Microsoft_BASIC_Compiler_Fun...
           | 
           | Convergent BASIC Compiler for the Burroughs B20: https://arch
           | ive.org/details/bitsavers_convergent0BASICCompil...
           | 
           | BASIC compiler for Burroughs mainframes: https://archive.org/
           | details/bitsavers_burroughsS00InternalMe...
        
           | Jtsummers wrote:
           | http://dtss.dartmouth.edu/scans/BASIC/BASIC%20Compiler.pdf
           | 
           | Dartmouth BASIC was compiled.
        
             | amelius wrote:
             | Compiled can mean many things. For instance it can mean
             | that only the parsing is done at compile time, leaving the
             | rest for runtime.
        
               | Jtsummers wrote:
               | Unless I've misread the code (and it is 134 pages of
               | assembly with comments so I'll admit that's possible).
               | The first 68 pages are the compilation process and a
               | bunch of constants and things. That completes execution
               | before RUN begins. RUN executes the compiled program by,
               | on page 73, jumping to address P (07724) which is where
               | the compilation routine has built out the object program.
               | At that point execution is inside the object program
               | unless there's an interrupt or a subroutine calls to one
               | of the built-in subroutines.
               | 
               | I don't think this compiler is just a pre-processing
               | activity.
        
               | JohnFen wrote:
               | I always thought that was called "pseudocompiled" or
               | "semicompiled".
        
           | pjmlp wrote:
           | That was how 8 bit home computers worked.
           | 
           | Dartmouth BASIC always compiled the code before execution,
           | just like Lisp.
           | 
           | > Several versions were produced at Dartmouth, implemented by
           | undergraduate students and operating as a compile and go
           | system.
           | 
           | https://en.m.wikipedia.org/wiki/Dartmouth_BASIC
           | 
           | The historical video also mentions this at some point.
           | 
           | https://www.dartmouth.edu/basicfifty/basic.html
        
             | chuckadams wrote:
             | Having grown up in the 8-bit era with Apple IIs and C64s
             | and various weird Z80 boxen, I can tell you for sure BASIC
             | did not normally get compiled on those platforms.
             | Tokenized, yes, but nothing more than that. Dartmouth had
             | more to work with even in the 60's so it doesn't surprise
             | me they wrote a static compiler for it, though it's still
             | news to me.
        
       | rbanffy wrote:
       | It's hard to overstate how important BASIC was to the adoption of
       | personal computing - it provided a straightforward way to program
       | an entire generation of home computers and bootstrapped countless
       | careers.
        
         | SoftTalker wrote:
         | Certainly did mine. I credit my career in programming to an
         | after-school class in programming BASIC on the TRS-80 when I
         | was in middle school, and then the TI-99/4a I had at home when
         | I was in high school.
         | 
         | I even used BASIC professionally for a while in the 1990s.
        
         | dotnet00 wrote:
         | Yep, BASIC bootstrapped my programming interest even as late as
         | the late 2000s. School library was ancient, the only
         | programming books were on BASIC and internet access was
         | limited. So I got started trying to use those to learn this:
         | https://justbasic.com/ (surprisingly, updated even up till
         | 2018, and the paid version updated just a few months ago).
         | 
         | As a clueless, overly ambitious 12 year old I was a massive
         | annoyance for the skilled users on their forums, I remember
         | getting ranted at for wasting people's time with stupid
         | questions, writing awful code, not understanding licenses etc,
         | but it was a pretty good entry point until I managed to get my
         | hands on books for more modern languages.
        
           | 392 wrote:
           | Exact same story for me with JustBASIC, late 2000s, no home
           | Internet connection except dialup. Excellent built in help.
        
           | nlunbeck wrote:
           | AFAIK, my highschool still is offering BASIC in their intro
           | CS curriculum. It's just so accessible and many of us
           | preferred it over Python for intro classes
        
         | mysterydip wrote:
         | QBASIC and the printouts I could get of fanzines or Pete's QB
         | Site kept me engaged in programming throughout middle school. I
         | moved ok to VB 5/6 in high school and began my career making
         | all kinds of small apps and utilities for people and companies.
        
         | jonplackett wrote:
         | I don't understand why it isn't taught to kids instead of
         | scratch.
         | 
         | Visual coding is my nemesis. I just disagree with it in
         | principle. It makes even the simplest things complicated and
         | virtually impossible to debug.
         | 
         | BASIC was the first computer language I learned. It's so basic
         | I just taught it to myself from the help section when I was 12,
         | without any exceptional ability on my part.
        
           | johannes1234321 wrote:
           | For kids who grew up with smartphones and other visual
           | devices it's extremely hard to build something "sexy" in the
           | first few weeks with basic.
           | 
           | You need some visual thing for the appeal.
        
             | jonplackett wrote:
             | I think aiming for visual appeal is a dead end or at least
             | a false dawn.
             | 
             | Instead aiming for that Frankenstein moment of excitement
             | 'holy shit this thing is kinda alive!' Is where you want to
             | get to.
             | 
             | I introduced a friend's kid to basic the other day. She's
             | about 9 and was already getting the idea of an input,
             | making some decisions and writing an output. Even with that
             | just being text she was excited, and was already having her
             | own ideas what to do next.
        
           | duffyjp wrote:
           | You're giving me ideas-- My oldest is nine and that's
           | probably around the age when I first got my own computer (a
           | 286) and dove into QBasic. There's no way he'd choose to
           | spend time in BASIC unless it was his only option. I have an
           | ancient Thinkpad gathering dust, maybe I'll install DOS 6.22
           | on that sucker and have it boot straight into QBasic from
           | autoexec.bat.
           | 
           | At bedtime we're a "you don't have to sleep, but you have to
           | be quiet" household so if he had it in his room it might see
           | some use.
        
             | rbanffy wrote:
             | A C64 Maxi would be more welcome, at least for me.
        
           | phone8675309 wrote:
           | When I was in high school (around 2000) they had three CS
           | courses that kids could take - the first was in QBasic, the
           | second was in Turbo Pascal, and the third was in C++ for the
           | AP CS exam.
        
           | jay_kyburz wrote:
           | > don't understand why it isn't taught to kids instead of
           | scratch.
           | 
           | Because there is no such thing as a syntax error in scratch.
           | 10 year olds are not great at typing, spelling, or paying
           | attention to the small details.
           | 
           | Scratch rules out a whole class of bugs and allows the kids
           | to jump right into solving the interesting problems.
        
             | jonplackett wrote:
             | I think we're making things much too easy. Kids like
             | challenges. my 6 year old can spell plenty of words. A 9
             | year old can definitely memorise PRINT, GOTO, INPUT and
             | SLEEP.
        
           | satori99 wrote:
           | Why not both? My Atari 800 came with a BASIC and a Logo
           | cartridge. Logo was the thing that got my attention first
           | because it could draw pictures on a TV screen right away, but
           | writing BASIC programs and storing them on a cassette tape
           | was the thing that got me hooked for life.
        
       | AlexeyBrin wrote:
       | An amazing book about the history and evolution of BASIC:
       | 
       |  _Endless Loop: The History of the BASIC Programming Language_ by
       | Mark Jones Lorenzo
        
       | hgyjnbdet wrote:
       | Still using a version of BASIC today, VBA.
        
       | jcadam wrote:
       | My introduction to programming was with Integer BASIC on the
       | Apple II. I was about 7 years old at the time and was hooked
       | instantly. From there, I moved on to Amiga AMOS (also a basic),
       | Pascal, C, and so on...
       | 
       | Given the state of the field these days though, I can't help but
       | wonder if I should have gone into some other line of work
       | instead.
        
       | quaffapint wrote:
       | Let's see my BE language progression went from...
       | 
       | Apple Logo->Commodore
       | BASIC->Fortran->Pascal->PHP->Java->VB6->.NET...and other modern
       | things.
       | 
       | ...With scripts of various types mixed in there. But BASIC is
       | what got me hooked. Being able to write my own games on the
       | Commodore 128 was fantastically addicting. Leaving demo store
       | Commodore's flashing background colors with POKE 53281 and
       | looping around felt like I was the king of the world.
        
         | steve1977 wrote:
         | What was really great with BASIC on computers like the C64 or
         | C128 was that the barrier of entry was so low. It was just
         | there, it was the shell. So you might as well try that
         | 
         | 10 PRINT"HELLO"
         | 
         | 20 GOTO 10
         | 
         | and see what happens
        
       | seryoiupfurds wrote:
       | Having QBASIC right there and available to play with was my
       | introduction to programming as a curious 11 year old.
       | 
       | I remember reading every topic in the help browser over and over
       | looking for how to write to the screen, because I didn't want my
       | first program to waste paper with the PRINT statement.
       | 
       | One section of the manual told me to use labels instead of old
       | fashioned line numbers, but I could never figure out the syntax
       | to GOTO them. So I kept a nice index card with line number ranges
       | for all the functions in my program. It worked great until I had
       | to spend a day debugging a line number that ended with O instead
       | of 0.
       | 
       | It was always a big mystery why renaming my program from .BAS to
       | .EXE didn't let me click to run it like other programs.
       | 
       | Ah, memories...
        
         | vram22 wrote:
         | >It was always a big mystery why renaming my program from .BAS
         | to .EXE didn't let me click to run it like other programs.
         | 
         | Ha. Like other such newbie-isms.
         | 
         | One of my favorites:
         | 
         | Computer: Hit any key to continue.
         | 
         | User: Where's the any key?
         | 
         | A google search will turn many more amusing ones.
        
         | phone8675309 wrote:
         | I remember specifically being excited to have QBASIC when my
         | parents got our first PC. This comment reminded me of that
         | excitement.
        
       | wvenable wrote:
       | BASIC is a uniquely useful language on machines with extremely
       | limited RAM. It was designed to take up as little program space
       | as possible even when compared with machine language. On home
       | computers, each BASIC keyword is tokenized into a single byte.
       | 
       | I have a computer with only 3kb of RAM but has a comparatively
       | large amount of ROM to support a complete BASIC. With BASIC you
       | can create useful programs that would otherwise be impossible to
       | fit into RAM. This has given me a newfound respect for the
       | language.
        
       | xgkickt wrote:
       | There's even a version for the Nintendo Switch.
       | https://www.petc4.smilebasic.com/?lang=en
        
       | bdcravens wrote:
       | My start to programming was accidentally signing up for a class
       | in high school that taught Turbo Pascal (1995). I then starting
       | playing on my TI-85 (TIBASIC) and then bought a friend's old 286
       | and started hacking around in QBASIC. That unlocked a memory from
       | when I was elementary school in the early-mid eighties and we did
       | some programming on an Apple (II I'm guessing), writing BASIC,
       | early enough that line numbers were still required.
        
       | p0w3n3d wrote:
       | 10 HOME       20 SWEET       30 GOTO 10
        
         | sedatk wrote:
         | Also summarizes the whole series :)
        
       | binary132 wrote:
       | I've been trying to teach my (admittedly pretty young) kids Lua
       | and I have to say BASIC is just a lot simpler to understand when
       | you don't know anything about anything.
        
       | duffyjp wrote:
       | In elementary school my uncle gave me his old LASER 286S. It was
       | too old for all the games my friends played so I mostly just
       | farted around in QBasic all day.
       | 
       | I really wish I still had that system and all my BASIC scripts
       | but those are long gone.
        
       | kstrauser wrote:
       | I worked as a hotel night auditor during college. It was great
       | for me: I did actual work from around 11PM to midnight, then
       | loafed around until around 6AM when it was time to set up the
       | breakfast table.
       | 
       | A big chunk of my job was doing tedious manual edits in the guest
       | management software that tracked who was in what room, what phone
       | and pay-per-view charges they'd racked up, etc. It occurred to me
       | to peek at its database file and see if I could pull any useful
       | data out with automation. The DB turned out to be a flat file of
       | fixed-length records. The DOS PC had a copy of QBasic on it and I
       | used a bunch of trial and error to map those records to types,
       | and then I could loop across the records to get interesting data
       | out of them.
       | 
       | Long story short, I ended up with a system we'd run nightly to
       | correct misspellings, build reports of which companies did the
       | most business with us and how recently, identify regular guests
       | who hadn't been around in a while, and a thousand other little
       | things that made my job much more pleasant and my boss extremely
       | happy.
       | 
       | It would be much easier to recreate that program today in a nicer
       | language. I didn't have a nicer language available, though, and
       | while it wasn't pretty, QBasic got the job done.
        
         | chasil wrote:
         | _The AWK Programming Language_ was published in 1988, and
         | indicates:
         | 
         | "Aside from these limitations, however, awk should be useful in
         | any environment; in particular, it runs on MS-DOS. Further
         | information is available from Addison-Wesley."
         | 
         | It likely was not easy to find, and I hadn't heard of it until
         | 1990.
        
           | johannes1234321 wrote:
           | In a pre Internet time a lot harder to learn about, fetch and
           | learn than QBAsic, which was saprt of DOS and had a quite
           | good online help system.
           | 
           | Many alternatives existed, but non that were so approachable
           | on DOS (and many other systems in their variant)
        
           | kstrauser wrote:
           | There's zero chance I personally would have been capable of
           | building that same software in Awk, even if I knew of it, and
           | even if I knew how to get it onto that non-networked computer
           | that didn't have any removable media in common with what I
           | had at home.
        
       | throw0101b wrote:
       | Also, Fortran is 1954 (70 years old this year) and LISP is 1958:
       | 
       | * https://en.wikipedia.org/wiki/History_of_programming_languag...
        
       | WillAdams wrote:
       | An interesting aspect of this is why there wasn't a BASIC on the
       | Mac early on (save for an text-based version offering from
       | Microsoft which barely allowed writing to the screen):
       | 
       | https://www.folklore.org/MacBasic.html
        
         | timbit42 wrote:
         | Microsoft didn't understand GUIs yet. Amiga BASIC was also
         | written by Microsoft and the GUI support is also limited. Apple
         | didn't create a BASIC for the Mac because was into Pascal and
         | had used it for the Lisa OS and apps. Much of the Lisa code was
         | reused in the Mac OS.
        
           | WillAdams wrote:
           | I guess you didn't read the link?
           | 
           | >Donn was making good progress and looked to be on track to
           | ship in early 1985; we were excited to show the world what
           | Basic should really look like on the Macintosh.
           | 
           | >He knew that Donn's Basic was way ahead of Microsoft's, so,
           | as a condition for agreeing to renew Applesoft, he demanded
           | that Apple abandon MacBasic, buying it from Apple for the
           | price of $1, and then burying it.
           | 
           | I bought Microsoft's BASIC for the Mac, and it was a waste of
           | money, and I'd've much rather had Apple's based on my reading
           | of the books which were published about it despite it not
           | having been released save as a beta:
           | 
           | https://apple.fandom.com/wiki/MacBASIC#Books
        
             | timbit42 wrote:
             | I read every article on that website a number of years ago
             | but I forgot that story since.
        
       | WoodenChair wrote:
       | There's a really good documentary on the creation of BASIC at
       | Dartmouth (made by Dartmouth):
       | 
       | https://www.youtube.com/watch?v=WYPNjSoDrqw
       | 
       | If you don't want to watch the documentary, we did a shorter
       | podcast episode about it:
       | 
       | https://pnc.st/s/kopec-explains-software/6d99d278/basic
        
       | travem wrote:
       | SQL also turns 50[1] today, I think that it has much wider active
       | usage today than many of its contemporaries.
       | 
       | [1] Archive of "SEQUEL: A STRUCTURED ENGLISH QUERY LANGUAGE"
       | https://web.archive.org/web/20070926212100/http://www.almade...
        
         | refset wrote:
         | It's great how the very first SQL query in that paper is still
         | completely valid and runs on countless implementations:
         | 
         | > SELECT NAME FROM EMP WHERE DEPT = 'TOY'
        
       | karmakaze wrote:
       | I have a great appreciation for BASIC, being the first language I
       | was exposed to both at home on my Atari 400 and in school on
       | TRS-80 and Wang computers. Since then I went through various
       | machine/assembly languages, C, C++, Pascal, and modern procedural
       | languages.
       | 
       | Lately I spend most of my time writing less-procedural code on
       | procedural languages. Eliminating the step-by-step 'time' element
       | and mutating variables is the best way I know to make more
       | comprehensible software.
       | 
       | Just because computer hardware executes step-by-step in time,
       | doesn't seem like a strong enough reason to learn programming
       | this way. I'd really be curious what would happen if programming
       | (not 'computers') were taught more transactionally with defined
       | inputs, outputs, and a mapping definition that gets coded with
       | intermediate expressions rather than time-varying data building.
       | Basically, instead of starting with for/if/etc then eventually
       | finding filter(predicate), map(function) start with them. There's
       | a bit of learning curve up-front, but it seems flatter from there
       | compared to all the accidental complexities created with the
       | other approach. The first-class function aspects can even be
       | bypassed by only using anonymous block syntax for a long time.
       | 
       | Is there a _semi-popular introductory language_ that is more
       | based on (or can use) immutable data and mapping expressions?
       | Even for my own use, I can 't really find much more approachable
       | ones than Kotlin/Java/(Gleam?), F#/OCaml/Elm for statically typed
       | ones. For dynamically typed languages, the close ones I can think
       | of are Ruby and Elixir.
        
       | behringer wrote:
       | If you're looking to celebrate with other BASIC programmers,come
       | hang out with us at https://discord.com/invite/Ge4ErMcdQR
        
       | Thoreandan wrote:
       | So ubiquitous, it was even on the Playstation 2. :^)
       | 
       | https://en.wikipedia.org/wiki/Yabasic#PlayStation_2
       | 
       | https://www.theregister.com/2000/11/07/sony_adds_basic_to_pl...
        
       | neilk wrote:
       | I read a book called A People's History of Computing in the
       | United States, which wildly oversells itself, it's just a history
       | of Dartmouth Basic and the culture surrounding it.
       | 
       | https://www.hup.harvard.edu/books/9780674970977
       | 
       | But even then it was very interesting! The philosophy was that
       | anyone could program, and they really did build a culture of
       | amateurs writing programs that answered their own needs. The
       | author has access to a lot of ephemera from that time which gives
       | some flavor of what it was like in the lab.
       | 
       | And then, BASIC culture spread by unlikely methods, like the
       | Pillsbury Dough company. No, really. For whatever reason they got
       | involved allowing local schools in the midwest to time-share with
       | their big mainframes.
        
       | JohnFen wrote:
       | Ahh, BASIC. I still consider it a bit of a naughty language.
       | 
       | When I first learned to program as a child, it was in Pascal (on
       | a mainframe... microcomputers were barely a thing back then). Our
       | instructor expressly forbade us from learning BASIC because "it
       | would teach us bad habits".
       | 
       | That which is forbidden becomes attractive, of course, so a bunch
       | of us kids started getting together on our own and we all learned
       | BASIC on the sly. It felt so... wrong... and delicious. Forbidden
       | knowledge is fun knowledge.
       | 
       | That's how BASIC became the second high level programming
       | language I learned.
        
       | tristor wrote:
       | Learning QBASIC with assistance from my dad on our family Tandy
       | PC when I was 4-6 years old was a major driver for my career in
       | technology later in life. Who else remembers the simple game
       | Gorillas that came with QBASIC with its source code visible to
       | read? That was a key inspiration for some of my early programs.
        
       | ethanholt1 wrote:
       | Happy birthday to the language that got me into software.
       | Admittedly, BASIC as a language was quite limiting, and, well,
       | basic. At least the flavor I was using. I made quite a few
       | rudimentary games on my dad's old TRS-80 Color Computer, and
       | eventually learned C because of it. BASIC may not be the greatest
       | language power-wise, but it damn well may be the greatest just
       | because of how iconic and important it was to the programming
       | sphere as a whole.
        
       | mehulashah wrote:
       | I learned to program with BASIC. My first program was one to
       | balance my Dad's checkbook. I copied it from a manual and added
       | some extra PRINT statements for flair. I was in 4th grade. It was
       | on a Timex Sinclair. Then I tried to draw a smiley face and ran
       | out of RAM -- it only had 1K.
        
       | WalterBright wrote:
       | BASIC was my first programming language. Of course I abandoned it
       | for Fortran, C, C++, etc. But when I was considering developing
       | D, I thought about string manipulation. It was so easy in BASIC.
       | Why was it so terrible in C and C++? So, so many bugs in string
       | manipulation code. So much time spent on it.
       | 
       | A major goal of D was to have strings work like in BASIC. And
       | they do! Very happy about that. Thank you, BASIC!
        
         | Gibbon1 wrote:
         | First BASIC I used was Rocky Mountain basic on an HP 9845C.
         | After that Pascal and C strings were so terrible.
         | 
         | Rocky Mountain BASIC also had multidimensional arrays and array
         | operations. And support for sparse arrays.
        
       | tasty_freeze wrote:
       | Most people think of one of the MS BASIC dialects when they think
       | of BASIC (at least in the US). The original Dartmouth BASIC had
       | matrix primatives, including MAT READ, MAT PRINT, MAT INPUT, and
       | functions like MAT A=INV(B) (yes, matrix inversion), MAT A=B _C,
       | MAT A=B+C, MAT A=B-C, MAT A=B_ (2) (scalar mult), MAT A=TRN(B)
       | (transpose), MAT A=IDN(5,5) (5x5 identity matrix), MAT A=ZER(5,5)
       | (zero), MAT A=CON(5,5) (fill with 1.0).
       | 
       | I cut my teeth on Wang 2200 BASIC, which was an extended
       | Dartmouth BASIC, so it had the above MAT statements, but also a
       | bunch of wild ones that did searching and sorting on arrays,
       | merging two sorted arrays into a sorted output, and more.
       | 
       | Here is a statement that searches a character array A$() in
       | columns 1-5 for a string in Z$: MAT SEARCH A$()<1,5>,=STR(Z$,1,5)
       | TO B$ STEP 5. Every match writes the location to a descriptor
       | array (this case B$), where each pair of bytes was the offset in
       | the A$ array where the match was found.
       | 
       | Despite all that power, it still was quite limited: all variable
       | names had to be a single letter or a letter and a digit. All
       | variables were global. GOTO and GOSUB were either the line number
       | or a "label" where the label was one of '0 to '255. Strings were
       | statically allocated, not dynamic, and the max length was 64
       | characters (BASIC-2 extended that to 126 bytes). On the other
       | hand, before the program started running everything was allocated
       | there was no possibility of memory overflow during runtime, and
       | no garbage collection, and any references to missing line numbers
       | was caught up front.
        
       | doublerabbit wrote:
       | So, BASIC is basically 60..                 REM EDIT       10:
       | PRINT "I forgot hn doesn't do humour"       GOTO 10
        
       | RetroTechie wrote:
       | 100+ comments, and nobody mentioned type-ins:
       | 
       | Common in magazines, you'd have pages with listings that users
       | could type in, save, and then run (in that order!).
       | 
       | Well... usually including some corrections. The usual typo's, but
       | even listings as published contained errors sometimes.
       | 
       | BASIC was very suited for this as many keywords are plain English
       | or -like.
       | 
       | It's only later this got replaced by cover tapes etc.
       | 
       | And in the NL, there was a thing called BASICODE:
       | 
       | https://en.wikipedia.org/wiki/BASICODE
       | 
       | Which was an attempt to make a standard dialect that different
       | computers could interpret, and/or convert into their own
       | machine's BASIC.
       | 
       | A late-night radio program (NOS Hobbyscoop) would often end its
       | transmission with some minutes of tape-loading sounds. Users
       | would record this on tape, run it through some conversion
       | program, and RUN. So the same program as transmitted over the
       | air, could then be run by C64, ZX Spectrum, MSX, Amstrad CPC
       | users etc.
       | 
       | Iirc it wasn't _that_ popular compared to other ways of obtaining
       | software. But computer users @ the time were eager to do  & try
       | anything they could get their hands on. Today's internet info-
       | overload didn't exist then.
       | 
       | And of course radio had a wide audience. Interesting programs
       | could thus be distributed among many users quickly.
        
       | simonblack wrote:
       | So when I discovered BASIC , it was less than 10 years old? Early
       | 1970s.
        
       ___________________________________________________________________
       (page generated 2024-05-01 23:01 UTC)