Programmers that know BASIC; are you embarrassed about that? Why?

This is what I don’t quite understand - the response to it seems to be out of all proportion - as if some people can’t consider themselves proper programmers unless they jump on the bandwagon to pour scorn on it.

Hell, I was only 13 when I learned the ZX81 version of BASIC in '81 or so, and used BASIC-A through high school and into college.

I’m embarrassed to admit that I, at one time, knew FORTRAN.

I used to study computer science and in my experience there was a very pervasive “nerd machismo” (for which I don’t know a proper term.) Certain things like BASIC or the wrong internet provider reflected badly on your status unless you could use irony or childhood nostalgia as a cover. Now I’m a computational linguist and while those are at least as nerdy and certainly have their own quirks they are a bit more laid-back about some things.

I wrote my first programs in Mallard Basic. Then I moved on to GW-BASIC and QBasic and no, I’m not embarrassed about that. However I have to admit that I’m pretty sure that I wouldn’t mention it if someone asked about my programming skills.

It depends whether you mean the old school, line-numbered BASIC which didn’t even have GOSUB, or the later incarnations such as QuickBasic, which were like more liberal versions of Pascal and in which it was perfectly possible to write elegant code. Even nasty things like Dragon Basic (aka Tandy Color Computer), which I cut my teeth on, you could write horrible code or good code in it. I like to think that exposure to the awful possibilities of casual GOTOs opened my eyes to the benefits of structured programming. I still don’t quite see how object-oriented programming is better than good old structured, but that’s another thread.

But anyway, I think people make too much of language differences. All procedural languages seem pretty much the same to me. Functional programming, that does seem a bit different, but I’ve never used any of those languages.

That’s not the worst thing I can think of; newer BASICs don’t require numbered lines and even the oldest one I ever used, which had a single line editor, had a renumbering command.

Just to echo what others have said, GOTO has its place, but it’s difficult to show a beginner why you shouldn’t use it in a 10 line program whose main function is to print “Hello, world”.

The value of structured, GOTO-less, or at least GOTO-minimized, programming becomes more obvious in 50,000 line programs written by teams scattered across different times and places.

My first experience with RENUMBER involved the painful discovery that it didn’t change the GOTO references, hence a lot of broken loops.

Sure, but none of that is inevitable or inherent in BASIC, at least not to any great degree more than it is in many other languages - so I still think it’s unreasonable that BASIC is being held over the barrel for it - in fact I think the notion ‘BASIC is bad because it uses GOTO’ is just largely irrationally held - people say this because it’s what they’re expected to say.

Just for additional interest - Linux: Using goto In Kernel Code

The thing to understand is that back in the old days, there was no such thing as local variables, subroutines, parameter passing, any of that stuff. The GOTO statement just passed execution along to a specified point, and that was that. You had to analyze the program carefully to see what it was doing after the jump, and if it ever passed execution back. Complex programs would quickly get out of hand, with GOTOs all over the place, hence the term “spaghetti code”. When people bitch about BASIC, they really mean the 20 year old forms, or else they don’t actually know what they are talking about. You can write modern Windows apps with Visual Basic, for instance. (Getting good performance is another matter.) Doing the same with BASICA is completely impossible.

These were issues with plenty of early languages - FORTRAN and COBOL for example. I think that the real problem is that BASIC was being used to teach programming to the general public long after these issues had been identified and remedied in the wider programming community. However, BASIC was easy to implement, and did not require compilers and disks, so was ideal for home computers with cassette tape storage. And Microsoft were providing a standard BASIC rom for almost any 8-bit micro, and then 16-bit IBM systems.


The Goto problem was the people that used Goto to connect their disorganized code. Instead of putting the routine all in order, they jumped to new locations so a ten lines of code might be scattered in eighty lines of code. It’s a bad practice no matter what language you use.

Yep, that’s definitely what I encountered…the “nerd machismo” described by kellner was my experience with computer science. If you didn’t grasp a concept within five minutes, or if you weren’t up to date on the latest technology, you were a big target for ridicule. I was always amazed at how involved the professors would get in the ridicule; heck, one told me that I was “incapable of thinking like a programmer” after I went to him with a homework question. (Turns out I was creating the correct program, but I wasn’t doing it “his way.”)

Why on earth should I be ashamed of it? Of course, I describe myself as a “Visual Basic hack”. I wrote my first code in Visual Basic back around 1980. When I started programming dBase in the last 1980s, it used line numbers, too. Since then, I’ve worked with a lot of code and seen plenty of code which, while it may not have had GOTO statements, was still spaghetti. I even used GOTO back in the day because there wasn’t an alternative, although GOSUB was an alternative.

I suspect it comes down to machismo. Just look at the way the guys at slashdot sneer at the mere mention of Microsoft. As for me, I’m female. What do I need machismo for? I do what I do, get paid a nice amount of money for it, and make people’s jobs easier. If I ever feel ashamed of or apologize for the things I learned to get where I am, my priorities have gotten seriously out of whack.

Good coders will write good code regardless of what language they’re working in, just as command of a language does not imply command of logic.

The only reason someone would dislike the Ford Pinto is machismo. Ditto disliking the AMC Gremlin. There is no rational reason to hate either of those cars. If Hondas were as widely used as those cars, they would be just as prone to all of the same problems. Anyone who disputes me is a fanboy.

In short: Some software is simply badly designed. Some languages are simply badly designed. Saying it’s all down to machismo or fanboyism is an ignorant cop-out and one reason most people get stuck with crap.

Not at all. It was a common language used for teaching. I also know Fortran, Cobol and Databus, among others.

I started out wiring plugboards on an IBM 407. Can you say dinosaur? I knew you could. :smiley:

Hey, my old Pinto was great. It hardly cost anything, lasted for almost 10 years with hardly a problem, (and then I sold it to someone) and no one ever tailgated me. :smiley:

You had plugboards? We had to do with pegboards, and we had to make our own pegs!

From toothpicks!

And what are you doing on my lawn? Off, off, I say!

My first two programming jobs both used TRS80 desktop computers from Radio Shack. These computers ran a Z80 processor, CPM operating system, and permanent storage was to an audio casette deck that sat next to the machine.

These had BASIC in ROM, with linenumbers and GOTO and all. Before you reject GOTO as an evil, consider that the processors use GOTO instructions in machine code.

So, you can do whatever you want in BASIC, more or less. But I have to say that learning C# recently was wonderful in the sense that it seems like it’s going to amplify my abilities and make me think in more useful ways. Languages lean on your brain in various fascinating directions. Recent decades have come up with some elegant and impressive ideas about how to do that leaning.

Sure, if you mean what’s commonly called a jump or branch instruction, but unless you are programming in assembly or object code, it’s up to a compiler to keep track of such things and prevent an internally-generated jmp/br from wandering off into space. Most of them do a pretty good job (except for the ones Microsoft uses, of course :rolleyes: ).

I learned Amstrad BASIC in 85 / 86 and loved it! I would never have gone on to learn C++ without the experience of BASIC. I wrote my own Football Management simulator for the Amstrad that grew until I had no more memory.

I’m certainly not ashamed that I was programming before I was ten years old, no matter what the language. But then I don’t hang with the geek crowd.

Come to think about, I don’t think there was much of an issue with BASIC even when I was studying computer science and learning C++. However people that used PASCAL we didn’t like.

True, but Dijkstra also said, “It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.”