Why Johnny Can’t Code

Here is an article at Salon [update: here is a version that doesn’t require watching commercial ads] lamenting the lack of a kid-friendly programming language installed on every computer (like BASIC used to be). I totally agree with that, although the author actually still wants BASIC to be installed, which I totally disagree with. Other readers are advocating Python and Ruby and Perl for kids which is even worse than BASIC. (hint, none of those languages are even designed with beginners in mind) Anyone who says Python or Perl are beginner friendly is selling something.

Macs used to have HyperCard. That was the first tool I used to create something interactive and productive on the computer (and later, using SuperCard). There are still some similar tools around today like MetaCard, Realbasic, or various Visual Basic 6 clones, but the problem with those are twofold. They are expensive (hundreds of dollars a year for each user in some cases), and they are slow. The latter is a problem with Python, Ruby, and Perl as well. These languages are an order of magnitude slower than Java or C#, for example. Anyone who tells you differently is also selling something.

Right now the only mainstream language that is fast, powerful (can be used to make real applications and games), AND designed at least somewhat with beginners in mind is Visual Basic .NET. However, there are some drawbacks. There is no kid-friendly or beginner-friendly development environment. It is only very recently that is even became free to use. It is Windows only (although a VB.NET compiler for mono was recently released). It is not standardized and open like other popular languages (C#, Java, etc.). It is not open source (again, except for the new mono compiler). And one of the biggest problems is that VB.NET suffers from the legacy of old Visual Basic and BASIC-isms. Like 1-based arrays, meaningless or overly verbose keywords (DIM), too many global functions, the list goes on and on.

In short, we need a new language designed with beginners in mind. One that is fast (statically typed with type inference), but also dynamic (duck typing), case-insensitive, uses real division (3/5=0.6, not 0), and meaningful yet short keywords, no overuse of meaningless symbols like curly braces and colons, or invisible symbols like indenting. And a language that can compile to both .NET and Java JVM. On top of that, at least a basic Delphi-like form designer (not a tree-based GUI builder like GTK’s Glade), and an IDE that supports basic syntax highlighting and code completion, as well as simple compile and run cycles.

Posted in education, programming

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 4,346 other followers

%d bloggers like this: