It's a lot like Visual Basic, except: 1) Portable to MacOS and Linux 2) Easier to just jump in and write apps with 3) Produces apps with no DLL dependencies.
Give it a try, you might find it meets your needs.
Please, it takes kids YEARS to recover from the damage that learning any flavor of BASIC does!
"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."
-- Edsger W. Dijkstra, SIGPLAN Notices, Volume 17, Number 5
Things (specifically BASIC variants) have improved since Dijkstra wrote that, but an underlying fundamental truth remains.
"Whom the gods would destroy, they first teach BASIC."
-- unknown
Have you tried RealBasic? It's not VB, it's closer to Java than any flavor of Basic from the past. In fact, I wouldn't mind at all if they changed the name... but try it before you knock it.
Yes, I have looked at RealBasic, at least briefly, and I agree it's not as bad as the language(s) that Dijkstra was complaining about (you'll note that I even said something along those lines). But if it's more like Java, then what's the point? Just teach 'em Java, and that way they'll have something that might actually be useful to them someday. Frankly, I think Pascal or Python or Scheme or Modula or Eiffel or Smalltalk would be a much better choice for an introduction to programming, but I certainly don
The point is that RealBasic has a nice mature evolved interface where a kid can drag a button to the window, write a bit of code, and BAM they have a working application. As far as I'm aware, you can't do that in any Java IDEs with near the same simplicity as in RB. I hope that other Slashdot posters consider the *entire* problem domain instead of only "which language syntax is better?"
Actually, NetBeans lets you drop controls on a form from a palette, right-click, choose 'events', and for any event, Netbeans will write a stub function and the event handler to run that stub function.
More importantly, students should probably not be taught programming by starting with GUIs at all. The inversion of control and event handling gets in the way of learning simple programming.
The point is that RealBasic has a nice mature evolved interface where a kid can drag a button to the window, write a bit of code, and BAM they have a working application.
Shouldn't the purpose of taking a programming class be to learn to program not drag and drop? Only once a person can program should they then use an IDE, be it language specific or general purpose.
Noooo! Why would anyone teach students using Pascal instead C/C++. Does anyone think the BEGIN/END is really more straightforward than {/}? As students, they are going to have to *learn* things when they program, and curly-braces are the least of it.
Is 'record' and clearer than 'struct'?
If you don't want the students to have to deal with memory management, then use a garbage collection library with your C compiler. If you want to CYA, tell them that they are using a GC library. If y
What is wrong with Pascal as a teaching language?
I am using a modern variant (Delphi) and that does not do GC by default (except via COM interfaces and for strings).
Pascal does require explicity memory management too.
If you teach them Pascal, and don't explain that Pascal does GC, then they will be hosed when they get to a C/C++ course and don't understand why they have to manage memory.
Pascal does not do GC.
And yes, most of Pascal is cleaer than C...
Pascal: myDates: array [1..10] of Date;
C: Date myDates[10];
What is the low bound and high bound of myDate in C and in Pascal?
How do you do an array from 99 to 104 in C? You cant... neither you can't do 2 or more dimensional arrays in C (you have to relly on arrays of arays and manually initialize them).
There is plenty stuff where Pascal is FAR clearer than C, its designed to be so, while C is designed to be a portable assembler.
I spit in the general direction of "conciseness", and it's kinsman "cleverness".
To quote Kernighan:
Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.
I used to be a clever programmer, but then I graduated and got a Real Job, and had to read the code written by both Clever and Grown-up programmers. Guess which code was easier to modify, debug and add functionality to. Guess which code had less bugs.
A good (but not huge!) dose of verbosity and simplicity would go a long way towards making more robust applications.
Another relevant quote, by Jeff Polk, co-creator of CVS:
There's no obfuscated Perl contest because it's pointless.
all major languages share the same if-then-else-switch-function syntax. it is basic programming logic that should be taught. the problem with so-called 'high level' c#, c, and java is that they rely on primitive memory + i/o minutiae that detract from basic programming logic. vb is 4 verbose retards (learn 2 use {} instead of begin + end people!). the best language to teach is javascript. every browser uses it and the basic programming logic can easily be transferred to other (more primitive) languages like
hey! i learned QBASIC before any other language and im a great... pretty good... ok, average.. alright, you win.
seriously though, ive heard the damage is only done by heavy use of GOTOs - which im afraid i did a lot of back when i was nine and learning from my mom. however, the desire to use GOTO faded fast when i learned how nice functions were. however, im still in school so maybe i dont know just how much damage BASIC did to me.;)
The key here is readability.. GOTOs are impossible to read because the code jumps all over the place, while loops have well-defined and understood semantics. That a loop will become jump instructions in the compiled code is irrelevant, because thats not the code you need to read or understand. The damage BASIC causes here is that they think problems should be solved with unstructured GOTOs when really they shouldn't be. All problems can be solved without any explicit jumping. Languages (other than assembly)
The idea that learning something can "mutilate" you or decrease your ability to learn other things is crap. I, and most of the good programmers I know personally, learned on BASIC - evil old unrepentant BASIC, full of GOTO and GOSUB. Maybe Dijkstra had trouble teaching "good programming style" to students with a BASIC background because they had experience, and weren't automatically willing to accept someone else's definition of "good". Or maybe he was just kidding.
BASIC was grungy, useful, widely available, and offered a fast edit-run loop - key ingredients in getting a lot of kids hooked on computers.
I think that introducing the beginner to Brainfuck [wikipedia.org] is highly likely to mutilate them (or at least induce them to self-mutilate).
On a more serious note, I think that to most (non geek) people, computer = Interweb so a programming language that has the ability to output html is preferable. This would mean that they can show off their work to friends, which has a powerful re-inforcing effect in itself.
Although I like PHP, it sounds like Python has the edge in that it is more flexible in this regard
A) I can't believe this discussion is going on days later. (Although I suppose that's not your fault.) B) Mighty freakin' sensitive, aren't we? I started with BASIC, just like so many other people, and I was able to post that classic bit of humor. You, on the other hand, freaked out and went into a tizzy when you saw it. Is there some reason you're so defensive about being accused of being mentally mutilated? Maybe you've had people look at your code and make snide comments?:)
I'll tell you why it's a hot button for me. I tend to learn concretes first, concepts later. When I was 12, BASIC completely hooked me on programming. I was like the rat with a button wired to the pleasure center, and would have died of dehydration in front of a TRS-80 if not forcibly removed. Much like a talented kid banging on a drum kit, I was in love with the feedback loop, with the immediacy of the machine. In time, the love and deep awareness of computers that BASIC implanted led me through many
I learned a version of BASIC using the TI-calculators when I was younger. That being said, I can accept students learning BASIC for a short time. But, as a student's mind matures they should begin to hate the limits of BASIC. The only problem is, as far as I see, is that level of self-reflection is not entirely possible by most people. I know many people who only know Java well because it was the first thing they were taught. I can only imagine if they were that bound to BASIC.
Software engineering vs. computer science? Teaching, demonstrating, students? I have more liking for CS than for SE, which is mind-numbing with its jargon. But the concept of teaching programming does not well with me. Teaching a language, yes. But I feel sad for the people who learned about computers as an academic subject, something doled out by adults like algebra and history. Computers can be better teachers than adults. Not all people like to be "students" and not all intelligence is "book smarts"
I could not agree more, having learned basic as a kid, in several flavors, and then moving onto vb6, I got so disgusted with the whole thing (not least that vb6 is so full of annoying bugs that anything big you want to write needs to be done entirely via api calls for such simple things as window creation and drawing of standard looking scrollbars) that I've totally regressed and am now learning assembly and am blissfully happy at the level of control and new abilities I have. One day I might learn C, but I
This is exactly how I learned it, except on a kinda parallel path. Learning assembly on a Motorola embedded process that had A/D converters, pulse width modulater, other cool features that let you actually *build* stuff with it, and learning C at the same time. Good old standard C. I think that's a very good building block, and apparently others have agreed, considering the popularity of it's descendants (C++, Java, C#, etc etc) It made it really easy to pick up OO-languages, because you could focus on
One day I might learn C, but I've been scared off high level languages for good.
Most C programmers only call it a 'high level language' with their tongues planted firmly in their cheeks. Using lots of raw pointers and OS system calls makes real C pretty low-level. I am not saying that it's very close to assembly; the cpu details are mostly abstracted away.
Exactly, I would call C a "high level assembly language", I ment more things like VB (which is still useful as a windoze scripting language, its original design goal I believe), and Java, which having been exposed to briefly, I refuse to touch with a very long stick.
The first problem I encountered switching from QB to C++ was that all variables are passed by reference by default in QB, while in C++ all variables are passed by value by defaut and by reference & is rarely used. QB's structures for keeping track of array and string sizes aren't that hard to expose (see Ethan Winer's book), with C++ that doesn't seem to come up. What happens to string pointers when you want to expand a string in C++, array pointers?
The first problem I encountered switching from QB to C++ was that all variables are passed by reference by default in QB, while in C++ all variables are passed by value by defaut and by reference & is rarely used.
I'm sure this has appeared before on Slashdot, but after reading your post I couldn't resist:
Niklaus Wirth [wikipedia.org], the inventor of Pascal, used to tell this joke on himself: Europeans usually pronounce his name properly, "Nick-louse Veert", while Americans invariably mangle it to ""Nickles Wort
I started (at about 10 years old) playing with QBasic examples from a kids programming book. I would type them in exactly, and then modify them.
When I was about 11, my father created a web page for me, and required me to maintain it myself. I made all changes by hand, through trial and error. No fancy GUI tools at that age!
Rant:
{
that's why we have so many lousy "web designers" these days! Kids are spoiled rotten by pretty web tools from Geocities and the like that spit out horrible code, and the kids
Ages and ages ago, when I was a high school senior, I took a competitive exam, and then an interview, for a college scholarship. The interviewer asserted that Basic was a terrible language that should never have been invented. It being the only language I understood, I defended it. I think that willingness to stand up to authority is one of the biggest reasons why I ended up with the scholarship (full tuition for 8 semesters at a top-40 private engineering college). Basic isn't terrible. It isn't stellar
Life would be so much easier if we could just look at the source code.
-- Dave Olson
RealBasic (Score:3, Insightful)
It's a lot like Visual Basic, except:
1) Portable to MacOS and Linux
2) Easier to just jump in and write apps with
3) Produces apps with no DLL dependencies.
Give it a try, you might find it meets your needs.
Noooooo! (Score:5, Funny)
"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."
-- Edsger W. Dijkstra, SIGPLAN Notices, Volume 17, Number 5
Things (specifically BASIC variants) have improved since Dijkstra wrote that, but an underlying fundamental truth remains.
"Whom the gods would destroy, they first teach BASIC."
-- unknown
Re:Noooooo! (Score:3, Informative)
Re:Noooooo! (Score:3, Interesting)
Frankly, I think Pascal or Python or Scheme or Modula or Eiffel or Smalltalk would be a much better choice for an introduction to programming, but I certainly don
Re:Noooooo! (Score:2)
Re:Noooooo! (Score:2)
More importantly, students should probably not be taught programming by starting with GUIs at all. The inversion of control and event handling gets in the way of learning simple programming.
learning to program (Score:2)
The point is that RealBasic has a nice mature evolved interface where a kid can drag a button to the window, write a bit of code, and BAM they have a working application.
Shouldn't the purpose of taking a programming class be to learn to program not drag and drop? Only once a person can program should they then use an IDE, be it language specific or general purpose.
FalconRe:Noooooo! (Score:3, Interesting)
Noooo! Why would anyone teach students using Pascal instead C/C++. Does anyone think the BEGIN/END is really more straightforward than {/}? As students, they are going to have to *learn* things when they program, and curly-braces are the least of it.
Is 'record' and clearer than 'struct'?
If you don't want the students to have to deal with memory management, then use a garbage collection library with your C compiler. If you want to CYA, tell them that they are using a GC library. If y
Re:Noooooo! (Score:1)
Re:Noooooo! (Score:5, Informative)
If you teach them Pascal, and don't explain that Pascal does GC, then they will be hosed when they get to a C/C++ course and don't understand why they have to manage memory.
Pascal does not do GC.
And yes, most of Pascal is cleaer than C
Pascal:
myDates: array [1..10] of Date;
C:
Date myDates[10];
What is the low bound and high bound of myDate in C and in Pascal?
How do you do an array from 99 to 104 in C? You cant
There is plenty stuff where Pascal is FAR clearer than C, its designed to be so, while C is designed to be a portable assembler.
angel'o'sphere
Re:Noooooo! (Score:5, Insightful)
I spit in the general direction of "conciseness", and it's kinsman "cleverness".
To quote Kernighan:
I used to be a clever programmer, but then I graduated and got a Real Job, and had to read the code written by both Clever and Grown-up programmers. Guess which code was easier to modify, debug and add functionality to. Guess which code had less bugs.
A good (but not huge!) dose of verbosity and simplicity would go a long way towards making more robust applications.
Another relevant quote, by Jeff Polk, co-creator of CVS:
Re:Noooooo! (Score:1)
Re:Noooooo! (Score:2)
Just found on the internet over the years.
The Kernigan quote is pretty common; I think the Perl humor was in someone's signature.
Re:Noooooo! (Score:2)
There is an obfuscated perl contest. It is pointless, but they have one anyway.
Re:Noooooo! (Score:1)
Date myDates[9];
???
JJP
Re:Noooooo! (Score:2)
Re:Noooooo! (Score:2)
Re:Noooooo! (Score:2)
Re:Noooooo! / YES JAVASCRIPT!!! (Score:1)
the best language to teach is javascript. every browser uses it and the basic programming logic can easily be transferred to other (more primitive) languages like
Re:Noooooo! (Score:1)
seriously though, ive heard the damage is only done by heavy use of GOTOs - which im afraid i did a lot of back when i was nine and learning from my mom. however, the desire to use GOTO faded fast when i learned how nice functions were. however, im still in school so maybe i dont know just how much damage BASIC did to me.
Re:Noooooo! (Score:2)
Hogwash. Every programmer uses GOTO every time he/she programs.
Each looping construct is an IF, a label & a GOTO.
While I dearly love do.while, while..do, for, loop..until, etc, some (ancient but still used) languages don't have them.
The key, as with all programming, is mental discipline..
Re:Noooooo! (Score:1)
What a load of rubbish (Score:5, Interesting)
BASIC was grungy, useful, widely available, and offered a fast edit-run loop - key ingredients in getting a lot of kids hooked on computers.
Brainfuck is what they need (Score:3, Insightful)
I think that introducing the beginner to Brainfuck [wikipedia.org] is highly likely to mutilate them (or at least induce them to self-mutilate).
On a more serious note, I think that to most (non geek) people, computer = Interweb so a programming language that has the ability to output html is preferable. This would mean that they can show off their work to friends, which has a powerful re-inforcing effect in itself.
Although I like PHP, it sounds like Python has the edge in that it is more flexible in this regard
Re:What a load of rubbish (Score:2)
B) Mighty freakin' sensitive, aren't we? I started with BASIC, just like so many other people, and I was able to post that classic bit of humor. You, on the other hand, freaked out and went into a tizzy when you saw it. Is there some reason you're so defensive about being accused of being mentally mutilated? Maybe you've had people look at your code and make snide comments?
In my experience, most peo
Re:What a load of rubbish (Score:3)
Re:What a load of rubbish (Score:1)
The only problem is, as far as I see, is that level of self-reflection is not entirely possible by most people. I know many people who only know Java well because it was the first thing they were taught. I can only imagine if they were that bound to BASIC.
I think BASIC can be used t
Re:What a load of rubbish (Score:2)
I have more liking for CS than for SE, which is mind-numbing with its jargon. But the concept of teaching programming does not well with me. Teaching a language, yes. But I feel sad for the people who learned about computers as an academic subject, something doled out by adults like algebra and history. Computers can be better teachers than adults. Not all people like to be "students" and not all intelligence is "book smarts"
Re:Noooooo! (Score:2, Interesting)
Re:Noooooo! (Score:2)
Re:Noooooo! (Score:2)
Most C programmers only call it a 'high level language' with their tongues planted firmly in their cheeks. Using lots of raw pointers and OS system calls makes real C pretty low-level. I am not saying that it's very close to assembly; the cpu details are mostly abstracted away.
Re:Noooooo! (Score:1)
Re:Noooooo! (Score:1)
Re:Noooooo! (Score:2)
Why use an old computer ? Use an emulator or a simulator.
Re:Noooooo! (Score:1)
Im currently writing games and demos on the Atari Jaguar btw, now thats a fun system for assembly heads.
Re: (Score:2)
Re:Noooooo! (Score:1)
Niklaus Wirth (Score:1)
I'm sure this has appeared before on Slashdot, but after reading your post I couldn't resist:
Niklaus Wirth [wikipedia.org], the inventor of Pascal, used to tell this joke on himself: Europeans usually pronounce his name properly, "Nick-louse Veert", while Americans invariably mangle it to ""Nickles Wort
Re:Noooooo! (Score:2, Interesting)
I started (at about 10 years old) playing with QBasic examples from a kids programming book. I would type them in exactly, and then modify them.
When I was about 11, my father created a web page for me, and required me to maintain it myself. I made all changes by hand, through trial and error. No fancy GUI tools at that age!
Rant:
{
Re:Noooooo! (Score:1)
Re:Noooooo! (Score:2)
Basic isn't terrible. It isn't stellar