D in the ix magazine about "programming today"

Georg Wrede georg at nospam.org
Mon Dec 21 17:41:19 PST 2009


Extrawurst wrote:
> "According to the language designers, D is inappropriate as a first 
> language for beginners"
> - i strongly disagree to that

Agreed. People who think D is not suitable for a first language don't 
seem to have the hands-on experience of several years of teaching 
several different languages as university-level introductory CS classes.

The fact that D has some advanced level concepts (functional 
programming, meta programming...) does by no means hamper its usefulness 
as a first language. On the contrary, the lack of obscurity, lack of 
abysmal compliler error messages, lack of context sensitivity in 
semantics and expressions, lack of gratuitios baggage, and (thank god) 
lack of pretentiousness, all help in making this an approachable language.

However, what really constitutes the case for D as the first programming 
language, is its starightforwardness. The language student is presented 
with a language that lets you study the issues at hand, virtually 
ignoring any idiosyncracies introduced by the particular language. In 
its time, Pascal was a stab at precisely that. And a stab worthy of a 
lot of merit, at that. But times have changed, and a lot of languages 
have come and gone, since.

At the end of the day, there are only two top-priorities, that a first 
language should present:

  - It has to be compiled to genuine executable code. The psychological 
weight of "knowing" what your code does, as opposed to a diffuse wish 
"associated with your code to be interpreted, depending on the 
interpreter at hand [as opposed to actually disassembling the executable 
and seeing for yourself the actual result!]", simply can't be 
underestimated. (I've really seen the difference with my students -- and 
how they've later fared in this arena.)
  - The abstraction of the physical computer has to be as thin as 
possible. (Currently, no [processor independent] programming language 
comes even close to C.) This is absolutely essential, if we are to teach 
computer programming as such (as opposed to just writing a particular 
computer language!) to students who are expected to spend their entire 
career developing computer programs and concepts. D makes a reasonable 
effort at this, while the motivation for it has lately been virtually 
diluted by languages such as Perl, Python, and some others, unfortunately.


More information about the Digitalmars-d-announce mailing list