Comment Re:You have to start somewhere... (Score 1) 1267
You definitely need to start somewhere. I think Java abstracts a lot of the more complicated aspects of programming such as memory management and allows students to start by understanding the logical nature of programming.
I do think though by isolating yourself to Java and not receiving exposure to other languages, you extremely limit your programming ability.
Java students might use three arrays to do something when a C/C++ student does the same with one array, and uses less memory. Why does this happen? Because in C YOU interact with memory. By interacting directly with the memory you begin to understand how allocation and freeing works. In learning the latter, it expands your mind and causes you to program with memory management in mind, albeit many times subconsciously.
In Java you just don't need to know about memory management, at least the nitty gritty(malloc()/free()). You can create as many objects as you want and can assume and hope that the garbage collector picks it up, eventually. In Java your concern is writing software that does what you want it to, not really having to worry about all the little things that add up to get it there. This is a good thing, for the most part. Focus on the goal of the software and not with the little BS details that you might encounter in C(who loves pointers?).
Unfortunately, in writing production software, it sometimes needs to do more than just work. I can name hundreds of Java applications I've used that work fine and get the job done, but usually the application is slow and the responsiveness is crap. That's the sacrifice of having a virtual machine and managed languages. Giving up memory management means giving up the performance gains that good memory management can obtain.
Personally, there is plenty of software that I use that is Java but I would definitely say that if it was written in a different language like C++ I would probably *enjoy* using the software more.
Example: My Tivo is awesome, but its all in Java and FUCK its slow. You think it should take 5 minutes to boot the Tivo, because it shouldn't. Is my Tivo just really underpowered? I don't think so. Tivo just decided that they would rather focus on designing a good DVR than to focus on the little things: memory management, designing their own OS, etc,. Java just got them from Point A to Point B faster.
I do think though by isolating yourself to Java and not receiving exposure to other languages, you extremely limit your programming ability.
Java students might use three arrays to do something when a C/C++ student does the same with one array, and uses less memory. Why does this happen? Because in C YOU interact with memory. By interacting directly with the memory you begin to understand how allocation and freeing works. In learning the latter, it expands your mind and causes you to program with memory management in mind, albeit many times subconsciously.
In Java you just don't need to know about memory management, at least the nitty gritty(malloc()/free()). You can create as many objects as you want and can assume and hope that the garbage collector picks it up, eventually. In Java your concern is writing software that does what you want it to, not really having to worry about all the little things that add up to get it there. This is a good thing, for the most part. Focus on the goal of the software and not with the little BS details that you might encounter in C(who loves pointers?).
Unfortunately, in writing production software, it sometimes needs to do more than just work. I can name hundreds of Java applications I've used that work fine and get the job done, but usually the application is slow and the responsiveness is crap. That's the sacrifice of having a virtual machine and managed languages. Giving up memory management means giving up the performance gains that good memory management can obtain.
Personally, there is plenty of software that I use that is Java but I would definitely say that if it was written in a different language like C++ I would probably *enjoy* using the software more.
Example: My Tivo is awesome, but its all in Java and FUCK its slow. You think it should take 5 minutes to boot the Tivo, because it shouldn't. Is my Tivo just really underpowered? I don't think so. Tivo just decided that they would rather focus on designing a good DVR than to focus on the little things: memory management, designing their own OS, etc,. Java just got them from Point A to Point B faster.