What a pile of stuff, much of which ties in (in various directions)
with things I've been thinking.
In no particular order....
Grades - ideally, yes, grades would be unnecessary. But in a system
where others depend on something at least vaguely objective to measure
whether people know things, some kind of grading is necessary.
Does it have to be done the way it's done now? Of course not. But,
unless you can also eliminate a bunch of the other societal mechanisms
and conventions that have accreted around the educational system, it
needs to be done.
Unless you are doing something purely for the students. I once taught
a weekend course with no grading of any sort. Every student got a
piece of paper I signed certifying they had attended the course, but
there was nothing at all - save of course the students' increased
proficiency in the subject matter - indicating how much the various
students had got out of it. In some respects I think that's the best
way to handle education/training/learning, but it's difficult to get
completely away from the rest of those mechanisms and conventions I
mentioned above.
This segues neatly into the distinction someone raised between
education and training. Again, I would say that ideally there should
be no distinction, but that in this society (and I suspect that, for
all their differences, the societies most/all of the listmembers live
in are more or less the same in this regard), there is a substantial
operational distinction between the sort of background fundamentals
that were called "education" and the sort of focused specifics that
were called "training". Especially in North America, there used to be
a distinction between "university" and "college", with universities
providing "education" and colleges providing "training".
Unfortunately, this is on the way to getting lost - I recommend Paul
Fussell's delightful little book _Class_, which, among other things,
has a chapter or two about how colleges got redesignated universities
and trade schools colleges; that feels related to me.
I'm inclined to agree that the societal purpose of universities is
advancing the state of the art, whereas that of trade schools is
preparing people for jobs (in whichever industry the school covers).
Today's blurring of this distinction I see as symptomatic of much of
the problem with today's educational system.
I was trained - er, educated, I guess :) - as a mathematician, with a
side order of computer science (B.Sc. major in maths, minor in CS). In
practice, though, I'm neither mathematician nor computer scientist, but
rather programmer and sysadmin. Yet the maths and CS training were
extremely valuable to me; I am a far better programmer and sysadmin for
having the math and CS background.
Take also, for example, Lisp. I've used Lisp. I even wrote a Lisp
engine. I love the language, even though I almost never use it. But
some of the mental patterns it has given me inform much of the code I
write regardless of language. I have seen it said that a language that
does not change the way you think about programming is not worth
knowing. I think that goes too far, but something weaker along the
same lines _is_ true, and Lisp is a good vehicle for some of those
changes. (Adding continuations to my Lisp engine was a fascinating
experience, one well worth the time and effort involved, even though I
have never used them for anything serious.) And I do not exclude
low-level languages; just as I think knowing Lisp makes me a better
programmer even when not using Lisp, I also think my knowing assembly
and machine language for various processors makes me a better
programmer even when not using them. (And, yes, the people who think
Lisp is useless-in-practice clearly have never looked even the tiniest
bit under the hood of GNU Emacs.)
People have remarked on the knowing of multiple languages. I would say
it matters terribly what the languages in question are. Knowing C,
JavaScript, Pascal, and awk is, for example, very very different from
knowing Lisp, Prolog, Objective-C, and TeX, even though each one hits
the same putative "knows four languages" tickbox on a hiring form. I
draw a sharp distinction between "programming" and "programming in
$LANGUAGE", for any value of $LANGUAGE. Someone who knows the latter
may be able to get a job writing code in $LANGUAGE...but someone who
groks the former can pick up any language in relatively short order.
The bracketed note in the second paragraph of content on
http://www.catb.org/jargon/html/personality.html is exactly the sort of
thing I'm talking about here; ESR taught himself TeX by the simple
expedient of reading the TeXBook.
One particular message seems to me to call for individual response:
There are two major language families: declarative and
imperative.
[...] Declarative langauges are [...]. A few langauges under this
family:
Prolog
Agreed, though AIUI the presence of cuts weakens this somewhat.
(Caveat, I don't really grok Prolog; I may be misunderstanding.)
make (and yes, make is a declarative language)
Only, I would say, in its simplest forms. Every make implementation I
know of (including both at least one BSD variant and at least one
version of GNU make) stops looking very declarative when you have to do
anything at all complex.
SQL
I don't see SQL as declarative. I see it as imperative, with the
relational table as its primary data type. That the programmer doesn't
have to hand-hold the implementation in figuring out how to perform a
SELECT doesn't make SQL declarative any more than the code not
describing how to implement mapcar makes Lisp declarative.
/~\ The ASCII Mouse
\ / Ribbon Campaign
X Against HTML mouse at
rodents-montreal.org
/ \ Email! 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B