BASIC Computer Language Turns 40
5 REM nam37 codes
10 PRINT "In 1963 two Dartmouth College math professors had a radical"
20 PRINT "idea - create a computer language muscular enough to harness"
30 PRINT "the power of the period's computers, yet simple enough that even"
40 PRINT "the school's janitors could use it."
50 END
10 PRINT "In 1963 two Dartmouth College math professors had a radical"
20 PRINT "idea - create a computer language muscular enough to harness"
30 PRINT "the power of the period's computers, yet simple enough that even"
40 PRINT "the school's janitors could use it."
50 END
GOTO 10
Creationists are a lot like zombies. Slow, but powerful and numerous. And they all want to eat our brains.
Obliteracy: Words with explosions
Obviously they failed, and so they created BASIC instead.
... BASIC's much acclaimed successor, Visual Basic ;-)
My operat~1 system unders~1 long filena~1 , does yours?
10 I miss basic on TI-80 calcs.
20 Programming in basic was my favorite thing to do in math class
30 my freshman year.
When I tell an object to delete this, am I killing it or telling it to kill me?
yet simple enough that even the school's janitors could use it
And that, children, is where the seeds of garbage collection were sowed.
-Adam
10 PRINT "I hearby declare..."
20 PRINT "that all comments in this story"
30 PRINT "be typed in basic"
40 END
Really. Well done!
--
You sure got a purty mouth...
Ooo. Me Grandpa was a custodian and a very smart man. Watch your mouth. I work for a school and the janitors here are smart folks too. Most of all, they treat the lowly tech guy with respect in spite of his job and the fact that he lives in his parents basement and has never touched a girl (not a real girl anyway).
Obviously their arithmatic algorithm was flawed
. there used to be a sig here.....
It is notoriously easy to create off-by-one bugs in BASIC :-(
-Peter
they started it in '63, they didn't finish it till '64. rtfa
Damn I hated numbering each line of code!
And when you had to add something and have uneven spacing of line numbers... Oh it just drives the type A personality in me nuts!
The only good part about line numbers was how easy it made it to write GOTO statements.
Slashdot Syndrome: the sudden, extreme urge to correct someone in order to validate one's self.
RTFA - 1963 is when they had the idea. it took till May 1, 1964 to finish it.
Then VB came, and a language was created that was muscular enough to script Word macro viruses, but simple enough to enfuriate good programmers (I mean, really, no short circuit boolean operators? It makes me weep.)
"Learning BASIC causes permanent brain damage." -- E.Dijkstra
Kaa
Kaa's Law: In any sufficiently large group of people most are idiots.
Ok, who remembers the Star Trek game from Dartmouth? You know, the one where you got to enter coordinates to move the ship to, then fire photons and phasers at Klingons? You could even consult the library computer! Failing that, who remembers coding the "trench" game?
| * |
| * |
| * |
| * |
|* |
| |
| |
*BOOM* YOU CRASHED. TRY AGAIN? [Y/N]
Javascript + Nintendo DSi = DSiCade
10 PRINT "Concived: 1963"
20 PRINT "Born: 1964"
30 END
What it really means is that the programmers won't program exactly the way Dij wants them to do. It is not "good" or "bad": just different. Programming should not be a straitjacket: the more options and the more different ways to do thing, the better. Those who think that there is no place for anything like a GOTO should look at html.
Don't blame Durga. I voted for Centauri.
VB is a good tool for prototyping and simple stuff where it excels.
VB is a power tool... if you use it correctly you can get a simple program done faster than you could in C. If you use it incorrectly, you end up with a memory hog application that could have been written better in C.
The policy of the United States is worse than bad---it is insane. -- Ludwig von Mises, Economic Policy(1959)
Now we have languages that are hard enough for gurus to read half the time, and others that are so wonderful and elegant that I believe janitors of today could learn and use quite easily.
:>
I remember using my first computer at age 5 and playing around with BASIC, and I could do a reasonable amount with it. Lets be glad though that most of us have moved on
I wrote my very first program in Basic on an 8K PDP-8/I computer ("Hello World!") back in 1975. We had to toggle in the bootstrap instructions using the toggle switches, load the OS from a paper tape and then finally the Basic application off the DECtape drive. I was just amazed at the possibilities and would come in on my own time just to write silly little programs.
Phoenix
Microsoft certainly doesn't claim that.
Nor do they claim that
They do claim that, because it's true.
BASIC was always the applications and scripting language at Microsoft. For a long time, DOS and the early Windows shipped with a free basic interpreter (sadly, those days are over).
Visual Basic remains one of Microsoft's flagship products. It's philosophy is similar to the original BASIC philosophy: you shouldn't have to be a comp sci graduate to write computer programs. Whether VB succeeds in that regard is another question, but it's what they intended.
BASIC is still Microsoft's language for application automation (think Visual Basic for Applications), Web development (ASP with VBScript), and as a tool control language for gluing together objects written in lower level languages. In a sense, some form of BASIC fills the roles in Windows that Scheme, Perl, and TCL occupy in UNIX.
All's true that is mistrusted
In the early days of the IBM PC and PC clones (1986), Microsoft supplied MS-BASIC which came free with MS-DOS.
This was at the same time as Borland came out with Turbo Pascal, so there really wasn't any incentive to learn MS-BASIC. Especially as computers were beginning to be networked to UNIX servers.
That is because array indexes start at 1 instead of zero. So it's really 41 years if you start from year one.
http://github.com/gbook/nidb
"It is practically impossible to teach good programming style to students that have had prior exposure to BASIC; as potential programmers they are mentally mutilated beyond hope of regeneration." -- Professor Edsger Dijkstra
Oh yeah and "Goto considered harmful" too, of course.
RIP buddy. :-)
zWhat would an EWOULDBLOCK block, if an EWOULDBLOCK could block would? -- me
This brings me back... the first language I ever learned to code in was C++... but before that, I had learned Qbasic. ;)
...but I think, the biggest fad was making console style RPGs. I'd like to think that I had a small hand in starting that fad, with a little Qbasic RPG demo I released in 1997. Some of you may have played it, it was called "Lianne in... the Dark Crown". Yes, fun times... fun times indeed.
I think it was the limited nature of the language which kept me interested in it for so long. Those DOS memory limits were fun... coding a 2D RPG, and trying to stay within around 450KB, so it would run on most people's DOS machines. It was a challenge, I tell you... and trying to keep the code neat, and tidy... also a fun challenge.
To this day, I'm still amazed at some of the things which people were able to do with QBasic, and QuickBasic... fast raycasters, 3d polygon game engines, even voxel engines!
I think, I'll go looking for all those old Qbasic games. They may not have been much, but they were fun to play.
To see a world in a grain of sand, and then to step back and see the beach where the sand lies
Atari Basic
6502 Assembler
Fortran
Action!
Deep Blue C
Pascal
Metrowerks C
GNU C
Perl (just enough to make my Unix life easier)
Java
GNU C++
Visual Basic
RealBasic
Have I come full circle? By the time I got to C++ and VB, I was mainly programming for work, but RB has made programming fun again, and I have launched a couple personal projects for the first time in years.
Gold bonus points if you know what Action! was.
--- Ban humanity.
Well I'm glad BASIC exists because I probably would not have started programming without it. Can you imagine trying to learn C or something like that when you are 13 (circa 1984) and have no other programmer friends and no internet or BBS to get sample code from. Also C and Pascal compilers cost big money back then. Borland's Turbo Pascal was probably the other big hobby language back the as well. It probably damaged my skills, but I think I have overcome most of the damage.
And Windows 3.1 never would have been as accepted as it was if not for VB 1.0. I think VB was probably the thing that got a lot of people on Windows because programming Windows in C at that point was very complicated for the home hobbiest.
10 ? "CmdrTaco and Kathleen stting in a tree K-I-S-S-I-N-G";
15 ? CHR$(7)
20 goto 10
/* oops I accidentally made a comment, sorry */
WHY! WON'T! IT! DIE!
probably because someone stuck a "goto 10" before the "end"
Hey, stop using janitors as some lowest-common-denominator! Rather "The language was so simple even programmers could use it."
The JLO
BASIC was always the applications and scripting language at Microsoft. For a long time, DOS and the early Windows shipped with a free basic interpreter (sadly, those days are over).
However, all Microsoft Office programs that support Macros do ship with Visual Basic for Applications... with which you can write simple-interface BASIC programs. I've used it on several occasions in cases where I wished I had VB on a machine for a short scrappy program...
Ah yes, BASIC. I remember it distinctly as it's what I used for the longest time. Didn't have to declare your variables, had to contend with line numbers (that renum thing came in very handy), and of course the ever-popular GOTO statements.
;-)
Eventually I evolved onto qbasic with its functions and subs and (gasp) no line numbers! Then there's VB and VBA. The most fun I've had with those are the shell calls.
On machines that are so locked down that you can't even traverse directories let alone get a shell prompt, you run your form of BASIC, and do basic shells through it or even shell to cmd.exe or command.com -- at one point, I had a really lamed out, simple, featureless, just for fun version of netcat that executed shell commands, piped it to a text file, and had the text file's contents sent through the network. (this with VB's socket stuff). If nothing else, it was a good way to make fake Novell login prompts in the mid 90's.
In the end, not a lot of people will be taken seriously for knowing BASIC, but since it was the first language I used, I appreciated the retro code.
10 PRINT "Happy Birthday to you"
11 PRINT "Happy Birthday to you"
12 PRINT "Happy Birthday dear BASIC"
13 END
Dammit... Missed out a line. Now I remember why I should always increment line numbers by 10.
Way back when a young man nammed Bill Gates wrote a version of basic for the one of if not the first computer that a normal or maybe not so normal person could buy the Altair. That was the start of Microsoft. Microsoft pretty much made a living selling basic to all the major computer makers of the day. Commodore, Kaypro, Osborne, Tandy, and I think Apple. I think atari had it's own version of basic.
Latter when IBM was going to get into the home computer market with there PC they went to Microsoft to buy basic from them. In fact if you have an old IBM PC and do not have any drives in it and power it up it will run basic from ROM.
While buying basic IBM got sold MS-DOS and the rest is history.
See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
Today's VB and similar derivatives bears so little resemblance to Dartmouth BASIC that it's hardly the same language. If it wasn't for FOR/NEXT and DIM, you might not recognize it at all.
But the old line-oriented BASIC had some advantages in the bad, old days:
1) Interactive editing is difficult to do on a teletype -- many schools only had a hardcopy terminal to a timeshare service. Being able to drop a line in the middle, or retype a single statement really really helped learn what was going on, without having to re-send the entire program. Even with a primitive CRT, full-screen text editors were of poor quality -- dropping in statements helped to debug and fix features.
2) Later, it was ubiquitous: You could write the same abusive repeating naughty-word program at a Radio Shack, an Apple Dealer, or a department store selling Commodore PETs.
3) It beat COBOL or FORTRAN. The only thing with BASICs interactivity might be FORTH -- imagine if we'd been saddled with page-delimited, stack-based code in all our micros. It's a lot harder to learn, but would have helped modularity and library development.
Design for Use, not Construction!
MicroSoft's (heh) first (or at least very early) product was, indeed, a BASIC interpreter.
IIRC the first PCs shipped with MS BASIC on ROM, which loaded if no boot disk was present. Hence "No ROM BASIC" messages once that mis-feature was removed from later PCs.
-Peter
I see the debate between the Basic vrs. Anti-Basic camps is also 40 years old and as strong as ever.
I must admit that I share his lament. The programmer-to-user ratio got considerably worse as the ubiquity of computers increased.
When I got my first computer (comment hoping skip the 'geek pissing match'), the majority of other people with computers were using them to write programs. As the PCs (now workstations) got adopted (then coopted) by 'business' for them to do their thing, the computer became a 'tool'. I never stopped programming, but all my non-geek friends started to get in on the computer-owning game. Most of them couldn't write a line of BASIC with a gun to their head, even though they have the capacity to do so, but gosh, they all thought they were just whizz-bang computer users! *sigh*
As a colleague of mine (and a really amazing programmer) once said: "Accessibility is the yellow brick road to mediocrity"
lay off the janitors!
No, I meant Java. There are lots of people who are not professional programmers who use Java, particularly to write applets for web pages. I brought up two common things those applets do, play sounds and rotate images.
First year comp sci classes often use Java as their language. There's no sharp distinction (to the beginning programmer) between the language and the libraries and APIs. Sun marketed the free SDK towards individual home users. I was pointing out that in those senses (alleged ease of learning and free and widely available development kit), it's like BASIC. Syntactically, it's not at all like BASIC; it's a grandchild of Algol through-and-through.
All's true that is mistrusted
10 PRINT "Concived: 1963"
20 PRINT "Born: 1964"
30 END
25 PRINT "Spell checked: Never"
RUN
That's a very obvious statement. You basically said that a bad program written in one language could have been written better in the other language. But any program written badly in any language is going to be better when written better, regardless of language.
The comparison I believe the original post was making was between a good VB app and a good C app and between those, I'm guessing the C one would be better.
-N
I've nothing to say here...
Thomas Kurtz is still alive. Unfortunately John Kemeny is not.
I oft referenced that ASCII table well into the late 90s :)
I learned the majority of basic programming just by following the hyperlinks in the help file. Almost every function came with a useful example program.
The whole help system in q/quickbasic was very well done. You could point and click on a function and bring up its help entry IIRC.
-
Syntax Error "PROFIT!"
-------------------^
Command Not Found "PROFIT"
The living have better things to do than to continue hating the dead.
VBScript is surprisingly capable. Read more about it here.
...of typing in BASIC programs on a Teletype with a large roll (yes, just like bathroom towels) of yellow newsprint on a Data General Nova.
And, to write and read my program - paper tape!
In those days, having a machine do math for you, math that would otherwise be tedious crunching by hand, gave me a sense of wonder and power.
"Provided by the management for your protection."
Belive it or not back in the dos 2.x with basica / gwbasic i was writing a chess program and hit the maximum line number. its 32k lines from line number 1 with each line incremented by 1. It simply told me "Out of memory"
Don't believe it, kids. If your brain hasn't been ruined by age 7, you can unlearn any bad habits you pick up. His remark is of a stupidity level equal to "if you learn French at school, you won't be able to learn German."
As a matter of fact, not only did I once inherit a program that someone had written - well - on a BBC micro that was a pleasure to maintain, I once myself had to write a quick and dirty assembler for an obscure microprocessor in HP Basic, having no other resources available in a crisis. Despite which I have never once had the urge to use labels in C.
Panurge has posted for the last time. Thanks for the positive moderations.
I miss line numbers and GOTO
True friends are hard to come by... I need more money. - Calvin
Or the programmer did think about it, and the use of the GOTO (or equivalent "jump over here!" coding tool) caused no problems in regards to these issues.
Don't blame Durga. I voted for Centauri.
5 REM AYBABTU NEVERENDING ...."
10 PRINT "In A.D. 2101"
20 PRINT "War was beginning."
30 PRINT "Captain: What happen ?"
40 PRINT "Mechanic: Somebody set up us the bomb."
50 PRINT "Operator: We get signal."
60 PRINT "Captain: What !"
70 PRINT "Operator: Main screen turn on."
80 PRINT "Captain: It's You !!"
90 PRINT "Cats: How are you gentlemen !!"
100 PRINT "Cats: All your base are belong to us."
110 PRINT "Cats: You are on the way to destruction."
120 PRINT "Captain: What you say !!"
130 PRINT "Cats: You have no chance to survive make your time."
140 PRINT "Cats: HA HA HA HA
150 PRINT "Captain: Take off every 'zig' !!"
160 PRINT "Captain: You know what you doing."
170 PRINT "Captain: Move 'zig'."
180 PRINT "Captain: For great justice."
190 GOTO 5
(1st sig) If this were a snappy sig, you'd be reading it right now. (2nd sig) I'm a karma whore. >Insert FUD here
And lo, thousands of people suddenly decided to call themselves excellent programmers!
It's not your father's BASIC. It's a great RAD environment, with a language much more heavily influenced by Python than BASIC. You can write plugins in C/C++ to make the things that need to run super fast run super fast.
My company uses this product to build products that generate several hundred thousand in revenue per year. Our tools budget is under thousand dollars per year, mostly spent on REALbasic.
Odd, I thought it was because BillG only knew how to write in Basic, so the company had to keep a basic product alive so he could do some programming too.
. 62,400 repetitions make one truth -- Brave New World, Aldous Huxley
45 IF $ARTICLE="BASIC" GOSUB 60 //e IN APPLE BASIC! I COULD MAKE BAD GRAPHICS AND ASCII ART ALL DAY WITH MY 80 COLUMN EXPANSION CARD!"
60 PRINT "COOL! I USED TO PROGRAM ON MY APPLE
70 GOTO 50
CVS
free ipod and free gmail!
...yet most of its story got lost in write-errors on unreliable cassette tape recorders attached to thousands of ZX SPECTRUMs.
Forgive me, it must be that brain damage everybody's talking about around here.
And yes, my code sucks. Even in BASIC. And that was 15 years ago.
Don't forget to PEEK before you POKE!
Computers died for me the day the stopped shipping them with built-in BASIC.
Seriously, though. The computers of the 80's were great for learning programming on. Not that BASIC is a good teaching language, but it was accessible and simple.
Modern computers have too many features that you want serious programmers to have access to (complicating languages), and modern languages have all sorts of safety, structure, and OO features that are great for serious programmers but also complicate things for beginners.
Breaking into programming is much harder than it used to be.
I didn't know you could insert hyperlinks into BASIC programs... Guess I missed that last update. =P
#!/usr/bin/perl
# REM nam37 codes
X10: print "In 1963 two Dartmouth College math professors had a radical ";
X20: print "idea - create a computer language muscular enough to harness ";
X30: print "the power of the period's computers, yet simple enough that even ";
X40: print "the school's janitors could use it.\n";
X50: end
# (don't ask me why I did this...)
Sometimes boldness is in fashion. Sometimes only the brave will be bold.
I think Microsoft's BASIC was GW-BASIC, which I was told stands for Gates, William (Bill)
At first I was considering having my sig in BASIC:
10 PRINT "Jorkapp is a Programmer"
20 GOTO 10
but it was too - Basic. IMO, my sig in C is more 1337.
Frink: Nice try floyd, but you were designed for scrubbing, and scrubbing is what you shall do.
Au contraire. Open Notepad. Type in:Save it as Hello.vbs. Then, double click on it. Your program will be loaded and interpreted by the Windows Scripting Host, a batch processing system that's been available for Windows since 1998 and installed by default as of 1999. It allocates a variable called message, assigns the string "Hello World!" to that variable, and then passes the Variable to a static function of the globally available object WScript, which echos the message to the screen.
This works in ME and 2k, might work in XP as well (though hopefully they locked it down). VBScript is just one language used by WSH (JScript is another, and plug ins exist for Perl, Python, Ruby, etc). WSH offers programs written in these languages access to any and all COM objects, which gives access to most Windows functionality. It's goddamn powerful...which is why it's used by such deadly viruses.
Hey freaks: now you're ju
I was introduced to BASIC first on a friend's Apple IIe and subsequently on my own first computer, an original Macintosh.
First programs included the standard:
10 print "Enter your name: "
20 input NAME$
30 print NAME$ " is a doofus."
40 goto 30
About that time, I started getting 3-2-1 Contact Magazine, a science and nature periodical written for kids who had grown out of Sesame Street and The Electric Company. In the back of every issue was the "BASIC Training" feature, which had simple games and programs for a variety of platforms. The IBM versions were usually the only ones I could use; Apple IIe and Commodore 64 PEEK and POKE calls were meaningless in Mac MS-BASIC.
But later, BASIC facilitated an (extremely sketchy) introduction to the Macintosh toolbox. MS-BASIC on the mac had built-in pseudo toolbox calls so that you could change fonts, draw graphics primitives and buttons. I ended up writing a grade tracking program that was a snare of interwoven GOTOs and GOSUBs.
I breezed through two years of programming courses in high school and learned C in my own time. Looking back, I'm a little ticked off that my HS didn't offer "real" computer science with Pascal or C or any sort of AP treatment.
Then I learned Perl. Now I do websites. I've forgotten most of BASIC. I have been told this is a good thing. But sometimes (actually, lately, more and more) I have to deal with VBScript and I see "LEFT" and "MID" and I think "what the hell is this crap?"
Ah, memories.
A real programmer can extract useful work from anything from a pile of matchboxes to a state of the art cluster without bitching.
Doesn't it make you feel good to know that our freedoms are protected by politicans, lawyers and journalists.
GOTO's make spaghetti code. It is very hard to trace through, especially if the code is uncommented. If you end up with a bug, you will have a very hard time trying to trace through your GOTO's to find it.
Loops and functions keep things neet, organized and structured (assuming a half-competant programmer)
This isnt a point of view thing. Some things are confusing and some arent, thats just the way it is.
Try maintaining code full of goto's. Good luck.
It's easier to fight for one's principles than to live up to them.
You don't maintain your own programs then, do you?
;)
I've had to maintain programs written by developers who, like you apparently, separated out the maintainability aspects from their concept of "well-written" code.
Well written code does not mean written fast - it means the next guy down the line, after you've moved on and forgotten about it, can easily follow the logic and make changes with minimal effort. GOTO's almost never facilitate this. Please trust your peers on this - it's been debated often enough and long enough by those in the know that it's no longer a subject for reasonable debate. In fact, defending the use of GOTO usually shows one of two things:
1) Inexperience -or-
2) Old Age (meaning the behaviour is so ingrained one simply can't comprehend anything different).
Of course, I'm assuming you have the option to not use GOTO. If the language you use has no control structors other than Jumps and Labels, then obviously you have no choice. But I would argue that even if that's the case, you're probably using an old language for one of two reasons:
1) Not experienced with anything else -or-
2) Too old and stubborn to move on to anything else (meaning the behviour is so ingrained that you probably sit alone in the corner pumping out Cobol not even aware that you were laid off months ago and replaced by the Janitor who took a crash course in Javascript).
Your sig in C will also run out of stack space and crash very quickly.
Basic wasn't meant to be the end-all be-all computer language. It was a toy language with a very specific purpose in mind, and if everyone remembered it as that, things would be fine. The creators of Basic wrote a book a few years back writing about the design of Basic, and why they made it the way it is. It was meant to be used with a teletype to allow programming while on a computer, allowing quicker debugging and testing than ever before. In order to allow it to be compiled quickly, it had extremely simple syntax. If we just left things at that, there never would have been any controversy.
"Anyone who attempts to generate random numbers by deterministic means is living in a state of sin." -- John von Neumann
Nothing stopping you from using structure in BASIC but your own mind.
Free Mac Mini Yeah, it's
This one used to tie people up for a few minutes...
10 PRINT "You are in a cave."
20 PRINT "Go N, S, E OR W?"
30 INPUT A$
40 GOTO 10
1. When I and many other people started out with computers, BASIC was the only game in town. Yes, there was assembler and other languages, but its easy to forget these days that information was hard to come by pre-web and indeed, for children who don't have the disposable income for specialist magazine subscriptions. Libraries typically had a couple of computer books, but these would be non-specific description books (that no longer exist as genre really) explaining that a computer had ROM, RAM and you could hook it up to a printer and a VDU! etc. etc. They had hand-drawn "screenshots" of space invaders and pac-man. BASIC was easy enough that we could get started without being put off. On Slashdot its easy to be intellectually macho, but theres a lot to be said for a low learning curve that encouraged you ever onward.
2. BASIC today. Well, its probably not for serious programmers. However, what is often forgotten here is that not everyone who programs is a professional programmer. Or wants to be. For very simple programs, GOTO is no sin. At least when the alternative is no program at all and, say, organising data in a text file by hand or "manually" in Excel or something. Bad habits are not a problem here, because one is never going to go on to have to write mission critical software in C or whatever. I know there are modern scripting languages that are perhaps just as easy to use, but you might be surprised how many people you might have thought have difficulty programming a VCR will break out QBASIC or VB when they need 20 line quicky knocking together and the programmers are "busy until further notice". Its easy to belittle this from a position of knowledge and authority, but relatively speaking these people are your friends in a landscape of PHBs that think programs just happen.
So in conclusion, BASIC is often better than nothing. That might sound like feint praise, but like I say, for the non-specialist that can be quite a valuable thing. Computer programming for the masses. Mock it at your peril.
Plays violent online games as: Nerfherder76
Haiku in English is dumb
Add last line next time
Remember, that was about old BASIC dialects, not the embraced-and-extended-for-the-love-of-god-and-good -of-the-mankind Microsoft dialects.
Yeah, it's possible to do OO coding in Commodore 64 BASIC v2 if you do it right. *sigh*
Still, writing structured programs would be very cool if BASIC interpreters of those days would have supported things like return values, local variables and subroutine arguments... (You can GOSUB 2390 all you want, just don't expect the language to pass data around.)
GOTO's make spaghetti code. It is very hard to trace through, especially if the code is uncommented.
Ever tried to sift through someone's OOP program that is poorly documented and methods are badly named? It's just as bad. Ever seen a method that calls six others methods in different objects in it's body which are all overloaded 5 or 6 times? Bad/Sloppy programming spans all languages and isn't confined to a goto statement.
How about poorly named method signatures? For example
String getNumber(String x, int i, boolean q, vector a)
I've seen crap like this before from programmers.
Try maintaining code full of goto's. Good luck.
No it's not the best thing in the world to do, but if it's well documented it's not as bad as you make it out to be. I started out in basic when I was 7, and I work now as a Java programmer. I would gladly take well commented code with GOTO's over poorly done OOP code.
You insensitive clod!
I am somewhat into programming language theory, and I have seen the pages of alternative languages... It looks to me like the "Hello World" program in one of the languages that just uses the primitive combinators.
But, what is funny: I paste it into google, and it says:
Heh... did I mean to use somewhat random-looking string of characters A, or did I really want somewhat random-looking string of characters B?
If you're looking for a good version to play around with, check out QBasic 4.5 or 7.1 (off abandonware sites). It can use assembly libraries for graphics and stuff... I once wrote a windows clone using the DirectQB libraries. It can compile to .COM or .EXE too!
Je fume. Tu fumes. Nous fûmes!
Proverbs 21:19
I was one of four students in a pilot program in 4th grade (1980) wherein we learned BASIC programming (Apple II) and "New Math" (don't even get me started.)
After learning the basics, I started my first project - a random text generator. I wanted to see if, left to its own devices, the Apple II would eventually reproduce the works of Shakespeare. Or at least, produce a few dirty words on its own.
I spent two days coding (never having used a keyboard before, typing was arduous)
The program went like this:
10 A=INT(RND(1)*30) +1
20 REM
30 IF A=1 THEN $B="A"
40 IF A=2 THEN $B="B"
...
340 IF A=30 THEN $B="."
350 PRINT $B;
360 GOTO 10
If I recall, there was no "copy" or "paste" function in the boot ROM AppleII BASIC. Typing this was hell on my 9-year-old fingers.
The good news is, the program worked. The bad news is, after I'd finished it, the teacher showed me how to cut 29 lines out of my program using the $CHR() function. I wanted to shoot him.
All in all, BASIC served me well. It's a great intro programming language for pre-teens.
The cure for cancer is coming: Reovirus
10 POKE RND(9999),RND(9999)
20 GOTO 10
You never knew what it would do! Sometimes nothing, sometimes it'd play music, sometimes it'd draw pictures! It was great!
That green slime had it coming.
>> Haiku in English is dumb.
Yes, but it has huge comedic potential.
The program's source is the haiku, not its output.
Sorry to destroy your dream, but Basic is very alive and isn't going to die very soon. Check out Bascom for example.
And as computers keep getting faster, soon Qbasic will run just as fast on a P8 2THz as assembly on a 486DX 66MHz.
50 goto x*100+1000
And of course x is a float not an integer. Ahh those were the days...
This technique of course requires very carefull line numbering of different parts of the code but it's wicked fast and defies any attempt at reverse engineering.
TCAP-Abort
(define (cube-of (x))
(* x (* x (* x 1))))
(+ (cube-of 2) 9)
Evaluate that to get the number of syllables in a haiku. ^_^
N4st0r, trixx0r h0bb1tz0rz! Th3y st0l3 0ur pr3c10uzz!
I disagree. Dijkstra is credited with numerous important fundamental algorithms, so he most certain "can". This isn't to say that he isn't arrogant, or that there aren't arrogant professors who "can't". This is to say there are those who are arrogant, and "can".
I have no problems at all with you criticizing various things he said or stood for. Just because he is smart enough to discover algorithms doesn't mean that he is beyond reproach. However, to say he "can't" I'm tempted to ask what you have done for computer science.
That is its biggest strength.
:-) Once you introduce a kid to the concepts of do loops, for loops and if..then statements, it is so much easier to learn a complicated language like C. It's a pity you don't have QBASIC shipping with Windows machines any more. Vbscripting is not at the same intuitive level.
I remember how I got into programming in school - we had these BBC computers which could run BASIC. The language was simple enough for me to understand and intuitive enough for me to actually like programming. (Before that I had seen an aunt learn COBOL and the very look of the language frightened me)
Sure, BASIC is not as advanced as C, BASIC uses GOTO statements, BASIC (not QBASIC though) uses archaic line numbers (but still not as archaic as the Fortran 77 tradition of having to write everything after 7 spaces), but BASIC is the best tool to introduce an enthusiastic person to the world of programming. See this example: In BASIC you would show the person:
10 PRINT "Hello World"
20 END
Bingo, the person magically sees his first program work. Try the same thing with C:
#include
int main(){
printf("Hello World\n");
return 0;
}
See how much more you have to explain? Ever tried to explain stdio.h and int main to someone?
"When the only tool you own is a hammer, every problem begins to resemble a nail." - Abraham Maslow (1908-1970)
Beginner's
All-purpose
Symbolic
Instruction
Code
Note the emphasis on Beginner's.
Served me quite well in high school...<sigh/>
Don't underestimate the power of The Source
When I vacationed in Canada a few years ago, I took my TI-83 to convert currency and measurements for me. But, I found an even bigger need during the trip... converting CDN$ per litre of "petrol" to USD per gallon of gas. Things made a lot more sense at the pump.
Dijkstra was in a good position to be arrogant.
He "did" as well as taught - you might like to read up on him a bit before putting your foot in your mouth.
And, incidentally, good teachers are worth a thousand "arrogant" programmers who think they know better.
D.
--- These are not words: wierd, genious, rediculous
Bah... a real coder's infinite for loop doesn't have ANY numbers.
for (;;)
printf("STOP MEEEEEEEEE\n");
Learn something new.
But none will offer anything but the verbatim dronings of their professors, which they seem to feel are gods. Forgive my condescending chuckle.
I think you'll find that literary critical academics are well aware of the preferences of certain languages for certain poetic techniques.
Hexameter (six stress verse) is considered wonderful in French early modern poetry, and almost always terrible in English early modern poetry (Sidney uses it, but his hexameter isn't given particularly great credit).
Quantitative measure is considered to have worked wonderfully in classical Greek, but is accepted as essentially impossible in English (Coleridge semi-successfully attempted it in Christabel).
A Petrarchan sonnet's composition in English is an exercise in frustration and a Shakespearean sonnet's structure in Italian uncomfortably abrupt.
I believe the lack of a good version of the BASIC language is what is holding back Linux in a small manner. Microsoft, by making it easy to customise their regular applications (via VBScript) and write new applications (via VB), allowed companies and individuals to quickly roll out software for both profit and fun. Until Linux has this ability, we will continue to be a second-level player in many circles.
Fortunately, we do have a couple of languages that allow (after a sort) RAD software development - Perl, Python, and Tcl/Tk are all excellent languages for today's business application development. However, they lack the GUI IDE that has made VB what it is - the ability to rapidly slap together a form and some code behind controls, compile and run with a single click - and BAM! - an instant GUI application! Furthermore, none of these languages (ok, the exception would likely be Python) are as easy to learn as BASIC, and Python only wins out because it looks and feels a lot like BASIC in many respects.
I just don't understand the hatred people have of BASIC - it's a language syntax, people! I have often wondered how hard it would be to make a simplified version of BASIC that could be easily parsed/converted by Perl to C, then compiled with gcc (basically, it would be C, but with a lot of BASIC "look" to it). GOTO's were banished a long, long time ago. BASIC could easily be object-oriented - it's just a syntax.
Something makes me think people dislike BASIC because of the idea that it would make them less of programmers by using it (f'd up pyschology or something, I think) or knowing it. All it would do is make them faster programmers - as long as it compiles down to native, why not make the syntax of the language as simple as possible, provided it gets the job done. BASIC can do this!
Finally, there are some "good" BASIC's out there for Linux - one is XBasic, the other is Blassic. XBasic is a form of BASIC that looks and acts like a cross between VB, C and QBasic - fairly fast, compiles to native, and open-source (GPL, I believe) to boot!
Blassic is what could be called "classic BASIC" - fairly easy to port stuff from GWBASIC and some QBasic over to it. It is done pretty well (though the documentation could use some work/updating - I put out an update a long time ago while playing with it) - it is interpreted, but it runs very fast on today's systems, plus it has some extra features old BASICs didn't. Search for both of these with Google - I think you will be surprised at what is out there!
Reason is the Path to God - Anon
...the PC revolution would have been a lot less revolutionary, if it happened at all.
The simple, limited, but comprehensible BASIC found in all those Apples, Commodores, Ataris, TI's, etc., showed people that even they could control a computer.
BASIC is about putting ordinary people in charge of their computers, not corporations...or crusading free software elitists whose idea of "ordinary people" are 1982 MIT graduates.
-- Slashdot: When Public Access TV Says "No"
I would like to draw Slashdot readers' attention to the GNU/Liberty Basic Compiler Collection as a free alternative to proprietary implementations.
You can read more about the GNU project at http://www.gnu.org/.
Recent versions of GCC are actually smart about
simple cases of tail recursion and are probably
smart enough to expand the call into a loop.
Man i forgot about basic.. it is annoying that I can still write in it. 10 rem piss of teacher 20 for x= 1 to 10000 30 if x = 10000 then goto 60 40 next x 50 goto 20 60 ? (apple g) 70 goto 60 in applesoft basic apple g was a beep and ? was shorthand for print. I would write this at the end of class turn off the monitor and sometime during the next class period the computer would start beeping constantle.. wow I am a dork...
---In a time of Chimpanzees I was a Monkey.
All of these can be started as an editor, eg QBASIC / EDCOM
On the other hand, only vers 1.1 can read the dos help file HELP.HLP.
Amusingly, Windows understands what a QHELP file is, that if you click on a quickbasic help file, it says 'this is a DOS help file', whereas any other help file (eg 4dos.hlp), it says "unknown format".
In any case, basic shipped with msdos, because in older times, computers had a rom-basic in their bios.
GWBASIC is a standalone emulator for graphical workstations (ie workstations that replaced the rom-basic with video memory).
BASIC in its raw form continues to affect the way that COMMAND.COM and CMD.EXE work. For example, if one does a test, and it is false, the rest of the line is skipped. In the sample below, we see two statements, separated by an &. If one makes the if statement, one gets neither command, while if the statement is true, both work.
One can implement a die style command by this, or by replacing echo with set, pass a parameter to a subroutine.In any case, it's dodgy.OS/2 - because choice is a terrible thing to waste.
Here's An interesting article by John G. Kemeny and Thomas E. Kurtz, inventors of BASIC
Because of those bastards, now I'm being forced to program in VB (sigh)!
I've never understood why you use a for loop for something like that and not a "while (1)". Can someone clue me in?
while(1) sounds like the Queen talking.
Why write "for (1;1;1)" ?
According to K&R, it is perfectly OK to leave out any - or all - of the expressions inside the "for" loop header, and they themselves use "for (;;)" to implement an infinite loop. It means "loop without any initial action, without any test after each iteration, and without any action after each iteration".
A "while(foo)" loop is exactly the same as "for (;foo;)". "for" loops are very versatile.
I am anarch of all I survey.
When I was playing around with BASIC a long time ago, besides the details GWBASIC manuals from Microsoft, the other book that I really enjoyed was 1001 Things To Do With Your IBM PC. That book described so many things that could be done with BASIC. Best of all, it was not a listing of complete programs but rather tools and program snippets combined with ideas for building cool programs.
Remembering that me and my brother sometime around 1988 (we were 10 years) typed a program from the manual into our commandore 64. In basic naturally.
:-/
The program was pretty long (or at least we felt so) but after a while we were finally finished!
But we couldn't figure out how to start it. We checked the manual like a 100 times, but didn't find any solution. So eventually, we had to turn it off...bummer!
Later we learned that we just should've typed in the command "Run".
Compiled BASIC, with functions, procedures, case structures, record types, local variables, etc. has been around about 25 years.
You can write a program in MS-BASIC that's as well structured as any other language.
If done correctly, BASIC is a remarkably readable language. And just about any BASIC created in the last 20 years has the features of FORTRAN and COBOL.
The is the 21st century. The BASIC of our age is PHP.
.html file to .php and carefully inserting their first PHP tag into it. "Hello, world" often is or for many.
Many people are making their first ventures into the world of programming by renaming a
Any not just young people - buy webspace, get PHP is the standard now over here, and why not try it, if it is so simple.
Rasmus, Zeev and Andy, they really deserve much good karma for creating the language that made web programming accessible to so many.