Garbage collection: Wrong! You can add GC to C and C++ (Google for the "Boehm" garbage collector)
Gosh, really? I'm quite well aware of GC allocators for C++, but that hardly goes and retrospectively refits all your 3rd party library code to use it, now does it?
Bounds checking in C/C++: Add a BoundsCheckedArray which supports the same operations as a native array, and you can use them almost interchangably.
Ditto: the existence of smart ADTs doesn't cause all your third party code to be miraculously recoded to use it, now does it? OTOH, Java has that kind of safety through and through.
You accepted that static typing is a maintability bonus and you avoided mentioning checked exceptions which I assume means you accept that point too. The existence of half-hearted tack-on imitations for C++ does more to prove that these basic features of Java are desirable features for maintainability
The thing is, there is quite a difference between being designed from the core outwards for security and safety, and being retrofitted with features bolted on the side over the top of core code which will never share the new enhancements.
The above leads me to believe that you have absolutely no idea what you're talking about or trolling.
Yeah, well with 20 years coding experience and the majority of my professional career coding in C++, I'm just going to back that I do know what I'm talking about.
Take a chill pill dude - C++ is a great language, but if you can't see its security and complexity failings then you've got a serious case of language bigotry going on. All languages have faults, and those are C++'s.
All I can say about that is that I am a long term hacker. I LOVE C, C++, Python, LISP AND I love Java too.
I really enjoy C for low level hacking - in fact, I've done a bit of asm as well, but I prefer C. I really enjoy Python for scripting goodness (small, fast to write). And likewise, LISP rocks for its organic approach to code production.
But Java is very cool for what Java does (large, stable, maintable).
I find myself time and time suprised that it just doesn't seem obvious to experienced developers who I assume populate/. that this is simply a case of the right tool for the job. But no, yet again we get the same old "anyone using Java must be defective" meme. Tools are just tools
I don't disagree with a lot of what you say. Just that Java is not popular *now* because of hype. It was hyped at one point, and I ignored it during the period (actually I looked at it, but it was too slow).
Things have changed. The hype is in the past, Java is a popular language now for real tasks - hence all the jobs in Java - that's not hype, that's work being done. You can't say that the majority of jobs being done are by dot com newbies with Java - glint in their eyes.
I suppose the reason I like Java is that I tend to program large systems for which maintainability and stability are important. C++ is the other major player in this area, but where C++ has more ability to get close to the metal, I don't need that , and C++ loses out on GC, bounds checking, security management etc...
But again, like *every* language, whether it is the best fit or not depends on your problem domain. The popularity of Java shows that it fits a lot of problem domains well. The/. meme that Java sucks because it's not elite is somewhat infantile. Being cutting edge is not relevant to getting work done.
Java Python and Perl are simply NOT aimed at the same target. The things I would gladly write in Python or Perl I just wouldn't consider Java for.
Insisting that one and only one language is the true language is just silly.
Having programmed in Java, Python, Perl, and a motley variety of other languages, I've got to say, if you are happy in Java, especially after having tasted Perl or Python (or Ruby or Ocaml or whatever)... no, you're not one of the great and yes, they will sound arrogant. But their claims, nonetheless, will be true.
Uh huh....
Look, I'm a software engineer with 20 years experience. I'm no newbie by a long shot, and as much as I back myself and my skills, I would never say such a bullshit statement as "if you're happy with language X, then you can't be one of the great"
Java has nothing about it that makes it any more maintainable than any other language.
Untrue. Checked execeptions and strong typing are two features that Java has over Python, for example, which aid maintainability.
Over languages like C and C++ you may add garbage collection, bounds checking, security constraints.
And anyway, Herd mentality??? What the hell kind of comment is that if not a continuation of the kind of language bigotry that I was posting about in the first place.
FYI LISP is one of my favourate languages (I've written several LISP interpretters for work in my time) and I agree that it's great. But that said, I still wouldn't go where you seem so keen to go and just disparage vast swathes of the developer landscape just because it's not *your* favourite language under discussion
Is suited to people who simply want to write large bodies of maintainable code. It's not intended for small hacks, nor is it intended for being close-to-the-metal.
The idea that one must automatically be a crap programmer because one likes Java is an egotistical and obnoxious point of view. I happen to like Python and C and C++ as well as Java, and I use all of those on occassion, but Java is no less a suitable and appropriate language to use for some tasks as any of those other languages.
I'm sorry, but Graham's dismissive attitude towards Java is evidence of extreme arrogance.
You, along with a bunch of other people, are suffering under the illusion that ECMA standard must not be patented. This is not true. The continual insistence that being an ECMA standard makes.NET somehow free to implement is simply not true.
I see - I don't agree with you so I must misunderstand C#. Sure, whatever.
For someone who has "not the slightest clue about what C# is" I could have sworn that's the programming language I've been using for the last year. But no, you tell me it's not and obviously you know everything, so I'll defer to your superior powers of ESP.
Did you write the OpenGL bindings yourself? Did you write the DirectX bindings yourself? Interfacing Java with native facilities is hard.
No, I didn't write those bindings. Quite frankly I think it would be a sign of an immature language that required me to write such basic tools, but as it happens I have written JNI bindings on several occassions (I wrote one just recently for using the DevIL image library) and it's not hard at all.
Verbose, yes, hard, no.
Even if my statement were factually wrong (which it isn't), how would it be "FUD"?
You were posting about how Mono allows platform specific coding when Java allows exactly the same thing. Your post surely emphasised that this was a difference between Mono and Java - and that is just not true. As I said, I've been coding to OpenGL, DirectX and DevIL and that's all platform specific code.
You say that Mono ships with native linux desktop bindings. Well, there are GTK bindings for Java, there is SWT for java which uses native widgets and there's Swing and AWT as well. It's not as if Java is locking you into one way of doing things or denying you the chance to go native. Then you say:
Furthermore, you can write native interfaces in Mono without ever having to write a line of C or C++ code--you just declare the C library interface in your C# code and call it. Try doing that in Java.
But this is exactly what Java does offer you through the GTK bindings or via SWT. That sure as hell sounds like FUD to me when you suggest that Java cannot do the same thing when it was already doing so.
The ironic thing about this is that Java actually offers a more fully featured API for writing code on Windows than.NET does.
Let's see... off the top of my head: * although windows allows icons in menus,.NET doesn't, Java does *.NET doesn't have a general purpose table component (DataGrid is designed to attach to Databases and just does not do some of the things you want tables to do) *.NET doesn't support double buffering (you have to implement it yourself) *.NET doesn't support transparency (no transparent backgrounds for labels, for example) *.NET doesn't have an Action component (ala Java and Delphi)
The reality is that Java has a very well developed, secure and fully featured API..NET's API is extremely thin and of patchy quality.
I fully agree that C is not a great language to write secure code in - neither is C++. I do think that C's simplicty is a fact, however, and was a major reason why it was so popular and why Ada never was.
I notice a lot of discontent with C++ too, and I think that a lot of that is to do with complexity. It makes it very easy to write bad C++.
Oh come on, K&R is the standard C reference and it;s barely enough to fan yourself with.
I don't doubt that Ada's many features are useful, but I lean toward languages which have a smaller basic set of features.
Your example showed that C has a lot of different types of OPERATORS, but it doesn't show a lot of different types of THINGS. C has primitives, structs, functions, operators, includes and source files and thats about it. Ada has a MUCH larger collection of objects to know about.
For anyone that bothers to defend Java in this respect with "well, it's the coders' fault! just use API XYZ123!", why on earth does Sun make a language that is SO EASY to make slow stuff in? Why isn't the default way of making Java stuff FAST?
So if a PC programmer writes a 3d game using the GDI rather than DirectX, and it *sucks* then it's M$'s fault that the GDI was slow?????
You choose the right tool for the job! Swing is roughly equivallent to MFC - it's not *intended* for writing games in, it's *intended* to be easy to write consistant and secure GUIs in.
I mean, c'mon, how frickin' cool would it be to have this kind of 3D desktop running on an Opteron-based Linux machine with a really nice graphics card in it? Damn! You should be singing the praises of Sun right now, what's wrong with you, man, what's it take to get you excited ?!? You get FP and *that* is the best you can do, a tired old "what about Java" bitch ?!? This is about a cool 3D desktop demo going GPL !
Because a number of posters to/. have a bee in their bonnet about Sun and Java and have a knee-jerk java == bad response to any topic regarding Java and anything to do with Sun.
I accept that there are valid reasons to critice Sun (I've emailed them entreating them to be more open source and Linux friendly on several occassions myself), but they also do lots of good things.
They opensourced Open Office - the/. crowd moans that Java is not OS.
They opensourced Java 3D - the/. crowd moans that Java is not OS.
They opensource Looking glass, they announced that they will be open sourcing Solaris, they announced that Java will be open sourced once they've figured out exactly how they want to go about it and what it means for their business. And *still* the bleating/. crowd moans about Sun.
They've done a lot more for OS than most traditional IT companies, especially considering that they are much smaller and have less resources than IBM.
Jesus, Sourceforge is stuffed with great Open Source Java code and still the/. drone bleat about how Java is evil. It makes me sick.
To those people: grow up. C and C++ are not the answer to all programming problems, Java is better for a lot of tasks than those languages. Sun is not the Devil and Java is not the fourth rider of the apocolypse.
Basically, the higher of a language you use, the less secure you can possibly be because of all of the implications of trusting trust. If you can't audit it, you can't trust it. End of discussion.
This simply is not true. There are many more security flaws in code written in C and C++ than Java, and this is a fact. If the quote was correct, the opposite would be the case. But it is not.
Agreed. IMO Python / Java make a great pair of programming languages. Java's strictness is a boon in large scale programs and Python's flexibility makes it very powerful for scripting / glue / small programs
Gosh, really? I'm quite well aware of GC allocators for C++, but that hardly goes and retrospectively refits all your 3rd party library code to use it, now does it?
Bounds checking in C/C++: Add a BoundsCheckedArray which supports the same operations as a native array, and you can use them almost interchangably.
Ditto: the existence of smart ADTs doesn't cause all your third party code to be miraculously recoded to use it, now does it? OTOH, Java has that kind of safety through and through.
You accepted that static typing is a maintability bonus and you avoided mentioning checked exceptions which I assume means you accept that point too. The existence of half-hearted tack-on imitations for C++ does more to prove that these basic features of Java are desirable features for maintainability
The thing is, there is quite a difference between being designed from the core outwards for security and safety, and being retrofitted with features bolted on the side over the top of core code which will never share the new enhancements.
The above leads me to believe that you have absolutely no idea what you're talking about or trolling.
Yeah, well with 20 years coding experience and the majority of my professional career coding in C++, I'm just going to back that I do know what I'm talking about.
Take a chill pill dude - C++ is a great language, but if you can't see its security and complexity failings then you've got a serious case of language bigotry going on. All languages have faults, and those are C++'s.
All I can say about that is that I am a long term hacker. I LOVE C, C++, Python, LISP AND I love Java too.
/. that this is simply a case of the right tool for the job. But no, yet again we get the same old "anyone using Java must be defective" meme. Tools are just tools
I really enjoy C for low level hacking - in fact, I've done a bit of asm as well, but I prefer C.
I really enjoy Python for scripting goodness (small, fast to write). And likewise, LISP rocks for its organic approach to code production.
But Java is very cool for what Java does (large, stable, maintable).
I find myself time and time suprised that it just doesn't seem obvious to experienced developers who I assume populate
I don't disagree with a lot of what you say. Just that Java is not popular *now* because of hype. It was hyped at one point, and I ignored it during the period (actually I looked at it, but it was too slow).
/. meme that Java sucks because it's not elite is somewhat infantile. Being cutting edge is not relevant to getting work done.
Things have changed. The hype is in the past, Java is a popular language now for real tasks - hence all the jobs in Java - that's not hype, that's work being done. You can't say that the majority of jobs being done are by dot com newbies with Java - glint in their eyes.
I suppose the reason I like Java is that I tend to program large systems for which maintainability and stability are important. C++ is the other major player in this area, but where C++ has more ability to get close to the metal, I don't need that , and C++ loses out on GC, bounds checking, security management etc...
But again, like *every* language, whether it is the best fit or not depends on your problem domain. The popularity of Java shows that it fits a lot of problem domains well. The
Insisting that one and only one language is the true language is just silly.
Having programmed in Java, Python, Perl, and a motley variety of other languages, I've got to say, if you are happy in Java, especially after having tasted Perl or Python (or Ruby or Ocaml or whatever)... no, you're not one of the great and yes, they will sound arrogant. But their claims, nonetheless, will be true.
Uh huh....
Look, I'm a software engineer with 20 years experience. I'm no newbie by a long shot, and as much as I back myself and my skills, I would never say such a bullshit statement as "if you're happy with language X, then you can't be one of the great"
Your milage obviously varies
Untrue. Checked execeptions and strong typing are two features that Java has over Python, for example, which aid maintainability.
Over languages like C and C++ you may add garbage collection, bounds checking, security constraints.
And anyway, Herd mentality??? What the hell kind of comment is that if not a continuation of the kind of language bigotry that I was posting about in the first place.
FYI LISP is one of my favourate languages (I've written several LISP interpretters for work in my time) and I agree that it's great. But that said, I still wouldn't go where you seem so keen to go and just disparage vast swathes of the developer landscape just because it's not *your* favourite language under discussion
Is suited to people who simply want to write large bodies of maintainable code. It's not intended for small hacks, nor is it intended for being close-to-the-metal.
The idea that one must automatically be a crap programmer because one likes Java is an egotistical and obnoxious point of view. I happen to like Python and C and C++ as well as Java, and I use all of those on occassion, but Java is no less a suitable and appropriate language to use for some tasks as any of those other languages.
I'm sorry, but Graham's dismissive attitude towards Java is evidence of extreme arrogance.
You, along with a bunch of other people, are suffering under the illusion that ECMA standard must not be patented. This is not true. The continual insistence that being an ECMA standard makes .NET somehow free to implement is simply not true.
Buf of course Mono will be fine and M$ will leave it alone because M$ loves OSS.
I see - I don't agree with you so I must misunderstand C#. Sure, whatever.
For someone who has "not the slightest clue about what C# is" I could have sworn that's the programming language I've been using for the last year. But no, you tell me it's not and obviously you know everything, so I'll defer to your superior powers of ESP.
Verbose, yes, hard, no.
You were posting about how Mono allows platform specific coding when Java allows exactly the same thing. Your post surely emphasised that this was a difference between Mono and Java - and that is just not true. As I said, I've been coding to OpenGL, DirectX and DevIL and that's all platform specific code.You say that Mono ships with native linux desktop bindings. Well, there are GTK bindings for Java, there is SWT for java which uses native widgets and there's Swing and AWT as well. It's not as if Java is locking you into one way of doing things or denying you the chance to go native. Then you say:
But this is exactly what Java does offer you through the GTK bindings or via SWT. That sure as hell sounds like FUD to me when you suggest that Java cannot do the same thing when it was already doing so.How about performance?
ECMA does not prevent patents on standards, nor charging for those patents.
I'm using Java to work with OpenGL and DirectX - is that platform specfic enough for you?
Your post is pure FUD - you've been able to write dirty Java from the outset.
The ironic thing about this is that Java actually offers a more fully featured API for writing code on Windows than .NET does.
.NET doesn't, Java does .NET doesn't have a general purpose table component (DataGrid is designed to attach to Databases and just does not do some of the things you want tables to do) .NET doesn't support double buffering (you have to implement it yourself) .NET doesn't support transparency (no transparent backgrounds for labels, for example) .NET doesn't have an Action component (ala Java and Delphi)
.NET's API is extremely thin and of patchy quality.
Let's see... off the top of my head:
* although windows allows icons in menus,
*
*
*
*
The reality is that Java has a very well developed, secure and fully featured API.
I fully agree that C is not a great language to write secure code in - neither is C++. I do think that C's simplicty is a fact, however, and was a major reason why it was so popular and why Ada never was.
I notice a lot of discontent with C++ too, and I think that a lot of that is to do with complexity. It makes it very easy to write bad C++.
Okay, appologies if that was a joke. I've just got *really* sick of the Sun-bad Java-bad mantra that seems to be unthinkingly churned out at /.
My bad.
Oh come on, K&R is the standard C reference and it;s barely enough to fan yourself with.
I don't doubt that Ada's many features are useful, but I lean toward languages which have a smaller basic set of features.
Your example showed that C has a lot of different types of OPERATORS, but it doesn't show a lot of different types of THINGS. C has primitives, structs, functions, operators, includes and source files and thats about it. Ada has a MUCH larger collection of objects to know about.
Apparantly Slashbots cant figure that out.
Sun bad...
Java evil...
Sun bad...
Java evil...
Sun bad...
Java evil...
The night of the living C programmer.
Here's another good one:
http://www.tribaltrouble.com/index.php
Yeah, that's right, they wanted to spend years and millions of dollars fighting a law suit against M$ because they really want to be M$ cronies...
And of course, having won the case they should have said "no thanks" and let M$ keep it's cash.
Give me a fucking break, you are the Slashbot incarnate!
This simply is not true. There are many more security flaws in code written in C and C++ than Java, and this is a fact. If the quote was correct, the opposite would be the case. But it is not.
Really? Name a single exploit that you can execute on every JVM.
Agreed. IMO Python / Java make a great pair of programming languages. Java's strictness is a boon in large scale programs and Python's flexibility makes it very powerful for scripting / glue / small programs