What is the Ultimate Linux Development Environment?
nachmore asks: "I've been programming on Linux for a while now, always content to use vi for my editing and any debugger tools out there (gdb for C/C++, and so forth). As part of my SoC project I was working on Thunderbird (my first huge project on Linux) and I found that , although shell-based tools can do the job, they lack in easy project management, ease of debugging and other development features. I've only ever programmed with a GUI on Windows — and I have to admit that I find Dev Studio to be one of the few programs that Microsoft seems to have gotten (nearly) right. I've played around with Eclipse but find it's C/C++ support still lacking. So what GUIs would you recommend for Linux? I would like something with debugging (single step, step through, step-to-end, etc) support, CVS access and of course, support for large projects (e.g. Mozilla) and especially good support for C/C++. Is there anything really good out there, or is vi the way to go?"
emacs has all of these features that you are asking for: front-end for gdb enabling highlighting in source code for debugging, integrated support for source control including CVS, and incredibly good support for C/C++ syntax highlighting/editing. If you are coming from vi, you can even change the default keybindings to vi-style bindings.
I use Visual SlickEdit 10 for Linux. http://www.slickedit.com/ This piece of software is the most configurable IDE I've ever used; it's a tad on the expensive side, but everything just works and it was worth it for me.
Care to enlighten us on what was lacking with Eclipse and CDT?
My only real complaint is the large times it takes to recompile large projects. Slow indexing/parsing times for large amounts (1000+) of files are a given however for any type of tool that is going to cross reference new projects. However, if I have control of the project extraction of projects into logical subcomponents rather than editing huge single projects with Eclipse/CDT will give you a very nice time speed up.
A personal fave is that the debugger integration in eclipse is second to none.
Origin. Hallowed are the Ori.
Please, for the good of Humanity, vote Obama.
Tool choices are clearly an issue of personal taste. And as my tastes clearly don't match yours, I won't be making any suggestions.
But I will say that, without exception, all the best developers I've known in my career (yes, every single one of them) work with a text editor and a shell window. They use GUI and web tools where needed or useful, but their minute to minute activity is spent at the keyboard, writing, running and reading code.
I submit that this is not a coincidence. The best developers write their own simple tools for small problems, and the proper environment for running simple tools is the command line. Great programmers work in varied environments and use diverse languages and configuration formats, where IDEs work well only within their target realm and are pretty much useless outside of it (e.g. no PHP mode in MSVC).
The benefit you get from fancy tools is real, but it's ephemeral. It make the typing of code (and maybe the reading of code) easier. But it does this by simplifying and obscuring the underlying details. Want to add a file to the project? Add it to this dialog. Need to check something in? Click here. Never mind how it all works, and hope that you never get tasked with doing something complicated (like an automated check-out-build-and-package script over a secure remote link).
By contrast, the understanding inherent in using your tools on the lowest level provides benefits all through the development process. These are the folks who won't think twice about writing a quick shell script to do the remote build.
So, by all means try out the fancy tools you can. But don't skip the part where you learn how to use the underlying tools well. Use the GUI stuff as an aid for the tasks you do understand, not as a substitute for what you don't.
I think the IDE is a symptom and not the disease. Programming is hard and programmers are expensive, so to make programming cheaper, it needs to be easier to program. IDE's lower the barrier for entry, thus providing a larger pool of programmers, thereby allowing less experienced/motivated/intelligent (and cheaper!) programmers access to development resources they normally wouldn't have been able to cope with otherwise. There's also a push for these IDE's to automatically do a lot of menial coding tasks (I believe that if you can click a button and have an IDE generate code, that the language is bad or the problem is designed wrong, but that's another discussion). So there's tons of machine generated code, plus inexperience, which pretty much is *the* recipie for the worst code ever. I can see where the hate is coming from.
The one thing that autocompleting IDE's do that bugs the hell out of me is that they make it easier to slip into the i, ii, iii syndrome without *immediate* consequences. At work, we had one clown that wrote all this page handling shit I'm dealing with who would sprinkle his code with various iterations of what would be best defined by the regular expression: [a-z]+ (he also put lots of business code inside of JSPs, but that's yet another story). The IDE made it too easy for him do that because he could just summon the magical autocompletion and not have to think about the difference between i and iiii.
That said, I think that hating on the IDE because people are retarded is wrong. I personally love the autocompletion because it saves me time by not even giving me a chance to typo. That, plus the automatic red underline for syntax errors (usually unimported resources) make writing code that much easier; instead of focusing on the syntax, I can focus on the algorithm.
Slashdot is proof that Sturgeon's Law applies to mankind.
Interesting... when I first looked at the comments there were a few for vi and none for Emacs. Now there are many more Emacs votes.
So I guess we've finally found out which editor is faster.
*Disclaimer: I like Emacs, really. It's taking up 40% of my screen right now.
What is the difference between a religion and a cult?
Tom Cruise.
Thankfully, popes and antipopes all had the best interest of their followers at heart.
I guess Heaven's Gate was a religion since Marshall Applewhite believed strongly enough in it to save his followers' souls and his own soul by committing suicide so they could get on that UFO. After all what is earthly flesh compared to the eternal soul.
The difference, a religion been around long enough that people forgot it was a cult.
I'm sure when Christianity started that people said it was a cult. After all, a lot of people didn't immediately recognize Jesus as the Son of God.
I'm AC because it's bad enough talking religion with friends let alone complete strangers.
Absolutely -- that and Excel.
I strongly disagree. I've been using every version of visual studio professionaly since version 6 (and I used v5 at school), and it's been a complete pain in the ass through the years. It used to do things that others IDE didn't do, so at some point most of its crappiness was tolerable.
But nowadays, this thing is unacceptable.
Vs2003 was almost ok and seemed to have the potential to turn into something acceptable.
Plenty of things were wrong or even a complete pain in the ass already: the project settings dialog, the configuration system, the inflexible build system which mysteriously failed to rebuild things on a regular basis, the mysterious and annoying separation of file system hierarchy and project hierarchy, the irritating and random hanging for dozen of secodns at time of the whole thing for no apparent reason, the tiny, cramped and not resizable dialogs...
Then vs2005 came along.
This thing is a monstrosity. It didn't fix anything that I had a problem with in vs2003. Instead, it became more slow, badly architectured and is a total shrine of mediocrity.
It spam refresh the project list tree for dozens of seconds at a time for no reason. Close multiple tabs and watch as it pointlessly waste its time (and yours) refreshing the display after closing each tab.
The project configuration dialog is a complete joke which tend to overwrite the wrong project settings for no reason.
Watch it randomly remove projects from the solution from times to time.
Create a file, add it to the project, and it chokes and crash.
Try to rebuild the project or just even run it, wait for 30 seconds for that clusterfuck of an ide to figure out that nothing should be built. Not that it ever gets it right if a lot of stuff were updated in your last version control update, anyway.
Scalability is horrendous.
And of course, they still haven't figured out how how to make resizable dialogs. The did figure out how to add gradients in the toolbars, though. Thanks for this awesome usability improvement guys.
Oh, I almost forgot that they decided arbitrarily to not provide you with redistributable debug version of the runtime libraries. Since I'm working on an internal production application with an hopelessly convoluted setup procedure, I really enjoy not being able to run a debug version on a user's machine to help me troubleshoot some issues. Development tools are supposed to make the developer's life easier, not to create gratuitous inconveniences.
I use thing thing 8 hours per day. I hate it with a passion.
And it's not like it's cheap either.