Google Donates Windowbuilder, Codepro To Eclipse
h00manist writes "Google is donating Windowbuilder Pro and Codepro Profiler to the Eclipse project. 'Google acquired the software when it bought Instantiations, relaunching the Java graphical user interface building tool Windowbuilder Pro shortly after. Now the outfit has decided to donate both Windowbuilder Pro and the code analysis tool Codepro to the open source Eclipse project. Although Google has announced its intention to donate the software, it needs go through a rigorous filtering process to ensure that no intellectual property rights will be breached. Once those formalities are dealt with, it is likely that both Windowbuilder Pro and Codepro will tip up in the Indigo release of Eclipse sometime in June 2011.'"
Isn't Java getting on in years and in need of being replaced by something more modern?
no.
am more interested in CodePro. And what more it has to offer compared to YourKit
Eclipse PDE and Me
I don't like Java much myself, but I don't see it going anywhere. A staggering amount of java based (Android?) devices are shipped daily. Once the iPad version is released you may even see some folks switching (back) to it.
No. About 18% of all code written in 2010 was in Java. That's a huge percentage -- C had only 16%, and JavaScript (supposedly the hot new thing) is at 1.5%.
Believe it or not, Ruby hipsters on Reddit turn out not to be representative of the whole world.
Out of curiosity, the iPad version of what?
Yes, something modern like C or C++
Strictly speaking, it doesn't need replacement...
But - ORCL is hard at work at trying to alienate people away from java... ;-)
What do you think makes google want to donate the code to the public? Is it the insight that the market might be dying if Oracle doesn't finally get a clue...?
Of the market by using Smalltalk. Its great to Instantiations still in business, and focused on Smalltalk. I find it very perplexing that Google bought the Java tools from them while leaving the Smalltalk business and dev folks behind that used Smalltalk to create these Java tools. When folks finally get to the real world of Smalltalk and its power, and Java is realized for its weaknesses maybe we'll all get back to the real work of creating real tools for real people with real problems to solve.
Meanwhile, people doing real low-level or time-critical work use assembler/C/C++, and people doing real high-level work don't go for a primitive imperative language which looks like C/C++ with training wheels.
Riiiiight. I wonder, where do people go who want to be able to find people to maintain their software for, say, a decade? Except for COBOL, of course... and that's going to get seriously expensive. (God, I really wish I was kidding about COBOL.)
Wake me up when one of the 'real high level' languages (whichever is your personal poison) has found a significant market and mind share. Meanwhile, I'll stick with whatever language fits the problem, instead of fitting the problem to my favourite language.
I suppose he is quoting the tiobe index because the numbers match: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html - however, taking this as an estimate of the amount of code that has been written in a given language is a wild guess at best.
If I had to take my own wild guess off the top of my head, I think I'd give Java more than 18% of the code written in 2010, though. C and C++ added together get quite more popularity than Java, but I don't think their usage in the enterprise is comparable to that of Java.
That's because Java is so much more verbose ;)
Seems he was referring to the Tiobe community index at: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Yes, it's controversial and probably a bit off the real numbers, but real numbers are near impossible to get. How do you want to know what people use in their closed projects? Nobody ever publishes that data.
Now if you check out a different chart, the language distribution of Github projects, you'd get a totally different picture: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html , but it's also not very representative for the entire ecosystem.
Riiiiight. I wonder, where do people go who want to be able to find people to maintain their software for, say, a decade? Except for COBOL, of course...
Errrr... Java debuted in 1995, and 2000 saw J2SE 1.3... it's almost 2011 now, does that count as a decade?
Breakfast served all day!
Java is quite stable and quite fast. It has extensive documentation, some really really nice libraries to work with. This can be said about a lot of languages, but Java also has a very low learning curve, it's very fast to get started with on big projects and it just works [tm].
I used to hate Java, it was a buggy pile of poo, but the last couple of years I've been working quite a lot with Java and must say I'm truly impressed with what you can do today. Yes, you can get significant speedups using C/C++, however, I can build a safe multithreaded application way faster in Java than C/C++, thus making it a favorite for my set of problems (which happens to consist mostly of embarrassingly parallel problems).
It's Java. That's where my interest ends, especially after Google's own fight with Oracle.
Now if you do integrate a couple of decent C profiling tools, I'd be interested.
This seems great, but it pisses me off that the lawyers have to get involved. It seems shockingly bad to me that we accept that there has to be lawyers too. That's how deeply they've embedded themselves into software licensing.
Training monkeys for world domination since 1439
Love Java. Love Eclipse. Sounds like my IDE of choice is going to get a lot stronger.
Errrr... Java debuted in 1995, and 2000 saw J2SE 1.3... it's almost 2011 now, does that count as a decade?
It most certainly does. C/C++, Java and C# are going to be around for quite a while yet: the odds are favourable for any language that has survived for long enough, and in which a sufficient number of people are capable if not proficient, whatever the technical merits of the languages in question (which shouldn't be scorned).
I was attempting being facetious about FuckingNickName's (what an elegant nick!) assertion that newer (or, in his/her/its terms, 'more high level') languages are always the better option. In engineering, you always have to deal with tradeoffs. Language elegance or expressiveness is far from the only factor to consider.
>Isn't Java getting on in years and in need of being replaced by something more modern?
Yeah, just like C and C++ are about to be replaced (not).
Oh, and it's the top language on Sourceforge with 45k projects (C++ has 35k, and PHP 29k).
So, yeah, someone's using it. In addition to the community, 90% of Fortune 500 companies use it (that seems low to me). Also see here and here.
This is not to say Sun didn't mess up their chance to be even more dominant. Execs generally tend to want to use in the enterprise what they're using personally. Hence Windows Servers, and the current push to use consumer iPhones for corporations. Sun flubbed consumer Java.
I'm not a lawyer, but I play one on the Internet. Blog
Isn't Java getting on in years and in need of being replaced by something more modern?
So says you. I'd guess that you don't actually work as a programmer.
Speaking as someone who started his programming career using a mix of C and Perl, Java is a pretty good balance between a systems programming and scripting language. With the increased speed of both hardware and the JVM since Java first arrived, it's got to the point where I can rarely justify using a language like C or C++ on the grounds of performance. As for paradigms, Java's implementation of OO is so much better than C++ (methods always virtual for example) - it's just a shame that Java's generics were bolted on later in a less than ideal way. In the real world don't really see functional programming taking off, but even if it does, Scala may offer the best of both worlds.
There's another aspect to this.
Oracle's fighting with Google over how they screwed over Sun. Sun's Netbeans Java IDE heretofore had the most innovative free Java GUI designer, the so-called Matisse. Matisse gave Netbeans a major edge vs. Eclipse, the other popular free IDE. And Sun sold services based on Netbeans.
Now, granted, Google's done a lot of stuff out of the goodness of their hearts. But when you have a chance to stick to someone (Oracle) who's suing you, and also get PR points in the process, why not?
I'm not a lawyer, but I play one on the Internet. Blog
... I think he means Android tablets.
Information wants to be beer.
Did you mistakenly use the same href for your 2nd link? I didn't see anything about Github there.
Re: Tiobe stats- Basically, if you're creating a project, you'll likely use Java, C/C++, or PHP.
Btw, how annoying is it when you have to have Javascript to show a simple HTML page (tiobe.com)? Maybe Python or .NET (C#/VB.NET). Anything else is probably legacy/special requirements (COBOL) or trying to be a hipster (Ruby).
I'm not a lawyer, but I play one on the Internet. Blog
assertion that newer (or, in his/her/its terms, 'more high level')
You are dense. LISP, Mathematica and Prolog are examples of "more high level" languages than Java. They all allow you to think about the problem rather than how the computer needs to process data because none of them are paradigmatically borne of Bjarne Stroustrup raping Alan Kay. They're all older than Java too.
Yeah, but like the man said, that's far from the only factor to consider when choosing a language. Pretty much any CS grad from a reputable school will tell you that LISP (or Scheme, or another variant) is a superior language to anything else on the market. That said, name me ten major commercial software products that are written in LISP. Scratch that, name me one. It must be because the entire software industry as it has existed since the 1970s is stupider than last year's crop of CS graduates, huh?
Breakfast served all day!
And by Smalltalk you mean Objective-C right?
How we know is more important than what we know.
Especially when people write Generic Strategy Factory pattern to create a single object.
How we know is more important than what we know.
It must be because the entire software industry as it has existed since the 1970s is stupider than last year's crop of CS graduates, huh?
LISP is not suitable for building a traditional OS. (Its descendants may be suitable for a LISP Machine / emacs / other managed style OS, but we're not using them.)
LISP is not suitable for straight high performance numerical computation: FORTRAN and then C/C++ have done well there in the general case, but you might want specialised numerical packages.
LISP is not always the best choice for modelling: Mathematica is good for what I do, IME.
But, yes, much of the rest of the software industry of the last couple of decades is comprised of idiots producing bloated crap, not having got much further conceptually than "I NEED THE COMPUTER TO DO THIS TEN TIMES SO I WRITE A FOR I=1 TO 10 LOOP". Whence Java. Do you disagree?
It's fear that their personal language of choice is in a decline. I'm a Java developer. When I hear people talking about languages like Python and Ruby I start to think about whether I'm going to have to learn a new Syntax if one of my "hip" clients comes to me and says, "Waddup yo. I wants you to write me a fly app in snake!!".
People are seduced by what's shiny and new. That being said, sometimes you have to kill a dinosaur so a manual can evolve.
I've been a Java developer for 11 years and I don't use development tools written in Java. While I am gaga over server side Java, I'm not a fan of interpreted code for client applications. I've always had fast machines and Jbuilder/Ecliples/Netbeans and all of the other Java IDEs have lasted for about 15 min with me whenever I have tried a new version. I can't think of anything else more irritating than having to wait for a menu on my development tool to come up. Coworkers always rave to me how _____ has improved and is fast. It has never been true.
I've stuck to Visual Slickedit all of this time. It is written in compiled code, is fast and has a ton of Java support. It also has a ton of support for many other languages so I can use it for everything and not have to learn a new tool.
Oracle will be anxiously anticipating their handout in the coming weeks.
(sorry, I'm a bit drunk) Hahahahhahah
Meanwhile, people doing real low-level or time-critical work use assembler/C/C++, and people doing real high-level work don't go for a primitive imperative language which looks like C/C++ with training wheels.
Meanwhile, people working "in the real world" embedded devices (from Refrigerators to DVD/BluRay players to Mobile phones) work in Java.
The majority of people working in assembler and low-level languages are usually doing some *very* specific development (i.e., they are a minority) or they are doing SDKs for people to use their hardware (so that third parties can program in Java).
Ubuntu is an African word meaning 'I can't configure Debian'
A bit sad:
A Google employee got in touch with The INQUIRER to clarify that Google's donation to the Eclipse project does not include the Codepro Analytix software which it had acquired through Instantiations. The donation only includes Codepro Profiler and Windowbuilder Pro.
Ubuntu is an African word meaning 'I can't configure Debian'
No. About 18% of all code written in 2010 was in Java. That's a huge percentage -- C had only 16%, and JavaScript (supposedly the hot new thing) is at 1.5%.
OH please! How can that be anything other than a shoddy estimate? How do you go about counting ALL the code writting in 2010?? Let alone breaking it down by language. What's your source? Are we talking estimated lines of code? Are we talking about job ads? You might as well pull those percentages out of your backside if you don't quote your sources.
These posts express my own personal views, not those of my employer
Ah. I did wonder why all Blueray players are so freaking slow and uncomfortable to use. Thanks for clearing that up!
Religion is regarded by the common people as true, by the wise as false, and by rulers as useful.
Indeed. All Java needs is a way to handle general resources (e.g. file handles) in a sane way, ditch the sillier C syntax relics (e.g. case fall-through), ditch some of the sillier introduced syntax wrinkles (like package private default), get support for function(al)s, typing, inheritance, static polymorphism and then we are getting there except for the stuff I forgot ;)
Religion is regarded by the common people as true, by the wise as false, and by rulers as useful.
I have modpoints but as no one bothered to reply to this post and point it's naive, fanboy inconsistencies then I felt the need to do that myself.
First, you've claimed the following:
If by "performance" you mean noticeable lag on your regular GUI operations then your comment is reasonable. The advances in the hardware world brought us in the last decade hardware powerful enough to run a GUI written even in the most bloated interpreted language you can find in a smooth enough way to not notice any lag any more. Yet, java still lags far behind languages such as C and C++ in performance, with some data crunching benchmarks running java at least twice as slow as the C++ program compiled with G++ and and also with the C program compiled with GCC. So, in the end what you said amounts to nothing more than claiming that writing programs in C or C++ instead of Java is rarely justifiable on the grounds of performance if and only if performance is irrelevant for the application you are developing.
Then you moved on to the OO paradigm, where you made another silly claim. You stated that
This statement is absurd. Do you happen to know what any C++ programmer must do in order to get all the methods in a class to be virtual? Well, he only needs to state that they are virtual. That is it. There is absolutely nothing in C++ that forces any class method to not be virtual. As a side note, not having a method to be virtual by default is a terribly useful feature, particularly in performance terms, as a method can be called without having to waste cycles checking up with a vtable to realize what method to call.
And just to drive the point home, which is that your comment regarding the implementation of the OO paradigm in Java Vs C++ doesn't make sense, let me just mention a single issue plaguing Java that C++ implements just fine: multiple inheritance. That, alone, is a big thorn in the side of the "Java's OO implementation is much better than C++", simply because it makes it just plain wrong.
Slashdot, fix your code or at least hire someone who is competent at it to do it for you.
ups, yes I did, my mistake, the correct link is: http://www.r-chart.com/2010/08/github-stats-on-programming-languages.html
I see that WindowBuilder Pro can be used to create GWT GUIs.
Serious question: Does anybody out there use GWT? I went searched for good showcases and didn't find any good examples. If anything the examples tell me to stay away from GWT.
Well, it only shows that Ruby developers use GitHub.
Any data about SourceForge, Google Code or other similar sites?
Ignoring the expected language-wars comments for a second, this is actually really cool. These were solid, expensive pieces of software that will now reach a wider audience. Netbeans (which I don't use much) was always better than Eclipse in at least this one way - visually building GUIs. It will be nice to see Eclipse achieve parity or exceed its primary free rival in this regard, finally.
mention a single issue plaguing Java that C++ implements just fine: multiple inheritance
I had a good chuckle at that statement because in my experience, the *lack* of MI and operator overloading features is one of Java's biggest selling features. (I've worked at companies that had to make it a firing offense to use either in order to stop programmers from using these features.)
Both these features allow programmers to write elegant, stream-lined code... for themselves. Unfortunately, the guy maintaining the code who has neither the experience with the project nor the mental acuity of the original programmer to see the mental model that underlied the programmer's conception of the code then destroys everything.
In their defense, MI and operator overloading have probably protected many a programmer's job. "We can't lay off Jeff, he's the only one who will ever understand the code he wrote."
(Caveat: Of course it's *possible* to write maintainable code using these features, but it's like setting the speed limit to 120 mph - a lot more people *think* they can manage it than can actually manage it, and there's a lot of collateral damage along the way.)
This is a very good point. In Java there are numerous safe guards you can add things like concurrent maps, synchronised statements, etc.. which when combined with good multi-threaded design make multi-threaded applications very easy to control and maintain.
Personally I also find it much easier to write modular code in Java. The Plug-in architecture coupled with the removal of header files prevents you from having stealth dependencies.
These things can be done in C and C++ but it is far harder to achieve and more importantly maintain.
Right, two things:
(1) Embedded != low level, so your whole post is a straw man;
(2) Most embedded devices unnecessarily working on top of a bloated JVM are shit anyway (see AC's post for Android case).
Your sig is quite correct, though :-).
Java has its advantages as a slightly better C++ with a lot of enterprise infrastructure around it. But so much stuff is just painfully almost right with it (the generics as you mentioned, the separation of primitive types and objects, the handling of null, the way it still doesn't have closures...), I find myself hoping C# pushes it aside soon.
I am trolling
Scratch that, name me one
Yahoo Store.
(That's not necessarily a recommendation)
My God, it's Full of Source!
OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
Wrapping C/C++ in Java is doable but a pain. I'd argue that Java has such a large set of available libraries and built in APIs that you can generally do a lot more with a lot less code than in other languages.
...no love for IDEa?
Java the language is usable but its certainly not as terse as it could be. The amount of boiler plate for getters / setters being a typical example, but also things like the lack of closures and the bloat when using anonymous inner classes. The platform is also at serious risk of fragmentation because of the perception that Oracle is not doing enough to push things forward in a timely fashion. Look at the glacial pace of development for Java 7.
If Oracle aren't careful then Groovy or some other JVM language will be perceived as Java++ and the original language will get left in the dust. I wouldn't be surprised with Apache's recent falling out with the JCP that things pick up pace in that department.
Emacs.
It's not commercial, but it's arguably *very* popular.
Free Manning, jail Obama.
Netbeans developers claim that fowl play is at the heart of the latest Eclipse GUI code and existing steps in that direction may have been responsible for Eclipse's legendary slowness. The developers' claims stem from their exploratory search of the donated code, where a new GUI code a class called "Beak" was found to contain methods such as doPeck(), doSquark(), doScratch(). Further suspicions were raised when an existing Eclipse non-GUI class called Headless was found to be extending Thread class while overriding the run() method.
Apache foundation members were heard murmuring that these revelations should be no surprise given the way the Eclipse Foundation members voted in the recent JCP vote.
I don't see multiple inheritance as a vital feature. As you've stated, it is possible to work around it without much hassle. So, it may be very useful and convenient but it is not a vital feature.
That being said, the reason I made a point of mentioning multiple inheritance was to point out how absurd LizardKing's comment was. You simply cannot claim that a particular implementation is "so much better" than another when the allegedly better implementation at best implements some fundamental features in a half-assed way and at worse simply fails to implement them. As this is a (somewhat) technical forum, people must limit themselves to the facts regarding the technology and avoid unleashing the fanboy in them to boast about their pet tech through absurd and patently false statements such as the ones which I've pointed out. It diminishes the technology and it denigrates the people who are seriously invested in it.
Slashdot, fix your code or at least hire someone who is competent at it to do it for you.
Inheritance in general is not that relevant. People overuse it and ruin their designs that way. With some exceptions, most things should be modelled with composition instead.
However, just like inheritance is sometimes actually useful, so is multiple inheritance.
Unfortunately, they don't tell you this in college. It takes a couple of far too deep inheritance designs to realize that maybe what they told you about inheritance being the corner stone was a lie.
Meanwhile, people working "in the real world" embedded devices (from Refrigerators to DVD/BluRay players to Mobile phones) work in Java.
Maybe I should be ashamed, but I work with embedded devices (in C) and I have no idea how I could do the same work with Java. How do you even get a JVM to understand the specifics of the hardware ?!? Unless you meant Android which is a world in itself and where all the low level stuff is Linux anyway (in C).
Non-Linux Penguins ?
I know, right? My first thought was, "Awesome! Now Eclipse will be bigger and more bloated than ever!
Perhaps, but you do need a C compiler to build Emacs (and the earliest versions did not embed a LISP interpreter at all). Emacs is arguably not an editor written in LISP, but an editor written for programmers who like LISP.
Breakfast served all day!
But, yes, much of the rest of the software industry of the last couple of decades is comprised of idiots producing bloated crap, not having got much further conceptually than "I NEED THE COMPUTER TO DO THIS TEN TIMES SO I WRITE A FOR I=1 TO 10 LOOP". Whence Java. Do you disagree?
I think thousands of 22-year-old CS grads with a firm command of the Jedi-like powers of LISP could rebuild the entire computer industry in their image, cast aside the programming bad habits of the past and lead us forward, Tron-like, in a new Golden Age of software purity ... if it were even remotely practical to do so. And there's the rub.
Breakfast served all day!
Yes, the lack of people willing (able?) to think is always a problem.
As a system administrator I love the hell out of java. It takes a metric shit ton of hardware to run the most basic app at acceptable speeds. If it where not for java I would likely be out of a job.
Got Code?
Java multithreading is barely better than C++. It's analogous to GOTO. If you want something more structured, try Erlang.
Don't thank God, thank a doctor!
And that's why the JVM is written in Java instead of C/C++ and assembly, right?
Erm, the real reason would be because Java needs the JVM to run. Or what would you run the JVM-written-in-Java on?
For what it's worth, just about all the other tools related to Java are written in Java, very few are written in C/C++ for a performance boost. For example, the Java compiler is written in Java.
But even if what you said was true, I'll gladly take a 40% hit any day of the week in exchange for not ever having another segfault, buffer overrun, or memory leak.
And I don't even like Java.
Don't thank God, thank a doctor!
That's right. The reason everything doesn't always go your way is because everybody else in the world is an idiot, and you're a genius. Geniuses are hated and feared because they are so superior. If people would only think properly (or at all?) then geniuses would take their rightful place as the benevolent kings of this sad world of brainless sheep. Oh well, back to World of Warcraft.
Breakfast served all day!
Windows, Christianity and Britney Spears also succeeded on technical merit and social benefit.
It's funny to see geeks having been popularised so much over the last decade that the lowest common denominator gaggle together and mock others as they were once bullied by jocks in high school. Therapy, perhaps?
or stupidly high resource usage just for the sake of high resource usage
And you're putting this out as a trait that Java doesn't have? ROFL
Still, i prefer the nice, simple look of the average Java windows. Reminds me of older times when OSes just had nice, simple windows, none of this shiny nonsense or stupidly high resource usage just for the sake of high resource usage "since it is there". (I would rather not use my GPU unless needed, thank you! Still have power to pay for now!)
You're correct. Java manages to both look like shit and be resource hungry. The worst of both worlds!
How about generics that don't require tons of boxing and unboxing operations?
I don't like Java much myself, but I don't see it going anywhere. A staggering amount of java based (Android?) devices are shipped daily. Once the iPad version is released you may even see some folks switching (back) to it.
Android does not support Java. Android Apps are not Java programs.
Yes, you can develop Android apps in a Java Environment, but they are actually non-Java. To be Java, they would have to run on the Android device in a JavaVM. The Android SDK is simply Java-compatible for ease of us - much like C++ and ObjectiveC are both C compatible.
The Dalvik VM is NOT a JavaVM.
Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)
Java multithreading is barely better than C++. It's analogous to GOTO. If you want something more structured, try Erlang.
Java multithreading is no where near as good as C++ combined with Qt, and there is no need for GOTO in there either. C++ combined with POSIX threads, or MFC Threading, is a bit terrible yes. It's not hard to write a better threading interface. But it'll be hard to beat Qt's threading interface.
Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)
I don't see multiple inheritance as a vital feature. As you've stated, it is possible to work around it without much hassle. So, it may be very useful and convenient but it is not a vital feature.
That being said, the reason I made a point of mentioning multiple inheritance was to point out how absurd LizardKing's comment was. You simply cannot claim that a particular implementation is "so much better" than another when the allegedly better implementation at best implements some fundamental features in a half-assed way and at worse simply fails to implement them. As this is a (somewhat) technical forum, people must limit themselves to the facts regarding the technology and avoid unleashing the fanboy in them to boast about their pet tech through absurd and patently false statements such as the ones which I've pointed out. It diminishes the technology and it denigrates the people who are seriously invested in it.
Suppose you have an API, example Qt, where Templates (e.g. generics) are not allowed. Now suppose you need to implement a feature using Template (e.g. generic), but you need it in an object native to that API. Well, you can do it in one of two ways:
Which is easier? In case #2 you only have single inheritance but now you have to maintain the whole of new class object. In case #1, you can simply have a class that derives from both; so changes to the template class automatically happen in the new class, and vice versa - the only thing you may have to maintain is the constructor/destructor, but even Stroustrop suggests to not even write those if you can - so you could get away with a simple "class newClass: public apiObject, templateObject {};" for the definition.
Now, why might you need to use a template to do something that way? Certain kinds of solutions - e.g. ring buffers, service applications - are better defined as templates especially when dealing with a multi-platform scenario. However, some APIs - e.g. Qt - don't allow some functionality of languages like C++ due to the inherent complexity. (E.g. Qt's MOC tool would need to be able to fully understand and interoperate with C++ templates; not an easy thing to do.)
Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)
Java has its advantages as a slightly better C++ with a lot of enterprise infrastructure around it. But so much stuff is just painfully almost right with it (the generics as you mentioned, the separation of primitive types and objects, the handling of null, the way it still doesn't have closures...), I find myself hoping C# pushes it aside soon.
C# will never push Java aside. C++ with Qt, or C++ with BOOST may; but never C#.
Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)
Right, because the way to decide if something is or isn't doing the job is to look at hold long it has been around and not at what it actually does or doesn't do.
The tyrant will always find a pretext for his tyranny - Aesop
Mmmmm most of the time Java is fine even for embedded devices (which is usually used as a synonym for "limited resources platform") but sometimes it isn't. Every once in a while I do need to use JNI but it is rare. And I can imagine JNI not being adequate in rare cases, because it is a relatively high overhead mechanism, so you might have to write most of an app in C or asm... that's why I also stay capable in both C and asm. :)
The tyrant will always find a pretext for his tyranny - Aesop
Hell even goto is actually useful in cases despite the universal parroting of the "GOTO IS BAD!!!" meme of people who misunderstood what Dijkstra was saying.
I write GOTO's and it annoyed my fellow coworkers like crazy: pretty much only valid goto to make code simpler:
outer: for()
{
for()
{
dostuff();
if(something)
break outer;
doSomethingElse();
}
moreStuffHere();
}
Maybe a continue on a 3 level+ nesting also has merit, but I try to avoid anything that nested if it can be expressed in a simpler manner without losing much performance.
Bye!
Hey, I was going for "Funny", not "Insightful"...
(Yeah, I get it.)
The langpop site has quite a good set of charts, including Google Code and Freshmeat: http://langpop.com/
Did not found any up to date stats on sourceforge, the only statistic circling around is very dated (2006): http://wismuth.com/lang/languages.html
C++ would be a step backwards. C# or something very like it (possibly even called "Java 9", but even so) will displace Java eventually, simply because it makes one so much more productive, just as Java is displacing C++ and C++ displaced a lot of C. But it'll take a while.
I am trolling
Absolutely true! I am maintaining a C++ project done by a guy who loved MI and operator overloading and his code is incredibly difficult to understand and debug. I program both in C++ and Java and use delegates in both.
Citation needed.
Even if it's possible, the question is whether I will. I generally write C, even C++, at about half the speed I write Java, which is already fairly slow. I still generate segfaults in C and C++, and I have yet to get a single one in Java, except where I connected via JNI to some code of my own that segfaulted.
Don't thank God, thank a doctor!
there is no need for GOTO in there either.
That's not what I said. I said it's analogous to GOTO. You're still working with the same ideas of locks, mutexes, basically trying to coordinate access to shared memory. Go to something like Erlang, and although memory is still shared under the hood (for speed), you're now working at the level of message passing and shared-nothing architecture.
It really is as profound a shift as the shift from GOTO to structured programming. Global variables and GOTO basically mean you can never know for sure what any one part of your program is doing without being aware of how the entire rest of the program is put together. Local variables and structured programming mean you can reason about one chunk of your program in isolation. That's exactly what Erlang "processes" gain you over threads -- you can reason about one chunk of your program in isolation, even assuming sequential operation, without having to think about what every other thread is doing at the same time.
But it'll be hard to beat Qt's threading interface.
I don't know much about Qt's threading, but does it offer anything dramatically different than locks and mutexes?
Tell you what: I'll go read about Qt's threading, and you go read about Erlang. Then we can come compare notes. But as far as structure and stability, I'll bet Erlang wins.
Don't thank God, thank a doctor!
This statement is absurd. Do you happen to know what any C++ programmer must do in order to get all the methods in a class to be virtual? Well, he only needs to state that they are virtual.
You've obviously not worked on codebases where a class that has non-virtual methods that it would be elegant to override where declared non-virtual, and the source cannot be modified - be it because it's in a binary, or policy dictates that you can't modify existing code. This has happened all too often in my experience, as well as programmers thinking they've overridden a method, only to have the object unexpectedly "sliced" when referenced as a superclass type.
If by "performance" you mean noticeable lag on your regular GUI operations then your comment is reasonable.
That tired claim? Most Java code is server side anyway, and the only GUI lag I've seen is when long running callbacks hog the main thread - an issue in C and C++ based GUI toolkits as well.
I'll take a look into Erlang...
Qt does have support for locks and mutexes, and you could certainly use them in the traditional manner. However, it is very easy to write full programs with multiple threads without using a single lock or mutex in Qt and be perfectly safe in doing so if you use an QThread with Qt's Event Loop and Signal/Slot architecture. The whole program becomes very asynchronous as a result, but you never need a lock yourself - Qt's underlying functionality provides all the thread protections you need.
Now some of that is dependent on how you want to use the objects, and requires a big mental shift in programming methodologies. But I'd guess it's probably the same effect that Erlang has - at least from what I can tell from the documentation.
Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)