Best language for beginning programmers?
An August 11, 2005 posting on Slashdot led me to a question and long thread on the "ask Slashdot" forum. A teacher at Hong Kong International School asked the following question: "Does anyone out there have suggestions as to what would be a better language to start students with? Ideally one that might be more ‘enticing’ as well?" Once people find out I work for Borland, I am often asked the same question, especially by parents with younger students. This is probably one of the most frequently asked questions in the history of Computer Science and education. Of course, there are many responses (most with wonderful supporting background information).
In the responses to the question, multiple languages were recommended including (in alphabetical order):
- Ada
- Assembly
- Basic
- C
- C++
- C#
- Cobol
- Delphi
- Eiffel
- Forth
- Haskell
- Java
- JavaScript
- Lisp
- Modula
- Occam
- Pascal
- PERL
- PHP
- Python
- Ruby
- Scheme
- SmallTalk
- Tcl
Edsger W. Dijkstra, in his manuscript titled "How do we tell truths that might hurt?", had the following to say about specific programming languages:
- FORTRAN –"the infantile disorder"
- PL/I –"the fatal disease"
- It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.
- The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offence.
- APL is a mistake, carried through to perfection.
- Projects promoting programming in "natural language" are intrinsically doomed to fail.
My own personal opinion? As I’ve stated many times before, I love almost all of the programming languages (little, large, compiled, scripted, domain-specific, special purpose, general-purpose, dynamic, markup, low-level, high-level, very high-level, procedural, functional, logical, object-oriented, esoteric, declarative, visual, aspect-oriented, concurrent, multi-paradigm, etc).
There are so many great programming languages, it’s hard to recommend a few or even just one. Sometimes the language choice is dictated by factors like: computer hardware, operating system, memory constraints, preparation for a standardized test, college entrance exam, preparation for a job, etc. I will always tell everyone interested in computers and programming, to learn the foundations: introduction to computers, machine organization/computer architecture, algorithms and data structures, file systems and databases, distributed computing, programming languages and compilers, operating systems, and software engineering.
ACM provides a draft, model curriculum for Kindergarden through High School computer education. If I was a teacher of progamming to young students (primary, middle, and high school), I would first start them by using Lego Mindstorms and it’s graphical programming language, RCX Code. After playing with the Lego Mindstorms for awhile, my personal programming language recommendations would be to explore Logo, Squeak, and Pascal/Delphi.
The wonderful thing about programming languages is that there is a world of choices to pick from.
Programming is Life!
October 21st, 2005 at 7:05 am
Speaking of languages, I am having my son start with Turbo C++ in the Borland computer musuem. Is that being updated anymore, I’d love to have access to Borlands version of compiled basic..
December 15th, 2005 at 3:21 pm
We do sell Turbo C++ suite. You can order it from our shop.borland.com web site. It is one of our "classic" products - still being sold but not developed. If your son wants our latest C++ product - check out C++Builder 2006, part of our Borland Developer Studio 2006.
April 29th, 2006 at 2:41 pm
Robo because I wrote it to teach CS students the logic of programming.
May 8th, 2006 at 10:22 am
give them java - easy, useful, and a stepping stone to c++, the .net languages, works on windows/linux/mac, allows GUI programming, web, file access, graphics - all with a focus on the core concepts. otherwise i’d start with a scripting language, maybe javascript, and teach them html along with it. at least, then, the kids who don’t want to program can still write cool web pages, and those who want to program will be introduced to logic, functions, etc.
February 19th, 2007 at 8:27 am
"give them java …"
java is good, but it it operates on the client.
I only program for the web, and use PHP - operates on the server, and i’ve full control.