Everything I Needed to Know About Programming I Learned from BASIC

I learnt to program with BASIC, but it’s not enough. See my recent blog post:

http://www.justsoftwaresolutions.co.uk/design/c-basic-and-real-programmers.html

I still have my Basic Computer Games: Microcomputer Edition book (the one with the yellow cover) that is shown above. In fact, it isn’t in a box… it sits up on a shelf next to my desk along side a “Best of Creative Computing” book.

Patrick - while it’s true that compiled VB.NET code is MOSTLY the same as compiled C# code (there are actually a few counter-intuitive differences), C++ is an entirely different beast.

Also, when you refer to Basic in this context - please say VB.NET. There are several BASIC dialects that have nothing to do with .NET, thereby potentially making the C# comparison invalid.

But I agree, there’s no point in bickering about which is better between C# or VB.NET.

While a lot of people were not looking, Basic grew up. Those who judge Basic by what it was years ago are showing their ignorance. What other programming language has not only lasted as long as Basic, but also has the popularity of Basic?

When Basic is compiled, the compiled code is no different than if had been written in C# or C++. Granted, other languages have some capabilities that are lacking in Basic. Each languange has its advantages and disadvantages as well as its place and purpose. Elitist snobbery reveals immaturity, no matter how many degrees one may hold.

Thanks for pointing out those facts, KG. My amateur status as a developer is showing.

Yes, I had forgotten that C++ was designed to drive developers into absolute incurable madness, or so I am told. grinJust a joke I am not picking on C++. It is just my way of acknowledging the hard work and skill it takes to program in C++

Most programmers I know work with several programming languages and have to work hard to keep up with the changes in software development. The days when one could program in one language alone appear to be over. It would be rare to find a developer who has not had the need to work with HTML, XML, Javascript, and SQL(pick your brand) as well as a number of other programming languages.

BTW, if someone wants to persuade me of the virtues of a particular brand of code, tell me about the great features and capabilities of the code. Bashing some other code is not appealing.

Please note that my comments about C++ was an attempt at well intended humor. The Website mistook my “grin” enclosed in angle brackets as HTML!

The truth is I admire those who have the dedication and ability to use C++. That comment was removed from my last post also.

Qbasic was the first programming language other than HTML that I wrote a actual usable program. Though I could only write programs that made sounds and basic text RPG’s, press 1 to do this and 2 do that. I got my compiler off my Windows 98 CD.

I started programming in BASIC on an Apple II 8 bit computer when I was about 11 years old. Because BASIC was slow I learned Assembly. Later I learned Pascal, C and C + +. Now I am a PHP, MySQL, JavaScript Web Developer but I graduated not in Computer Science but in Electronic Engineering.

BASIC is as it suggests beginners code and there is nothing wrong with that. What I like in BASIC is that it is basic and simple. That’s the fun in it. You can create hobby programs in minutes and teach someone to program in no time. And there is no need to compare it to C/C++ type languages (or Pascal type) because that is not the purpose of the language. It is not invented with the purpose of creating Operating Systems like C.

If you begin programming as a teenager BASIC is a good choice. But also it is very bad to get stuck in it only. Today to simply learn one language is not enough. I use about 5 (PHP, SQL, JavaScript, HTML, CSS, XML and etc.) to do my work and I also try some code in Java, Perl and Python.

There is no such thing like a Best Computer Language. Every one of them is stronger in one area and weaker in another. I thought C/C++ would be great to program until I realized it behaves so differently from compiler to compiler and from OS to OS. I had a very difficult time debugging it.

My advise to someone who wants to begin in programming is to learn a widely used language like Java, C/C++, PHP, Python and etc. And if you would like to develop web applications then HTML is a must. You should dream in HTML. However there could be no serious programming without some use of C/C++ or Delphi.

Thank you very much for this post. It reads so true.

For me, the journey started with the Atari 2600 and approx. 10 games I bought with my saved money(Adventure being my favorite - that DOT easter egg was the best).

Then thanks to my suppotive parents, who put their faith in me and believed in my dream, purchased an Apple ][+ with floppy drive and green phosphor monitor III for me ($2000 back in 1982, I think). Here I spent most of my youth, not playing only video games (I loved video games), but learning through programming. First in Applesoft, and later (when I could not get my written games to run fast enough in Basic, in Assembler).

Amiga 2000, and later PC’s followed, but none with the intensity of the Apple ][+. I had become a WIZ, fluent in computer logic, even thinking in Base16 arithmetic when needed. So what if I had to drop GOTO later on; it was not such a hard habit to drop.

This computer experience helped me through Turbo Pascal, Cobol, Fortran, Assembly, and all other forms of computer courses that I took through my schooling. I breezed though every singe related course thanks to this (high school, college, and university).

Now at 40+ years old, senior Electical Engineer in a company I’ve worked at since 16+ years with Electrical Utilities, I look back with nostalgia and am so thankful for my Atari 2600, my parents support, the Apple ][+, War Games, and Tron; all key factors that formed the person I am today.

Borrowing the words from Skinner above, I wouldn’t trade that early experience for anything. Period.

May our children find as much magic in their youths.

Thank you for listening,
TZ.

After learning Sinclair BASIC and doing loads of poking, peeking and typing in reams of code that never worked from ZZAP! magazine, I used to write simple games in GWBASIC on the 8086 on long nightshifts at work. Following a brief sortie into AmigaBASIC I went to nightschool to learn C.

Now I can’t stand the sight of a programming language, and besides, you can get most software you want written a lot better than I could do it nowadays.

I guess I’m a Shoat.

the key controllers reminds me of a hp?8 calculator ^^ ( which is lisp enabled , something i didnt understood until 10 years after buying it _ )

REAL programmers use: COPY CON PROGRM.EXE

But seriously, I have lobg felt that the biggest disservice that Microsoft did to professional VB programmers was to promote VB as easy. That brought out the folks who didn’t know how to anything but plop down controls wire them up (and that badly).

I played around with BASIC in high school on a PDP-11, then didn’t do much with computers 'til years later. Started the mainframe program at a trade school with BASIC on Commodore Pets, then moved over to the IBM System/360 for COBOL, Assembler (fun!) and RPG (yes, there is at least one BAD language…). A few years in ops, then more in restaurants before I came back to software with VB 3. Skipped 4, worked extensively in 5 6. Now I’m getting my feet wet with VB.NET and following along in C#. All versions of VB with which I’ve worked have been fine languages (for their time) IF you had the conceptual framework with which to build a proper structured (not necessarily Structured) program.

How far the discussion has gone! The point was that BASIC isn’t the goto hell language as some have suggested. Sure the home computers back in the day had limited capability, and the need for a programming language to make them accessible was dire; thus BASIC was what was best for the job. Any evils for spaghetti code done in the way are way compensated by the availability for young people to actually code on a machine.

Sure some people who weren’t serious about it in the first place write spaghetti code today, but that’s hardly because BASIC was their first language, it’s because they’re lazy. The 1980s home computer revolution was the forerunner of todays computer in every home. I did learn the wrong way of programming with Commodore 64 Basic, but I learned not to do the goto hell stuff pretty quick.

Clarification for my previous comment: I quickly learned to use subroutines for doing all the stuff that is done again and again, and the spaghettification (i.e. goto statements) went to the minimum. My programming on the Commodore 64 tended towards object oriented stuff. Using kernel (OS) calls was a must to do any real stuff too.

I gotta end my comment spree with an anecdote:

My first program when I was about 6 years old consisted of print and end statements, in the style 10 print If you want to do this, type run 50 etc. I tried to save the program on tape. My elder brother whose computer I was programming on came to help me to troubleshoot why the program wouldn’t load again. He finally asked did I press the record button together with the play button on the Datasette. I was embarrassed. And he said user error. User error is still the culprit in most problems. :slight_smile:

you can still make basic stuff in Liberty Basic, and do awesome things like cut paste copy you couldn’t do before. I use to make all kinds of tiny role-playing games, i don’t know why, but i made another one on the link above and am finishing up another one to put up soon as well. those 2 books stuck out in my head instantly, i had totally forgotten about them, i used to program basic on a TI-99 with those books. one of the programs that i still remember was a virtual psychiatrist named Liza i think, she would ask you all kinds of questions and what you answered would move her on to the next question. There were also some huge programs that were fun (hunt the wumpus?). anyways thanks for the memory rehash! =)

I’m not sure what’s up with the VB6 bashers. Sure many dreaded Morts learned from it and continue to be coding monkeys because of it, but it was one of the best options during its time, just like BASIC was during the early 80s (well, BASIC was the only option then come to think of it).

Thing is, a programmer wallowing in Visual Basic 6 and deciding to step up and do serious learning of things like OOP and functional programming and TDD and the rest of the agile stuff is ema conscious effort by the person/em, not a limitation set by VB6. I came down that path, and I do not have a CS degree, and I can say that today I have a fair understanding of some of the above concepts.

Again, if anything, emit’s the people who refuse to learn/em that is the problem, not the tools.

You certainly won’t blame an nail gun if your carpenter doesn’t want to use hammers anymore, would you?

To the kid wanting to start programming:

DO NOT TAKE UP ANY FORM OF BASIC, VISUAL OR OTHERWISE. If you want something less complex and hardcore than C/C++ to start with, and want to learn a popular general purpose language, look to Java, C# (pronounced “C-sharp”), or Python. If you are mostly interested in web applications, look at PHP, Python, or Ruby. Again, AVOID visual basic at all costs.

I saved my pocket money for four months to buy Blitz Basic for the Amiga.

Basic started my programming career and like you, I am appreciative of the fact it was the first language I wrote.

Thanks for giving Basic a much needed shout-out.

Simon

I remember going to the library to photocopy ‘Compute!’ magazine listings, featuring cool BASIC games like “Roadar” (a racing game) and “Worms” (nibbles in Quickbasic). I also have a children’s book called “Island of Secrets”, which has a complete BASIC listing of an adventure game. I remember well the exhausting task of typing those listings into the computer and the pleasure of typing run and playing a real game.

And you know what? If it wasn’t for the nostalgia, we’d all be saying what an abomination this BASIC is. It’s next to impossible to learn anything at all from those listings. I just got out my copy of “Island of Secrets”, and it’s utter gibberish. Even more than Perl, traditional BASIC is a write-only language – at least the way real BASIC programs were written. I certainly learnt nothing about programming from early exposure to BASIC. Indeed, it was almost child abuse. Tell a kid he can write real programs with his computer, and then watch him struggle vainly to reimplement “Buck Rogers” in a language that is barely worthy to implement “Hello World.” The most typing in BASIC listings ever did for me was slighly improve my transcribing skills.

Things are just better now. Like blatant sexist advertising, glam metal, flickering low-resolution green text-mode terminals, and office workers chain smoking at their desks all day long, BASIC is one of those things that deserves to be consigned to the dark ages of the eighties where it belongs.

Rhywun:

If I were to teach kids programming today I would skip all of those and start with Smalltalk. It’s not terribly “useful” in today’s business world but it’s a wonderful way to learn programming.

Try Python. It’s not quite as beautiful or pure in concept as Smalltalk, but it’s Smalltalk’s legitimate heir, and a real working language with lots of libraries and a big community behind it (so you can get real work done with it.)

(In fact, Python, Smalltalk and probably Lisp are the only languages I can think of that I would classify as “not child abuse” if taught as first languages in primary/secondary school. Smalltalk was of course initially designed for use by children. Granted, extraordinarily bright children, but children nonetheless.)

5 REM FIZZBUZZ IN C64 BASIC BY JASON STOKES
10 FOR I = 1 TO 100
20 GOSUB 100
30 IF D3 = -1 AND D5 = -1 THEN PRINT "FIZZBUZZ": GOTO 70
40 IF D3 = -1 THEN PRINT "FIZZ": GOTO 70
50 IF D5 = -1 THEN PRINT "BUZZ": GOTO 70
60 PRINT I
70 NEXT I
80 END
100 IF I - (INT(I / 5) * 5) = 0 THEN D5 = -1: GOTO 120
110 D5 = 0
120 IF I - (INT(I / 3) * 3) = 0 THEN D3 = -1: GOTO 140
130 D3 = 0
140 RETURN

Man, was that hard. I’d forgotten so many gory details about the language. Like how there’s only an IF construct, not an IF… ELSE construct. Oh, and in C64 BASIC variable names are only significant to the second character, so CO, COL and COLUMN are the same variable.
The apparent lack of a modulo division operator or function threw me for a while, but I improvised with a GOSUB - which, in true BASIC fashion, communicates via global variables, since there are no function arguments in BASIC – unless you want to use DEF FN, and who the hell ever did that? Not to mention that if we declare I to be of integer type (done with I%) we can’t use it in a FOR construct – and since variables are stored internally as floats and converted for integer arithmetic, an integer in C64 BASIC is actually slower than a FLOAT anyway.
There’s no booleans either – apparently the convention is to use -1 (hex FFFF) for TRUE, and 0 for FALSE.
That brought back a lot of memories. Painful ones.

Atari 800XL, how I loved thee.

Your BASIC, I loved to program, but nowhere could I save you!

You were so volatile.

And then we got that shoe-box sized 5 1/4" external disk drive. Though, at the age of 7, I still don’t think I figured out how to save to you. At least I could program beeping musics and flashing, techni-color screens!

Ah, those were the days :slight_smile: