Tue Jan 24, 2012 1:35 pm
DavidS said:
I wish to note that Linux is not a good platform to learn to program on. To illustrate this, Take a minimal Linux system (Kernel + minimum set of modules + init + login + sh + a C shared library + minimal set of needed support libs) and you already have a system with an extraordinarily complex API (and even in BASIC the API will have to be learned at some point).
…The Pi has an ARM CPU at its core, take advantage of this and use Risc OS as the teaching OS. If necessary add a third version that is $50USD and based on the Model B with a commercial Risc OS license from Castle.
When I was learning programming, I wanted to share everything. I'd never even heard of the Free Software movement, I only knew that BASIC source was everywhere, and that was a good thing. I really wanted to make a Free DOS system, which people later did. But although 16-bit programming and BASIC allowed you to get deep into the workings, 16-bit programming is often less friendly for novice-level tasks, and DOS isn't helping. (Brown's interrupt list could.)
I spent a lot of time finding ways to get around the memory limitations using files. Sadly, arrays were just too costly, so I had to implement those. None of that was easier than using a GNU/Linux system. Batch programming was fun, but not as much fun as Bash scripting. GNU/Linux is made for scripting. But more importantly:
"As people reach their teenage years, some of them are going to be fascinated by computers. They are going want to learn everything about what is going on inside that computer. They are going to want to learn how does this program work. If they are using non-free software, the teacher has to tell them, “Sorry, you can't learn that, I can't learn that. It's a secret. Nobody is allowed to learn that.” Non-free software prohibits education. But with free software, the teacher can say, “Go ahead. Here's the source code for this program. Read it. You can learn. And then, now that you have read the source code, try making a change, try making a small change in this program."
If you want to attack the friendliness of GNU/Linux, I can't fight you on that. I know DOS feels easier to use, even if you hit a wall ten times faster. And it takes longer to "get" Bash, but when you learn a proprietary system, it's really good while it's supported. When you learn a free system, it's yours practically forever. Those DOS skills, not much use for them now. Bash/Bourne skills have been useful for decades before, and decades after DOS. And 32-bit programming, though it isolates you from the machine more, makes beginner tasks so much easier. I was never going to code support for extended/expanded memory, I really had to wait.
BASIC, incidentally, really could have taken a page from Python when it comes to libraries. I was bewildered by BASIC libraries, no matter how much extension they offered. In Python, for what it's worth, you get the most BASIC way to do libraries that could possibly be useful. If I'd had that in BASIC I could have done much more, including with hardware. But if the libraries aren't free, you can't share them, and programs that can't be shared really hurt the spirit of BASIC, in my biased opinion. Like with early HTML, you could almost always "View source." Something to consider. But I think teaching dependence on proprietary vendors is impractical, and sells the student short. Other than that, nothing against RISC OS.