This blog makes a case for the venerable Commodore 64 as a learning platform for the 21st century.
Are You Keeping Up with the Commodore? (http://akaimbatman.intelligentblogger.com/wordpress/)
Interesting.. However I am sure there is still plenty of education software for modern PCs.
Hmm brings back memories, I made a math tutor type program in high school for my computer course.
Quote
In addition, I hope to eventually teach my child BASIC. I learned BASIC when I was 8 years old, and my own son is only a year and a half away from that point. I?m hopeful that he?ll be able to grasp the concepts of old-style BASIC. At his age, complex languages like C and Java are too abstract to be of any use. Yet running a BASIC interpreter on a modern machine only results in the student becoming distracted by the OS around them. The older machines had a certain ?feel? to them that is difficult to replicate on a modern, multi-GHz machine.
In part, that feeling may have been caused by the slowness of the machines. Not only did the BASIC instructions execute slow enough for humans to keep up with, but the programmer was free to peek and poke at memory without concerns that he would accidently corrupt his OS or change a permanent setting. In fact, the Commodore 64 could not be harmed by any program as long as the disk drive was disconnected. The lack of permanent storage meant that a simple reset would bring the system back to its default state.
EXACTLY.
I tried to teach my son the basic concept of variables and looping, but since I did it in Javascript in a browser within a Windoze machine there were all these extra "layers" that somehow in a way kept him at a distance from the goodies, that I recall in my Atari 400/800 and ST days, wasn't an issue. I still have some of my old "Peek and Poke" books, and a box with an Atari ST and dozens of floppies, and a *working* 20MB SCSI hard drive. On those floppies were a few neat games I had thrown together just for fun, using bitmap setting and getting that is pretty much impossible nowadays without advanced C or Java knowledge.
The next generation of developers are gonna be either Macromedia experts, or Visual Studio indoctrinated, methinks. Either way, the low-level assembly concepts that most of us just ended up learning "cuz it was cool" might be more and more rarely understood...
Hope-filled article, btw -- educational games CAN be fun for even TODAY'S kids, even if text-heavy without cartoon rabbits and whatnot 8)
Quote
Addendum
As I ready this article for publication, I find myself reacting to the words I wrote above. You see, between the time that I wrote them and now, I offered my son to learn BASIC as a lark. Given his age, I didn?t expect that he would progress farther than a simple ?Hello World? program. Yet again, he surprised me.
In the few sessions we?ve had, he?s already learned about line numbers, variables, and user input. The programs are simple, but the lessons appear to be effective. He keeps talking about how he?s going to write the next Mario game once he knows how to program.
lol, that's it, I'm going to dig thru my crap and see if I can find those trusty old "Compute! (http://en.wikipedia.org/wiki/Compute!)" magazines with all the "type in this code (http://en.wikipedia.org/wiki/Type-in_program)" articles (including some pretty damn cool games!), and a decent Atari ST emulator (still have my uniquely wonderful structured-language interpreted-but-with-compiler GFA BASIC (http://en.wikipedia.org/wiki/GFA_BASIC) hiding somewhere...)
Ah, such fond memories of trying to fudge the Syntax Proofreader thingie (http://en.wikipedia.org/wiki/The_Automatic_Proofreader), and changing a value of 254 to 255 in the assembly code (http://en.wikipedia.org/wiki/MLX) "just to see what happens" ;D
A good place to start might be Java, you can write some really basic stuff and compile & run it with DOS.
I wasn't aware there was a Java VM for dos :o
Quote from: Tom on November 16, 2006, 08:09:53 PM
I wasn't aware there was a Java VM for dos :o
I think he meant command line.
Why not just download C# Express? With a drag and drop interface they could see results in seconds, but the more advanced stuff still requires logic. I cant see how teaching an antiquated language is useful.
I think its very usefull to learn how computers work FIRST, then how to do WYSIWYG programming.
Quote from: Tom on November 16, 2006, 08:23:38 PM
I think its very usefull to learn how computers work FIRST, then how to do WYSIWYG programming.
A) Knowing how to make it do what you want in an efficient time saving manor allows you to get paid.
B) Knowing how it works, lets you find more efficient ways to do "A" but if you only know "B" you won't be employed long, but it can be a fun hobby.
Knowing how it works lets you find the source of possible problems lots sooner than if you had to hop around and guess.
Quote from: Tom on November 16, 2006, 08:33:57 PM
Knowing how it works lets you find the source of possible problems lots sooner than if you had to hop around and guess.
Aww but that is where the wonder of debuggers come in where you can setup a watch to see the value of a variable change and step line by line through your code.
Modern editors allow you to toss together the GUI elements of an application effortlessly, yet you still need to write the code that does something with the information.
Knowing binary, how write a sort algorithm, has little place in the business application world, where you use a database to store, sort and retrieve your data. Instead you need to know how to write efficient SQL statements, or you spend your time figuring out how to most efficiently balance client side and server side tasks.
Now if you are a game developer, and you are the one writing the engine, knowing the guts is very important, however such high performance programing jobs are few and far between. Most of the work it seems is in storing, sorting and presenting business data, a task that is heavily separated from the hardware it runs on.
How does BASIC teach you how a computer works?
QuoteHow does BASIC teach you how a computer works?
How Doesn't it? You have to start PEEKing and POKEing to get any sort of decent performance.
I still believe that knowing WHY something is wrong, is about 90% of knowing HOW to fix the problem. Course if all you do is managed C# or Delphi with no pointers, I suppose you can get away with not knowing how computer memory works, or why the stack is important. Knowing binary is deffintely not important, but knowing the binary operators imo is, at least to C/C++ programmers. I don't doubt that a DBA won't need to know or care about them.
Why though? With modern languages handling things like memory allocation and garbage collection why should we be bothered to continuously reinvent the wheel?
I turned out alright as a programmer and I have never seen a single line of BASIC.
Quote from: Shayne on November 16, 2006, 08:20:47 PM
Why not just download C# Express? With a drag and drop interface they could see results in seconds, but the more advanced stuff still requires logic. I cant see how teaching an antiquated language is useful.
The way I see it is that in a line or two you can teach someone the basics of logic. If you drop someone into an integrated IDE they will have a million questions about what's going on that do not focus on the core of what programming really is; giving commands to the computer.
Teaching a child how to write I/O, assertive statements and looping structures I think is far more beneficial than showing them how to use the features of a particular language / IDE wizard tool. At least that's where I got my start in, and love for programming.
Different strokes for different folks I guess.
You can still write command line applications in C#, but I know what you are saying.
Hear Hear Mr. A.
I guess its a little different seeing as we are all "in the know", I would just prefer to have the least labor intensive way of doing things to start and then learn how to get what I want out of it then to be given the hardest way and then shown the easy way after. Its not like the fancy UI removes the IF/ELSE/WHILE from the code, it just makes things a little easier to manage. (intellisense for the win)
You don't even NEED intellisense with basic. Intellisense was invented to try clear the clutter as it were.
I would call it more of a productivity enhancer :)
exactly, because the APIs of today are so large, its quite difficult to work with them.
Quote from: Shayne on November 16, 2006, 09:34:15 PM
Why though? With modern languages handling things like memory allocation and garbage collection why should we be bothered to continuously reinvent the wheel?
Because sometimes, things go wrong. In my experience understanding how code is "managed" (in Java or .NET) will help you diagnose a variety of issues when they arise. I guess it depends on the goals inherent with your project too; if you want to do some rapid development why not "stand on the shoulders of giants" and use as many pre-built components and tools as possible? Likewise if you need something to be as performant as possible why not bypass all the misdirection and access raw memory and process threads manually?
But again, we're diverging from the topic at hand, I know it's difficult to remember the days when we wrote our first "Hello World" program so it's easy to forget what made that experience worthwhile, easy to understand and fun. I know that there is a lot of modern equivalent software to many of the things shown in this blog but I think that more modern versions are less pure educational experiences than the older software. Now when I say pure what I mean is that today educational software tends to try to reward the child with entertainment after the educational task at hand is completed. It seems to me that older, more simplistic educational software was trying to make learning things the fun part. I used to have a game for the Apple ][ which was somewhat like Pac-Man, however the screen was a grid of numbers, at the top an equation was shown and you had to move your character to the right square so you could "eat" the number and add time to the clock. I played this game a lot and never once did I realize that what I was really doing was flashcards (which I used to HATE as a kid), because the timer was always counting down the goal was to get as many right answers in a row to last longer and get a higher score.
I think another good game was
Oregon Trail, which I'm sure we all played as children. That game seems sort of frivolous at first but when you look at it a little deeper you learn the real lesson is about resource management the hard way (i.e. your family keeps on dying). You sort of learn a few things about the mortality rate of 19th century pioneering families at the same time, which for some of us was a little more sobering than simply reading a statistic in a history book.
I can't think of any games today which have the same educational value and that are as accessible as the more simplistic games of my youth. MIND YOU, I am not in the market for educational software and I base this opinion SOLELY on what I see on the shelf in the educational section of software vendors and game reviews I've read on the web.
But again, I'm just spit balling here...
Quote from: Shayne on November 16, 2006, 10:02:52 PM
I would call it more of a productivity enhancer :)
I have to agree with this, I also enjoy using tools that stamp out common patterns in template form, it makes it a hell of a lot faster to code a factory or something when you can just press the magic keys and one pops out. Also, I think I'm gonna marry the code refactoring tool in Eclipse, all the pain of super classing pre-built code with none of the fuss n' muss!
Quote from: Tom on November 16, 2006, 10:13:24 PM
exactly, because the APIs of today are so large, its quite difficult to work with them.
Actually I find I working with an API, no matter the size is very easy since most things are parked where they should be (in the right namespace or package), intellisense just makes things slightly faster. I would loathe having to go back to C++ and a kajillion MFC classes that each supposedly do the same thing, just a slightly different way for each one ;)
Whoops there goes my Microsoft educated background again (gawd! MFC, I haven't thought about that birds nest in a long time...).
I happen to like Qt4 (http://doc.trolltech.com/4.2/index.html). You can't really memorize that much info, which is where intellisense comes in ;)
From my experience with educational software, I'd have to say that nowadays there's software available for much younger children. If the child is unable to read or do math, but can count to three or five and sort shapes, then software that requires reading or math skills won't work. Keep in mind here that my first child was using the computer to play educational games at age 2.
The software for the older kids has a lot more learning in it, teaching science, math, reading, and comprehension. Unfortunately, the older kids have a lot of other electronic distractions to keep them busy that are much flashier - GameCube, Xbox, PSP, IMing, these are all things that were much less prevalent or completely absent when we were young.
As far as programming in BASIC or something else to learn the basics... Wouldn't it make more sense to teach your child logic structures *independent* of any language? Of course, this means that kids likely won't be self-taught anymore.
Most of you are going to laugh but the first "language" I taught my self was batch files.
From there I expanded it... but I really thing to understand logic you need to teach flowcharting or some type of rudimentary logic.
Thorin and Adams: I agree, the fundamental concepts of storing "stuff", changing the "stuff", and combining the "stuff" in various ways is what most of us learned first whether it was in BASIC, BATch files, or even an entry-level computer "logic" class (depending on who taught it ;) ) esp. covering tips/techniques like set diagrams and truth tables.
I think the reason many of us who recall fondly how easy it was to learn this stuff via simple, shallow tools (e.g. Compute! magazine code listings, BASIC/BAT file sample code, heck even LOGO!) are a bit sad for the "new" generation -- who have "better" tools but somehow those tools are so dense and feature-rich that they almost discourage the low-level thinking that is necessary to really easily pick up multiple languages.
Imagine the average 10-month college grad who has learned only Visual Studio etc. trying to understand some assembly code. The opposite case would occur if someone was taught the concepts inherent in assembly, then was put into a situation where they need to learn a new higher-level language.
Or think about how you personally do a first-draft mental design of something. You probably do some basic pseudocode mixed with English, lots of circles and lines and arrows. Because you're used to designing the concept first (e.g. the sequence of actions, the events to handle, how the pieces relate to each other, what is dependent on what) you won't likely be using language-specific syntax in your pseudo code, since you're trying to test out the ideas before investing heavily in getting perfectly accurate ready-to-type-in code.
Yay for intellisense, no doubt -- for those who are building something complex using a complex API.
But yay even more for interpreted languages with limited commands available -- for those who are just beginning to learn the foundational concepts of program design, and heck even logic.
It's Friday, I'm mentally fatigued, so I apologize if I'm not being clear. But I think I've given the jist of my thoughts.
Quote from: Mr. Analog on November 16, 2006, 09:46:01 PM
Quote from: Shayne on November 16, 2006, 08:20:47 PM
Why not just download C# Express? With a drag and drop interface they could see results in seconds, but the more advanced stuff still requires logic. I cant see how teaching an antiquated language is useful.
The way I see it is that in a line or two you can teach someone the basics of logic. If you drop someone into an integrated IDE they will have a million questions about what's going on that do not focus on the core of what programming really is; giving commands to the computer.
Teaching a child how to write I/O, assertive statements and looping structures I think is far more beneficial than showing them how to use the features of a particular language / IDE wizard tool. At least that's where I got my start in, and love for programming.
Different strokes for different folks I guess.
^ pretty much what Mr. A said ;D
PS:
Quote from: Shayne on November 16, 2006, 08:20:47 PM
Why not just download C# Express? With a drag and drop interface they could see results in seconds, but the more advanced stuff still requires logic. I cant see how teaching an antiquated language is useful.
Anyone else find it strange that Shayne sees "advanced stuff" requiring logic, but implicitly that "simple stuff" does not? Perhaps I misunderstand what he meant by the word "logic". To me "container X stores the number 1, container Y stores the number 50, keep doubling the number in container X until it is bigger than the number in container Y, displaying the X value each time" is indeed a type of logic -- the most basic (BASIC? ;) ) logic. I can't see how throwing together a simple little snippet like this via a "drag and drop interface" would teach anybody the inherent foundational logical concepts, although I guess in theory it might save a few seconds of typing and/or thinking. :-\
Kids these days have a very short attention span. If they can open up VS, drag a few controls to the screen and hit the compile button and see results I think that would keep them interested.
Logic was just used as a word to talk about all the code behind the drag+drop UI
Quote from: Shayne on November 17, 2006, 12:52:54 PM
Kids these days have a very short attention span.
That's a label I'd like to try and avoid. For instance, my oldest sat and learned how to crochet a scarf, and worked at it for nearly two hours straight last night (he's making a scarf for his baby brother). I'm sure that somewhere there's an exact opposite of this, a child that cannot sit still for more than five minutes. I haven't read about any significant scientific evidence that supports the theory that kids really do have a shorter attention span than in the past (and we probably should define what we mean with "in the past").
If you had qualified that statement with the word "some", as in "Some kids these days", I wouldn't have bothered responding...
Same thoughts as Thorin ... My ten year old son (who loves video games and keeps bugging me to buy him a PSP (!) ) will read for a half hour or more at a time, even in the same room as when the girls are watching a movie... yes it's hard for him to ignore distractions especially "blinking lights", but if he's motivated he's a normal kid, can be immersed in an activity that is fun/interesting to him. Guess kids today are wired the same as 20 50 or 100 years ago, just a lot more stimuli around 'em to notice that :)
I think it gets down to, "Everything is always worse off than it was last year". Kids are always worse misbehaved, shorter attention span, violent, etc.
Neato find I just... found... re. the whole "retro programming languages" topic:
Check it out, "runBASIC", an online web BASIC interpreter! (with learning tools to boot!)
http://www.runbasic.com/seaside/go/runbasic?_s=AOlfoKeZvVGWKUsn&_k=ifNjlEIj
Quote
Welcome to BASIC, an easy to learn programming language. This crash course of short lessons is designed to get you started fast. For our first example, let's learn how to display something to the screen. We will use the BASIC's PRINT statement. Look at the simple one line program in the editor below. Click on the Run button to see what the program does.
The learning stuff is exactly how *I* learned BASIC (and then other languages) -- there is a chunk of working code that does something "cool", and they suggest you just change things and see what happens!
one very cool (more advanced) example snippet: http://www.runbasic.com/seaside/go/runbasic?_s=AOlfoKeZvVGWKUsn&_k=fmiEIPaG
MORE INFO (i.e. "Help") http://www.runbasic.com/rbhelp.html#differences
And for the uber-geeks: "tinyBASIC" written *in* runBASIC (http://www.runbasic.com/?_page=tinybasic.bas) :o
I'm totally gonna show this website to my son...
Great find DD.