A while back David Brin wrote an article lamenting the fact kids don't program nowadays because MS no longer ships Basic with it's OS:
http://www.salon.com/tech/feature/2006/09/14/basic/
I'm pretty sure we've talked about this before. As a response at least one Basic oriented toward kids was created:
http://kidbasic.sourceforge.net/
One company makes a product call 'EasyC' that supposedly has a drag-n-drop interface and includes the novel ability to create flow charts of functions. EasyC is meant to create code that is downloaded to a robot of some sort:
So what are your thoughts on software for teaching programming to kids? It seems to me that the most valuable thing a student can do is type in a FOR...NEXT loop and print their name X times to the console. This is an immediate example of what programming is all about: making the machine execute a step by step sequence of instructions. Educational software should allow the student to do this easily.
Programming a robot is pretty cool, but do you think game programming or a rudimentary 3d world would be more exciting to kids?
Then the other question is that of language. Which language should kids learn first? A Basic, or something like a subset of Java (since Java is used in the AP exams and will most likely be taught in the high school curriculum).
What do you think of the automatic generation of flowcharts? Would you have found that helpful when you where a kid?
Has anyone taken computer programming in Highschool? What was your experience? What language was used? Did you use an IDE?
Cookies are available
Has anyone taken computer programming in Highschool? What was your experience? What language was used? Did you use an IDE?
I didn't get around to the Pascal part of the Class. The entire class was pretty pointless though. They didnt get to C till the third year? wtf?
I was going to write up a long autobiography post because my experiences as a young child are quite relevant, but I'll just say it in brief form.
There's a big difference in being excited about programming and being excited about seeing results. Even as a child, I was in the first category.
Two of my brothers in particular were in the second category. The others didn't really have any interest about doing either.
One would spend hours on "Adventure Construction Set" (C64) making his own Ultima-type games. He had no interest in programming. He just wanted to write a story and have it play out. (He ended up majoring in journalism.)
Another liked editing levels of games using level editors. He'd use a code to enter the debug mode for Sega's Sonic games and "create" his own levels. He too had no interest in programming.
So my point is if you show a kid a level editor or C++ they are going to take the former nearly every time. And who cares? Let them do that. No kid needs to be programming anyway.
Now if by "kid" you mean a high school student, then they ought to have the discipline and desire to learn basic programming using something like a scripting environment with a gaming engine (higher level than Allegro). It could be a fun way to learn about how computers and games work at a very high level.
The big thing here is that most high school educators are going to be TERRIBLE at computer science at any valuable depth. So you don't really want them teaching programming anyway.
Anything else can be saved for college. You have four years to learn how to program there. And any good programmer is going to be self taught anyway (or self-motivated in the least), since learning how to solve and debug problems is the most important thing.
Just to clarify; I'm looking at this from a business stand point: I have a language already (NASIC: adding {..} syntax would be trivial) and using something like Qt to create a flow chart generating IDE based on QtScintilla is (seems to be) very doable.
So I'm basically doing a feasibility study 
Keep the comments coming, cookies still up for grabs!
Edit: and the age range I'm looking at is early high school, middle school.
Edit2: and integrating with a 3d engine is doable too: Irrlicht for example. Lots of details to work out there of course (api to expose and what not).
Business standpoint from what perspective? Selling it to parents? Selling it to schools? Giving it to whomever wants it?
I think an event based graphical gaming engine would be the easiest way to engage the 12 to 16 year-olds. I think the language behind it is the easy and trivial part.
(I think there would need to be a level editor; a fairly advanced engine capable of various modes of 2d or 3d; etc... There shouldn't be any need for if (left) player.x++ type of logic.)
I'm not sure if theres any room for something like this. Maybe if its "that much" better than what else is out there. Also, if you haven't beaten RealBasic on its language features, you need to go a little further 
I have a "Basic" language brewing in my head (or did, I havent worked on it in ages), based on a mix of RealBasic and some perl idioms (no perl syntax though
).
If you think back to the past, things like LOGO were very popular, where you "programmed" a "robot" (what was it called, a turtle?) around the display.
As for flow charts, skip them. I don't think many/any kids will even grok them, unless you can simplify everything down into cartoonish levels of simplification.
edit: If I was to try something "educational" it would probably be a drag & drop oriented event based wysiwyg type program. With the ability to customize events if you happen to want to get into the code at all.
Schools would be the ones most likely paying out the money I think.
There shouldn't be any need for if (left) player.x++ type of logic.
What do you think of a Logo type api for entities?
Edit:
As for flow charts, skip them.
That's kind of what I thought too. I do think auto flow charts could be a BIG selling point though. It's not something I've seen, ever.
A general comment. The discussion in this thread will probably be moot, since in the end you have to do studies with kids themselves. Armchair arguing or planning will definitely not translate well to the real world. So, don't ask us. Ask the kids.
Also, people consistently underestimate the intelligence of children, and instead feed them drivel that the adults think is 'basic' enough for them to understand, while they are actually capable of doing so much more.
In my opinion, give them C or C++ with allegro and STL and be done with it. In the end, it's not the language itself but the way it is taught that what will matter the most. And in that case, why start with something obsolete like BASIC, when you can just start with the end goal. I guess you could start with C# instead, to keep things modern, although doing manual memory management should be done at least once in one's life.
In my opinion, give them C or C++ with allegro and STL and be done with it.
Depends on the Child. Many need a little extra proding and attention, while others could probably manage full on C++ with no real problems. I was in the former group. When I was shown an old Atari 2000 computer, and tried to get into its variant of basic, I just couldn't do it, and I kinda just ignored computers for a few years after that.
I like to think I'm pretty decent now, but imagine where I might be if I had a 5+ year head start?
My main point is that there are many general purpose scripting languages that can easily be paired with a gaming library/engine to create a "beginner's programming environment." If that's basically all you are going to offer, then you might as well stick with main stream stuff (e.g., Lua) and focus on selling a concept as opposed to your own labor.
[Edit: Basically what SiegeLord was saying.]
That said, to continue with my previous statements, I would think that the engine would have things like "entities" already built-in. One usage example:
You add a character to the level and in his properties you say he is neutral (enemy: false). Then you add a built-in event called onHit() and add a snippet of code like:
IF $attacker = $me THEN $char.enemy = TRUE END IF
Of course most things would have natural defaults. So if you were creating a 2D platformer (assuming the engine supported that), you could just add baddies to the level and say this is a "flying baddie" and default movement would already be set. But by double clicking on an event, you could modify the flight code, etc.
The above example is not well thought out, so don't bother discussing the details of it. But that's the general idea of what I'm talking about:
Something that's basically visual, but with snippets of code that can be changed. That way the kid can quickly put stuff together in "level editor" mode but then do something crazy by experimenting with the code behind it.
And obviously if the idea is education (as opposed to production value), then you can limit yourself to some relatively small niche.
When I was shown an old Atari 2000 computer, and tried to get into its variant of basic, I just couldn't do it
One of the things I spend time thinking about is: how can computers make me smarter? One aspect of this line of thought is 'usability' and 'human factors': how do people use technology? How would people use technology if they could, but it's just not designed that way?
So, getting to what Thomas is saying; what about the programming experience on the Atari 2000 held you back? Was it lack of documentation? Lack of someone to explain the fundamentals? Lack of interest in the subject? How can technology address any of these shortcomings?
I know from my own experience, I would've been coding 6510 assembler at age 13 if I could've found the documentation and an assembler. Today the internet makes things like this (finding information) trivial. But not all kids (people in general) learn from reading, some need to hear or see. Technology can help these people too with screen casts and on line video tutorials.
I tend to think theres an oppurtunity here. I could be wrong though.
Edit: and I agree with SeigeLord/Matthews/Thomas point about 'reinventing' the wheel with a new language. Any language would essentially do. My thought on that is a Basic or a limited (Basic like subset) of an existing language could be more accessible and/or easy to teach. I think if a kid is ready for object orientation they should move on to a 'production language'.
So, getting to what Thomas is saying; what about the programming experience on the Atari 2000 held you back? Was it lack of documentation? Lack of someone to explain the fundamentals? Lack of interest in the subject? How can technology address any of these shortcomings?
I think we had documentation. What I think I lacked was something simpler to start with, that I could see "work" as soon as possible. I got frustrated rather quickly from not seeing any real progress. Mind you I was mistaken for having ADD as a kid, which had much to do with my frustration, I had no patience or attention span.
I tend to think theres an oppurtunity here. I could be wrong though.
Theres always an opportunity in something, its just a matter of the difficulty level in pulling it off.
edit: In my opinion, you need to provide something the kids can keep interested in. Allowing each kid to procede at their own pace.
I was writing my own little C64 programs when I was 8 with no help from anything except magazines. I was coding games on a PC when I was 12 in QBASIC with no help from anything except its built-in manual. I had no internet. I didn't know anybody who could program.
Technology wouldn't have helped me learn any faster. A teacher would have. But I also got my satisfaction by learning by myself. And that's what makes me a good programmer today. It's not that I started when I was 8. It's because I'm self-motivated and self-educated that I know how to analyze, design, program, debug, etc.
An easier interface wouldn't have made me any better. It's like suggesting that VB6 makes you a better Windows programmer. It doesn't do anything like that. It just lowers the amount of skills needed.
To me the bottom line is if you need a screencast or a friendly interface to understand something because you couldn't roll up your sleeves and figure it out yourself, then you aren't the type of person I'd ever want to hire or work with - except if you are only ever working within the confines of that nice and fuzzy warm environment. (And in that case, I wouldn't care since I'd be a 100 miles in the opposite direction.)
You say "I tend to think theres an oppurtunity here." Of course there's an opportunity. There always is. You can sell anything if you are good enough at selling. I'll never argue that.
Is something like this going to produce more (in quantity and in talent) programmers? Never.
My first real programming experience was in grade 10 with Turing and then in grade 11 with plain C (all taught at school). By the time my younger brother got to high school the school had started introducing kids to programming using Delphi. I remember he was so frustrated by all the 'magic' involved in his programs. The teacher was showing them stuff like adding a button and hooking up handlers, etc, but they never explained how any of it worked.
I still think that one of the most important things to keep kids interested is to let them have a feeling that they're creating something from scratch. Give them a 'main' function and say that it's the program entry-point. Let them see that if they put a print statement in main it will do something and then the program will quit. Let them see that they can put a loop in main to make the program keep doing something until a condition is met. Then tell them that that is how all computer programs work.
One of the biggest sources of encouragement is showing them how nothing the computer does is magic and that it's just varying levels of complexity built up using some very simple building-blocks.
One of the biggest sources of encouragement is showing them how nothing the computer does is magic and that it's just varying levels of complexity built up using some very simple building-blocks.
Again, that depends on the person. some care, some don't.
Again, that depends on the person. some care, some don't.
Good point, I guess I should say all my points apply only to me any my brother (and people like me). Because people learn in different ways it's going to be hard (impossible?) to make a learning language that suits everyone. Like Matthew said above
There's a big difference in being excited about programming and being excited about seeing results.
Which type of person are you targeting?
There's a big difference in being excited about programming and being excited about seeing results.
I started out with GW-Basic maybe around 12 years old or so , the fact that I could draw on the screen was one of the coolest parts. I didn't stick with it too long and until I bought a book on C++ and found Allegro , a year or two ago I couldn't even imagine how to write graphics programs. Just prior to taking up C++ I was working on learning some Windows Script so I could re-parse some log files into a useful form and that got me hooked again. I plan to stick with it now and I spend most of my free time programming and studying math and programming. So don't think that a simple introduction to programming won't encourage anyone to take it up in the future. Of course I did the work of learning the GW-Basic myself but if I hadn't had the manual for GW-Basic that shipped with the computer I would never have known that I even found programming interesting not to mention enjoyable.
Which language should kids learn first? Well , it should be any language where they can learn only a few functions and a few syntax rules and immediately put something together with it to get a feeling of accomplishment and intrigue going. I would go with C/C++ (because you only have to learn a few things to get started using it , although this probably applies to a lot of languages) , maybe BASIC but I don't know what it's like these days , and a nice graphics library like Allegro to give some visual feedback to what's going on inside the program.
Depends on the Child. Many need a little extra proding and attention, while others could probably manage full on C++ with no real problems.
In hindsight, I would much rather people showed me real C/C++ first, even if I was then showed Basic. I spent loads of time programming in Basic, partly because I couldn't make the C book I got from a library work, partly because it took me forever to get a compiler (the first one I got was MSVC which I got from a pirated disk from someone at school who was using it to steal Visual Basic), but mostly because I had this idea that C/C++ were what proper programs were written in and would be far too difficult for me.
Shortly after getting Linux, and being disappointed at the lack of Basic's available (I did a bit of stuff in Gambas), I decided I'd learn C. That's also how I found Allegro and Allegro.cc. I followed an internet tutorial and found I could printf Hello, World without too much trouble (the Linux distro I first used - Xandros, I don't recommend it - came with all the tools you need for compiling, and it didn't wrap them up in a GUI, so I understood what I was doing for the first time). I decided I wanted to write some games like I'd done in Blitz Basic, and that's how I found Allegro.
A combination of the above makes me think that getting Linux was one of the best moves I ever did. It made me learn C instead of relying on Basic, and learning C made me use Allegro, and using Allegro made me find Allegro.cc, which I think is one of the best communities there is.
That was much more of a long-winded rant than I intended it to be. Sorry.
EDIT:
Schools would be the ones most likely paying out the money I think.
Nice plan. I can't think of any other entity that would pay for programming tools.
Also, I think a better way to teach programming (that is, if you want them to learn to program instead of being able to program in some crippled Basic-a-like), is to have the Basic-a-like be converted to C and then compiled. This means it will be fairly easy for you to allow them to embed C in their programs. The teacher could then slowly phase out the Basic in favour of the C as they go through the course, until they've learnt C without realising it. I wish that happened to me.
Nice plan. I can't think of any other entity that would pay for programming tools.
Like those ancient Borland C++ "programming environment"s we were instructed to download for free, and used in class and at home.
Though to be fair, when we switched to VB.NET (:() we used Visual Studio 2003, until they decided to switch to 2005 (a horrible decision, since their computers couldn't handle it).
We were of course advised to pirate it if we wanted to work at home
What. The. Fuck?
I found that while Googling about Visual Studio.
EDIT:
It seems Visual Studio can be obtained fairly cheaply.
Then the other question is that of language. Which language should kids learn first? A Basic, or something like a subset of Java (since Java is used in the AP exams and will most likely be taught in the high school curriculum).
IMO, the first language should be C and/or C++. Partially because that's what I first learned and I loved it. They also offer a lower-level understanding of the program and offer more control, which for a beginner is useful in learning (you could even throw some assembly in there). C# would be my second choice because it's a very nice language to learn. D is a another nice language.
Has anyone taken computer programming in Highschool? What was your experience? What language was used? Did you use an IDE?
In grade 12 I took a grade 11 level computer science course. In grade 11 I didn't even know such a thing existed. I don't even remember exactly how it happened, but it probably paved my way to a career. The actual course used C/C++, with an emphasis on C++, and we used Visual Studio 6 (it would have been nice to use MinGW or GNU tools so that I wasn't reliant on Visual Studio for so long, but now that there's a freely available express edition it's not such a big deal).
The big thing here is that most high school educators are going to be TERRIBLE at computer science at any valuable depth. So you don't really want them teaching programming anyway.
Anything else can be saved for college. You have four years to learn how to program there. And any good programmer is going to be self taught anyway (or self-motivated in the least), since learning how to solve and debug problems is the most important thing.
In my high school computer science class the teacher did nothing more than assign chapters to read and examples to do. That's all he had to do. If somebody had a problem with something he would explain it, but mostly we did it ourselves. We're talking about HelloWorld and GuessTheNumber programs! If by grade 11 you can't follow simple instructions in a textbook without the teacher holding your hand then you're in the wrong class (and a lot were, but most still managed to get the credit). A lot of people complained because the teacher didn't do anything most of the time, but I preferred it. He stayed out of the way and let me learn on my own. It was great preparation for college.
Just to clarify; I'm looking at this from a business stand point: I have a language already (NASIC: adding {..} syntax would be trivial) and using something like Qt to create a flow chart generating IDE based on QtScintilla is (seems to be) very doable.
While it might be possible to market, I wouldn't personally encourage it. If it's going to take a lot of work it might not be worth the time. A better approach, IMO, would be to write a textbook that was basically a tutorial for simple game design with something like C++/Allegro that provided the art and sound and walked them through putting it together to make simple games. However, I think jumping straight to game making would be extreme and it's more beneficial to learn about programming instead. I don't personally see high schools offering a game making course because learning to program would be a prerequisite and there is only so much time in high school. A WYSIWYG system doesn't really prepare students for the game industry (since things don't work that way IRL) so it would only be useful for fun (elementary school, perhaps?). Something event driven that's WYSIWYG sounds basically like Flash, which high schools already offer, so I don't really see this QBASIC venture as being successful.
Also, people consistently underestimate the intelligence of children, and instead feed them drivel that the adults think is 'basic' enough for them to understand, while they are actually capable of doing so much more.
QFT.
I'm finishing up 10th grade now. I would have really liked to have some sort of computer class, one that wasn't a worthless piece of crap.
Fifth, sixth, and eighth grade we had computer class with Mr. Monar. It was all super intense things, like making a folder. And stuff. I had been expecting something slightly interesting...but no.
First day of class- "Does everyone know what a mouse is? ... Good. Everyone knows what a keyboard is? ... Good. Now turn off your computer." Yeah, we didn't even get to turn the computers on until the fourth day of class.
We learned Word (super hard stuff like font changing), Excel (omg graph making), and how to make folders. Seriously. We were forced to make nested folders. I got yelled at because I brought up a third way to make folders when he said there was only two.
The hardest thing we did was Microsoft Access. Sure, it was pretty lame, but it was still the hardest thing. Really sad.
I know it was middle school, but this was not at all what interested me in programming. Or computers at all. The teacher was not very good, certainly not good enough to be teaching a course.
As for high school, we have absolutely nothing. A new science building is being built, and a computing class has been talked about. If it happened, the class would be started when I was a senior. By then, it will probably be way below my skill level unless it is in a language I know none of (Lisp, Perl, Python, etc), and even then I would probably learn it pretty fast. I'm not saying I'm great at programming (I'm not), it's just that starting something that late is no help.
As you said, early high school/late middle school is the best place to have a computing course. At that stage you know you are interested, but you haven't taught yourself enough to find the class dull.
I can't remember what they were going to teach the class in...I think Java or VB. I think VB.
I think that a potential problem here is that you're asking a bunch of programmers what value they see in kids learning programming. I think it's pretty obvious that none of us are going to say "there's no value, forget about it" and, inevitably, most of us are going to find a reason to justify whatever route we took. Because objectivity is hard — really, really hard.
My personal experience is similar to Matthew's. I started at age 8 on an 8bit computer. When you switched it on, you'd instantly get a menu with four options. One was a calculator with variables and stuff that was essentially a stripped down version of the BASIC, another two went into BASIC in different configurations, and the fourth loaded other software from tape. So it wasn't really like an OS that shipped with a BASIC, it was a BASIC that shipped with the bonus feature of being able to load non-BASIC software. The manual that came with the machine had a full documentation of the BASIC language, and we had a pile of magazines with type-ins. I learnt from those. Everything subsequent to that is not really relevant to the question you're asking — i.e. what sort of thing we think should be first presented to spark an interest.
Maybe as a result of starting off in an incredibly simple environment on an incredibly simple computer, my interest in programming has always been trying to understand a system from top to bottom. The fact that the system I first tried to understand was an entire computer is neither here nor there. I think that whatever you present to the kids should have enough background functionality to allow them to express creativity relatively quickly (which, in my case, was provided by the line/circle drawing commands, text output stuff and keyboard input stuff) but not have so much hardcoded that the child cannot reach a point where nothing that is happening is 'magic'.
That all said, if you're really just trying to spark an interest then your system need not be an end in itself. If you implement some sort of simple game engine (and, please, don't do a side-scrolling tilemap game — they're about as relevant to today's children as introducing them to television production by making them record a three-set drama live to 425-line black and white tape) to start them with scripting, then make sure they can elevate as far as seeing your code for that engine and compiling it in whatever you used.
TestSubject and bamccaig illustrates another point: At a certain level the software can not only help the kids, but also help the instructor who is not a computer science person in the first place. Maybe it's a math or biology teacher who got 'volunteered' to teach programming and who is completely unprepared. For this type of teacher using Visual studio effectively to teach a class is probably not going to happen.
Edit: @Thomas - I agree, I personally think software development is a horrible profession to get into: sit in a cube all day and try to be miracle worker and read peoples minds to try and determine what they really want.
The only good thing about teaching programming effectively is to give kids the choice; "hey this programming is pretty easy, I could get a job doing this or... be a Lawyer! Yeah!"
Oh, don't rely on the instructors to know anything. I'll be willing to bet that most lessons will be taught by PE teachers. If you want to make something that will be taught well in schools then signpost everything down to the contents and timing of individual lessons.
EDIT: or, of course, gym teachers as they're known in the USA.
EDIT: or, of course, gym teachers as they're known in the USA.
Around here, we call them PE teachers, but it probably varies across different regions.
I agree, I personally think software development is a horrible profession to get into: sit in a cube all day and try to be miracle worker and read peoples minds to try and determine what they really want.
Amen. And you want to encourage kids to get into that field. Pure evil!
hey this programming is pretty easy, I could get a job doing this or... be a Lawyer! Yeah!
But it's not easy to be good at it.
If you want to give kids a fair representation of programming, then a substantial part of the environment needs to be about real programming in real code. But if you are looking to make a sale, then call up some educators and see what they want to see. After all, that's who you would have to end up pleasing.
And yes, those are two distinct things. You can either make a program that you believe in but have a very hard time selling it because you have to persuade someone that it's really what they need—or you can just give them what they want, take their money, and laugh knowing it has no real benefit for the kids.
Most successful niche businesses do the latter.
hey this programming is pretty easy, I could get a job doing this or... be a Lawyer! Yeah!
I missed this comment, but I somehow feel like I should say something to respond to it. Ummm, I actually found that obtaining my legal qualifications required skills in common with my computer science qualifications, specifically being able to understand a system from top to bottom and reason as to the conditions that can lead to different outcomes.
But if you are looking to make a sale, then call up some educators and see what they want to see. After all, that's who you would have to end up pleasing.
Speaking of which, at least in California there is an official procurement system for textbooks that requires your textbooks to teach to standards predefined by the state. You should check out if anything similar applies to the sort of product you want to sell — if so then what you or I think the product should comprise is completely irrelevant.
Thanks for the input everyone. You've given me a lot to think about. Cookies to ALL!
It seems Visual Studio can be obtained fairly cheaply [softwareselect.co.uk].
Or free...
My brother who is now 15 took an educational programming language class. Something called Jaroo? I couldn't find it online but I think its great to get kids thinking logically esp to see if its somehting they enjoy.
I took a C++ class in HS and it was confirmation to me that programming was where I was meant to be.
I remember when I started learning programming. I went to my library and grabbed all the books they had, which included everything from Forth to Algol. However, the first interpreter I got my hands on was qbasic and so I learned basic instead. it is a pity no such environment is bundled but then, qbasic would not do the trick today. whatever system is there, it has to be a somewhat comparable distraction to ordinary games. I started writing text screen based RPG's but today that is a no-go. here are the requirements for a kid oriented language:
1 graphics must be available and easy to reach
2 minimal syntax
3 easy memory management => garbage collection
4 powerful base language, a lot of work done with little code
3 & 4 shoots down C/C++. 2 shoots down perl (and certainly alsa Ada if you have such a fetish). 4 shoots down D. 1 gives many modern languages a headache as having much too high a threshold.
ruby and python end up being my primary candidates. next java+lwjgl when a certain threshold is acceptable, and they can survive all the syntax. it's a pity haskell lack low-threshold libraries, otherwise it is another primary candidate (the emphasis on functions and strict typing gives it an edge). C comes later, and C++ should only be studied for historical reasons if at all.
And yes, those are two distinct things. You can either make a program that you believe in but have a very hard time selling it because you have to persuade someone that it's really what they need—or you can just give them what they want, take their money, and laugh knowing it has no real benefit for the kids.
*sigh* yes this battle is what I find most frustrating about all new types of software (not just educational).
I took a C++ class in HS and it was confirmation to me that programming was where I was meant to be.
Your highschool offered C++? Man I'm jealous, all I had was an "HTML" class where we learned a single pixel in the corner of an image could install cookies, track your computer usage and install viruses with malware.
There's a big difference in being excited about programming and being excited about seeing results. Even as a child, I was in the first category.
Interesting... Yeah I've noticed the same distribution as well.
I've noticed a hell of a lot of kids getting excited about the career lately too... they never want to hear complex details of their assignments and strive to memorize answers for their tests -- which they'll forget shortly afterwards. There are so many of them they bring down the curve and they all graduate.
Anyway, I'd say I'm a weird mix of the first and the second kind. It was the second motivation that got me in but the first kind that kept me there.
Your highschool offered C++? Man I'm jealous, all I had was an "HTML" class where we learned a single pixel in the corner of an image could install cookies, track your computer usage and install viruses with malware.
Here our highschools offer:
1) C/Pascal* + HTML + Javascript + ASP
2) VB.NET/C#* + Access
Each counts for 5 points towards your Bagrut
I ended up taking both + physics (another 5 units)
*-choice between the two is up to the highschool. I got C and VB.NET.
Our high school offers VB.NET 1&2, and Java for an IB class. That's about it.
Your highschool offered C++? Man I'm jealous, all I had was an "HTML" class
No Variables?
Hah! They might as well have taught Variables.
My highschool, despite going under the name of a "technology college" offered nothing programming related. About the closest you could get was building a circuit in crocodile clips in a "Systems and Control" GCSE. Now that I think about it, it was pretty appalling.
My first language was C which was taught to me during lunch breaks by a friend of my brother who was two years above me. He was taught by a German pen-friend. In my school of more than 2000 there was noone else into programming, but I suppose that's the Westcountry for you.
I had no internet and no books, but still managed to get a platform game going after ...about a year. I still remember the day he showed me how to get into mode 13h (320x200) and how excited I was about getting home to try it out.
Seems like I'm one of the few who wasn't tainted by BASIC.
Seems like I'm one of the few who wasn't tainted by BASIC.
Seconded.
I was tainted by BASIC, but I had TI-86 ASM to set me right.
Can you imagine using ASM tricks for more speed in BASIC?
My highschool, despite going under the name of a "technology college" offered nothing programming related. About the closest you could get was building a circuit in crocodile clips in a "Systems and Control" GCSE. Now that I think about it, it was pretty appalling.
Same here.
My first language was PHP. I learned it extensively and is now the language that I can actually make money with. ( OK, combined with HTML/CSS/JS etc.)
Then, I wanted to learn C++. I went to the University library and checked out like 4 - 5 books at a time about programming. It was great fun learning. Even writing the console shit. 
I never touched basic. My friend did, it was his first language, and now he has a very tough time learning C. Don't know if thats just him or because he learned basic first...
Can you imagine using ASM tricks for more speed in BASIC?
I did it often, using CALL ABSOLUTE or some such. 300 times faster except for things like line() that called assembler routines anyway.
I wasnt tainted by Basic till several years after I learned C
My days in front of a ZX Spectrum writing code are amongst the happiest I've had. Indeed the ZX Spectrum probably accounts for the large number of quality game studios prevalent (ignoring buyouts from the big publishers with no abilities other than asset stripping and marketing) in the UK.
btw, American's, you suck at soccer 
(mind you, so do we for not getting into Europe and having to play a couple of meaningless friendlies)
I never touched basic. My friend did, it was his first language, and now he has a very tough time learning C. Don't know if thats just him or because he learned basic first...
Did his time spent riding a tricycle make it harder for him to learn to ride a bicycle?
Yes. When he was riding a tricycle he broke both his legs, that made it harder for him to learn to ride a bicycle because he could not use his legs for 5 years.
What a clutz. Guess he should just stick to walking.
He has a hard time walking since he crawled first.
Can you imagine using ASM tricks for more speed in BASIC?
I have no need to. As someone who attended UK schools during the 80s and early-to-mid 90s, I am well acquainted with BBC BASIC, which includes a full multi-pass(1) inline assembler. Much better than the Spectrum's BASIC, which has no assembler whatsoever, and the rubbish Microsoft BASIC that shipped with C64s and MSXs, which doesn't even have drawing commands. Though the 128kb Spectrum probably has the best 8bit BASIC editing environment...
(1) though you have to programmatically flow over the bit of code with the assembly in multiple times to use the multi-pass feature.
Spectrum's BASIC, which has no assembler whatsoever,
Obviously you haven't heard of the Spectrum's DATA statement, assembler is for girls
I always liked the C64 BASIC listings in magazines that were nothing but:
10 I = 49152 20 READ D: IF D = -1 THEN 60 30 POKE I, D 40 I = I + 1 50 GOTO 20 60 SYS 49152 99 END 100 DATA 42,42,42,42,42,42 110 DATA 42,42,42,42,42,42 120 REM LOTS MORE 1000 DATA -1
Every 16th or so byte would be a checksum and if something went wrong, it would blow up.
Eventually they got wise and included a machine-code editor so you could just type in the hex numbers directly. Fun times.
There was a magazine called 'input' (http://en.wikipedia.org/wiki/Input_Magazine - which was rather good really)when I was a youngster with my spectrum, it must have had over 100 issues (52 turns out according to wikipedia). One recurring thing was a game that was spread over most of the issues and was largely data with checksums, for most of the home computers like spectrum, c64, electron, etc. After the couple of years of collecting turns out the game didn't work 
Maybe I should scan them in and ocr them while I've still got all the equipment at work...
General, and back to the spirit on nonnus29's first post;
I remember at least one study that strongly indicated advantages for kids in a computer/software rich environment. Even much later in life, they tend to exhibit higher IQs, clearer thinking, superior problem solving ability. Learning how to program (especially when young) teaches the brain how to think, and may even influence the structure of the brain, physically. Neural pathways are improved and more organized, maybe.
What language; definitely NOT basic. I would advocate something more structured.
NEIL WALKER:
What do ya mean, assembler is for GIRLS!?!??
He meant coding with the raw hex bytes as opposed to having mnemonics
I used QBasic's CALL_ABSOLUTE intrinsic to do interesting work
Well I've been playing around with Scintilla. Adding a lexer for a my basic variant looks like it'll be pretty easy. Only Scintilla is kind of an ugly text component. I was checking out the syntax highlighting component in Kate and KDevelop, it's called KParts, but it's not cross platform. Hmmm, Eclipse is SWT which is native and cross platform (SWT) and it has a very nice syntax highlighting component. I'll have to check into that.
I was checking out the syntax highlighting component in Kate and KDevelop, it's called KParts, but it's not cross platform
Actually, Kate itself is a KPart, which is a generic plugin framework that KDE provides. I would assume katepart itself uses other kparts to support extra languages, but it would do so by specifying a highlighting and syntax parsing api.
You're right, it is katepart. KDE: too many damn k's....
I'm sure you'll enjoy KDE4 then, no new K things. Now you have Plasma, Phonon, Flake, Solid, Oxygen, Okular, Dolphin, Akonadi, Soprano, Strigi, Eigen, Telepathy, Sonnet, Nepomuk, and ThreadWeaver. Theres probably some I'm forgetting, but that should be most of the new stuff.
Maybe as a result of starting off in an incredibly simple environment on an incredibly simple computer, my interest in programming has always been trying to understand a system from top to bottom. The fact that the system I first tried to understand was an entire computer is neither here nor there. I think that whatever you present to the kids should have enough background functionality to allow them to express creativity relatively quickly (which, in my case, was provided by the line/circle drawing commands, text output stuff and keyboard input stuff) but not have so much hardcoded that the child cannot reach a point where nothing that is happening is 'magic'.
This comment was stuck in my head. I was thinking about the cpu architecture class I took a while back. In that class we had to program MIPS assembler and run it in a simulator. Then it struck me; compiling the Learning Language (whatever it maybe) to assembler for a virtual machine and execute it in a 'Visual CPU'. Then the student can see the source code, the flowchart, the assembler, and the executing machine. That would be pretty cool. Hell, you'd have to be an idiot to not learn computation with a software package like this!
Now I need to hire a team of developers for a year to implement it ==> Profit!
Plasma, Phonon, Flake, Solid, Oxygen, Okular, Dolphin, Akonadi, Soprano, Strigi, Eigen, Telepathy, Sonnet, Nepomuk, and ThreadWeaver.
Ugh. More meaningless (and overloaded!) names. I wish software was all named for their purpose, as in KTextEditor, KWebBrowser, KFallingBlocksGame. It might stop some of them growing email clients. And as for this 'Allegro' thing...
Oh yeah, the original topic. I still remember the title of the first book from the library which piqued my interest in writing games: 25 Exciting Computer Games in Basic for All Ages. Of course, I had an IBM 386 and not a TRS-80 (whatever that was!) so the BASIC code didn't work directly in QBasic. Which wasn't such a bad thing as it forced me to read the game description, read the code, figure out what it was doing (not always easy with PEEKs and POKEs) and try to port or reimplement the game.
If I ever found that book again I'd load up a TRS-80 emulator and enter some of those games and see what they really looked like.
Ugh. More meaningless (and overloaded!) names. I wish software was all named for their purpose, as in KTextEditor, KWebBrowser, KFallingBlocksGame. And as for this 'Allegro' thing...
KDE already knows this
The launcher's and menus will all let you pick how things are labeled on them. So if you want it done by what the app is, things will be like "Text Editor" or if you want that but also know which one "Text Editor (Kedit)", or if you prefer the app name first, and description later "KEdit (Text Editor)" is another option.
The new fancy names are all just PR crap. And to shut up the "k-name" complainers.
Don't think kde didn't hear or care about people's issues. Even long time KDE devs were a little unhappy about both of those issues. Post KDE 4.1, KDE should be a lot simpler, more obvious, and more integrated.
It might stop some of them growing email clients.
I think you mean text editors, they had three or more at one point, now they really only have one or two in KDE 4, kate, and kwrite, where kwrite uses katepart in "simple" mode with a much simpler ui.
Edit: A little ontopic now, I've been working through some of the google tech talks and I just noticed one in the list that may be relevant. I haven't watched it myself though: http://youtube.com/watch?v=Tcwx-I6Arwk
Then it struck me; compiling the Learning Language (whatever it maybe) to assembler for a virtual machine and execute it in a 'Visual CPU'. Then the student can see the source code, the flowchart, the assembler, and the executing machine
Did you ever make a .COM program in DOS and run it in graphic mode memory? I was always surprised how few pixels twinkled as data variables changed.
google tech talks and I just noticed one in the list that may be relevant.
Thanks for the link, I just finally had time to watch it. In that video the presenter talks about "Greenfoot" a Java programming environment aimed at 14+ year olds. Pretty cool, although I think it suffers from what Thoms Hart talked about: a lot of functionality hidden in the object oriented framework that hides whats going on behind the scenes and at the lower/lowest machine level.