I'm 29 and learned BASIC on an Apple II. While remembering what it was like makes me nostalgic for simpler times, I don't kid myself. It sucked.
I had to read out of scrappy library copies of Byte and Compute magazine. There were hours of trial and error. And worst of all, it all went away when you turned off the machine unless you had one of those notoriously unreliable tape machines.
Contrast that to my first experiences with Linux nearly a decade later. I had man pages, Usenet, IRC, and the web; better hardware, an operating system, developer tools, and free compilers! I learned about Perl and dynamic languages (I was into C at the time). I slowly started learning about how operating systems worked. It was a far more conducive environment for learning.
All of this information was right there on the computer. No more trudging down to the library or throwing away my money on thick technical manuals and trial-version compilers.
I'd say modern FOSS computing environments are the most conducive to learning. The Apple II was a toy compared to what we have now.
a) get bored as hell by doing nothing
b) type some stuff in from your magazine and execute
(thereby learning "something" along the way because of
typos, pattern recognition, etc. (of course you'll /then/ get
distracted, but you had to work a bit)
c) write a program from scratch by exploration, or need.Distraction is a human problem, not a technological one.
You can just as easily use a type-writer instead of a computer to write your next novel in order to escape the distractions of twitter, wikipedia, et al. But you'll just find something else if you are prone to being distracted.
I measure "conduciveness" differently. For me it's the distance between what I know now and what I want to know. When I was growing up and typing in programs on an Apple II, the gap was really large. Getting information was hard and came in at a trickle. Access to technology was pretty limited; I had what came with my computer and that was it for a long time. Conversely, modern *nix systems are largely self documented. There's no guess-work at what a particular C function does or how it is implemented; there's a man page for it. I have access to the complete source code of my operating system. If I want to learn anything, it's a few key-strokes away.
Discipline is the cure to distraction. Not blunt tools.
Funny, I look back on the same experience fondly, except it was assembly on an 8088. The "a-ha" moments were exhilirating.
> I had to read out of scrappy library copies of Byte and Compute magazine. There were hours of trial and error.
That's a great way to build persistence. Many kids lack that skill.
> All of this information was right there on the computer. No more trudging down to the library or throwing away my money on thick technical manuals and trial-version compilers.
Mm, I remember library trips. Taught me how to actually look stuff up. I agree, when I first got Internet access, being able to download DJGPP changed my life.
But on the //e, I learned how to reverse-engineer. Taught myself assembly by reading hex/assembly listings and via trial and error.
I agree modern systems make it easier to learn. But the Apple //e made you learn.
I believe this fact cannot be overestimated.
Here's a personal anecdote ... I remember having a vague understanding of MFC for a number of years, until one day I came across a manual of MFC 1.0. For whatever reason, I went through the old book and came out with a strong understanding of main class structure and motivation behind the framework. I was a bit surprised that the tomes on the subject (and I had many of the latest at that time) were thick but lack some of the essential ideas.
There is a world of difference between that and 8-bit BASIC.
While learning 8-bit BASIC may not be the optimal path between a neophyte and a computer scientist, it strikes a nice balance between high and low level.
Is making a web page simple? Yes. Is making a web page do cool stuff simple? Yes. And it's way cooler than the logo and basic (and worse) of my youth.
IS "web development" simple? Not in the slightest, as a generalization.
The web is the UI component of an application. That application could be as complex as any other - but instead of a simple visual toolkit for our GUI, we have to understand a bundle of technologies that is constantly changing (HTML, CSS, JS), plus the end user platform (browser) and all it's quirks.... now throw mobile in,now throw in that some understanding of the network itself is required.
Thing are more open now, information is more readily available, and there is certainly a lot to choose from.
Further, there's the audience - you can now publish your apps to the world immediately, you don't need to get recognized and published on paper or through a publisher. So a simple, silly little game hacked up in javascript/html5 by a kid (yay kid! You did more than I did at you age, keep it up!) has more impact and visibility than did similar feats by similar kids back in the 8-bit days when they figured out how to make my CRT do things God didn't intend it to do all for my amusement.
And the tools now are so much better. I remember as a kid using graph paper to draw sprites, and the converting the images to hex streams by hand. Not mentally challenging, but tedious and error prone.
When I first learned to program, I recall struggling with run-on loops. I'm not sure if that is even really an issue with modern compilers. There wer things that it was just hard to figure out.
Today, I can just go to Google.
You might be interested in this if you haven't seen it before:
http://viewsourcecode.org/why/hacking/theLittleCodersPredica...