Java Forum / General / March 2007
Why do some people hate java?
samir - 12 Mar 2007 19:55 GMT Today, I've googled for "i hate java" and "java sucks".
I wasn't really amazed of the number of pages listed. I can imagine the frustration of some newbie when, first, tweeking the installation or struggling with some IDEs that consume "astronomical" (three years ago, my computer had 16mb of ram : ) amounts of memory. But the biggest problem, I think, is java's coolest part: The huge availale classes and source code . For some one that likes programming it's a source of frustration. First, you know that what ever you're doing have been done. Then, you get simply lost when learning: What class' should I start with? How do I choose one?...
For the rest, the problem is with java the programming language (not the virtual machine): Java is seen by many people as a toy programming language. No multiple inheritance, garbage collection and the templates are childish.
For me, all the staff above wasn't my problem. My problem was with accepting that such an amazing VM that can run on multiple achitectures is being wasted using such an archaic programming language. So, I've tried some of the available "alternatives" (unfortunately, most of these alternatives aren't yet ready to compete with Java). The one that had my attention the most is Jython. The power of python within a Java VM :)
So, I started tweeking the beast and found that, not only programming was more fun, but also more productive: It's not about reducing the number of lines in program, but it's about reducing the time needed for debugging and praying that the thing will work.
What I want to say that Java (as a VM) is a cool and Java (the programming language) is a lesser thing.
Adiaux Samir
P.S:
CIndy Lee - 12 Mar 2007 20:07 GMT > Today, I've googled for "i hate java" and "java sucks". > [quoted text clipped - 33 lines] > > P.S: Because .net 2.0 destroys it. It's so much easier to get things done with .net. Visual Stuido's IDE just makes things to easy.
Jason Cavett - 12 Mar 2007 20:50 GMT > > Today, I've googled for "i hate java" and "java sucks". > [quoted text clipped - 38 lines] > > - Show quoted text -
> Visual Stuido's IDE just makes things to easy. Normally I would agree with you, but Eclipse has made so many leaps and bounds that it's just as (or really really close) easy to use.
Mark Space - 12 Mar 2007 22:58 GMT >> Visual Stuido's IDE just makes things to easy. > > Normally I would agree with you, but Eclipse has made so many leaps > and bounds that it's just as (or really really close) easy to use. Could elaborate a little on what Eclipse does that is so great? I use Netbeans right now and I think it's the bomb. Plus Matisse is free on NB. ^_^ But if there's a reason to move to Eclipse I'd like to at least hear about it.
Also, I'm not looking for an IDE flame war, just some perspective from a fellow Java user. ^_^ ^_^
John W. Kennedy - 13 Mar 2007 01:35 GMT >>> Visual Stuido's IDE just makes things to easy. >> [quoted text clipped - 5 lines] > NB. ^_^ But if there's a reason to move to Eclipse I'd like to at least > hear about it. The main thing is that the incremental compiler gives you a much more "alive" sense of what you're doing -- and Build is typically subsecond. I've been mucking about a little with NetBeans, but I have to say that, after Eclipse, it feels clunky.
I've been doing this since 1965. I've used punched cards, Selectric terminals, ISPF/PDF, and quite a few PC IDEs. NetBeans feels like Yet Another IDE. Eclipse feels like The Next Step. It makes the left side of my brain dance.
 Signature John W. Kennedy "The pathetic hope that the White House will turn a Caligula into a Marcus Aurelius is as naïve as the fear that ultimate power inevitably corrupts." -- James D. Barber (1930-2004) * TagZilla 0.066 * http://tagzilla.mozdev.org
Arne Vajhøj - 13 Mar 2007 01:42 GMT >>> Visual Stuido's IDE just makes things to easy. >> [quoted text clipped - 5 lines] > NB. ^_^ But if there's a reason to move to Eclipse I'd like to at least > hear about it. Hm. VE is free on Eclipse too. You may prefer Matisse over VE, but I do not understand the "free" point.
Arne
Jason Cavett - 13 Mar 2007 04:17 GMT > >> Visual Stuido's IDE just makes things to easy. > [quoted text clipped - 8 lines] > Also, I'm not looking for an IDE flame war, just some perspective from a > fellow Java user. ^_^ ^_^ Just a quick list of the small feature set Eclipse has:
1. On-the-fly compiling - you see errors as you create them 2. Built-in debugger - EXCELLENT 3. Plug-in centric - anybody can design plugins which greatly extends the functionality of Eclipse. This can include pretty much anything (including other languages). Additionally, Eclipse now provides an easy way to keep your plug-ins updated 4. Visual Editor - the visual editor, along with many other "side projects" are part of the Eclipse Foundation project. you can easily add this (and hundreds of other) plug-ins to your Eclipse installation 5. Ant Builds - Eclipse helps in the creation of Ant scrips 6. Many different pieces of functionality including, but definitely not limited to, automatic code formatting, automatic commenting (for header comments, methods and other important stuff), built-in integration with CVS (and other plug-ins can add integration with other software control systems)...etc...etc...etc. 7. Context sensitive help. If you're typing something like... thisIsAString. ... and you can't remember a method name, just hit Ctrl +Space and Eclipse will provide you with all your options. This works for pretty much any place you can type code into Eclipse. If you are running Eclipse on the JDK (as opposed to the JRE) you'll get even better context sensitive help as Eclipse will also pull in the Javadoc information. 8. It's all free (minus some of the plug-ins, but that's up to the company developing those plug-ins anyway).
I haven't tried Netbeans, so I can't compare. But, Eclipse is definitely good, there is no doubt about that.
Mark Space - 14 Mar 2007 16:39 GMT > Just a quick list of the small feature set Eclipse has:
> < snipped the list >
> I haven't tried Netbeans, so I can't compare. But, Eclipse is > definitely good, there is no doubt about that. Good list. Everything on that list, NetBeans does also. I agree the incremental compiler is a god-send over standard editors, and the ability to find variables and method names on the fly is great.
I'm sure there's some differences in implementation and quality, but at first blush they seem to compare very similarly.
P.S. NetBeans will also write code for you. If you extend an abstract class, or implement an interface, NB will ask you if you want it to insert the prototypes for the abstract methods into your class for you. Saves time, typing and memory work!
Jason Cavett - 14 Mar 2007 20:26 GMT > > Just a quick list of the small feature set Eclipse has: > > < snipped the list > [quoted text clipped - 12 lines] > insert the prototypes for the abstract methods into your class for you. > Saves time, typing and memory work! Yeah. ;-) Eclipse does that too.
I haven't used NetBeans in some time. Sounds like they're on par with each other.
BTW - Wonder who *really* hates Eclipse and gave everybody one star rating for talking about it. :-p
Oliver Wong - 15 Mar 2007 15:10 GMT > P.S. NetBeans will also write code for you. If you extend an abstract > class, or implement an interface, NB will ask you if you want it to > insert the prototypes for the abstract methods into your class for you. > Saves time, typing and memory work! Eclipse does this too, as does Visual Studio .NET (for C#). And so I'd assume all the "big" IDEs will do this for you.
- Oliver
samir - 13 Mar 2007 05:46 GMT > >> Visual Stuido's IDE just makes things to easy. > [quoted text clipped - 8 lines] > Also, I'm not looking for an IDE flame war, just some perspective from a > fellow Java user. ^_^ ^_^ Tell me what you linke about an IDE and I'll tell you you'll find it in emacs :)
Lew - 13 Mar 2007 06:48 GMT > Tell me what you linke about an IDE and I'll tell you you'll find it > in emacs :) I like the ability to debug servlet code as it runs on a Tomcat server, whilst simultaneously debugging a Java application with which it interacts remotely.
I love emacs, don't get me wrong, and it was great as an IDE for C++, but Java needs its native IDEs like Netbeans and Eclipse.
-- Lew
Jason Cavett - 13 Mar 2007 13:40 GMT > > Tell me what you linke about an IDE and I'll tell you you'll find it > > in emacs :) [quoted text clipped - 6 lines] > > -- Lew I could be wrong, but I'm not sure emacs even is technically an IDE anymore than notepad would be considered an IDE. I *think* (again, could be wrong) it's just an editor. Granted, it's a beefy editor, but it's still an editor.
Lew - 13 Mar 2007 13:44 GMT >>> Tell me what you linke about an IDE and I'll tell you you'll find it >>> in emacs :) [quoted text clipped - 10 lines] > could be wrong) it's just an editor. Granted, it's a beefy editor, > but it's still an editor. With integration with the gdb debugger and integration with the source-code view so you can step through your code, view the trace in the debugger window and simultaneously viewing the current source line in the source window. With a full-blown macro language based on Scheme (or Lisp, or something) which is about as powerful as any scripting language. With syntax highlighting and all those beautiful language-aware things we like. With built-in email management and an online psychiatrist. ...
It's highly integrated, it's for development, and it's a robust environment. IDE. QED.
"Just an editor", indeed. Harrumph.
-- Lew
David Segall - 13 Mar 2007 14:35 GMT >> > Tell me what you linke about an IDE and I'll tell you you'll find it >> > in emacs :) [quoted text clipped - 11 lines] >could be wrong) it's just an editor. Granted, it's a beefy editor, >but it's still an editor. Just an editor! Shame on you. It even includes a psychologist. Now you can talk to Eliza on the Internet <http://abcguides.com/abcsoftware/eliza_js_frame.htm> but then you needed one at hand to console you after trying to read someone else's Lisp.
Bent C Dalager - 13 Mar 2007 11:31 GMT >Tell me what you linke about an IDE and I'll tell you you'll find it >in emacs :) I like refactoring support for Java 5+. Is there an emacs package that does this?
Cheers Bent D
 Signature Bent Dalager - bcd@pvv.org - http://www.pvv.org/~bcd powered by emacs
Christian - 13 Mar 2007 12:14 GMT Bent C Dalager schrieb:
>> Tell me what you linke about an IDE and I'll tell you you'll find it >> in emacs :) [quoted text clipped - 4 lines] > Cheers > Bent D can I pause my java program, look at the stacks of my threads (and navigate through all objects), if something is not running as I want then change my code while the program is paused, and go on with the program with the changed code in place?
Do this with a gui? And with less than 10 clicks? possible with emacs? I don't know it ... never used emacs for coding
Jason Cavett - 13 Mar 2007 17:32 GMT > Bent C Dalager schrieb: > [quoted text clipped - 16 lines] > And with less than 10 clicks? > possible with emacs? I don't know it ... never used emacs for coding
> can I pause my java program, look at the stacks of my threads (and > navigate through all objects), if something is not running as I want > then change my code while the program is paused, and go on with the > program with the changed code in place? Yeah...the Eclipse debugger is pretty freaken amazing. I know there are other debuggers out there, but, having been spoiled by Eclipse's debugger, I still haven't found one I like better. I can't imagine programming without it.
Chris Uppal - 13 Mar 2007 18:32 GMT > Yeah...the Eclipse debugger is pretty freaken amazing. I know there > are other debuggers out there, but, having been spoiled by Eclipse's > debugger, I still haven't found one I like better. I can't imagine > programming without it. Just curious, but what is it that strikes you as so special about the Eclipse debugger ?
I may be missing a lot, since it just seems like a bog-standard debugger to me.
-- chris
Jason Cavett - 13 Mar 2007 13:39 GMT > > >> Visual Stuido's IDE just makes things to easy. > [quoted text clipped - 11 lines] > Tell me what you linke about an IDE and I'll tell you you'll find it > in emacs :)
> Tell me what you linke about an IDE and I'll tell you you'll find it in emacs :)
Well...you could basically say that for any application...
"Tell me what you like about an operating system and I'll tell you you'll find it in emacs." "Tell me what you like about a first person shooter and I'll tell you you'll find it in emacs."
;-)
Lew - 13 Mar 2007 14:02 GMT >> Tell me what you linke about an IDE and I'll tell you you'll find it > in emacs :)
> Well...you could basically say that for any application... > > "Tell me what you like about an operating system and I'll tell you > you'll find it in emacs." > "Tell me what you like about a first person shooter and I'll tell you > you'll find it in emacs." Tell me what you like about psychotherapy and I'll tell you you'll find it in emacs.
Heck, I'll tell you right now: M-x doctor
-- Lew
Jason Cavett - 13 Mar 2007 17:30 GMT > >> Tell me what you linke about an IDE and I'll tell you you'll find it > > in emacs :) [quoted text clipped - 12 lines] > > -- Lew Hahaha. That's awesome.
:: will never understand the craziness of Emacs :: Oliver Wong - 13 Mar 2007 16:02 GMT > Tell me what you linke about an IDE and I'll tell you you'll find it > in emacs :) I like how Eclipse has a "Package Explorer" view which lets you navigate into JARs, and shows you wish files are synced with CVS/SVN and which are not, and which files have compiler errors and which have warnings via icons and clever use of fonts. I.e. I don't have to mouse over, or click on any particular class or anything like that. How do I get emacs configured to do the same?
- Oliver
Chris Uppal - 13 Mar 2007 18:17 GMT > Tell me what you linke about an IDE and I'll tell you you'll find it > in emacs :) ;-)
Which prompts the question -- why is there no email client plug-in for Eclipse yet ? Or maybe there is, and I've missed it...
-- chris
Oliver Wong - 13 Mar 2007 21:21 GMT >> Tell me what you linke about an IDE and I'll tell you you'll find it >> in emacs :) [quoted text clipped - 4 lines] > Eclipse > yet ? Or maybe there is, and I've missed it... I've seen one for GMail, but not one for general email:
http://tabaquismo.freehosting.net/ignacio/eclipse/gmailclipse/gmail-eclipse.htm
- Oliver
Joshua Cranmer - 13 Mar 2007 22:35 GMT >>>> Visual Stuido's IDE just makes things to easy. >>> Normally I would agree with you, but Eclipse has made so many leaps [quoted text clipped - 9 lines] > Tell me what you linke about an IDE and I'll tell you you'll find it > in emacs :) Not hitting Ctrl, Alt, or Meta. I prefer vim, but I'll quickly duck out before I start another vim/emacs war (there's already the seeds of an eclipse/net-beans). Then again, this is from the person who uses at least four different IDEs on a regular basis.
Jason Cavett - 13 Mar 2007 05:51 GMT > >> Visual Stuido's IDE just makes things to easy. > [quoted text clipped - 8 lines] > Also, I'm not looking for an IDE flame war, just some perspective from a > fellow Java user. ^_^ ^_^ Just a quick list of the small feature set Eclipse has:
1. On-the-fly compiling - you see errors as you create them 2. Built-in debugger - EXCELLENT 3. Plug-in centric - anybody can design plugins which greatly extends the functionality of Eclipse. This can include pretty much anything (including other languages). Additionally, Eclipse now provides an easy way to keep your plug-ins updated 4. Visual Editor - the visual editor, along with many other "side projects" are part of the Eclipse Foundation project. you can easily add this (and hundreds of other) plug-ins to your Eclipse installation 5. Ant Builds - Eclipse helps in the creation of Ant scrips 6. Many different pieces of functionality including, but definitely not limited to, automatic code formatting, automatic commenting (for header comments, methods and other important stuff), built-in integration with CVS (and other plug-ins can add integration with other software control systems)...etc...etc...etc. 7. Context sensitive help. If you're typing something like... thisIsAString. ... and you can't remember a method name, just hit Ctrl +Space and Eclipse will provide you with all your options. This works for pretty much any place you can type code into Eclipse. If you are running Eclipse on the JDK (as opposed to the JRE) you'll get even better context sensitive help as Eclipse will also pull in the Javadoc information. 8. It's all free (minus some of the plug-ins, but that's up to the company developing those plug-ins anyway).
I haven't tried Netbeans, so I can't compare. But, Eclipse is definitely good, there is no doubt about that.
Uwe Plonus - 13 Mar 2007 10:45 GMT > Could elaborate a little on what Eclipse does that is so great? I use > Netbeans right now and I think it's the bomb. Plus Matisse is free on [quoted text clipped - 3 lines] > Also, I'm not looking for an IDE flame war, just some perspective from a > fellow Java user. ^_^ ^_^ For me there is no great difference. I work with both IDEs and both have their pros and cons but no feature to say that one is better than the other. As long as you write java programs it makes no difference between biths IDEs. For support of other languages and db development Eclipse is ahead.
So use whichever you want.
Uwe
Arne Vajhøj - 13 Mar 2007 01:44 GMT > Because .net 2.0 destroys it. It's so much easier to get things done > with .net. Visual Stuido's IDE just makes things to easy. Considering that a .NET user is stupid enough to post something like that in a Java newsgroup, then one can have some doubts about what .NET is going to destroy ...
Arne
Chris Smith - 12 Mar 2007 20:19 GMT > Today, I've googled for "i hate java" and "java sucks". > > I wasn't really amazed of the number of pages listed. You shouldn't be, really. :)
> biggest problem, I think, is java's coolest part: The huge availale > classes and source code . For some one that likes programming it's a > source of frustration. I doubt it. The biggest problem, almost certainly, is that like any other worthwhile programming language, Java requires that you adjust your frame of thinking a little. Human beings don't like doing that, because looks too much like admitting that one was wrong in the past. Many people react to this by projecting their fears as a hatred for whatever is encouraging them to change their thinking... in this case, Java.
> For me, all the staff above wasn't my problem. My problem was with > accepting that such an amazing VM that can run on multiple > achitectures is being wasted using such an archaic programming > language. You see? Here we have another example.
 Signature Chris Smith
samir - 12 Mar 2007 20:40 GMT > I doubt it. The biggest problem, almost certainly, is that like any > other worthwhile programming language, Java requires that you adjust > your frame of thinking a little. Have you ever used Stackless Python, Scheme or encountred the concept of generators or coroutines? You really need to adjust your frame of thinking to get those things :)
> Human beings don't like doing that, > because looks too much like admitting that one was wrong in the past. That's correct! It's in fact a handicap. You won't be able to learn from your errors if you can't admit that what you were wrong.
> Many people react to this by projecting their fears as a hatred for > whatever is encouraging them to change their thinking... in this case, > Java. I think that the success of java attracts maniacs :). Fears and hatered must be projected on Microsoft and VB :D not on java.
> You see? Here we have another example. I like flames >:)
Adiaux Samir
Chris Smith - 13 Mar 2007 03:17 GMT > > I doubt it. The biggest problem, almost certainly, is that like any > > other worthwhile programming language, Java requires that you adjust [quoted text clipped - 3 lines] > of generators or coroutines? You really need to adjust your frame of > thinking to get those things :) There was another ingredient I forgot that helps give rise to the sometimes severe hatred of Java: people are forced to use it. Because of Java's market position, a large number of people need to learn it in order to remain employed (or, perhaps, employable).
Many other languages, including those you mention above, lack that ingredient. By and large, the majority of their users have made the choice to use them. That insulates them from bad will, to an extent. You can bet that the very instant that Scheme is adopted by a large number of corporate products with large development teams, you'll see far more hatred tossed around for Scheme than you ever did for Java.
 Signature Chris Smith
Chris Uppal - 12 Mar 2007 21:39 GMT > > For me, all the staff above wasn't my problem. My problem was with > > accepting that such an amazing VM that can run on multiple > > achitectures is being wasted using such an archaic programming > > language. > > You see? Here we have another example. You surely are not claiming that Java is /not/ of archaic design ? (In the sense of "archaic" that the OP clearly meant -- lacking invaluable features which have been commonplace in language design for many decades, and which a few modern scripting languages are finally starting to catch up with).
-- chris
Chris Smith - 13 Mar 2007 03:22 GMT > You surely are not claiming that Java is /not/ of archaic design ? (In the > sense of "archaic" that the OP clearly meant -- lacking invaluable features > which have been commonplace in language design for many decades, and which a > few modern scripting languages are finally starting to catch up with). I believe that "archaic" is a loaded word. Java lacks many features that I'd like to see in it; but I am not a representative computer programmer. I recognize that languages that I like will be forever beyond the abilities of the vast majority of programmers, and therefore are doomed to be passed up for the great majority of software products. Not everyone can be impractical. I suspect that samir is in a similar position.
All in all, I think Java strikes a nice balance that has been very successful; and it's not a coincidence that it has been so popular for so long. I'd be a fool to overlook that and preach the greatness of Haskell (my favorite language du jour) as if it should be used for large business software projects.
 Signature Chris Smith
christopher@dailycrossword.com - 13 Mar 2007 06:00 GMT > You surely are not claiming that Java is /not/ of archaic design ? (In the > sense of "archaic" that the OP clearly meant -- lacking invaluable features > which have been commonplace in language design for many decades, and which a > few modern scripting languages are finally starting to catch up with). > > -- chris This is profound ignorance, or I don't understand the meaning of common place terms like 'commonplace' and 'many decades.' APL was created in 1957 (5 decades is 'many' for the numerally challenged), and I would venture to say Java has 'invaluable features' that APL lacks. Java has been around for what, 15 years? So you are saying it was a decade plus behind when it was invented? That it in fact is, contrary to all conceivable evidence, inferior to Cobol and Pascal? Just how many languages were in common use in the 80's so their advanced features could be considered common place? 5? 10? Get some perspective you silly, silly person.
Stefan Ram - 12 Mar 2007 20:37 GMT >Today, I've googled for "i (...) java" and "java (...)". >I wasn't really amazed of the number of pages listed. »There are just two kinds of languages: the ones everybody complains about and the ones nobody uses.«
(Bjarne Stroustrup)
Chris Uppal - 12 Mar 2007 21:21 GMT > »There are just two kinds of languages: the ones everybody > complains about and the ones nobody uses.« > > (Bjarne Stroustrup) It is entirely understandable that he should omit all mention of a third category of language -- the ones that people complain about even if they /don't/ use them.
(Other perenial favourites in this category: COBOL, VB, ...)
-- chris
samir - 12 Mar 2007 21:48 GMT > >Today, I've googled for "i (...) java" and "java (...)". > >I wasn't really amazed of the number of pages listed. [quoted text clipped - 3 lines] > > (Bjarne Stroustrup) Python do not belong to any of those two categories :)
Arne Vajhøj - 13 Mar 2007 01:45 GMT >>> Today, I've googled for "i (...) java" and "java (...)". >>> I wasn't really amazed of the number of pages listed. [quoted text clipped - 4 lines] > > Python do not belong to any of those two categories :) Python is not that widely used.
Arne
samir - 13 Mar 2007 06:04 GMT > >>> Today, I've googled for "i (...) java" and "java (...)". > >>> I wasn't really amazed of the number of pages listed. [quoted text clipped - 8 lines] > > Arne It's true that Python isn't as popular as Java, but it isn't also a programming language that "no body uses". See this:
http://www.dedasys.com/articles/language_popularity.html
I think that Python is "the next leap" to the future: Simplicity, freedom and some black magic when needed.
Arne Vajhøj - 13 Mar 2007 10:56 GMT >>>>> Today, I've googled for "i (...) java" and "java (...)". >>>>> I wasn't really amazed of the number of pages listed. [quoted text clipped - 11 lines] > I think that Python is "the next leap" to the future: Simplicity, > freedom and some black magic when needed. I do not think that gives a true picture.
A search at Dice gives:
Java 16275 jobs C++ 8090 jobs C# 6719 jobs VB 2823 jobs VB.NET 2477 jobs Cobol 1220 jobs Python 962 jobs Ruby 421 jobs Ada 171 jobs Fortran 131 jobs
Not quite mainstream yet.
Arne
Chris Smith - 13 Mar 2007 16:07 GMT > It's true that Python isn't as popular as Java, but it isn't also a > programming language that "no body uses". See this: [quoted text clipped - 3 lines] > I think that Python is "the next leap" to the future: Simplicity, > freedom and some black magic when needed. Beware of language attachment. You seem to have a case of it. Python is a nice, well-designed language, to be sure. That doesn't really promote it above dozens of other languages that are all rarely used. "Not as popular as Java" is understating reality by about an order of magnitude.
What really got me, though, was "the next leap" to the future. I still haven't seen one significant language feature that originated in Python. Can you enlighten me?
 Signature Chris Smith
Oliver Wong - 13 Mar 2007 16:37 GMT >>>> Today, I've googled for "i (...) java" and "java (...)". >>>> I wasn't really amazed of the number of pages listed. [quoted text clipped - 6 lines] > > Python is not that widely used. And for what it's worth, I complain about Python: "Whitespace sensitive? Is that a joke?"
- Oliver
Chris Uppal - 12 Mar 2007 21:27 GMT > What I want to say that Java (as a VM) is a cool and Java (the > programming language) is a lesser thing. If you haven't already looked at "Scala", then you may find that interesting. Or maybe "Nice".
http://www.scala-lang.org/ http://nice.sourceforge.net/
-- chris
samir - 13 Mar 2007 05:44 GMT On Mar 12, 9:27 pm, "Chris Uppal" <chris.up...@metagnostic.REMOVE- THIS.org> wrote:
> > What I want to say that Java (as a VM) is a cool and Java (the > > programming language) is a lesser thing. [quoted text clipped - 6 lines] > > -- chris Thank you for the information Chris, I've looked yesterday at Scala and found it interseting. It's now on my Todo list :)
Adiaux Samir
gethostbyname@gmail.com - 13 Mar 2007 00:01 GMT > Today, I've googled for "i hate java" and "java sucks". > [quoted text clipped - 33 lines] > > P.S: Well, I think that startup speed of Java (as a VM) is the main inconvenience.
gethostbyname
Lew - 13 Mar 2007 00:30 GMT I love Java.
I don't require perfection, just utility. It has plenty of that.
It could be a mistake to malign VB. That's a pretty useful language also.
-- Lew
samir - 13 Mar 2007 06:20 GMT > I love Java. > > I don't require perfection, just utility. It has plenty of that. The you might like Python too. Consider writing a complete program without errors (it depends) containing up to 10 times less lines of code than the same program written in Java.
Adiaux Samir
samir - 13 Mar 2007 05:51 GMT On Mar 13, 12:01 am, "gethostbyn...@gmail.com" <gethostbyn...@gmail.com> wrote:
> > Today, I've googled for "i hate java" and "java sucks". > [quoted text clipped - 38 lines] > > gethostbyname It takes "ages" to startup especialy on low ram machines. But, Java VM takes no time to start from an ARM (they have native java bytecode interpreter in their chips, and I like it :). I've read somewhere that Sun have sacrificed size for the sake of speed :)
Ashoka! - 15 Mar 2007 04:10 GMT > On Mar 13, 12:01 am, "gethostbyn...@gmail.com" > [quoted text clipped - 47 lines] > interpreter in their chips, and I like it :). I've read somewhere that > Sun have sacrificed size for the sake of speed :) You have to pay for machine independence!!! if you want faster start times some softwares will compile Java to exe format look for "Native code compilers" on google to get a good idea.
Personnally I love the power of C/C++ but it does not have usable API's. As for lovers of .net wait untill you have some hardcore programming to do (where security, response time and availability are critical). .Net makes it very easy to make software but the quality is limited by the quality of Microsoft programs and we all know how good they are. Java is a good compromise. As Winston Churchil once said "It has been said that democracy is the worst form of government except all the others that have been tried." same is the case with java.
Arne Vajhøj - 13 Mar 2007 01:41 GMT > I wasn't really amazed of the number of pages listed. I can imagine > the frustration of some newbie when, first, tweeking the installation > or struggling with some IDEs that consume "astronomical" (three years > ago, my computer had 16mb of ram : ) You used an outdated computer 3 years ago. Not really Javas fault.
> amounts of memory. But the > biggest problem, I think, is java's coolest part: The huge availale [quoted text clipped - 7 lines] > language. No multiple inheritance, garbage collection and the > templates are childish. I think most agree that multiple inheritance and explicit deallocation of memory is a bad thing.
C++ templates can do some things that Java generics can not. And vice versa. They are simply relative different concepts.
> For me, all the staff above wasn't my problem. My problem was with > accepting that such an amazing VM that can run on multiple [quoted text clipped - 8 lines] > number of lines in program, but it's about reducing the time needed > for debugging and praying that the thing will work. If you like that type of language then fine. You may also want to check JRuby and Groovy out.
I do not think you need to try jgnat (Ada).
:-)
> What I want to say that Java (as a VM) is a cool and Java (the > programming language) is a lesser thing. Your choice.
One size does not fit all.
Arne
samir - 13 Mar 2007 06:16 GMT > > I wasn't really amazed of the number of pages listed. I can imagine > > the frustration of some newbie when, first, tweeking the installation > > or struggling with some IDEs that consume "astronomical" (three years > > ago, my computer had 16mb of ram : ) > > You used an outdated computer 3 years ago. Not really Javas fault. Outdated computers are the real test for any os/programming language.
> > amounts of memory. But the > > biggest problem, I think, is java's coolest part: The huge availale [quoted text clipped - 10 lines] > I think most agree that multiple inheritance and explicit deallocation > of memory is a bad thing. Not that bad :). I think that multiple inheritance just requires more attention and discipline when programming. Explicit deallocation of memory is good thing to keep track of your RAM usage. I think that most people will say that garbage collection is a bad thing when it comes to a language like Java.
> C++ templates can do some things that Java generics can not. Like operator overloading?
> And vice versa. They are simply relative different concepts. > > For me, all the staff above wasn't my problem. My problem was with [quoted text clipped - 12 lines] > If you like that type of language then fine. You may also want > to check JRuby and Groovy out. Tried JRuby, didn't like it :(
> I do not think you need to try jgnat (Ada). > :-) I did some Ada in school. Cool programming language. I'll give jgnat a try :)
> > What I want to say that Java (as a VM) is a cool and Java (the > > programming language) is a lesser thing. > > Your choice. > > One size does not fit all. As expected :)
> Arne Adiaux Samir
Chris Smith - 13 Mar 2007 16:53 GMT > > You used an outdated computer 3 years ago. Not really Javas fault. > > Outdated computers are the real test for any os/programming language. I suppose that are the real test of something -- namely, how well the OS or language works on an outdated computer. Extrapolating from that to modern computers, though, is dangerous. Performance does not always scale linearly with the resources of the computer in use, and poor performance on an old machine does not indicate that the same will be true of a newer machine. In the case of Java, this is significant because the virtual machine is optimized for environments with an excess of RAM. In other cases, problems arise because the nature of many applications is that there are thresholds beyond which performance degradation is noticable. If you cross that threshold, performance may appear bad even though it will be unnoticable on a more realistic system.
> > I think most agree that multiple inheritance and explicit deallocation > > of memory is a bad thing. > > Not that bad :). I think that multiple inheritance just requires more > attention and discipline when programming. Okay. There really isn't a standard by which one can judge these things. I rarely, if ever, have found multiple inheritance advantageous in languages like C++ that I've used which allow it. Because OO is a fundemantally pragmatic idea which lacks a formal basis, though, I can't extrapolate from that to a "good/bad" idea classification. It is a trade-off; YMMV.
> Explicit deallocation of > memory is good thing to keep track of your RAM usage. I think that > most people will say that garbage collection is a bad thing when it > comes to a language like Java. This one I have more trouble with. You may be right that "most" people will say garbage collection is bad, or you may not. I suspect not. In either case, though, most people who know what they are talking about will agree that garbage collection is quite a good idea for an application programming language (which I assume is what you mean by a language "like Java"?)
> > C++ templates can do some things that Java generics can not. > > Like operator overloading? Well, no. The two things are pretty well orthogonal. Templates and operator overloading are only tangentially relevant to each other even in C++, and only because they must coexist. A language could have one or the other without both.
 Signature Chris Smith
Oliver Wong - 13 Mar 2007 16:53 GMT > Outdated computers are the real test for any os/programming language. Your usage of the definite article "the" implies that you think there is only one test for an OS or programming language. Perhaps you meant "Outdated computers are a real test for any OS/programming language"? Another good test for OS and programming languages are "ultra-modern super computers": Is this particular OS/programming language able to squeeze out every ounce of power that the computer provides, or is some of the power wasted. Yet another "test" might be "the average desktop computer the target customer base is running": does our OS/programming language bring the greatest amount of utility to the greatest amount of people, etc.
> > I think most agree that multiple inheritance and explicit deallocation > > of memory is a bad thing. > > Not that bad :). Well, "bad" is an emotionally loaded word. I'd prefer to phrase it as "If the solution to your problem is most elegantly expressed in terms of multiple inheritance and explicit deallocation of memory, then you probably shouldn't be using Java to solve that particular problem".
> I think that multiple inheritance just requires more > attention and discipline when programming. Explicit deallocation of > memory is good thing to keep track of your RAM usage. One nice thing about Java (from the perspective of large corporations) is that it discourages a "lone cowboy" mentality. This is the mentality where a programmer enjoys a good mental challenge, and thus seeks out languages which "requires more attention and discipline when programming". Corporations would rather programmers just do what they're told, solve their programming problems in the traditional way, such that if one programmer gets laid off, it's easy to replace them with another programmer, as everyone does everything the same way, and it's easy(ier) to pick up someone else's code if they didn't do anything unexpected or "clever".
> I think that > most people will say that garbage collection is a bad thing when it > comes to a language like Java. Well, there are people who think all garbage collection is bad, regardless of which language's implementation we're talking about, and there are people who think all garbage collection is good, regardless of which language's implementation we're talking about. The interesting case (to me, anyway) would be people who generally think garbage collection is good, but didn't like the way it got implemented in Java. Do any such people exist? Would you still think that these category of people consist of the majority?
> > C++ templates can do some things that Java generics can not. > > Like operator overloading? I think C++ templates and C++ operator overloading are pretty orthogonal topics.
- Oliver
Chris Smith - 13 Mar 2007 17:30 GMT Hi Oliver,
> One nice thing about Java (from the perspective of large corporations) > is that it discourages a "lone cowboy" mentality. This is the mentality [quoted text clipped - 6 lines] > to pick up someone else's code if they didn't do anything unexpected or > "clever". There are, of course, both good and bad sides to this. On the one hand, intentionally obfuscated or unnecessarily complex code isn't good for anyone. On the other hand, there are problems which are just plain harder to express in some languages than others. Many times, it's not easy to tell the difference between the two until you're familiar with all of the options. So I'm not sure I'd entirely classify rooting out this "lone cowboy" mentality as a benefit. The risk, of course, is that companies will cease to derive any benefit whatsoever from hiring good people.
As in all things, a balance must be found.
 Signature Chris Smith
Lew - 14 Mar 2007 03:48 GMT > ... I'm not sure I'd entirely classify rooting out > this "lone cowboy" mentality as a benefit. The risk, of course, is that > companies will cease to derive any benefit whatsoever from hiring good > people. That risk, expressed as an absolute like that, is zero. The risk can be seen from two sides: the companies' and the programmers'. Generally the risk is that the benefit to companies / opportunity for programmers in good programming will diminish, but it really cannot cease to exist altogether.
Programming is a wicked problem - its solutions depend on problem inputs and chaotic variables like the character of the developers. It seems not even theoretically possible to automate programming completely because it involves mapping mental or linguistic spaces to computer actions. It seems not even theoretically possible to simplify programming to where managers can do it, because the social nature of the problems to solve changes. Evolution in the understanding of software development affects the solution spaces, as do the capabilities of the electronic systems involved. Emergent phenomena from the growth of high-speed wide-area networks and other technologies affect the space.
The risk is that the space of problems that require wicked awesome developers will shrink, relegating most to day-laborer tasks. The likelihood is that there will always be significant demand for truly skilled programmers to keep pushing the envelope.
As was pointed out by a writer I cannot recall to attribute (may have been in /Programming Pearls/ or /The Psychology of the Computer Programmer/), when considering the fate of systems to automate programming, consider also who is developing those systems.
-- Lew
tjmadden1128@gmail.com - 14 Mar 2007 15:24 GMT > The risk is that the space of problems that require wicked awesome developers > will shrink, relegating most to day-laborer tasks. The likelihood is that > there will always be significant demand for truly skilled programmers to keep > pushing the envelope. > > -- Lew Which means that companies will try to lower the bottom line and hire more off-shore programmers instead of higher priced domestic labor. Or save more by with off-shore consulting.
Chris Smith - 14 Mar 2007 16:24 GMT > > ... I'm not sure I'd entirely classify rooting out > > this "lone cowboy" mentality as a benefit. The risk, of course, is that [quoted text clipped - 5 lines] > that the benefit to companies / opportunity for programmers in good > programming will diminish, but it really cannot cease to exist altogether. Sure, okay.
> The risk is that the space of problems that require wicked awesome developers > will shrink, relegating most to day-laborer tasks. The likelihood is that > there will always be significant demand for truly skilled programmers to keep > pushing the envelope. Absolutely. I am not concerned with that risk. When (and if!) software becomes more trivial to write, the problems that software solves will change until there is still need for skilled programmers. The process doesn't run like clockwork, so there are times when it seems that programmers are becoming more commoditized; but history teaches that this will change when new kinds of problems arise. My concern is quite on the opposite side of the spectrum; that companies are adopting approaches that prevent them from taking advantage of the level of skill that is offered to them by their development task. The result is that problems which should be solved quickly and easily often take a long time and a large amount of work because the project is planned as if it will.
To be clear; I do not see frequent use of Java as a symptom of this problem. Even quite skilled programmers often reasonably choose languages that don't require a huge amount of skill to read their code. I simply used your post as a springboard to discuss a topic that concerns me.
 Signature Chris Smith
Lew - 15 Mar 2007 02:48 GMT > Absolutely. I am not concerned with that risk. When (and if!) software > becomes more trivial to write, the problems that software solves will [quoted text clipped - 14 lines] > I simply used your post as a springboard to discuss a topic that > concerns me. Now I get your point. Very right.
I have seen this risk in practice. It is part of the larger human failing of trying to go on the cheap and getting cheap as a result.
By my own observation I have seen 50:1 speedups in time-to-result when a programming team is turned loose compared to the factory model of managing a software project. I have seen even higher ratios, but my personal sample space is a little too small to confidently quote them. There was a concomitant increase in maintainability and robustness. too.
But employers don't usually opt for this approach. Teams are organized around the least competent skill level, and suggestions of algorithmic improvement RE often rejected on the basis that it might be "too advanced" for some team members. On the rare occasions when I have countered with the suggestion that it would be better to upgrade the team than downgrade the product, I have gotten in trouble.
The risk you identify is real and present.
-- Lew
Arne Vajhøj - 14 Mar 2007 02:04 GMT >>> I wasn't really amazed of the number of pages listed. I can imagine >>> the frustration of some newbie when, first, tweeking the installation [quoted text clipped - 3 lines] > > Outdated computers are the real test for any os/programming language. Depends on your criteria.
I find small foot print programs interesting from an engineering point of view.
But from a practical/commercial point of view it is not relevant (unless for special cases like embedded).
DOS 6.22 and TP 7 is not that useful today.
>> I think most agree that multiple inheritance and explicit deallocation >> of memory is a bad thing. [quoted text clipped - 4 lines] > most people will say that garbage collection is a bad thing when it > comes to a language like Java. No. Look at all the new languages. GC is becoming the standard.
The reason is that it is unrealistic to expect all programmers to have "attention and discipline".
>> C++ templates can do some things that Java generics can not. > > Like operator overloading? That is not really related to templates.
But that is another feature C++ has that Java does not.
It would be relative risk free to add it to Java. But not that important in my opinion.
Of course << and >> should not be used for IO.
Arne
Jon - 13 Mar 2007 12:08 GMT > > I wasn't really amazed of the number of pages listed. I can imagine > > the frustration of some newbie when, first, tweeking the installation [quoted text clipped - 20 lines] > C++ templates can do some things that Java generics can not. And > vice versa. They are simply relative different concepts. You can do things with multiple inheritance that can never be done with interface implementations alone. Can it be abused? probably. Does that justify tieing the programmers hands? I would argue no.
I find the statement that "explicit deallocation of memory is a bad thing" to be laughable. It assumes that this MUST be done in C++. If you look at boost shared pointers and the like you will find that object lifetime can be easily and, more importantly, predictably managed. There seems to be an implicit assumption in this rather childish statement in the philosophy behind garbage collection that memory is the only resource that must be managed. File handles, network connections, and other resources that are just as important to manage and must be managed in a way that is more deterministic that can be done by relying on garbage collection. The result is that, if you code a class in Java that must manage one of these resources, you MUST add methods that allow the application to release the resources and these MUST be invoked before the object reference is released. So, tell me again, how does GC really help here??
There are a lot of other "features" of Java that I find very annoying. Examples:
- Lack of unsigned integer types. I realise that, with two's complement math, the math operations between signed and unsigned is all the same. However, I find that not being able to use unsigned types results in sign extension in places where it was not expected and results in casting/masking operations that only serve to clutter the source code.
- Bit shift operations only appear to be implemented for the integer type. The result: if I am trying to do bit shifts on something smaller than an integer, a byte or a short, the arguments are promoted to integers and the reslt of the shift is an integer. So in order to assign that back to something smaller than an integer, guess what, yet another cast is needed.
Me measure of the "goodness" of a language or its implementation is whether I can accomplish the task I set out to do without having to fight the language or its implementation. If I have to litter my code with cluttering casts simply to produce the correct results or to satisfy the childish demands of the compiler, I become annoyed. If the language hobbles me rather than allowing me to express the design, it also becomes annoying. My personal experience is that Java is cluttered with these kind of issues.
It seems to be easy to forget that there are reasons for writing programs that transcend the language or environment in which it is developed. At the end of the day, my value to my employer is not in the languages I have mastered but in what I can produce that can solve our customers problems and/or needs. To the extent that the language and/or environment facilitates that, it becomes a valuable tool. To the extent that the language/environment fetters that, it becomes less valuable and less likely to be chosen as a tool. No language or environment is free from blemish. Java has some real advantages but I do not consider it a replacement for what can be done in C++.
Oliver Wong - 13 Mar 2007 17:26 GMT On Mar 12, 6:41 pm, Arne Vajhøj <a...@vajhoej.dk> wrote:
> You can do things with multiple inheritance that can never be done > with interface implementations alone. Nitpick, but I think Alan Turing would disagree with you (http://en.wikipedia.org/wiki/Turing_completeness)
> Can it be abused? probably. > Does that justify tieing the programmers hands? I would argue no. And I would argue "yes". It sounds like you're looking at this from a programmer's perspective (and more precisely, from a highly skilled programmer's perspective): "I can handle C++, so there's no reason for a programming language like Java to exist, or if Java must exists, there's no reason for it to be significantly different from C++."
To determine whether something justifies a decision-maker's decision, look at it from the perspective of that decision-maker: Sun wanted to invent a new programming language that would be attractive to large corporations. The majority of programmers at the time were using C++, so its Java was designed with similar syntax. But Java didn't need to stay backwards compatible with C, so they removed a lot of parts that the Java-team deemed "ugly" which was probably mainly maintained in C++ primarily for backwards compatibility.
Additionally, the majority of programmers are mediocre (this is by definition of "mediocre"), and were abusing and getting entangled in some of C++ more complex parts. For these particular programmers, things like multiple-inheritance and other such features were doing more harm than good, and so they were removed from Java.
By creating and releasing Java, Sun did not "tie" anyone's hands in the sense of "removing" freedom: Any programmers who want to program in C++ are free to do so. Instead, they added freedom by allowing programmers who wish to guarantee that they'll never need to encounter MI and other "complex" features of C++ the freedom to do so: by working in Java instead.
> I find the statement that "explicit deallocation of memory is a bad > thing" to be laughable. It assumes that this MUST be done in C++. If [quoted text clipped - 10 lines] > and these MUST be invoked before the object reference is released. > So, tell me again, how does GC really help here?? It doesn't. GC is meant for collecting memory-related garbage. For things like network connections and file handles, you'd typically use a "try-finally" statement to release those resources.
> There are a lot of other "features" of Java that I find very > annoying. Examples: [quoted text clipped - 5 lines] > and results in casting/masking operations that only serve to clutter > the source code. Has anyone really ever claimed this to be a "feature"? I've occasionally been annoyed by this: You know, like when I'm writing a game, and I want some data type which can store a bit more than than an int, but not so much as a long, and which will never store a negative value (e.g. damage done via some weapon), and I feel a bit bad about wasting 4 extra bytes for using a long instead of an int. But really, it's a minor annoyance, and it usually passes as soon as I move onto other parts of the game.
> - Bit shift operations only appear to be implemented for the integer > type. The result: if I am trying to do bit shifts on something > smaller than an integer, a byte or a short, the arguments are promoted > to integers and the reslt of the shift is an integer. So in order to > assign that back to something smaller than an integer, guess what, > yet another cast is needed. This may be just a personal perception, but bit-shifting seems like one of those things which is getting "close to the hardware", and thus outside of Java's area of expertise. The only domain I know where bit shifting is really used from a mathematical (and thus machine-agnostic) perspective is cryptography, but I understand that Sun provides some library support for common cryptographic manipulations, so you shouldn't need to write your own anyway. I've never used this part of the library, so I don't know how good, or complete, they are, but from limited study of cryptography I've done, the number one lesson seems to be that you probably shouldn't be writing your own cryptography routines anyway.
> Me measure of the "goodness" of a language or its implementation is > whether I can accomplish the task I set out to do without having to [quoted text clipped - 4 lines] > it also becomes annoying. My personal experience is that Java is > cluttered with these kind of issues. I think a lot of people feel the same way about, e.g., C++ or Python, or any other language. E.g. "Memory leak? Can't the compiler/runtime-environment/whatever see when I'm done with this object and get rid of it for me?" or "I have to play with the whitespace to make the compiler happy? WTF?"
I think until AI has progressed enough that natural language is viable as a programming language, then for every programming language, there will exist someone out there who will consider some of the "demands" of the compiler to be "childish". Perhaps even with natural language, there will be some pointy haired boss out there who will still consider certain demands (e.g. logical self-consistency) to be childish. "Do what I mean, not what I say".
> It seems to be easy to forget that there are reasons for writing > programs that transcend the language or environment in which it is [quoted text clipped - 6 lines] > environment is free from blemish. Java has some real advantages but I > do not consider it a replacement for what can be done in C++. And I don't think Java is marketed as a replacement for what *can* be done in C++. There are some programs which are better expressed in C++, and there are some programs that are better expressed in Java. Because of momentum, there are a bunch of programs which would be better expressed in Java, but which are currently being written in C++. It's *those* programs for which Java is being pushed as a replacement for C++.
- Oliver
Chris Uppal - 13 Mar 2007 19:02 GMT > > - Lack of unsigned integer types. [...] > > [...]. But really, it's a minor > annoyance, and it usually passes as soon as I move onto other parts of the > game. It's a Very Major Annoyance if you have to interwork with systems which use unsigned quantities (and such systems are anything but rare). For instance if you are reading 32-bit unsigned data from a database or from a network connection then you have problems (solvable, but significant). If you are reading 64-bit unsigned data from a database or network connection then you have /serious/ semantic problems to surmount.
> This may be just a personal perception, but bit-shifting seems like > one of those things which is getting "close to the hardware", and thus > outside of Java's area of expertise. The only domain I know where bit > shifting is really used from a mathematical (and thus machine-agnostic) > perspective is cryptography, And anything which has to interwork with external systems (which includes file formats of all kinds as well as networking). And anything which needs bit-level operations to express designs that /could/ be done another way, but which -- for reasons of clarity[*] or efficiency -- should not be. In fact, there are lots of applications for bit-twiddling...
But then, I find Java's bit-twiddling operations perfectly adequate, in both theory and practise -- they are after all identical to what C or C++ provide (with a few caveats about sign extension).
(The only real annoyance is that >> performs sign-extension, which is daft.)
> [...] or "I have to play with the whitespace to make > the compiler happy? WTF?" Presumably people who like white-space-is-significant languages (I have mixed feelings myself) would say "I have to play with { and } to make the compiler happy? WTF?" ;-)
-- chris
[*] It's instructive to read first Sedgewick's "Algorithms" book, which used Pascal, and his criticisms of Pascal for a lack of bit-twiddling operations which makes some important algorithms harder to think about or express in code.
Arne Vajhøj - 14 Mar 2007 02:18 GMT >> I think most agree that multiple inheritance and explicit deallocation >> of memory is a bad thing. [quoted text clipped - 5 lines] > with interface implementations alone. Can it be abused? probably. > Does that justify tieing the programmers hands? I would argue no. It is very rare to have a need for multiple inheritance.
And experience has shown that the dreaded DoD often surprise people.
> I find the statement that "explicit deallocation of memory is a bad > thing" to be laughable. It assumes that this MUST be done in C++. If [quoted text clipped - 10 lines] > and these MUST be invoked before the object reference is released. > So, tell me again, how does GC really help here?? You can write "laughable" and "childish" many times.
Any programmer who have worked with C/C++ knows that there is almost always some team member than manage to create a memory leak.
If all programmers were perfect, then GC would not be necessary. Except for the improved performance.
That automatic memory release does not handle non memory resources is not particular surprising. But I can not see it as an argument against automatic memory release.
> - Lack of unsigned integer types. I realise that, with two's > complement math, the math operations between signed and unsigned is [quoted text clipped - 9 lines] > assign that back to something smaller than an integer, guess what, > yet another cast is needed. I agree.
> It seems to be easy to forget that there are reasons for writing > programs that transcend the language or environment in which it is [quoted text clipped - 6 lines] > environment is free from blemish. Java has some real advantages but I > do not consider it a replacement for what can be done in C++. C/C++ will exist for many years. It may outlive Java and C#. But the usage of C/C++ is going to be small in the next decade compared with Java, C# and the scripting languages.
Arne
Mark Space - 14 Mar 2007 16:33 GMT > Any programmer who have worked with C/C++ knows that > there is almost always some team member than manage > to create a memory leak. Yeah! I hate that guy!
Oh wait.... ;)
Joshua Cranmer - 13 Mar 2007 03:19 GMT > Today, I've googled for "i hate java" and "java sucks". > [quoted text clipped - 7 lines] > have been done. Then, you get simply lost when learning: What class' > should I start with? How do I choose one?... Looking at the CS curriculum and experiences of fellow students, I can see why some people hate Java: it's the first programming language they use and it's difficult for them. I know many people who get caught up in one annoying bug and then blast it as a reason that XYZ "sucks" or "should rot in hell", etc. Even more experience: I know people who hate programming in C because of the difficulty with pointers.
> For the rest, the problem is with java the programming language (not > the virtual machine): Java is seen by many people as a toy programming > language. No multiple inheritance, garbage collection and the > templates are childish. Multiple inheritance can get quickly problematic, AI used LISP mostly because it had GC, and C++ templates can get ugly sometimes (STL, anyone?). People will complain that Java goes too far/not enough until the end of time.
> For me, all the staff above wasn't my problem. My problem was with > accepting that such an amazing VM that can run on multiple [quoted text clipped - 3 lines] > ready to compete with Java). The one that had my attention the most is > Jython. The power of python within a Java VM :) Python -- the most backwards-incompatible language I've ever seen. As a side note, Java (the VM) is the most backwards-compatible language I've ever seen. Between Java 1.0 and Java 1.6, despite all of the features implemented on the programming language, functionally, the only changes in the virtual machine have been a shift in invokespecial, the deprecation of jsr/ret, and the newer, more stringent bytecode verification. If you changed a class version 50.0 to 45.0, /the code would still run/. That's impressive.
Oliver Wong - 13 Mar 2007 17:35 GMT > Looking at the CS curriculum and experiences of fellow students, I can > see why some people hate Java: it's the first programming language they > use and it's difficult for them. I know many people who get caught up in > one annoying bug and then blast it as a reason that XYZ "sucks" or > "should rot in hell", etc. Indeed. I don't know why they don't start off with BASIC or some other simple, imperitive language instead (simply don't teach the students the "GOTO" keyword, and if they discover it via some other source, explain to them that it's simply there for historical reasons, and its usage is generally discouraged, and from then on, penalize their grades if it starts showing up in their code).
The imperivative paradigm is much easier to grasp than the OO one, and starting off with a language like Java means you either have to jump right into OO, thus confusing them terribly, or do a lot of handwaving over the keywords "public", "class" and "static", and say "Just always make everything public, and make all your methods static. I'll tell you why next year. Oh, and the compiler will let you declare variables inside of classes, but outside of methods. But don't do that. Always declare all your variables inside of methods. At least until next year, where you'll then need to start declaring variables in the classes, and outside of the methods, and they won't be static anymore."
Python (since it was mentioned several times in this thread) might actually be a good beginner language, though I've never met anyone whose first language was Python, so I don't have any empirical evidence to back up this theory.
[...]
> Python -- the most backwards-incompatible language I've ever seen. While I've written a few simple apps in Python (mainly for coursework back when I was in university), I don't know enough Python to have ever encountered any backwards-incompatibility issues. Have you also used PHP? Is it worse than the PHP4-PHP5 transition?
- Oliver
Joshua Cranmer - 13 Mar 2007 22:52 GMT >> Looking at the CS curriculum and experiences of fellow students, I can >> see why some people hate Java: it's the first programming language they [quoted text clipped - 8 lines] > generally discouraged, and from then on, penalize their grades if it > starts showing up in their code). Discouraged thanks to Dijkstra's "Goto considered harmful in programming." I'd be fine with BASIC, except it has 1-based arrays, which means making BASIC/C, BASIC/Java, etc. jumps difficult. I can't think of any suitable language that looks reasonably like C, C++, Java, Python, etc. is imperative, and yet shields users from caveats (like C pointers: not a good thing for CS neophytes).
> The imperivative paradigm is much easier to grasp than the OO one, and > starting off with a language like Java means you either have to jump right [quoted text clipped - 19 lines] > encountered any backwards-incompatibility issues. Have you also used PHP? > Is it worse than the PHP4-PHP5 transition? I've used PHP4 and PHP5, so I know about that horrible transition, but my point about Python is that the bytecode is incompatible, not the actual language itself, so that opens up more cans of worms. It took around an hour trying to figure out why a code compiled with python-2.3 wouldn't run with code written with python-2.4 (at the time, we didn't know there was a difference). The error's didn't help, although I must admit, PHP's was pretty bad. At the very least, version 4 to version 5 implies a big change, where as 2.3 to 2.4 doesn't imply such a change.
On second thought, gcc changed its name-mangling scheme too at some point, so maybe I should retract my statement in favor of clarity. Ah well.
Lew - 14 Mar 2007 05:24 GMT > (like C pointers: not a good thing for CS neophytes). Actually, they are the perfect thing for CS neophytes. The problem is that neophytes are coddled with Java and never have to confront wild pointers. (They frequently don't have to learn analytic thinking, either, but that's a separate issue.) Better to start them on something hard and really understand what is up with these computer things than wait until they hit the work world as programmers and don't understand /why/ Struts has an Action class framework or why dereferencing a null variable is a Bad Thing.
Programming is really not a simple exercise and we should really work those neophytes' a.ses off to learn it instead of turning them loose half baked.
-- Lew
Free MagazinesGet these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...
|
|
|