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