What does is mean to be in a post BASIC world? This is the question that comes to mine when I read about an article titled How are students learning programming in a post-Basic world? I think that for most of the people in the discussion it means that we are no longer in an era where all computers come with a programming language such as they all used to come with BASIC. It’s not so much about BASIC having gone by the wayside, although some would like to see that happen, as it is not having that excitement , that thrill, that joy of learning enough programming to create that first program to solve a real problem. (A good insight into that is a related article Midnight programming, 1979 vs. 2011) In the early days when computers came with BASIC (most often written by some guy named Gates who had a little software company selling BASIC interpreters to lots of computer companies like one in California called Apple) lots of people were teaching themselves programming.
In some sense one had to teach oneself. Oh there were books to help but computer science programs in universities were rare, in high schools rarer still and before high school pretty much nonexistent. But while the BASIC language was simple so were our aspirations of what we could accomplish with computers. I still remember learning about loops by creating a program that printed out the times tables from 1 to 12. I could impress people with the result believe it or not. Oh how times have changed! But does this really mean we are in a post BASIC world? I’m not so sure.
First off while few systems come with a good BASIC (or similar tool) installed there are plenty of good free tools that are available as a download. Event the article that kicked this off lists several of them such as Small Basic, Visual Basic 2010 Express, Scratch and Alice and more. There are command line compilers included with some open source OS distributions as well though in all honestly I don’t think a command line compiler is the best thing for an absolute beginner. That is another way things have changed – people expect GUI development tools that create GUI applications. This is one reason why Python, as great as it is for many things, is not my first choice. It’s easy enough to get all these tools but I do wish that they came standard with every operating system. That simple act of discovery or rather of not stumbling on it when playing with the OS is a stumbling block.
I also don’t think that BASIC is dead by any means. I love BASIC. Visual Basic is my personal favorite but I think for total beginners Small basic is a great way to start. It is simple and easy to use – like the BASIC interpreters so many of us stumbled upon. It is friendly, there are turtle graphics, it is easy to start with, there are samples and documentation. It is very accessible. Yet it is powerful enough to do real applications. Possibly best of all there is that “Graduate” button that creates a Visual Basic project so you can move to the next level.
I never bought the line that BASIC was somehow bad for you. I’ve said it before and I will say it again. Visual Basic is as good an OOP language as any other. Small Basic is a nice step in that direction without the professional tool complexity that stifles some beginners. Get a tool, explore programming, have fun with it. You can learn to do powerful things with BASIC without weird looking semi colons, curly braces or having to be rigid about white space. Get hooked on programming like I am so many others have. Yes, this is not your father’s BASIC and not it did not come pre-installed on your computer. But stretch a little. It may change your life.
Related posts – mostly by other people:
What is interesting to me is how little difference there is between the common “teaching” languages. I know enough BASIC to do a halfway decent job of teaching it to kids. I have done nothing in Python except glance through a book and maybe get “Hello world” to work. Yet I do not have the slightest doubt that using my knowledge of BASIC and a Python book I could teach a kid how to learn enough Python to write a program that will print out a times table to 12. A beginner needs If statements, variables, logic and so on; not OOP stuff. The language also has to be “attractive” to a kid. Typing command-line code is as about as attractive as the black plague and will have the same effect on class sizes. Small Basic is attractive, simple and a beginner can draw pretty pictures really quick. A teaching language must also have a lot of “universal transferables”. (I just made that up.) An If statement has to look like a lot of other languages If statements. Program “flow” has to be similar to a lot of other languages. That is one reason I gave up teaching the kids Microsoft VPL (Visual Programming Language). Although it is an absolutely cool way to program it simply did not transfer over to most other mainstream languages the kids were going to see. There are other robotics languages that do look mainstream. Having taught programming for a few years (in the neighborhood of 30, eek) I will go out on a limb and state Basic is one of the best to start with. Small Basic is proof that Basic will stay a teaching language and that its development is not dead.
Visual Basic (excluding VB.net) is NOT OOP. It does not have inheritance (which by its self disqualifies it), it does not have true polymorphism, and its flexibility in building a large commercial system is horrible mostly because of binary compatibility and DLL hell! One may blame that on ActiveX, but unfortunately since there was no VB7, one can't have one without the other, and so painted with the same brush it must be!
Believe me I know, i was forced to use it for 6 years, have have spent the last 4 years trying to get that code out of VB6 into C#. VB may be useful for educational purposes, but its terrible to build proper OOP systems, and it is not in my opinion the best tool to teach with either.
At my school we started on PC logo (the turtle), which was my first exposure to programming.
Then we were taught Access (which is the WORST thing Microsoft ever created)
Then, when I was finally able to take Computer Science as a subject, we were taught Pastel.
Although it had objects, we were taught only how to program modular, I have to say that it is in my opinion the best language to learn the basic (pardon the pun) fundamentals of programming. Firstly, Borlands IDE (Turbo Pascal 7) was bug free and super fast, it was intuitive, and one could work quickly and easily. Because there were no GUI's, it forced one to build everything from scratch, which is an important skill for a programmer to acquire because often there are things we need to do that have not been done before and there is no component available that will do it for us. Thirdly it had a fantastic debugger, which again - just worked.
After 3 years of Turbo Pascal at school I graduated and took a Java course, which was my first exposure to OOP. It was an absolute revelation! It made so much sense to me how it would solve real world issues, business and otherwise.
But, I don't think I would have appreciated it had i not had learnt modular programming first, by experiencing its pitfalls.
So in summary, teach children modular programming first, even if it has to be in SmallBasic for lack of anything else. The ones that are hungry for more (and they will let you know), then teach them to a decent OOP language like C# or Java. The key is Basic should just be a stepping stone, it should not be the destination.
Lua! It's a very lightweight language and simply to understand. It's part functional, part OOP-emulation language. And it's highly probable the kids might find a game that has a Lua scripting language for them to extend.
Before BASIC, many schools taught Logo, remember that one? Go turtle go!!!
What about PureBasic. www.PureBasic.com Runs on Windows, Linux, Apple.
Check it out.
Schools? Teaching? No such luxury when I started! I was given a length of paper tape. First job was to work out how it was coded (I worked out that the alphabet was split into two discrete subsections but never made the leap to discover why [later I was told that it was the parity bit that caused the disjointedness]). The deciphered text turned out to be a simple BASIC program (Honeywell Time Sharing BASIC). From that I learned about programming and soon was writing my own (I spent hours cutting paper into strips and punching holes with knitting needles; no-one had told me that there were machines that could do it).
Upshot of this is that if someone is keen, you don't need to teach them or dumb down the process - they'll work it out for themselves.
And before anyone suggests it, this is not a parody of a Monty Python sketch - it really is how I started.
When I speak of Visual Basic I mean VB .NET. VB 6.0 and older are no longer available.
I stopped reading after the 3 or 4th sentence because your spelling and grammar are atrocious. If you are going to post articles on a public forum, the least you could do is proofread your work.
To compare Basic and Alice or Scratch is absolutely ridiculous.
To say that Alice or Scratch will take over is absolutely ridiculous.
In 1982, I taught APL to a group of kids aged 9-12 and they are ALL into programming in a big way and earning a lot of money doing that. Today's Basic has all of the array features which APL was proud of, so I can safely say that BASIC with array features and audio video, and less of the formalities is still the ideal tool to teach, to program in and to do business programming in. Add Database languages into that a bit later.
Thanks for the feedback David. I especially appreciate that you posted it publically rather than sending it privately.
A post-BASIC world is a post-basic world; meaning that programming languages are becoming complex; software developed with them even more complex.
Human loves complexity. (Simple test: Imagine a room in the house of your dreams! What kind of place would it be? Probably a room with a lot of decorations and luxurious living house applications we are all granted for! Now imagine a simple room with nothing but white walls and a plain bed. Where would you find such a place? In a prison cell! Now tell me: Which one do you love most?) What he hates is overwhelming complexity and unnecessary complexity; that's not because of complexity but because of overwhelming and unnecessary.