early start: pseudo code. let them grasp the logic behind the code, and later on choose a language, and show them how to transform
set number2 to 0
do while number2 < number
- print number2
- add 1 to number2
into actual code. there are a lot of languages that are not too hard to learn, but you'll have to consider whether or not they are interested/motivated and what kind of code/applications you want them to be able to produce.
If you want them just building web pages, then PHP is fine.
But if you want them to be PROGRAMMERS, I think you can't go wrong with QuickBasic (you can still find v4.5 online). It doesn't require them to be computer scientists to start, and gives them lots of room to grow as they get more confident. Plus the graphics is fun to play with.
Of course, that presumes that you don't mind them doing console/DOS-style stuff.
Started with QBasic, had fun, but hated it at the same time. It was when I went to C that it all kind of made sense and I could make practical tools and not just speaker beeps and pixelated screens. Java would be good too with all the libraries that you can have fun with, out of the box.
But I suppose there's VisualBasic, it's what some schools try to teach. I hate it and think it's twelve times more frustrating than assembly(that's my opinion obviously), but you can play with all the IDE tools and make fancy GUIs and tools right off the bat with no programming experience, and that's why they teach it.
I don't believe that, I can still barely get python...
Possibly because you're dyslexic, as the language contains no opening and closing braces and relies more on indentation...
The elaborate studio interface which ships with vb.net would take care of indentation so you never need worry about it.
That being said, others swear by python, citing if they were to start coding from scratch, learning the pure basics... that language would be the most intuitive to learn from knowing NOTHING before. Why? Because it most represents pseudo code, and is sufficiently a high language to not worry about pointer syntax and other pitfalls. It's pretty light-weight and easy to install and cross platform.
Of course, in my opinion everything is subjective. I started with C++ so naturally I find this easier.
I started learning the blender3d interface so naturally I find this easier than say Maya or 3dMax...
Like most things in life, the more you practice the more easier you find it... If the kid is dead-set on programming he/she will eventually find other subsets of languages and grow accustomed to one. Just a matter of finding which one, and most importantly 'Picking the right tool for the job.'
Once you get the hang of using the languages required indentations for blocks of code, Python is much like a pseudo language and rather powerful.
food = 'fish', 'fowl', 'fruit', 'veggies', 'meat'
# show all food items
for item in food:
# print 10 dashes
# show only the items that start with a 'f'
for item in food:
Python also has a built-in module called turtle that acts like LOGO.
I think that at that age, if the kid wants to learn something, he'll learn it regardless of how hard it is. If he doesn't want to learn it, it won't matter much how easy it is. That's just the kind of curiosity and passion that kids have at that age (when they are old enough to understand complex things, but too young for their minds to be too occupied by other things.. you know what I'm talking about..).
The question is not a matter of the most "objectively easy" language (that is, if "objective" and "easy" can even make any sense together). The question is what topics of programming (or IT) can be interesting to kids of that age and which language (or tools) gets them to do that the quickest. In other words, how to direct the interest of the kid towards the path of least resistance.
My initial interests were in math stuff (simulation, 3D graphics, etc.) and software engineering puzzles. Delphi and C++ were great languages to progress quickly with those interests in mind.
Other interests, other fields, would mandate different languages as the easier entry-point to start getting some basic programs working easily. Python is probably good for basic computer sciency work (algorithms, data structures, etc.). VB is probably better for GUI apps and the like.
The problem with teaching programming to kids is that there are so many possible things that can trigger their interest. You cannot commit to one area or type of projects or programming language without excluding a majority of people who will never develop a strong interest in that particular subject regardless of how easy the language is. One of my first high-school computer class taught image and animation editing (paint shop and animation shop), then VB for basic GUI programs, then html for webpages, and then left the rest of the class (last quarter of the session) to do a "big" project in one of these areas. I think that's a good pattern for a basic IT class.
BTW, on the Python feud, people respond differently to a new language like python. Personally, I think I got put off from python by the drastically different syntax, but mostly by the lack of clarity in type specifications, scoping rules, abstract memory model, etc. These are aspect that are very strong and explicit in C++, and those who see those things as annoying things to worry about in C++ it is not surprising they adopt Python very easily, but those who see these things as great tools to create robust software will have a hard time letting go of it. Again, different fields make different languages more or less suitable, it's a matter of interests and focus on various aspects of programming that give good (or bad) taste to a programming language.
BTW, on the Python feud, people respond differently to a new language like python. Personally, I think I got put off from python by the drastically different syntax, but mostly by the lack of clarity in type specifications, scoping rules, abstract memory model, etc.
I don't think kids or those starting out with programming need to worry about such things. Nothing is more unrewarding than sitting down to solve a problem only to find the language getting in the way, time and time again. Is C++ or C a bad choice? Absolutely no. Is it a bad first language? If you are trying to learn programming, yes, I would say so.
and those who see those things as annoying things to worry about in C++ it is not surprising they adopt Python very easily, but those who see these things as great tools to create robust software will have a hard time letting go of it
I can sense this going in the direction of "this is what separates the boy's from the men". Python is pretty much capable of creating a "robust" software. Heck, I have seen Python being used as a backbone for creating pricing related apps in a "big bank".
Those of us who have tried to teach programming to kids would be pretty much aware of the problems one faces when using a language like C or C++ as the first language. I know I have. I'd personally recommend the top to bottom approach. Learn the high level basics and then keep digging deeper as you become comfortable with simple stuff.