This is a nice list! However, I really think that increasing speed of development with better tools is a cornerstone of being one of those elite programmers, and vim<<eclipse, at least for Java! I haven't done C/C++ for some time... but I expected similar IDEs exist. "The way our development environment is set up though, there was really no good way to use Eclipse because everything is done on a remote development box, and they won’t let us run Eclipse and forward over X (which is reasonable; Eclipse has a lot of overhead)" I think this is just a horrendous setup and unless there is some compelling reason (e.g. scientific computing on a cluster? even then...) that there should be a much cleaner separation between development boxes and production boxes and most of your code should be developed on a local box with some canned data for testing and then pushed out to production when that is done. This may require some effort, but the decrease in turnaround time for changes will be worth it in almost every scenario.
I haven't done much development in Java since my days in college, but...
However, I really think that increasing speed of development with better tools is a cornerstone of being one of those elite programmers, and vim<<eclipse, at least for Java!
For every other language that I have encountered, the utilities listed by the OP (especially vim/emacs) are the better tools, as far as I'm concerned. Firstly, they were written by hackers for hackers, and because of that, they generalize just about all the functionality a programmer is likely to need when coding in any language. Even supposing there were eclipse-like IDEs for every language out there, it is more than likely that there will necessarily be differences between them (since they were written for different languages) which will be jarring for the power user. One would have to learn an IDE for every language. With vim and the assorted tools mentioned in the OP, one just needs to learn one set of tools and can use them for every language. If you foresee that you will only code in one language for the rest of your life, then sure, find the best IDE for that language. In my job, however, I have to code in C++, Python, Perl, PHP and shell (most times editing source files in more than one language at the same time), so to increase speed of development, (though I am no elite programmer) I use vim.
Do vim and emacs really have all the features of eclipse? Autocomplete, integration with Javadocs, automated refactoring, integration with bug tracking systems, integration with source control, full debugging inside of the server all with the click of a button? Do you have a resource for how to setup emacs this way? I used to use emacs...
I'm really not. I've done both. IDEs were created because they make it more efficient to write code, do you really think this whole line of technological development was a mistake? Even a 10-20% decrease in time on average is huge.
I think they were originally created for environments like Windows where the basic development tools weren't part of a normal operating system install.
I have no idea of why they were created, Windows certainly was the front-runner for GUI stuff. I worked at my first job doing java dev with emacs and I've been fully working on linux for the last several years and I still find eclipse to be superior. Maybe it is because the learning curve is lower and my emacs environment was never setup properly, but I think the OSGi framework (dependency management standard in eclipse) is genuinely useful and I love having everything I need in one program. I still find myself writing sed/awk/bash scripts occasionally, but my workflow in my IDE with mylyn integrated to bugzilla and SVN is just so much faster...
It's a rather massive codebase, and our remote dev machines are a lot beefier than our laptops -- also 64-bit, whereas our laptops are 32-bit. I'm not saying it couldn't be done locally, but it might actually cause more headaches than it solves.
IDEs can work well editing code that is targeted to a different platform. The code is edited locally (and parsed, analyzed, colorized, etc. by the IDE locally) but built and run remotely on other machines. That setup used to be pretty common for enterprise and web development before Moore let us run entire enterprise application servers on our laptops. It takes more work to set up than just sshing into a remote box and firing up emacs, but it can be done.
It might and your approach may be optimal already. I guess it's a question of how much the environments differ? When I am moving to a new project I try to get myself setup so I can make changes and test them as quickly as possible and it's always a judgment call about how much time to spend doing that setup. Also, there is a cultural element like one poster said if everyone is using vim them that becomes a clear choice...
Unfortunately, your expectations would not be met. IDEs make up for their limited text-editing features by providing language-dependent, code-aware functionality. Because C++ is such a hairy language, IDEs aren't able to do much with it. They don't give you anything like the cushy, comprehensive support that IDEs provide for Java. With C++, giving up the relatively lame IDE features to get a powerful text editor is a no-brainer. (I use Eclipse for Java and emacs for everything else.)
You're absolutely right about their development environment; it's adapted for one set of tools. It doesn't necessarily mean other tools are inferior in general, as the author seems to conclude.
I find this post highly questionable. What is so hairy about C++ for an IDE exactly? It's strongly typed and yes, if you do too much C style stuff it may be a bit harder to navigate but if you stay in a clean OO world it should be very, very similar to Java. Microsoft put out a competent C++ IDE well over a decade ago and Borland has done so as well... It's my personal opinion that IDEs are in general superior to text editors because this integration reduces the cognitive load of solving particular programming problems. People that say eclipse doesn't have a good text editor are being a bit ridiculous - out of the box it is not that great, but there are many 3rd party editor plugins, you could configure shortcut keys however you want and of course extend eclipse... now I am somewhat biased in that I work daily on an eclipse RCP project, so I am already spun up on extending eclipse. This all has me curious though, I'll spin up eclipse C++ development against my thesis code the next (likely imaginary) opportunity I have time to kill...
To write a good C++ IDE, you need to deal with macros, C++'s obscene syntax (There are what- four complete C++ parsers?), and you need to parse all sorts of Makefiles, or else no existing projects will work.
I'd expect some games that had to be played with release engineering. If the code is properly modularized, this could be two separate processes where you develop your module with mock data and then deploy it into production. Is the opinion really that all the current IDEs suck - http://msdn.microsoft.com/en-us/visualc/default.aspx , http://www.eclipse.org/cdt/ , http://www.netbeans.org/features/cpp/ , http://www.bloodshed.net/devcpp.html and all the 2nd tier as well? Maybe I am too deep into Java and eclipse, but it seems there are genuine advantages to using IDEs and C++ is similar enough to java that at least for some subset, such a tool could be created. If not, that certainly seems like a market...
C++ does look similar to Java, but it's really not. Preprocessor magic + template magic + linking magic means pain.
I will admit to not having tried devc++ or visualc. I would imagine that visualc might be able to solve the problem, since they can control the build system, and can hook into their compiler directly (last I checked, GCC made this very hard).
I'm also going to go out on a limb and suggest that you may be overestimating the pain points other people experience /not/ using an IDE.
I haven't done professional work in C++ only my thesis project which was relatively self contained and simple, so maybe I am underestimating the importance of preprocessor/template/linking magic. There is certainly a rather large barrier to entry for vim/emacs for the average developer.
Sorry, I didn't mean to imply that one set of tools is inferior. If I was doing Java development, I would fight harder to make Eclipse work for the project. But the specifics of our infrastructure, SCM, and utilities (we do have ctags and cscope) set up -- and the fact that the team has been using vim/emacs to do this job for the last 15 years -- makes vim/emacs a more natural choice.
my thoughts exactly. in my last job, i spent over two years writing linux server apps. but i developed all my code on a mac. the low-level posix apis are nearly identical between the two, so other than a few ifdefs, i could barely tell the difference.