Given that IDEs are the primary tools of programmers, and unlike Photoshop users our primary skill is to build software itself, why are IDEs not the most advanced pieces of software that exist? It seems logical. They have the most advanced users; they don't need to worry about scaring the kids at home. They should be constantly adopting the latest and greatest in performance and UX.
Instead we have vim and emacs which, beloved as they are, still have as their primary interface a grid of characters -- not just the code itself, but the user interface. It's like nothing has changed in terms of the graphical output capabilities of computers since the late 1970s. (And yes, there are WIMP versions, which add drop-down menus. But the primary interface mechanism is still keyboard shortcuts.)
Then there is the beast called Eclipse. It certainly seems like it should be able to do everything in the world, certainly the download takes long enough and there are enough configuration options. Yet it is buggy, its plugin architecture is a conflicting mess, and its performance is so abysmal that frustrated coders return to vim and emacs so they can get something done.
Version control -- a critical function for all modern programmers -- is still largely handled on the command line. Maybe, if you're lucky, you get a side-by-side comparison in Eclipse (but not for git, yet!), but as far as tagging and branching goes, graphical representations are out. WTF?
I'm so glad to see this article, because I have spent so long in the company of programmers who hear me ranting about IDEs and just tell me to "use vim", as if that were the problem.
Version control - the most text-oriented part of the whole deal. Files of ASCII, tracked by LINE???
Instead track definitions, APIs, formal argument structure, constraints! Make all that and more part of the 'code' and track its changes and meta-changes. And check it against the product and test plan too!
I imagine a schema capturing the semantics of a program with an audit trail, checkpoints of consistent state, reports that flag contradictions and incomplete subtrees etc.
Instead I get "automatic merge tools" that shuffle my changes into somebody else's like a dealer at Vegas.
Version control on a semantic level would require to understand the semantics of source code. Thus, your ideal vcs tool must have a parser for every programming language, every XML schema and other non-binary data format.
Exactly. A parser for each programming language is the cheapest, simplest part.
At root, programming languages all come down to a semantic graph. Manage that! At the same time, you would be able to render the 'code' as any language you like (within reason).
Or it supports X language provided by Y plugin and per-line versioning elsewhere. Does a python programmer care if his magical VCS tool doesn't understand the semantics of !python code? I think the parent's suggestion is quite novel!
> Then there is the beast called Eclipse. It certainly seems like it should be able to do everything in the world... Yet it is buggy, its plugin architecture is a conflicting mess, and its performance is so abysmal...
I have used Eclipse for many years with multiple languages, and none of this is quite true. There is a bit of a learning curve, where you have to learn not to do some things that break it. :) But that just takes a few hours, and a bit of patience - after that you have many months of happy coding, where it just works...
I used Eclipse daily for about two years, along with an internal C code plugin. I'm not sure which I can attribute to Eclipse and which I can attribute to the plugin, but my Eclipse workspaces were frequently getting randomly corrupted, global search-and-replace was not trustworthy, and for a while it was running so unstable overall that there were times I could launch Eclipse, load my workspace, and within a few minutes of just sitting there it would crash. This was running on Windows XP.
So I tried Eclipse at home on my Mac. I saw that it came with a utility for auto-packaging Java programs into OS X bundles. I made a simple Java Swing "Hello World" program and tried the bundle utility. It didn't work. I tried a few more times, and it never worked, but in fact got progressively worse in its output. Uninstall.
Some months later I thought I'd try Eclipse on the Mac again; surely it had improved. So I downloaded it again, created a new project, clicked through to add a new source code file and I got an error, that it could not create a new file.
I'm guessing that my experiences must be abnormal, since Eclipse is so hugely popular, but I now avoid it whenever I possibly can.
Yes, your experiences are extremely abnormal. I've used Eclipse extensively (I think since 2002 or so) and apart from the very early days I have never had a corrupted workspace, I have never ever had a problem with inconsistent search results and I can't remember an occurrence of it crashing (unless you count an out of memory, which is just from bad config).
Those are pretty strange. I am using it on a Mac right now, with no serious problems.
I'm not sure about the bundle creator, I never used that, but not being able to create a new file seems like some random little issue that's most likely fixable.
Since we're talking anecdotes, I've never ever had any of these problems. I've used SVN/Git plugins, Android's plugins, etc on every operating system that Eclipse supports and I've never ever had a problem.
I used eclipse to code java every day for 5 years. I used it on windows, linux and OS X. During that time I upgraded computers a few times. Each time I upgraded I was optimistic that my shiny new machine would make eclipse run at a tolerable speed. Having a language that was succinct enough to not need a beast like eclipse was one of the main reasons I originally switched to ruby. Using something simple like textmate sometimes means I have to go the long way round when I want to perform a refactor but at least I know when it's going to be slow. With eclipse you can do something as simple as open a file and have to endure 30 seconds of freeze. When you need to get something done fast that's painful not to say stressful!
Either you have a v slow machine or you had some major configuration issues with Eclipse or other services running on that machine. Even on a 1.4GHz Core 2 machine on a large java project, source files open < 1 sec.
So you seem to be Eclipse-proficient. Please, tell me: How do i upgrade Eclipse (3.5 to 3.6) without reinstalling the whole thing and all plugins manually one by one? Why are plugins downloaded with 20KB/s, where apt-get gets 1MB/s?
Is there some serious reason you need to upgrade? If so, then I think you can just unzip a fresh install and copy over the plugins you want (as .jar files) into the new directory structure. Apparently there are more ways to do this, though I didn't try: http://www.venukb.com/2006/08/20/install-eclipse-plugins-the...
> Given that IDEs are the primary tools of programmers, and unlike Photoshop users our primary skill is to build software itself, why are IDEs not the most advanced pieces of software that exist?
I guess it depends what you call advanced. There's some pretty impressive work that goes into the static and dynamic analysis, refactoring, profiling etc. tools that you see in modern IDEs. Is that more or less advanced than software that can identify faces in an image? Who's to say?
BTW I think you're being a bit unfair to Eclipse. I agree about its performance, but picking on the download size seems a bit disingenuous: looking at the download page right now the largest package is less than 250 Mb, no more than a few minutes even on a slow broadband connection. Both svn and cvs are well supported within the IDE too. I've just decided to switch away from Eclipse primarily because of its performance, but it deserves justified criticism at least. :-)
By comparison, take a look at Blender3D. It's a 22MB download, though you need a Python interpreter, which is also not all that large.
Eclipse is impressively bloated, but that's about the most positive thing I can say about it nowadays, especially after being stuck using it at amazon and disney. (Both of which had some of the poorest quality legacy code I've ever seen.)
Given that IDEs are the primary tools of programmers, and unlike Photoshop users our primary skill is to build software itself, why are IDEs not the most advanced pieces of software that exist? It seems logical. They have the most advanced users; they don't need to worry about scaring the kids at home. They should be constantly adopting the latest and greatest in performance and UX.
Instead we have vim and emacs which, beloved as they are, still have as their primary interface a grid of characters -- not just the code itself, but the user interface. It's like nothing has changed in terms of the graphical output capabilities of computers since the late 1970s. (And yes, there are WIMP versions, which add drop-down menus. But the primary interface mechanism is still keyboard shortcuts.)
Then there is the beast called Eclipse. It certainly seems like it should be able to do everything in the world, certainly the download takes long enough and there are enough configuration options. Yet it is buggy, its plugin architecture is a conflicting mess, and its performance is so abysmal that frustrated coders return to vim and emacs so they can get something done.
Version control -- a critical function for all modern programmers -- is still largely handled on the command line. Maybe, if you're lucky, you get a side-by-side comparison in Eclipse (but not for git, yet!), but as far as tagging and branching goes, graphical representations are out. WTF?
I'm so glad to see this article, because I have spent so long in the company of programmers who hear me ranting about IDEs and just tell me to "use vim", as if that were the problem.