Which programming language to learn first?

Created by Peter Kankowski
Last changed
Filed under General

Share on social sitesReddit Digg Delicious Buzz Facebook Twitter

Discussion: the first language

Poll results: Python - 24%, C - 23%, Basic - 10%, C++ - 9%, Java - 7%, Lisp/Scheme - 7%

What programming language should be learned first? And what was your first programming language?

Some articles on the topic


What are the criteria for choosing the first programming language? What language would you use if you wanted to teach programming to your kid? Why? And what was your own first programming language?

Your feedback is welcomed. Please use the comment form below.

Peter Kankowski
Peter Kankowski

About the author

Peter is the developer of Aba Search and Replace, a tool for replacing text in multiple files. He likes to program in C with a bit of C++, also in x86 assembly language, Python, and PHP.

Created by Peter Kankowski
Last changed


Ten recent comments are shown below. Show all comments

John Wagner,
For a first language, say, one that could be taught in high schools, I would say that Python seems obvious, for its clarity and elegance. In University, Scheme/Racket/Lisp ought to be taught simply because this group emphasizes recursion, and recursive techniques are often the first approaches to try; also, at this time, Discrete mathematics should be clearly made a part of CS. When Data Structures and Machine design are studied, so should C be mastered. But in these courses, previous languages once learned shouldn't be forgotten: a good practice would be to ask of homework in a C class to be translated into last year's Python, as well. Promising students ought to be taught Ocaml or Haskell, or another functional language, as these seem to be the future. Students that are not promising should be shown Java. And the door.
Kevin Whitefoot,
My first language: Basic on remote timesharing computer via acoustic modem and paper tape (LeaseCo? London, 1969?).

Recommended first language: Erlang because it has lightweight processes and encourages you to write parallel code, it is also concise, clear, and useful for real world tasks. It also has some great virtues that can positively influence the way you write code in other languages: no globals, single assignment of variables, etc.

No beginner should ever be asked to learn a language that does not have parallel processes as part of the language. We will never get away from the dumb calculator approach that most of us were taught if we don't start taking parallel processing, multiprocessing, multitasking, distributed computing, cooperative sequential processes, etc., seriously.
First, C for its power and simplicity. Then assembly to learn what happens behind the code you write and hardware interfaces. That should do all your programming necessities.

If people start to lose their interests when learning these languages and saying they're too hard. Then they should stop and do something else instead because programming isn't easy. Either they're going to know that soon or soon enough.

TCL. TCL starts with a stunningly simple syntax. Originally, everything was a string. Hello World is incredibly simple to write. Ditto for the basic console apps you start off with when learning just about any language. However, from there you can go in some very interesting directions:

* Since source code is data, you can do lots of the cool things Lispers can do, without all the annoying parentheses.

* TCL makes a great scripting language, especially when you consider expect.

* TCL has an easy to learn GUI library (Tk) included which runs on all operating systems.

* TCL is a dead enough language that its features are stable. If you write a TCL example in a textbook, it is still likely work ten years from now.

* And if you want speed later, you can hook TCL up to C or C++.

* And though it is a mostly dead language, it is easy to extend, either using C/C++ or within TCL itself to build your own domain specific language.

* Ousterhout's original book on TCL was wonderful. Haven't seen the later edition.

If you are doing a lot of mathematics, then TCL's need for expr can be annoying, but it is far less annoying than Lisp's bizarre syntax, or that of any stack based language.


Programming is never easy.

Learn the most complex high level language.

then go for most complex low level language.

Simplicity never precedes complexity.


Lua, by a wide margin. (www.lua.org). I taught the language to undergrads in an African country in a week. The most readable scripting language, and the fastest, too (www.luajit.org!). And, importantly, a language operating by the principle of 'least surprise'.

Marco van de Voort,

My first language was Basic V2 (C=64), then C=64 asm, short time QB then TP. Still mostly Delphi programmer, but I do C/C++ too.

Given that history, my suggestion is predictable, but admitted, depends on target.

Testing a young kid's interest in programming? Then something scripting and visually appealing.

However once it goes in the direction of a more formal CS education, I like Pascal. (and then a procedural one). Simple syntax, string management and little boilerplate code

for a minimal program. Easy upgrade to C/C++ later.


My first was Python. It's actually still my favorite(along with C++).

Wladimir Tavares,

Pascal was my first programming language.

Instead of focusing on programming languages (religions), let's talk about programming (spirituality).

John C.,

Alan, that's easily the stupidest comment I've ever read on the subject of programming. Congrats.

Your name: