Quoting Stanislav Malyshev <[EMAIL PROTECTED]>:

> I can. Too many times I have heard from Java guys working next door
> phrases like "This feature works starting with Java 1.x" and saw "This
> feature is deprecated".

Say hi to the guys next door... But really, I think you misinterpret this. Yes,
there are additional features in Java 2 over Java 1, like there are additional
features in ANSI C over K&R C. In addition, if a method has been deprecated,
it's not because the guys at Sun drank too much one evening. It's because the
feature has been re-implemented with better interfaces based on past experience
and user demands. Don't tell me there are no deprecated features in, say, PHP...
The Java 2 API itself has changed very little from version 1.2 to version 1.4.
And all this has nothing to do with feature-completeness.

> Also, Java is not exactly the most effective language (try doing integer
> array sorting on C and proper Java) and also it's interfaces with other
> languages are pretty arcane, especially for the beginner.

You need interfaces to other languages in a language used for learning basics? I
don't think so. You need them for *real life* programming, in some situations, I
grant you that. But seriously, to learn how to implement a B-tree or how to find
whether a point is inside or outside a polygon (just examples of possible
beginner exercises), you really don't need to interface anything.

> I don't know why OO is the single concept that needs to be taught before
> all. Imagine the guy is going to be a relational DBA - how OO is going to
> help him there? OO is an important concept, but it is not the only concept
> in existance.

OO is good to know, because it teaches you to organize related things in the
same place and design them in such a way that they work closely together, but
separate them from other groups of unrelated things. This is a concept that
would not be bad for anybody to build on, even when they write stored procedures
in Sybase, believe me - because I do that, among other things...
 
> Hear, hear! And C is actually _better_ for teaching data structures,
> because you can _feel_ how these data structures work. In Java, a lot of
> things are masked by "gc is going to make it for me" and "I don't need to
> know how hashes are working - I have standard class for that" and "I
> don't need to initialize - it will be null anyways". That's good sometimes
> for work - but for teaching, that's not always good.

Actually, I think the exact opposite than you about all this. I think beginners
should learn the main things, not the little things that can happen in "real
work". They want to build the tree, they don't want to spend two hours
understanding why the program fails only when it runs straight, but works well
under a debugger... This is actually something that happened to me in my first C
class. Now, when you actually know what you are doing (you've written the
quicksort algorithm seventy times and you know you have it right), you can
fairly well deal with this. But if you don't know whether your implementation is
wrong, or whether you simply forgot to initialize something, you're in for a
hard time. Let students face one problem at a time.

As for having a standard class for hashes - be serious. When I learned operating
systems, I was told to write a shell. Now, do you think I would have gotten any
marks at all, if I just told them "Oh, I found this "sh" program, it does
exactly what I need"?

If the teacher wants the student to learn how to implement a hash, he will damn
well tell them *not* to use the built-in class, but to create their own. And if
they happen to read the source to the original to see how it works - that's
actually good education.

I am not against C in any way, mind you. I think every CS student in every
university should take a C course, and also use it as the language for certain
other courses (such as "operating systems" or "introduction to compilers" [would
you believe I learned compilers in Pascal?]). But that's second-third year
university students, not high-school/first year CS students.

Herouth

=================================================================
To unsubscribe, send mail to [EMAIL PROTECTED] with
the word "unsubscribe" in the message body, e.g., run the command
echo unsubscribe | mail [EMAIL PROTECTED]

Reply via email to