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

26 of 643 comments (clear)

  1. Unix is an IDE by keesh · · Score: 1, Interesting

    Unix *is* an IDE. You just need an efficient editor component, and once you learn how to use it, gvim 7 (code completion, baby!) is ideal.

    The problem, of course, is that the learning part takes several years.

  2. 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.

  3. Re:Personally... by springbox · · Score: 2, Interesting
    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.

    How exactly? I primarly use Visual C++ 6's IDE and have found, as with other development environments like IntelliJ, all they really seem to be good at is helping you to organize your projects files and automate the building process. Their debuggers are also often fairly nice. When I'm using Linux, I have vim, make, and gdb. 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. It's often easier to work on a project if everything is mostly in one place.

    Development environments seem to provide ease of use and not much else. How do they "force" people to maintain bad code?

  4. I like Eclipse. by toby · · Score: 3, Interesting

    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 #!
  5. Re:Don't write off simple tools until you know the by wronkiew · · Score: 2, Interesting

    Tool choices are not just an issue of personal taste. There are tools which are better than others, and there are some tools that are worth a lot of money because of the productivity gains that experienced programmers can get out of them. This is particularly true of debuggers.

    Disclaimer: I work for a company that sells development tools, including tools for Linux.

    Some bugs can be fiendishly difficult to diagnose, particularly bugs that involve timing, resource usage, random events, and memory corruption. If you run into a bug like this and your tools consist of vi, a shell, and gdb, you are either going to spend months trying to diagnose it, or you will have to ship your program with a known defect. You could instead get yourself a trace-capable debugger, run your program in it while logging the execution of every instruction, wait until the bug surfaces, then step backwards through the program until the point where things start to go awry. I have used a debugger like this to solve problems that I would not be able to solve with, for example, Eclipse. I admit there are a lot of tools that make things easier by hiding the details of source repository checkouts and building projects, and I tend to avoid them in favor of the command line equivalents that can be scripted. When a tool provides me a better view of how my program works, it's worth using.

  6. 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
  7. 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.
  8. Emacs/Slime by Whip-hero · · Score: 3, Interesting

    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--
  9. Re:Regarding Debuggers, everyone should read by gangien · · Score: 3, Interesting

    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.

  10. Re:Eclipse by Anonymous Coward · · Score: 1, Interesting

    Just compare CDT to what Eclipse can do with Java.
    CDT can not even reformat a file or selection, formatting as you type is also quite limited.
    More important - look at all the refactoring stuff like extracting a block of code into a function, auto-generating getters/setters for data members.
    Just try to code something big and serious using Eclipse Java and then using Eclipse CDT and you will see all the difference.

  11. Re:You might as well ask... by someone1234 · · Score: 2, Interesting

    1. i don't think the beliefs of a christian leader are higher than any single 'lowly' follower's. Think of Mother Theresa. Same goes for the fanatic muslims. None of those head honchos who issue the suicide bomber fatwas do actually become suicide bombers. 2. i think Hubbard genuinely believed in Xenu and all that crap. He took too much narcotics. Most of scientology is just business anyway, they call it a religion to avoid taxes. If scientology would be a religion, it would be safely called a cult. Otherwise i view it as a pure criminal organisation.

    --
    Patents Drive Free Software as Hurricanes Drive Construction Industry
  12. Re:You might as well ask... by Ekimus · · Score: 2, Interesting

    2. i think Hubbard genuinely believed in Xenu and all that crap.


    Not sure about that but wasn't Hubbard in a managing position (before he started scientology), and said at some keynote "If you want to make real money you have to found a sect"?

    (given I have no idea who what xenu is...going to wikipedia now)
    --
    You are not free to read this message, by doing so, you have violated my licence and are required to urinate publicly. T
  13. Re:Visual Studio 2005 by aztracker1 · · Score: 2, Interesting

    I've used both, and to be honest, I think it is a bit slower in places.. on my home computer it's pretty responsive (2.8ghz p4 not running in HT mode, with ubuntu as my main os, and 768mb of ram dedicated to my XP VM)..

    Even with its' short comings, it is far and above the best IDE for a lot of development. I mainly work on web based applications, and never touch the design view though.... When doing GUI apps, I tend to favor design mode.. kind of a duality of sorts, I just like the tighter control over the (x)html output... Master pages is a blessing, and it (.Net 2.0) is imho far superior in usability to the 1.1 framework.

    Honestly, I haven't played as much with MonoDevelop, mainly because of my main work being with Web Applications. I write more console apps, and services than I do GUI apps. Java/Eclipse is pretty usable, I'm not a big fan though, just seems a lot slower than similar apps in C#/.Net, and also really don't care for JSP.

    If I were doing C/C++ would probably look most at KDevelop, Anjuta, and Eclipse..

    --
    Michael J. Ryan - tracker1.info
  14. Code::Blocks by Tychon · · Score: 3, Interesting
    Since I haven't seen it mentioned yet (of course I'm lazy and haven't read everything), figured I might as well throw out Code::Blocks. It's a lightweight GUI that offers a plugin system, enabling you to add any features you should want beyond the defaults. As copied from the site:
    • Syntax highlighting, customizable and extensible
    • Code folding for C++ and XML files.
    • Tabbed interface
    • Code completion plugin
    • Class Browser
    • Smart indent
    • One-key swap between .h and .c/.cpp files
    • Open files list for quick switching between files (optional)
    • External customizable "Tools"
    • To-do list management with different users
  15. Re:vim by peterpi · · Score: 2, Interesting

    cscope, what's that?

    (1 google later...)

    Oh great! :) That's what I'll be learning this afternoon! That's something I love about vim. Just when you get comfortable with it, you can find one more feature to save your time. I like it more and more every day.

    (current project: 97k lines of code. Not huge, but fairly sizeable)

  16. Re:You might as well ask... by Anonymous Coward · · Score: 3, Interesting
    "Writing for a penny a word is ridiculous. If a man really wants to make a million dollars, the best way would be to start his own religion"

    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.

  17. Use the Best by StarkII · · Score: 3, Interesting
    I have been developing professionally for over ten years in Unix and Windows. The best solution I have found is to do all of my development in Dev Studio and then cross compile for Linux. If you are not doing OS specific development it isn't very hard to do. After a while you learn all of the irritating little differences between Windows and Linux and start developing in a platform independent way naturally.

    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
  18. Re:If you must... by dcam · · Score: 2, Interesting

    Hey thanks for the heads up. We were considering moving to VS.Net 2005. More to the point, we were considering .net 2.0. I've heard a few horror stories though.

    The key driver for us has been the introduction of generics. Aside, what is with that? Why didn't they just call them templates and add into in 1.0/1.1?

    --
    meh
  19. Re:If you must... by madcow_bg · · Score: 2, Interesting

    My god, I have done some programming in VS 2003 but I missed all the things you mentioned. Except the ridiculously long compile times. Well, I only managed small projects, so no wander why I have missed it.

    The truth is that after VS 2003 I went to Eclipse. It lacks (good) support of C++, but the Java thingy is superb... the code completion, refactoring, hints... I can live my life when writing apps, it automatically asks me what to do with uncatched exception, has excelent plugnins for EVERYTHING. If only someone would write the same features for C++ I would never ever ever want to go back to VS 2003.

    VS 200x has good graphical interface and good wizards, but the rest is mostly pile-o-shit, compared to Eclipse (well, the equvalent features). I especially hate that it can operate only with MS SQL. Vendor locking, anyone?

  20. Emacs excels at the basics... by jimmyfergus · · Score: 3, Interesting
    I was a one-time (pre-vim) vi power user, and switched to emacs for serious editing. The most important thing that emacs is good at, that vi(m) is kind of ok at, and everything on Windows is useless at, is ease of basic text editing. If you want to move the cursor around on Windows you have to take your hands off the home keys and use the arrows. Those who are used to Windows, or can't touch-type, will think this is unimportant. Others know better. Once you're comfortable in either emacs or vi, moving text around becomes second nature, and you don't have to engage the brain at all, even to coordinate locating the arrow keys, or worse, the mouse.

    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!

  21. Re:vim by deadlinegrunt · · Score: 2, Interesting

    Truth be told if you are actually any good at coding you will write your own wizards and generators, regardless if you use an a full fledged IDE or a fail-to-get-with-the-times-because-the-IDE-people- said-so text editor.

    Scary to think how much production code gets action with wizard generated code and developers have no idea what that code is actually doing other than maybe a cursory overview, if that.

    --
    BSD is designed. Linux is grown. C++ libs
  22. Re:Eclipse by CDT+Doug · · Score: 2, Interesting

    Hmm, I'll have to go back and see what I presented at EclipseCon. The funny thing is that the theme of the presentation was to show how to use the Eclipse CDT to develope Firefox source. It was supposed to reveal that you can use the CDT with large projects such as Firefox with little pain.

    Building projects using make, especially with recursive makefiles such as you find in Mozilla, is indeed a slow process. We are working on an internal builder that will operate much like Visual Studio. However, I think you'll have a hard time convincing the Mozilla community to overhaul their build system. That is why we continue to support seemless integration with pre-existing build systems in the CDT.

    The big feature with CDT 3.1 was a rewrite of the indexer framework. I am now able to index Firefox in about 10 minutes. You only do that once when you set up the project. After that you hardly notice the indexer running when you change files. The comment you mention is in regard to the old Full indexer that has been the bane of our existance for years. The new indexer should address these issues.

    I don't know any technology that can debug Java and step into JNI code. I notice that the C# debuggers (.Net and Mono) can do that, but no-one has invested in a Java debugger that can do that. And, yes, if you know how to do it, contributing to the CDT project is the best way to get some fame.

    Visual Studio continues to be the benchmark that we try to achieve with the CDT. We are also looking at the amazing features that the JDT provides. We've certainly come a long way in the four years we've been working on it. I've received alot of feedback that tells me the CDT is not a joke, and of course there are those who think it is. But such is life in the "open".

  23. CodeForge by Hunterdvs · · Score: 2, Interesting

    Seriously, I'm suprised nobody has mentioned CodeForge yet. Seriously fast code completion lookup and tightly integrated support for source control won me over. Dl the free trial and check it out.

  24. Re:You might as well ask... by VE3MTM · · Score: 2, Interesting

    Yes, thank you. I was anticipating that objection (that Hubbard believed his stuff), and I was going to pull that exact quote to prove my point.

    At first he didn't believe any of it. To him, it was a business, and a very profitable one at that. Only later in life did he go mad and start believing his own stuff. There's also evidence that he never followed all his teachings and used psychoactive drugs up until his death.

    --
    09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0 Whoops, silly middle mouse button...
  25. Unique to Linux: debugger able to step /backwards/ by greglaw99 · · Score: 3, Interesting

    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.

  26. Re:vim by deadlinegrunt · · Score: 2, Interesting

    "I started out using wizards when I was new to ASP, and it helped me get some results quickly..."

    Which is exactly the reason they exist. As you further point out, generalized solutions generally don't work all the time...Especially in edge-cases. This is quite different than the Not Invented Here Syndrome - I am surprised someone didn't chime in as such. As it stands you have elaborated on my point quite well and I, of course, agree with you 100%.

    --
    BSD is designed. Linux is grown. C++ libs