10 ms·
The Golden Age of BASIC (2014)
- bluedino 4y agoImagine your family getting an early home computer, and finding a BASIC book in the pile. Endless hours exploring that thing, typing commands, bending the computer to your will (and possibly learning some assembly along the way).
- loph 4y agoAround 1978, my dad brought me a blue book: 'introduction to BASIC' from Digital Equipment Corporation. He then _typed my programs_ for me into a DEC-20 at his office, and brought me the output to debug. Batch style programming with an interactive language! The other book that was instrumental in my downfall was 101 Basic Games, also published by DEC. Later, in high school, we had a PDP-8 with DEC EDUsystem BASIC on it, later replaced with a small PDP-11. This was right around the time that Apple ][ and TRS-80 were just appearing on the scene. Until then, programs were entered on printing terminals like Teletypes, GE Terminet, and DECwriter II. This is not that long ago, in a relative sense.
- vram22 4y agoAnother small BASIC story, mine (partial, because I also programmed in BASIC on other personal conputers, apart from the IBM PC Jr. mentioned in the posts below): https://jugad2.blogspot.com/2012/09/lissajous-hippo.html https://jugad2.blogspot.com/2012/09/lissajous-hippo.html And a related HN comment by me that may be of interest because of the mTCP stack that Mike Brutman developed for the IBM PC Jr.: https://news.ycombinator.com/item?id=13264041 https://news.ycombinator.com/item?id=13264041
- PaulHoule 4y agoBasic was better on the IBM PC and clones because you had BASICA or GWBASIC or QBASIC or QuickBasic or Turbo Basic. I had Turbo Assembler and the Microsoft Assembler, Turbo Pascal, Turbo C, etc. These ranged from the same experience as the Beeb to full functioned text mode IDEs. Visual Basic from the Win95 era might be the best scripting language to write desktop gui applications that there has ever been.
- notadev 4y agoI am definitely from the Golden Age of Visual Basic.
- orn 4y agoDelphi
- bernardv 4y agoYep, Visual Basic was very much under-appreciated. That, combined with a great IDE, Visual Forms, and a very decent compiler. Then .Net came and ruined a good thing.
- pjmlp 4y agoWhen WinRT got released, I thought, they finally did it the right way. AOT compilation, with managed languages on top of COM, in a sense bringing back VB 6, and an approximation of C++ Builder. Then management messed it all up.
- anta40 4y agoVB 6 was my 1st exposure for desktop programming (MSVC was harder). Then I met Delphi 6, and Lazarus. These days, when I want to build cross platform desktop apps quickly, Lazarus is #1 choice. P.S: I don't write desktop apps profesionally anymore, used to write a few in Java Swing and FX.
- teddyh 4y agoThe most widely used version of Basic which these platforms used does not have functions. This makes Basic programs tend to spaghetti and unreadable code, especially considering the constant memory constraints of those platforms. I grew up on these systems, and every time I think back on it I wish something like Forth would have taken its place – i.e. something with a clean and scalable pattern for abstraction. Basic, on the other hand, doesn't do abstractions. It barely has data types and what it calls “functions” are an even more limited form of Python's style of lambdas; every subset of code which can actually do something looks like “GOSUB 11600” when you call it. No naming, no abstractions, nothing. (No parameters or return values, only global variables.) (This is in some ways even worse than assembler, which usually has labeled goto’s.) When I programmed in Basic those many years ago, I was stalled when my programs reached a certain level of complexity. I was then mostly halted in my education and development as a programmer for many years, because the language did not make program composition easy. It was not until I had the opportunity to learn other languages with did have proper functions and other methods of program composition that I could break through the barrier, so to speak. (Reportedly, BBC Basic on the BBC Micro did have proper named functions, and later versions of Basic like on the Atari ST and Amiga also had them. I believe that those versions of Basic would have been vastly more productive and taught people the usefulness of abstracting things as you go, building ever higher abstractions, etc. But this is never the version of Basic which people talk about, or used by all those listings in magazines, etc. These are, for all intents and purposes, not the “80s style Basic” which everybody remembers with such apparent and baffling fondness.) (Mostly a repost of previous posts of mine, e.g. https://news.ycombinator.com/item?id=25014279 https://news.ycombinator.com/item?id=25014279)
- Mountain_Skies 4y agoMany BASICs of that era were limited to two significant characters for variable names, which made the code even less readable. There were some attempts at creating preprocessors that would take more readable code and turn it into something the interpreter could use, but at that point, you might as well go all the way with using a compiled language.
- musicale 4y ago
- greenbit 4y agoThe early BASICs, on the TRS80, the PET 4032 and the like, were all dreadful, but they were the only game in town. All variables were globals, the nearest thing to a procedure call was the 'GOSUB', there were inexplicable hold overs from punch-card systems like the READ/DATA thing. Those were the days of typing it in from a listing printed in a book or magazine. 16K of RAM was plenty, because any BASIC program more than 100 lines long was simply incomprehensible w/o some cheat sheet notes on the side. About the most interesting thing that could be done with those machines was to learn the assembly language for the underlying processor. People said that assembly language was going extinct even in 1980, that it was a step backwards, but BASIC didn't seem to be the way forward, either. Recalling fondly now the sheer delight of that first university class in Pascal.
- musicale 4y agoBASIC was designed to be learned in an afternoon. Nothing wrong with Pascal, but it's drastically more complex to learn and to implement. The original BASIC user manual was just 23 pages long! https://www.dartmouth.edu/basicfifty/basicmanual_1964.pdf https://www.dartmouth.edu/basicfifty/basicmanual_1964.pdf The goals on page 1 are particularly relevant: 1) easy to learn, 2) efficient/compiled, 3) stepping stone to more advanced languages (s/Algol/Pascal/), and 4) general purpose. This simplicity paid off for early microcomputers and microcontrollers which could fit a BASIC interpreter, hardware drivers, and a user program into a few kilobytes of memory, creating a system that could run any of the programs in the above Dartmouth BASIC manual.
- bouncycastle 4y agoBASIC itself was written in Assembler, with the nearest thing to a procedure call was the 'JMP' instruction. It's amazing how any of such scale software was written in Assembler. See here https://github.com/microsoft/GW-BASIC https://github.com/microsoft/GW-BASIC
- musicale 4y agoMost microprocessors include some sort of a procedure call and return instructions, such as CALL and RET on the 8080/Z-80/x86, as well as stack push and pop instructions. RISC type processors can usually store the return address in a register and jump to an address stored in a register. On ARM you can also do an x86-like return with pop {pc}. Many large programs such the first Unix kernel, and many video games, were written in assembly language. My experience is that assembly language seems fine when you're writing it, but it's a pain when you go back some months later and try to read it. Good structure and comments help. I just read and wrote some RISC-V assembly language and it wasn't terrible, even though I'd never used RISC-V before. Writing assembly language makes you appreciate why (and how) programming languages exist.
- jim_lawless 4y agoI liked BASIC not so much because of any particular programming constructs. I liked the large, varied community that formed around BASIC. All sorts of people were dabbling with BASIC at the time trying to code games, utilities, or maybe just noodling with graphics and sound as the potential of the 8-bit home computers was explored.
- lordgroff 4y agoMy first language I delved any time into was (Speccy's) BASIC. Despite now being very much a programming polyglot there's no real language I've sunk my teeth into that I outright dislike. There's an exception. And that's the BASIC dialects. I don't have very much fondness for it, even calculating for nostalgia.
- wunderbaba 4y agoI grew up on DOS 6.22 and quick basic 4.5, so I have a huge amount of nostalgia for how low friction it was to start programming back in the day. There's a scene in Stranger Things where Sean Astin's character tries to brute force a code using a basic variant, and it was surprising to me to see code on a popular TV show that was remarkably faithful to the original. https://specularrealms.com/2021/04/21/strangest-things https://specularrealms.com/2021/04/21/strangest-things
- zozbot234 4y agoModern IDE's are finally approaching a "low friction" workflow with things like LSP and DAP, which are largely independent of the programming language. The intuitive UX of QuickBasic, VB-DOS, the Turbo series etc. however is still very compelling, in a way that has yet to be comprehensively ported to modern systems.
- musicale 4y agoSay what you will about BASIC, but it was (like Python) designed to be a programming language that beginners could learn in an afternoon and do something useful with. It was also compact, which made it scalable to support hundreds of users on a timesharing system, and small enough to fit on tiny, underpowered 8-bit systems and microcontrollers. BASIC, like Lisp, is also simple enough that it is easily implemented. The computing era of the 1950s-1980s is interesting in that it was assumed as a matter of course that in order to get the most out of a computing system, users would write programs for it. As a result, the systems were fairly programmer-friendly and provided programming languages and instructions for using them in the box, including materials aimed at beginners. Now that there are zillions of prefabricated apps that you can download almost instantly, there's a whole lot you can do with a computing system without ever touching a programming language. As a result, systems like macOS/iOS/Android/Windows are designed to create app and game users/customers rather than programmers or engineers - educational micro platforms like Raspberry Pi, Arduino, and micro:bit being notable exceptions, and Linux largely retains its programmer-oriented Unix heritage. It's too bad, because JavaScript is included in every web browser, other languages like Python, Java and C++ are readily available for free on nearly every system, and even BASIC itself is still available from Microsoft in forms such as Visual BASIC, VBA, and SmallBasic. (And there are free and web implementations as well.) What seems to be missing from iOS, Android, macOS, Windows, ChromeOS, and web browsers is an easy, visible, built-in onramp to programming. For example, Swift Playgrounds is neat, but I expect most iOS and Mac users don't know it exists, and would probably have little interest in it if they did.
- zozbot234 4y agoI still don't get why Python is considered "easy to learn" as a first programming language, even to the point of coding professionally in it. There are many things about Python that are extremely obscure and that a complete novice can only really hope to work around clumsily, not deal with in a principled way. That's frankly a big turnoff even compared to archaic but somewhat simple and understandable systems, including BASIC.
- analog31 4y ago
- Eleison23 4y ago
- Julesman 4y agoTimex Sinclair 1000. Because it had graphical characters I was able to make animated shorts using basic. I recall one where a plane was going lower each time it crossed the screen until it hit the ground and there was a big multi-stage explosion followed by an gravestone rising up from the bottom. Good times.
- MattPalmer1086 4y agoYes there was a special magic in those early days of home computers. There is so much more power and information available trivially now, but we have come to expect that. Back then, if it wasn't in a written manual, there typically was no other source of information. But that didn't stop us! We simply had to tinker with it, reverse engineer it a bit. I think that was a big part of what made it special.
- JKCalhoun 4y agoHoly shit, BASIC that allowed inline assembly. So jealous.
- dang 4y agoDiscussed at the time (of the article): The Golden Age of Basic - https://news.ycombinator.com/item?id=7680045 https://news.ycombinator.com/item?id=7680045 - May 2014 (11 comments)
- WalterBright 4y agoMy first programming language was BASIC in the 1970s. When I learned C in the 1980s, programming with strings was always a mess and produced a rich bounty of bugs. When initially designing the D programming language, I resolved that D wouldn't be any good until D did strings as easy as BASIC did. And so strings are easy and bug free in D, and have become a great strength of D. Thanks to BASIC!
- zozbot234 4y agoBASIC uses garbage collection for its strings. But an ownership approach as found in Rust can give you strings that are almost as easy-to-use as BASIC's, without involving the complexity of a GC.
- beej71 4y agoI'm "reverse engineering" the BASIC source for Super Star Trek right now for a Rust port. Brings back memories, that's for sure.
- neilv 4y agoThe two books that came with a TI 99/4A: https://archive.org/details/tibook_beginners-basic https://archive.org/details/tibook_beginners-basic https://archive.org/details/tibook_users-reference-guide https://archive.org/details/tibook_users-reference-guide From BASIC, it gives you variables, control flow, keyboard reading, addressable character cell graphics with color and custom characters, and multi-voice sound. You can do a whole lot with that, and that was the book you opened when you plugged it into your TV and started figuring out what you could do with this thing. (I wanted to make video games, and I did.)
- guenthert 4y agoBASIC? Yeah, like the author and many in my generation I started with it as it came with the home computer and we kids didn't know any better. Once introduced to Pascal however, I didn't look back. Until, I rekindled my interest in electronics more than 30 years later. Many of the affordable quality test and measurement instruments, read old ones, come with examples on how to control them via GPIB using BASIC (a variant of Rocky Mountain Basic afaiu). -hp- was big on BASIC. First their minis, then their 'calculators' and even the work stations. Those short examples in the manuals are easily translated into Python today, but sometimes I wished I had a RMB available for Linux.
- ChicagoDave 4y agoThe first seventeen years of my career were PC Basic, DEC PDP/VAX Basic, and Visual Basic. I switched to C# and object-oriented programming in 2002. I still have MS Pro Basic code in production from ‘90. I wouldn’t wish GOTO/GOSUB on anyone, but the latter procedural versions of BASIC were very productive tools.
- dhosek 4y agoDEC’s BASIC was a surprisingly capable language. It was what I wrote my first recursive code in. I remember being annoyed that you couldn’t do the same in AppleSoft.
- tragomaskhalos 4y agoThe BASIC dialects that most of us cut out teeth on (ZX Spectrum user here) would indeed have made Dijkstra weep, but they all had a single cardinal virtue that is unmatched by any of its successors - it was trivial to do simple graphics in them using the facilities of the language itself. This was the 'hook' for most of us, as graphs, animations but most importantly games could be dreamed up and implemented so easily. Were these mostly garbage with terrible performance? You bet they were. Did that matter? Not one bit. And, with growing experience and some POKEing you could salt in a bit of hand-assembled machine code to jazz things up, even if you lacked the inline assembler the fancy BBC micro kids had. This topic comes up on HN from time to time and people often cite Javascript, Processing, Pygame and others as counterexamples, but none of these are remotely as accessible nor as simple to get going on as these crude BASICs were.
- mhd 4y agoTrue, more languages should include a simple 2D canvas in their standard library. Even something totally unoptimized is better than having to hunt for basic game engines or a 3rd party SDL2 binding.
- zozbot234 4y agoPOKE isn't a "facility of the language" though, it's just a raw memory write. The modern equivalent would be using the lowest-level graphical API's.
- tragomaskhalos 4y agoPoke was a facility of the language - it was a keyword built right in. I was referring to using it to put a machine code routine into memory via BASIC, but yes you certainly could and did control screen memory directly using it, this was also very accessible because there was typically a fixed region of memory with a simple logic to its layout that made that direct connection and feedback available.
- bibanez 4y agoI don't know BASIC, but I would say Processing is very accessible. They tought it in my Middle School and I would say making games is trivially easy with it, even if it is more designed for animations than interactivity. I would argue the problem is, back then, as a kid, you most probably had access to only one machine, and one PL. Now too many choices can make learning unfocused
- appstorelottery 4y agoI was 9 years old when I got the TRS-80 Colour Computer 2 and started with Basic, I had the Edasm+ assembler cartridge but was too young to understand how to program in assembler - or at least I didn't have a mentor that could explain how the computer actually worked, it was always a point of shame for me. During Covid I found a TRS80 emulator I wrote a simple scrolling road game (driving a car) and then put my mind to learning the CPU (6809), memory map and I/O for joysticks (and learning how to poll them). It was not difficult at all, and the sheer volume of books on the internet archive is awesome. I'd ported the simple BASIC program to assembler, used Edasm+ to assemble and was absolutely blown away by how much faster the program ran in machine code. Moreover, the sense of achievement I got on behalf of my 9-year-old self was one of the coolest things I've ever done... Basic programmers were lamers back in the day, and over a few days - learning assembly - I'd taken my first steps to dropping that title and the shame of my youth. As a side note - AMOS on the Amiga was awesome, and PDS on DOS (with SVGA libraries) both me to start my first business when I was 15 (through-the-window real-estate listings). Even then the shame of being a basic programmer stayed with me, I would deliberately compress, use a 3rd party linker & hex edit the beginnings of compiled programs (on PC) to ensure nobody could work out that I was using compiled QBX (quick basic). I continued with VB, Blitz and the like until learning C# with Unity... then I felt the shame of not being able to do the equiv. of 80's assembler (shader programming). Perhaps one day I'll get over myself and believe I'm not a lamer at heart :-) I often think I was born a few years too late, things moved so quickly and I was a bit too young... TRS-80 -> Amstrad -> Amiga by the time I was 14 - and the Amiga was really complicated with it's custom chips. Anyhow. Just a bit of a rant ;-) Thanks for reading. p.s. Oh, just thought I'd add that I also played with RISCOS and BBC Basic during the period mentioned above and was blown away by how all the OS functions and so on were exposed to BBC basic, for me, this has always been the problem with Basic variants. Doing SVGA graphics on the PC with QBX required 3rd party libraries, proper TCP/IP under VB required IP/Works, and so on... back then I was always struggling - not with optimisation - but with access to features I needed that weren't offered through whatever dialect of basic I was using. BBC Basic on the other hand seems to be done right, I expect you could write any application you cared to without resorting to C or assembler.
- DrNosferatu 4y agoMSX Basic home user here ;) However, the big emphasis was on Logo in primary schools at my time. Speaking of which, does anyone know of a MSX-Logo English version ROM available for download? Can only find it in Dutch...
- gttalbot 4y agoThe most significant of these, the Commodore 64, had a social leveling effect as well. The Apple II and the IBM PC were essentially unaffordable for all but the well off. However, selling 10 million Commodore 64s at essentially 1/4-1/8 the price of the Apple II allowed a generation of working class kids to have upward mobility and real careers. Didn't hurt that in some ways the Commodore 64 was a better computer as well.
- greenbit 4y agoWith the C64, you just knew what the machine was capable of, from the myriad games to be had, but the BASIC gave no direct support for any of that good stuff. The only graphics you could do from BASIC were the character cell glyphs (line segments, box corners, etc) like some kind of glorified color version of the PET. And forget about sound. Remember the first time you loaded a game that you had to RUN, and instead you did a LIST, only to see 10 sys(2063) .. or the like? Yeah, clearly there were Mysteries that needed solving! It just begged you to use PEEK and POKE, to get at the real goodies. In a way this was an almost ideal precursor for learning assembly language; PEEK and POKE got you used to the idea of loading and storing things to memory or device registers, and then when you loaded up Jim Butterfield's SuperMon (thanks, Jim, wherever you are) and started banging around under the hood, heck, there were LDA and STA, ready and waiting. But a zillion times faster!
- cbm-vic-20 4y agoOr in my case, the VIC-20. My working class parents got one for me for Christmas in the early 80s. It introduced me to programming BASIC and assembly language at a young age, which formed the foundation of a career that has given me financial stability that they never had.