Slashdot Mirror


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?"

31 of 643 comments (clear)

  1. You might as well ask... by Max_Abernethy · · Score: 4, Insightful

    ...which religion is best.

    1. Re:You might as well ask... by Anonymous Coward · · Score: 4, Insightful
      Christianity

      Which one?
      The Christianity that gets you unjustly persecuted by everyone on the planet; that's when you know you have the right one.
    2. Re:You might as well ask... by WilliamSChips · · Score: 5, Funny

      Origin. Hallowed are the Ori.

      --
      Please, for the good of Humanity, vote Obama.
    3. Re:You might as well ask... by Anonymous Coward · · Score: 5, Funny

      What is the difference between a religion and a cult?

      Tom Cruise.

    4. Re:You might as well ask... by VE3MTM · · Score: 4, Insightful

      Having thought about this myself, whether Scientology should be considered a cult or a religion, and indeed whether "cult" is just a matter of perspective, I think I have an answer.

      The difference between a religion and a cult is in the beliefs of its leaders. In a religion such as Catholicism, as you go up in the ranks from the lowly follower all the way up to the Pope, the devotion of its members increases. In a cult, it decreases, because its leadership sees the teachings for what they are: a means of control. Furthermore, whether you believe the teachings of a given religion yourself or not, its leadership believes they are acting in the spiritual interests of its followers. They believe they are bettering their members.

      However, in both cases the rewards for being a member increases, and for a cult, this works like a pyramid scheme, siphoning wealth into the upper ranks. So yes, there is a fundamental difference between a "religion" and a "cult", other than the number of followers. Scientology is a prime example today: it was a cult when Hubbard was sailing the Mediterranean under the Sea Org flag, and it's still a cult today.

      --
      09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0 Whoops, silly middle mouse button...
    5. Re:You might as well ask... by Anonymous Coward · · Score: 5, Insightful
      The difference between a religion and a cult is in the beliefs of its leaders. In a religion such as Catholicism, as you go up in the ranks from the lowly follower all the way up to the Pope, the devotion of its members increases. In a cult, it decreases, because its leadership sees the teachings for what they are: a means of control. Furthermore, whether you believe the teachings of a given religion yourself or not, its leadership believes they are acting in the spiritual interests of its followers. They believe they are bettering their members.


      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.
  2. vim by ThisNukes4u · · Score: 4, Insightful

    vim 7 + cscope == awesome

    --
    thisnukes4u.net
  3. Its called emacs by bughouse26 · · Score: 5, Insightful

    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.

    1. Re:Its called emacs by kfg · · Score: 5, Funny

      emacs has all of these features that you are asking for:

      But hang on to vi, because you'll still need a decent text editor.

      KFG

  4. KDevelop by Shimdaddy · · Score: 4, Interesting

    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.

  5. SlickEdit by naturaverl · · Score: 5, Informative

    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.

    1. Re:SlickEdit by gfxguy · · Score: 4, Insightful

      It might be really slick, but at almost $300.00 for a single user linux license, it's not just a tad on the expensive side.

      I suppose I could get work to pay, but that doesn't help me at home (no, I don't illegally copy software).

      --
      Stupid sexy Flanders.
  6. Regarding Debuggers, everyone should read by Anonymous Coward · · Score: 4, Insightful
    Regarding debuggers, everyone should read what Linus himself wrote on the subject. He was talking specifically about the kernel debugger; but his words and comments apply to debuggers in general.


    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.

  7. Eclipse by L7_ · · Score: 5, Insightful
    I've played around with Eclipse but find it's C/C++ support still lacking.


    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.
    1. Re:Eclipse by Darkforge · · Score: 4, Informative

      Wish I'd looked at the Eclipse documentation more closely before posting... there's some fun gotchas buried in the EclipseCon 2006 CDT PowerPoint Presentation available on the Wiki. Here's some delightful reminders of what's wrong with the CDT:

      "Turn off Build Automatically" -- In Eclipse/Java, you'd never need to tell someone to do this, even in the largest of projects, because the build runs quickly and incrementally (using the built-in Eclipse Java compiler). But in CDT, the only way to build is to run your entire toolchain using a Makefile. (So instead of fixing this, they provide features to auto-generate the Makefile!)

      "The CDT full indexer is very expensive on large C++ projects (Recommendation: Don't use it on such projects)" Gee, thanks! That's the thing that makes Eclipse (in Java) so Eclipse-y, you know? So make sure you turn that off on large projects.

      Oh, and there's my personal favorite FAQ: Can I debug Java and C++ at the same time? Answer? "If you can get this to work, please let the cdt-dev mailing list know!"

      The Eclipse CDT is a joke. Even Visual Studio can handle reference searches on large projects.

      --

      When I moderate, I only use "-1, Overrated". That way, I never get meta-moderated!

    2. Re:Eclipse by xtracto · · Score: 5, Informative

      MMmm I dont know why I did not see anyone mention Code Blocks. I have been following the development and it is quite good. It is cross platform and open source.

      Although they have been in 1.0rc2 for quite some time, they make nightly bulds which are very good.

      --
      Ubuntu is an African word meaning 'I can't configure Debian'
  8. Personally... by NickFortune · · Score: 4, Insightful
    Personally, I don't like IDEs. They force you into another's way of programming, and encourage sloppy design by allowing the management of needless complexity. They make it easier for thoughtless programmers to maintain bad code, by postponing the day when the codebase collapses under its own weight.


    By preference I use zsh, vi and make.Screen or multiple terminal windows (aterm by preference). Depending on the task and the requirements, GCC/gdb/ctags or perl/CPAN or boo+nmake+nunit. Throw in find grep and all the usual suspects in support. Tools with a command line interface preferred over ones without, commands that read from stdin and write to stdout by default perferred over others. Special exemption made for browsers and drawing programs.

    If the structure of an application is too complex to manage under a unix command shell, that's a reflection on the design of the app in my book. I don't expect that's going to be a widely held viewpoint around here. Never mind, it works for me :)

    --
    Don't let THEM immanentize the Eschaton!
    1. Re:Personally... by bit01 · · Score: 4, Insightful

      In what way is it more "in place" to click on different tabs in a terminal window versus clicking on different sub-menus in an IDE?

      An IDE is typically just a collection of specialised, tiled windows with some menus and buttons up the top. The specialisaton of each window has a downside in that it wastes precious screen real estate when you don't happen to be using those specialised functions. Personally, I prefer to be able maximise my code window and keep all the other junk out of the way as I find that maximises my productivity.

      While a well designed IDE can help they are overrated as productivity boosters. Most of the productivity gains come not from the IDE per se but from the various tricks, noted by other posters, incorporated into it. Non-IDE programmers have their own bag of tricks e.g. Often writing small scripts to accomplish some repetitive function that might not be anticipated by an IDE designer, or taking advantage of a full OS of command line and GUI tools that an IDE can only dream about. Most IDE's have external tools functions but they are usually badly integrated.

      ---

      Don't be a programmer-bureaucrat; someone who substitutes marketing buzzwords and software bloat for verifiable improvements.

    2. Re:Personally... by John+Courtland · · Score: 5, Interesting

      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.
  9. emacs by theCoder · · Score: 4, Informative

    Or xemacs if you prefer. I work on a large software system written in C++ and runs on various unixes (Solaris, Linux, SGI) and attempts to run on Windows (Windows usually doesn't agree with it). The system has thousands of source files and is built with make (the Makefiles are generated with imake!). Generally, I use xemacs to for editing. I love vi, but I tend to use (x)emacs because I find the buffer management (the ability to open multiple files) better than in vim. It's entirely possible I just don't know how to use vim right (vim's buffers seem to require that I save the file before switching to another buffer).

    Emacs also offers easy access to our source control system (by corporate mandate, we use ClearCase, which I do not recommend to anyone wishing to maintain their sanity).

    Finally, emacs allows me to open two (or more) windows in the same session. I generally put two windows next to each other so I can edit two files at once. This lets me open up files as I need them in either window, and then switch to that buffer in the other window if I need to get to it later.

    Even though I consider myself a vi person, I've found emacs to be a very good environment for editing source files. It is very customizable and powerful. It adapts to how you want to use it (other people use it in vastly different ways), and generally gets out of your way to let you get your work done.

    Just my opinion.

    --
    "Save the whales, feed the hungry, free the mallocs" -- author unknown
  10. Re:If you must... by Coryoth · · Score: 4, Informative
    I personally love KDevelop, which is integrated with Qt Designer. If you want to use GNOME as a platform, there are tools that I haven't looked in on in a while but should be easy to find.

    I believe the GNOME equivalent is Anjuta, which has a lot of the features the OP was asking for. I haven't really used it myself so I can't really say. As you note for KDE developers, my understanding that a lot of GNOME devs just use Emacs. Still, if you want something with a nice GUI then Anjuta looks decent (choice of GTK theme used for screenshots not withstanding).
  11. Don't write off simple tools until you know them by andyross · · Score: 5, Insightful

    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.

  12. KDE(K Development Environment :) by iovar · · Score: 4, Interesting

    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
  13. Obvious answer to all such questions by TLouden · · Score: 4, Insightful

    When it comes to FOSS there is no Ultimate, Best, Top, Only, or other perfect solution.
    There are MANY excellent solutions which provide different pros and cons, to be considered by the potential user.

    You must be recently freed of Windows where you are simply told what you want, here in the world of FOSS you have choices.
    Reminds me of a lady who came to the US from Russia some twentyish years ago, when she saw a grocery store with CHOICES she flipped, couldn't handle the concept.

    --
    -Tim Louden
  14. Question Answered by Eideewt · · Score: 5, Funny

    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.

  15. Re:Don't write off simple tools until you know the by orasio · · Score: 4, Informative

    I am a joe fan, just a simple console editor and nothing else. I tried Emacs, and I liked it.
    Now I'm using Eclipse for Java, and once you understand how it works, there's just too much to gain from it.
    I don't browse the code, I navigate it. I don't navigate to files, I search for them. Go to declaration, forward and back editor navigation, automatic javadoc, automatic class and member creation, method extracting (yay!) are all features that, when combined, make an IDE that actually helps you build better code, faster.
    Of course an IDE does get in your way, but Eclipse gives so much that it's worth it.
    Debuggin with eclipse is great, it's the first debugger I'm actually using and liking since turbo pascal 5.5! (the VB6 debugger, I didn't enjoy that much)

    I understand that CDT doesn't have as many features as the java stuff, but I think that going to Eclipse would be a good investment for anyone. You just need to adapt to it, and discovering features is not that difficult, you can start by printing a cheatsheet.

    I'm sure emacs can do most of this stuff too, and way faster, but it does take more commitment.

  16. Strange Contendor. . . by treak007 · · Score: 4, Informative

    Surprisngly, Netbeans has a really good C++ plugin. After many hassles and much searching for a good IDE, I have found that KDeveop is ok. Eclipse is decent at best. Anjuta tries to generate too much code. Currently, Netbeans works the best for me. It doesn't try to generate code, it has some intellisense features (if you liked that in M$ VS), and you can use a free collaboration account on sun's collaboration server, which can be very useful.

    Emacs or Vi is really nice for development, but neither of them are an IDE.

    --
    Klingon Software is not released, it escapes, inflicting terrible damage onto the enemy as it does
  17. found your problem by r00t · · Score: 4, Insightful
    "The fact that I do not have these tools integrated in an environment similar to something like Visual C's means I have to do a lot of switching between terminal sessions."


    Rethink your desktop, abandoning the Windows-like defaults you were given. Do like the UNIX workstation users. Example:

    Put a thick (50 to 60 pixel) gnome task bar at the bottom. Eliminate the one at the top. Put a 5x2, 4x2, or 3x2 virtual desktop selector thing on the task bar. Set your window policy to the traditional UNIX-style focus-follows-mouse. Never ever minimize, maximize, or roll up a window; simply spread them across the virtual desktops. You should use the traditional xterm, white on black, with the default font. (80x70 characters is good) A sharp LCD (native resolution, digital connector) is strongly suggested, at a minimum resolution of 1600x1024. Choose a fast-starting editor: original vi, joe (like WordStar), microemacs, or even (ick) pico. Linus uses microemacs; the source is on the kernel.org site probably under the name uemacs. Never use the file manager or file selector if you can possibly avoid it.

    That's what the real hackers use, at least when the hardware is available. It's an upgrade from the "screen" program or the Linux console virtual terminals, without much change to the tried-and-true work habits.

    You don't have to go with that exactly, but it's clear that your current setup isn't working for you. An IDE is a workaround, not a proper fix. An IDE only helps with one very specific task. A proper fix will make you more efficient at many other tasks. You might even start to like the gimp (zillions of windows instead of tabs) or set your web browser to open windows instead of tabs.

    BTW, learn the extra tools. Valgrind usually whips gdb. You may also like ltrace, strace, nm, eu-readelf or readelf, oprofile, etc. Rarely will you find an IDE button to make these tools run. Learn the shell, really: you can do loops right on the command line, backtick substitution, etc.

  18. Re:Don't write off simple tools until you know the by david.emery · · Score: 4, Insightful
    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.

    That's my experience too, actually. And it's also the way I worked back when I pounded code for a living, working with (actually working around) the big Rational APEX IDE, this on a project with well more than its fair share of studly coders.

    I also fully agree with those who have emphasized code reading/understanding as the critical activity in software development. Things like ctags were a really important development. At the same time, I've emphasized the readability of the running text itself. I've heard some advocate that "the IDE will locate cross-references, etc for you" implying that all developers will have equal access to the IDE -and- the IDE will be fail-proof in finding cross references/relevant related information through its own code understanding. Rather, I think that the one-and-only thing you're guaranteed to get in a maintenance situation is the source code, so source code must stand alone in its ability to be understood.

    dave

  19. Re:Microsoft IDE is like a bad rash by ardor · · Score: 4, Informative

    If you think the Visual Studio is a good environment there is no hope for you.

    Stuff your arrogance where the sun doesn't shine.

    I for one have been using Visual Studio for more than six years. I used 6, 7 and 8. 6 IS crap, yes. But the rest of your posting radiates ignorance. The typical UNIX way (make/emacs/vi/shell) is not The Way To Enlightenment. I don't use VS for code generation, I use it because it automates stuff I just don't want to handle all the time. Building? One click. Debugging? MUCH easier than with gdb. Quick overview & access to all files? Done.

    I do develop for Linux, too, and it constantly bugs me that I have to switch to the shell, type make/scons/whatever, see the error output, switch back to the editor, look for the file in the file requester, open it, switch back to see the exact error, switch back to the editor.... vi and emacs are damn confusing, gvim is ok, but doesn't have a file overview panel like VS has. My favourite editors in Linux are kate, nedit and gedit, but none of them have all helpful tools VS has. Oh, and then there is gdb. Debugging multithreaded stuff with gdb - yeah right. gdb often simply misses breakpoints, does not find the source (even when I specified the exact path in the source command), watching variables is unnecessarily difficult etc. gdb is an absolute nightmare to use. ddd is better, kdbg is best, but debugging is one of the things where an IDE shines: since it has knowledge about the overall project structure and the files it consists of, debugging can be much easier. Then there are additional benefits, like refactoring tools (mostly in Java IDEs though - see IDEA).

    --
    This sig does not contain any SCO code.
  20. Re:If you must... by MORB · · Score: 5, Informative

    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.