Linked by Thom Holwerda on Wed 11th Apr 2007 16:35 UTC, submitted by ShlomiFish
General Development "What makes programming languages are suitable or unsuitable as introductory languages? Which languages are better learnt first and at which order? And why what the masses think is the most suitable introductory programming language is not in fact that. This paper examines several approaches to which programming language is the best, and afterwards gives several useful relations for which languages should come first. Finally it gives a final verdict, defends it and then gives some other good food for thought."
Thread beginning with comment 229694
To read all comments associated with this story, please click here.
project_2501
Member since:
2006-03-20

i believe that the first approach should be a multi-pronged approach.

introduce youngsters or students to each of the following at the same time:

* PRACTICAL programming - python, perl, shell, whatever makes its easy to get easy results fast. there is no point scaring people away with lots of boilerplate code, however virtuous, that doesn't appear to do a lot.

* UNDER THE HOOD programming - the most valuable lesson I ever learnt was tot understand what really happens inside the computer - bits, bytes, stack pointers, instruction pointers, accumulator registers, caches and memory scans... this way you'll appreciate what your higher level language is really doing and what it is hiding from you. why? it helps to choose approaches you know will be more efficient if there is more than one way of doing it. many students or youngster don't know why naive sort is not as good as quciksort or other sort algrithms... they're all just as fast in their world. this feeds also into logic or functional coding too where it is very useful to know what is really happening - tail recursion is an option but it makes the difference between make or break for some data sets.
by the way this doesn't have to be done with real assembly coding - i learnt it at age 11 using a hypthetical CPU (the zap-1) which our teacher introduced us to illustrate instruction fetch, load and execute, register manipulation and memory lookups and so on ... (whils on this topic the ARM assembly language was very clean, logical and learnable, in contrast to 8086)

* GOOD DESIGN PRINCIPLES - its worth teaching at the same time good design principles - and not just enforcing them using a language that enforces them - but explain WHY. try getting one student to fix or debug another student code - or even work out what it does!!

Reply Score: 3