Over the weekend there has been a in-depth discussion on creating a low cost robot for the Boy Scouts robotics merit badge. One of the requirements is a simple programming language that a 12 year old is capable of learning.
I would argue that the requirement must also include a element of real world usability. There are many programming languages a 12 year old can learn, unfortunately most of those languages are of no practical value in the real world. BASIC is a great example. You can definitely build a robot and many other interesting devices using the BASIC programming language, but how does the knowledge of BASIC programming help for a entry into college?
Via RobotSee, I have had many interesting conversations with college professors and High school teachers about what makes a good entry language programming language. Real-world practicality is always high on the list. Other items on the list include; ease of use, easy availability, multi-platform support, and knowledge application towards other programming languages.
It should be noted that Visual BASIC is no where near BASIC. The only common factor between the two programming languages is the word BASIC. Visual BASIC is a object oriented programming language that has been made popular due to it's use as the scripting language of choice by Microsoft. Visual BASIC (VB) is definitely a language you can get paid to know. VB is also actively taught in many college curriculum, especially in business programming classes.
JAVA appears to be the entry programming language of choice for many universities now days. JAVA is a easy to learn and use programming language that has become a bit of a industry standard thanks to Google doing just about everything in JAVA. If you want to be a Android phone developer, you will be coding in JAVA. JAVA has even found its way into the embedded space via the Jazelle coprocessor in many ARM chips. Jazelle executes JAVA byte code in hardware. JAVA is obviously one great choice as a entry level programming language.
Python is a programming language derived from another language called ABC. Python was specifically designed to be a introductory language and a replacement for BASIC.
"Python’s first and foremost influence was ABC, a language designed in the early 1980s by Lambert Meertens, Leo Geurts and others at CWI. ABC was meant to be a teaching language, a replacement for BASIC, and a language and environment for personal computing. It was designed by first doing a task analysis of the programming task and then doing several iterations that included serious user testing." http://python-history.blogspot.com/2009/02/early-language-design-an...
The Python newsgroup is known as one of the friendliest around. The avid developer and user community maintains a wiki, hosts international and local conferences, runs development sprints, and contributes to online code repositories.
Python also comes with complete documentation, both integrated into the language and as separate web pages. Online tutorials target both the seasoned programmer and the newcomer. All are designed to make you productive quickly. The availability of first-rate books completes the learning package.
High Schools and universities have taken notice of Python and made it part of their curriculum.
Python Examples and Getting Started Guides
Learning to Program An introduction to programming for those who have never programmed before, by Alan Gauld. It introduces several programming languages but has a strong emphasis on Python.
Invent Your Own Computer Games with Python, 2nd Ed, by Al Sweigart is a free e-Book that teaches complete beginners how to program by making games.
LiveWires A set of Python lessons used during 1999, 2000, 2001 and 2002 children's summer camps in Britain by Richard Crook, Gareth McCaughan, Mark White, and Rhodri James. Aimed at children 12-15 years old.
Guido van Robot A teaching tool in which students write simple programs using a Python-like language to control a simulated robot. Field-tested at Yorktown High School, the project includes a lesson plan.
PythonTurtle A learning environment for Python suitable for beginners and children, inspired by Logo. Geared mainly towards children, but known to be successful with adults as well.
Python in the Embedded Space
There are two projects dedicated to making Python available in the embedded space:
PyMite runs in less then 8K of flash.
Northwestern Python training for High School kids: