On Tuesday, 5 November 2013 at 06:21:34 UTC, H. S. Teoh wrote:
On Mon, Nov 04, 2013 at 06:12:33PM +0100, PauloPinto wrote:
On Monday, 4 November 2013 at 16:49:10 UTC, simendsjo wrote:
>On Monday, 4 November 2013 at 16:22:52 UTC, Gary Willoughby
>wrote:
>>On Monday, 4 November 2013 at 15:58:48 UTC, Chris wrote:
>>>"Who D is Not For
>>>- As a first programming language - Basic or Java is more
>>>suitable for beginners. D makes an excellent second language
>>>for intermediate to advanced programmers."
>>>(http://dlang.org/overview.html)
>>
>>I'd argue against this. I think D would make a terrific first
>>language.
>(...)
>>
>>Something like C or D (i'd opt for D) should be any devs
>>first
>>language. Simply to educate them in the basics.
>
>I would say that it really depends on the age too. D as a
>first
>language for an 18 year-old technically savvy person might
>work,
>but for a 10 year-old?
Well I was looking at Z80 Assembly code at the age of 12.
I started programming Applesoft BASIC around that age too, and
when I
was 14 or so, I was programming in Motorola 6502 assembly
language. When
I was 16 one of my assembly programs was sold in a bookstore.
Thereafter
I moved on to Intel 8088 assembly language. It was only years
later, in
college, that I learned C and C++.
I think BASIC introduced me to the concept behind imperative
programming, even if at the time it has almost no structured
constructs
and most programs were just GOTO spaghetti soup. Going from
there to
assembly language was actually not that much of a stretch, and
with big
performance payoffs, too.
Of course, the world has moved on since those days, so nowadays
we don't
usually bother with that level of performance fine-tuning
except in
performance critical bits of code.
But anyway, w.r.t. the OP, if I were to be in charge of
designing a
curriculum, I'd put assembly language as the first language to
be
learned, followed by a good high-level language like D. On
this, I agree
with Knuth's sentiments:
By understanding a machine-oriented language, the programmer
will tend to use a much more efficient method; it is much
closer
to reality. -- D. Knuth
People who are more than casually interested in computers
should
have at least some idea of what the underlying hardware is
like.
Otherwise the programs they write will be pretty weird. -- D.
Knuth
T
If someone doesn't know assembly, this book might help "Write
Great Code, Volume 2: Thinking Low-Level, Writing High-Level".
http://www.amazon.com/Write-Great-Code-Volume-High-Level-ebook/dp/B008Z6ASGC/ref=sr_1_2?ie=UTF8&qid=1383644591&sr=8-2&keywords=thinking+low+level
At least one can get an idea of what's going on under the hood.
My old man was programming with assembly for a while and told me
that the suicide rate among assembly programmers was quite high.
He also told me about the rule of diminishing returns*. If with
well written C program you can get 90% of assembly's performance,
leave it at that. If you wanna get the remaining 10% and use
assembly instead, the cost of it may not be worth the returns.
*(http://en.wikipedia.org/wiki/Diminishing_returns)