D vs Java

Georg Wrede georg.wrede at nospam.org
Thu Mar 23 13:46:30 PST 2006


Bruno Medeiros wrote:

> My university teaches Scheme as the first language, modeled after the 
> MIT curricula, where the course is based on SICP (the purple book). 
> Seems a good idea to me, as Scheme is much more simple than Java and D, 
> and so the teaching can focus on the general programming concepts.

I went through a class using SICP. The teacher was as new to the stuff 
as we were. At the time, the local bookstores refused to carry the book 
just for us, and the WWW or Amazon didn't exist. (Later he got fired for 
this, since SICP+Scheme is just a bit too steep to teach off-hand. (That 
is, without a profound knowledge of it yourself.) At the end of the 
year, nobody actually got credits!) It was tough, but this was so long 
ago that one had to lie, cheat and steal to even get the interpreter. 
Not all did. (And yes, I do know that of all languages, Lisp is the one 
that can actually be taught without access to computers. But as 
students, at the time, we didn't understand this!)

Anyhow, I still consider this as one of the most eye-opening CS classes 
I've ever taken. And it has made a life long difference in how I 
program, how I think about programming, and how I evaluate programming 
languages and paradigms.

> Frankly I really don't see D as much better/simpler than Java for the 
> purposes of a first language.

This might sound offending, condescending, patronising and whatever, but:

Learning to program (in school/university, vs. on your own) does contain 
issues one never notices. The choice of language, the "scene" at the 
time, the predicted future of the students (and of course what they 
never tell you: access to knowledgeable teachers in the various 
choices), all do play a role. The faculty (hopefully) makes a choice 
genuinely based _only_ on their combined experience which (in the best 
case) might today be like n * 30 years, n being the number of professors 
participating in the decision.

There is no way for the individual student to match this combined 
knowledge, and its implicit implications. Still, if the faculty is not 
able to explain the decision adequately, students may feel that "it's a 
dumb choice". But then again, that's _exactly_ why universities do 
exist. They're there to tell you what to learn. Anybody who "thinks he 
knows better" might be better off studying on their own. (Like, if you 
really _do_ know better, then do it, honestly(!), but if you only 
_believe_ you know better, then your future isn't all that rosy.)

The absolute top universities are in a position to not have to explain 
their choices. (What they do, actually _defines_ what is best! But then, 
this is a burden and a responsibility such universities usually can carry!)

---

A SICP course _as_a_first_language_, I'd teach (maybe) to students of 
Philosoply, Law, or theoretical Physics. But never to CS students.

I admit this is a personal opinion, and I don't expect the world to 
agree. (Wouldn't be the first time.) After three of four languages, then 
I think CS students _would_ get orders of magnitude more Real Hard Core 
mental tools to think with.

((

Think about it: anybody using Emacs and not being fluent in Lisp, is a 
joke. The key bindings suck hard, and a mental model of the workings and 
True Interface of Emacs just never become clear to you unless you're 
fluent enough to from the hip do short Lisp programs for one-shot needs 
while writing a source file.

The only thing left are (First) being able to tell everybody you're a 
Real Programmer (and, way later as Second) possibly using some of the 
innumerable "modes" and "emacs extensions" that are readily available.

))

---

Back to Philosoply, Law, or theoretical Physics, these folks need some 
rigor to their thinking. Early on. And such rigor is very hard to teach 
without a tool that only accepts correct thinking and punishes you for 
anything vague. (Rigor being just another tool in their chest, by no 
means the master.)

(( I'm actually not expecting anyone here to agree, or even understand, 
since I haven't made much effort of a sufficient explanation. My bad, I 
confess. I'm not even sure I bother to argue if somebody starts shooting 
this down. This really is not a venue for that discussion. ))



More information about the Digitalmars-d mailing list