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.