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?"
I've always been a big fan of KDevelop, as to me (granted, a total newb) it seems pretty similar to large IDE's (eg Visual Studio), and it definitely does everything I need.
For most things - assembler, shell, Perl, C, C++, SQL... Slick Subversion integration is a plus.
Sun Studio for Linux might be worth trying out.
you had me at #!
Seriously, KDE is very friendly to developers. You don't need Kdevelop.
Just a bunch of Kate and konsole sessions, spread over many desktops.
And kompose to have immediate access on any of them.
Also, the ability to launch immediately a konsole on any directory(F4 now ctrl-t on older versions)
is invaluable. And other than that vim for quick editing of project files(Makefiles, configure
scripts, etc...)
And yakuake can come in handy, since it is an unobstrusive and easy way to run commands.
Other than that,a healthy mix of traditional unix tools(cat, grep and sed is what I use mostly)
and a couple of python scripts to automate some tasks and even create on the fly graphical
components with Tk, to ease the management of your project.
http://recordmydesktop.iovar.org
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.
I know this meets none of your criteria, and so completely fails to answer your question, but the best development environment I've ever found is Slime (Superior Lisp Interaction Mode for Emacs). It can work with several different Common Lisp implementations running on Linux, Unix, Mac, and Windows, and since Emacs is cross-platform, it can run on any platform where Emacs is supported. It provides a REPL, object inspector, debugger, single stepping, multi-thread support, stdout re-direction to the REPL buffer, syntax highlighting, auto-indent, expression evaluation from source files, error re-starts, and function cross-referencing, for those Lisps that support them. It offers capabilities reminiscent of the Fabled Lisp Machines of Old.
:)
Slime uses a component running in the Lisp process, and elisp code running in Emacs that communicates with the Lisp through a local INET socket. That means you can run the Lisp process on machine 1, set up an ssh tunnel to it from machine 2, potentially running a different OS, and connect to 1 from an Emacs on 2. I actually do this every day, connecting to a remote SBCL on Linux from both Linux and Windows. The interaction is fast enough that I routinely develop on the remote Lisp image over a WAN link.
The system works with any libraries available for your Lisp implementation, including database, web, and GUI toolkits, although it would be tricky do to GUIs over remote, and Open GL would probably have to be local.
Of course, there are some caveats... Developing in a Lisp is like working in another OS running on top of the host OS (especially with multiple threads). Also, Emacs doesn't have a drag-and-drop GUI builder, although one could be built in Common Lisp. And, you would have to develop a taste for parentheses.
--WH--
The best environment in Linux - as with on any platform - is a text editor and a solid mind that thinks the problems through before typing. IDEs inhibit that thought process.
Inhibit? umm.. no.
All an IDE is supposed to do (and all of the ones I've personally seen, do this) is make development easier. Why should you have to lookup the signature on a function/method, when an IDE can list them? Why should you have to change windows, start the process, start the debugger whatever else, when an IDE can do that? Why do you have to figure out where an extra ';' is hidden somehwere in the code when an IDE can do that? Not that IDE's don't have draw backs, sometimes of course they have bugs. They can also be a pain to set up.
Apparently LRH did say that - see http://www.skeptictank.org/readdig.htm - I think he knew exactly what he was doing when he started Scientology, although in his later years he did seem to go quite mad.
Writing code in Linux is just as easy as writing code for Windows, but when it comes to debugging, there is just no comparison...Dev Studio smokes anything Linux has to offer by such a wide margin as to be embarrassing. It still astounds me that the Linux community has not come up with anything that can compare. I put this down to the whole OSS attitude of "Real Developers use VI/EMACS." Creating a top-notch development environment is extremely hard, and there are no good alternatives for Linux.
That all being said, if you are doing Java development, Eclipse is easily a match for Dev Studio.
Jens Wessling
Everything in emacs has a long learning curve - learning the keys, learning how to find out about the keys..., but it is mostly effort that you can transfer outside of emacs. I thought perhaps I was swimming against the tide with emacs, having been forced onto Windows for my desktop for some time, but then I discoverd XKeymacs - now I can use the emacs keys in almost any windows app, so I can edit in Outlook, Word etc., as if it's emacs. I only need to know one interface, and it's the most efficient one I've found. Almost all applications now appear to have "emacs lite" embedded in their edit areas.
Ironically, I installed Ubuntu, and found that most apps there used the windows keys (I know this must be an editable setting, but I haven't looked yet). So, as a hardcore Emacs user I'm actually much more comfortable on Windows than Ubuntu!
Have you seen UndoDB? It's a debugger, able to step Linux programs /backwards/ as well as forwards. Microsoft might have lots of eye-candy with Developer Studio, but with this tool Linux developers have a tool that lets then debug in a whole new way (and let's face it: most of us spend most of our time debugging, one way or another).
It uses gdb as a front-end, and adds backwards versions of commands like next, step, finish. It's also able to rewind the program to an aribtrary point in its history.
Disclaimer: I am one of the tool's authors.