On Dec 28, 2007 11:21 AM, Pieter Verberne <[EMAIL PROTECTED]> wrote:

> On Fri, Dec 28, 2007 at 10:16:08AM -0500, Gary Baluha wrote:
> > I think that's one of the main problems with programmers today.  All the
> > schools I know that teach programming, start by teaching Java to the
> > students.
> I'm learning Java at school. I told my teachers that I think it is a
> great pity that I've to learn Java while all my favorite software is
> written in C and and have the code of it! I really would be more
> motivated when we would learn C. But well, I do understand they want us
> to learn a object oriented programming language. And that is -far- more
> practical to use a single PL for all students.


There's certainly no problem with using a single programming language to
teach to first or even second year students, and I have no problem with the
chosen language being Java, either.  The problem comes up when some students
think that similar-looking programming languages can be programmed using
nearly identical programming practices.  But in the end, it doesn't really
matter which programming language is taught, as there will always be
students who get the wrong idea, and that was the main thing I was trying to
convey.


> > It's definitely easier to learn Java with little-to-no prior
> > programming experience, than it is to learn C (I struggled for quite
> some
> > time to fully understand and realize how C uses pointers, in all its
> various
> > ways).
> Oh, I was thinking that C just might be easier since I don't have all
> that class/method/method-call shit. But C has it's own difficulties
> ofcourse.


Well, I originally learned in C, so learning Java was fairly easy since you
didn't have to do all the memory/pointer management that you have to do in
C, or even C++.  I was also learning C++ around the same time, so by the
time I got to Java, I already had the basic concepts of OOP.  I guess it's
all up to the individual which language is "easiest" to learn as one's first
programming language.  Still, my opinion is that any advanced programming
language that has automatic garbage collection and memory allocation is
easier to learn.


> > I think the problem comes when these same programmers see that Java
> > and C have a similar style of syntax, and think that simply learning the
> > superficial differences means they now understand the language.  Two
> > programming languages can look similar on the surface, but be very
> different
> > beneath the skin.
> Sounds like stupid programmers.


Indeed.  I don't know about everyone else's experience, but I find it rare
to come across actual good programmers.  I've met and come across a lot of
programmers who manage to get through their tasks, but don't fully
appreciate what it is that their code is actually doing.


> > I'm also not sold on the concept of object oriented programming in
> general.
> > Along the lines of "nothing is impossible with enough layers of
> > indirection", I think too much abstraction also removes the programmer
> from
> > what he/she is actually doing.  OOP is a nice concept on paper, until
> you
> > realize that most large programming projects are not written by a single
> > person, and most people will not be coding the entire tree of
> abstraction
> > they are using.  This leads to errors that may be very difficult (if not
> > impossible) to fully track down.
> The (a) 'purpose' of OOP is that I don't need to study the Class-code of
> someone else. This makes it possible to focus on your own thing only.
> (I don't care about being exactly right here, I think you understand
> what I mean)
>
I see where you're coming from, and I fully agree that the concept of OOP is
great.  However, I think blindly using someone else's class code without at
least having a basic understanding of what the underlying code is doing
misses the point.  And this is true whether we're talking about an
OO-language, or a procedural language.  The only difference is, OO-languages
provide the weak programmer more opportunities to abuse the concept than
procedural languages.

I don't claim to be a "world-class" programmer myself, but I do realize
there is a difference between code that does the job, and code that does the
job well.  And in my opinion, OO-languages simply provide more opportunity
to get the job done poorly by blindly trusting someone elses code, since the
idea is that you shouldn't need to know.  And this is often taught poorly in
school, giving the false impression that you shouldn't _want_ to have a
basic understanding of what the other person's code does.

Reply via email to