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?"
...which religion is best.
vim 7 + cscope == awesome
thisnukes4u.net
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.
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.
DUCK!!!
If something is so important that you feel the need to post it on the internet... It probably isn't that important.
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.
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.
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 wonder. Which Dev tool gets it right?
Bet this
Absolutely -- that and Excel.
Anyway, as with a lot of things in Linux, you might want to take your preferred toolkit into account. (Since you seem to be asking about a RAD...) 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. Although back when the weekly KDE developer interviews asked about preferred tools, they mostly used Emacs, so take that for what it's worth.
(PS: to fend off flames -- I know you can write GNOME code in KDevelop and vice versa, but when last I tried, the cross-toolkit RAD wasn't there.)
What I'm listening to now on Pandora...
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.
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.
somewhere on a nice beach on the west coast of Mexico and tall (or short) black haired, big round eyed girls bring you a constant supply of Negra Modelo and guacamole with habanero chilis...and of course using a Mac. Some Oaxacan sinsemillan would be a nice touch.
What?
If you don't mind using a non-integrated solution, DDD is a graphical frontend to gdb that I've found pretty useful. The only thing I don't like is that it is Motif based, but it works reasonably well. And then you can use whichever source editor you prefer (xemacs, nedit, whatever...)
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!
jEdit FTW or for a full IDE KDevelop is pretty good too.
Given a large codebase that you are unfamiliar with, it's hard to start understanding the code with just Vi. It sounds like your ideal environment would allow you to pull a Mozilla project file into something like Eclipse or VS or KDevelop and have everything parsed out into structures, functions, methods, classes... You're not going to find that with the way Mozilla is built (at least the last time I checked). I think KDevelop does have the ability to parse autoconf files and set up a project that way, so you might be able to pull in parts of Mozilla that way. I think Anjuta might have a similiar ability.
I've since moved on from C/C++, but last time I checked the Eclipse CDT was getting a lot of work done on it. What is the problem with it these days?
20 some years later, it's still emacs. ;-)
Agnosticism. (ducks)
Though, actually, that's not far from my recommendation. Learn a bunch of different stuff. Learn vi and emacs, they both have their place. Spend some more time with Eclipse, I'm curious as to what you found lacking there? If you still don't like it kick around some of the other Linux IDE's. Hell even if you do like it kick around some that look appealing. Try some different frontends for gdb/vim/emacs/etc./etc. Just like anything, different tools are appropriate to different projects, and if you don't get too stuck with one (as seems to be the sad state of affairs for many here) you won't find yourself in the frustrating situation of trying to put in a nail with a screwdriver or hammer in a screw.
To fight the war on terror, stop being afraid.
mever leave home without it
The war with islam is a war on the beast
The war on terror is a war for peace
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
Seriously! Try KDevelop. It has all the features you mention and works very well. It really is a good alternative to vim+cmdline tools.
Doesn't Linux have a command like 'copy con'?
Steve's Computer Service, Hobbs, NM
IDEA is the best IDE I have ever used on Windows, Linux, whatever. Not "free", but you didn't ask for free.
Visual Studio 2005 just rocks.. I only wish there was something remotely similar for Linux.
-- -- Warning. Do not stare directly at the sun.
Visual Studio 2k5 works perfectly fine with SVN integration. Writing cross platform C++ apps are easier than ever. Then again i never touch gui crap so im not using very many platform specific APIs.
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.
bash + nano + fbcon + gcc + gdb + i-will-kill-anyone-who-thinks-otherwise-with-my-ow n-bare-hands
I am not sure if our tastes differ that much - I personally like using the shell, you'll be hard pressed to find my machine up and running with less than three shells open, one on vi(m) and one building and the other grepping. On the other hand I won't ever claim to be a vi or gdb guru - I'm still learning them as I go (though, who isn't?).
I find that gui's that mess with your project structure or force you into rigid workspaces (eclipse for example) with interesting rules of where you can and can't place code quite annoying. It would be nice to be able to just have a GUI that would integrate my own proper custom rules. On windows one of my favourite editing tools was always a simple editor (style editplus, not free but useful with excellent options for integrating custom tools.
I may be dreaming that there is a GUI out there that can just integrate with my current shell development and do what a graphical IDE is meant to do - make development easier without forcing the developer into bad practices and loss of knoweldge (as you mentioned).
"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."
Apparently posting to slashdot has a similiar effect.
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 #!
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.
I like C# and several other CIL targeted languages are quite interesting as well. The IDEs are getting better and better and the class library is just nice/awesome. Think "Java without three letter acronyms".
Unmanaged C/C++ is dead for applications imo.
for projects >1mil lines.
Integration with ctags and debugger is really nice & useful. I think it's _the_ most promising IDE for C++ on Linux.
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
"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."
Well that certainly explains a lot of the code on sourceforge.
No one has mentioned Anjuta http://anjuta.sourceforge.net/. It really is just what you're looking for!
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--
_put you most loved kernel here_ + BASH + VI(M) + GDB + MAKE + GCC (ok, I know it is not perfect, but... ) will do the job!
by the way, EMACS SUCKS!!!!
I agree with the general sentiment that any good tool should not get in the way of some good, intense thinking when developing. The fastest way out of a *zoned* hacking session is getting frustrated at whatever you're using.
I also agree with the pragmatic approach of finding a good set of tools that work across many platforms, and using it a lot until it's part of you.
For me personally, this means using Emacs for miscellaneous hacking. Taking the idea further, for embedded Java hacking as I'm doing full time right now, for instance, I can configure the Eclipse platform to use the common Emacs keystrokes and away we go without missing much of a beat at all.
Should I in a year be doing python hacking for whatever reason, I know that I can concentrate on brushing up on language details, rather than muddying the waters learning some new editor or environment.
This goes for any editor.
Bottom line, in my experience, nothing beats learning one editor (Emacs, vi, whatever floats your boat), and having a kick-ass build script (again, whatever puts the bologna in your sandwich - make, ant, etc.) for sheer keyboard shredding efficiency.
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
on XP running inside vmplayer. Beer... It's not just for breakfast anymore!
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.
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.
KDevelop is probably (I've tried alot) my favorite IDE for Linux, however, I do most of my development in vi.
Those are very excellent points and I agree wholeheartedly.
:D
That said, I am not a great programmer. I'm a decent scripter (maybe even "very good") but I've not done anything too useful in C, C++ or Java. When I do need to code in those languages I like to a GUI tool because it can let me do the simple things easily. For example, I was able to make a simple front-end for a configuration utility in C by using Kdevelop. It made it easy to create the sliders, checkboxes, and user input fields. What was really cool was having to do some Java. I can do a "Hello, World!", the supermarket queue, and Towers of Hanoi but that was about it. Sometime last year I was asked to create another frontend. I needed the job so I said, "Yeah, yeah... I can do that," and managed to hack together something with Netbeans. The interesting thing was that the previous consultant who'd written the app was a pure command line guy. He was a great programmer but absolutely stunk at the interfaces (he thought popt was the ultimate in interface design). Because I was able to create a very pretty looking interface they thought that I was a great programmer. "Wow, you did this in a week!" Of course, I only made a frontend to his app but it looked impressive.
The point I'm making is that a text editor is great for the code, but maybe not ideal for the pretty CEO friendly interface. And a good GUI tool can make you $2000 in a week
Heh, Anjuta is definitely a Gnome app: doing apt-get install anjuta has 79 dependencies on my Ubuntu 6.06.1 box, plus the gcc stuff that was already installed.
Hail Eris, full of mischief...
E pluribus sanguinem
I was never big on IDE's always used vim, until recently I started using NetBeans for Java apps at work. NetBeans also has support for C/C++ using the GCC compiler on Linux. It has CVS support with subversion support on the way. Has a class browser, debugger and can use existing makefiles . Its written in Java so its easy to get up and running. Download it play around see if its for you. Screenshots::http://www.netbeans.org/products/cplu splus/screenshots.html
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
How long did it to take you? Did the browser window close a few times when you tried to hit C-x C-s? Since we know you surf in emacs too?
Use websphere application developer - does everyhing - thinking how to code is optional cause it does it all! :) -- I runs away and hides behind something very very strong.... :)
I have SUSE 10 and Plan 9 on my laptop. Use GRUB.
The Acme editor will be up and running on first boot, with an intro.
The install disk is also a live disk, so you can test your hardware first.
There is also this:
http://swtch.com/plan9port/
Which is a port of plan 9... but dual boot if you can.
If you're so die-hard that the built-in vi isn't real enough for you, why not?
Emacs can open a window for shell commands or to do a compile. Running vi is certainly something you could do. You could even bind it to a key.
nt
When a tool provides me a better view of how my program works, it's worth using.
No offense, but if you need a tool to tell you how your program works, you've got bigger problems. Even in multithreaded code, with sufficient diagnostic output, you should be able to solve any bug. In all my time as a developer, I have yet to come across a bug that can't be solved by developing a mental model of the code (usually with the help of extensive telemetry) and working through things logically.
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.
There are the old tools of course, cscope and cflow, but also new stuff.
Check out www.opensolaris.org's source browser. Go to http://lxr.linux.no/ to see Linux in a different source browser. I know the latter is available as source; I'm pretty sure the OpenSolaris one is too.
Use the editor for editing, and the browser for browsing. Makes sense, hmmm?
Some of these things are integrated with the version control, allowing quick access to prior revisions.
Is to get a Windows box, install Visual Studio 2005, and then compile the resulting code using Mono. I've used Eclipse quite extensively at home in addition to using VS 2005, and in my opinion VS is much more usable. The intellisense, for example, is highly reactive and very detailed in VS, while being much slower and less appropriate to the given situation in Eclipse.
I have no doubt that Eclipse offers a better implementation of the advance refactoring features, since that's the kind of thing the open source community is good at focusing on; but when it comes to the moment-to-moment stuff that you use all the time, MS' expensive usability labs rule.
...use Notepad!
Strange things are afoot at the Circle-K.
As a long time Unix/EMACS user, I have finally been forced into Microsoft VC++, and it has been painful. The documentation is useless. There is so much of it that the informatin density is almost zero. If you don't know how to do something, finding it is impossible. It is actually worse the MAN pages.
If you don't do things like they show in the examples, it takes a vast amount of effort to set up the environment. I have spent, and I mean this literally, more then a week out of the last 7 weeks of work fighting with the IDE so it will build my system.
Of course part of the problem was that I started in VC++ 6 and then had to move to VC++ 8. What a nightmare. The automated import was useless because the file structure changed when I switched for 6 to 8 (don't ask). After spending a better part of a day trying to make the imported version work, I gave up and started from scratch for VC++ 8. This piece of crap decided to insert some extra file names into my path, and I didn't notice it. I could not figure out what the hell was happening. I made changes that didn't seem to work. I was literally editing the wrong file. Of course, the restricted display panes where the paths are printed made it very non-obvious that the path had changed. It was hard to find the problem for the same reason that I didn't see it in the first place: no meaningful screen area for seeing the IDE pop up windows, and no way to make them bigger.
What moron decided that the file structure and the tree structure for seeing files are completly decooupled, except for the defaults that I can never figure out how to change? Sometimes all the ".h" files are always in the include folder, except when there not. Oh, you can move them around by drag and drop, but is that their idea of automation? How come there is no option to make the IDE tree-folder structure match what's on disk? Too easy for the user?
It is inconsistant. I decided to use path macros in VC++ 8 because of the trouble I had with changing the directory structure. Well, in the C++ panel when you go "$(name1)$(name2)" it inserts a "\" between the two names. In the Link pannel "IT DOES NOT INSERT ANY SLASHES". This means it can make up exciting new file names that you never imagined. Lots of fun to guess where the new names came from.
Tried to change a font size? After the path name screw up, I decided to make the fonts bigger. They've have at least FIFTY different catagories of text. If you change test editor font size, it has no effect on any other font on the screen. So if you want, say, the output from the compile step to be bigger, that's another selection that takes multiple selection steps. Do it again for the stack trace and variable view and on and on. Why is there no way to say "make ALL the fonts bigger"? My eyes are already distroyed from too much screen time, which is why I need bigger fonts.
And I have only done the setup for the DEBUG compile. I will have to go through and do the same crap for the RELEASE compile. Oh joy. I have multiple parallel compile projects, and there is no way to take the setting for one and make them work for the rest. Oh, there is some way to use inheritance form the SOLUTION, but that would take a full day of reading and trial and error to make work. My brain would explode. With make, it's trivial.
Now the time I spent learning make/gmake was well spent. It dosen go through any changes when Gates and Co. decide that they have to extort millions of dollars out of developers for a new version. Remember, the purpose of the new version is to make it less compatable with the rest of the world, so that they can try to keep there monopoly in place. They are SO thoughtful in Redmond when the decided to deprciate "printf" and the string functions in POSIX. Thye only have our well being at heart. It's for improved security. There products are SO secure.
Oh, by the way, I am now debugging my program using print statments. It is multi-threaded, and it's operation changes radically when
I never ever heard a Linux kernel developer dare mention an IDE. Most use fast-starting simple little text-only editors.
Linux: microemacs (uemacs) and NO DEBUGGER
Alan Cox: joe
Andrew Morton: some toy like pico or maybe nano if I remember right
An IDE is perfect for slapping together a Visual Basic business app.
BTW, out of that 7 million lines: over 5% is assembly, and there is a goto at least every 200 lines. You're not making a UML diagram out of that! Despite that, which surely horrifies the IDE addicts, hard-core programmers find Linux to be very readable.
Since I develop everything cross-platform I regularly use Visual Studio 6.0 on Windows. So far I haven't found a better development environment on Linux than the console, the big ones are too bloated, the small ones too limited and none has a useful debugger integration.
c omponents/wxscintilla/build/Makefile?view=markup) you can view my most complex makefile, you probably have no problem to understand it. Another sample how easy you can develop with the console is at wyoGuide (http://wyoguide.sf.net/) which can be used as a tutorial if you have some C++ knowledge.
Yet I've to admit, thanks to using wxWidgets my makefiles are seldom larger than 100 lines and never larger than 200. Here (http://wxcode.cvs.sourceforge.net/wxcode/wxCode/
O. Wyss
See http://wyoguide.sf.net/papers/Cross-platform.html
The USSR trusted this guy enough to let him out (probably a family at home to torture if need be) and valued his work enough, so he gets sent to Silicon Valley.
My uncle needs something. OK, a quick trip to the supermarket. The russian guy goes missing. After a search, they find him in the corner of the store, crying.
I do this all the time, using a simple editor which is similar (text-only, fast-starting) to vi.
I just open 20 or more xterm windows.
Probably that seems insane to you. It is, if you don't free yourself from the Windows-style desktop. I can deal with dozens of windows with little effort by setting up a traditional workstation-style environment:
a. focus-follows-mouse, not click-to-focus
b. never minimize, maximize, or roll-up
c. 6 to 12 virtual desktops (use them all)
d. never use the GUI file manager or desktop icons
e. traditional xterm, white on black, default font
You'll want a native-resolution LCD (digital connector, not VGA connector) of at least 1600x1024. Go with 2560x1600 if you can afford it.
BTW, if you really need to actively edit all those files, see if the task might be scriptable. The sed and awk commands are great. You can use perl too, right on the command line instead of with a script file.
This is a ridiculous question.
As everyone knows, the most common Linux development environment, and the one that has been most effective thus far is:
The basement of your parents house, surrounded by empty Cheetos' bags.
Most distributions offer some sort of precompiled version from the Emacs development tree. The gdb mode for source code debugging is much advanced when compared to either XEmacs or released Emacs versions.
There are also native precompiled snapshots for MacOSX (http://yaced.sf.net/ and http://aquamacs.sf.net/) and on the AUCTeX download site http://www.gnu.org/software/auctex/download.html there is a recent Windows executable.
For Ubuntu and/or Debian, apt-get install emacs-snapshot should do the trick.
Emacs. Vi is bad.
Karma: Excellent (My Karma? I wish...:-( )
It's been a while since I've used it, but I found RHIDE http://sourceforge.net/projects/rhide to be quite useful. It's an old-skool Borland IDE clone with build in debugger support and runs in a console.
Bloodshed. http://www.bloodshed.net/
...ed! It's the standard text editor!
It's not an IDE, you say? Bah! Ed can run shell commands, right?
I asked the same question 4 years ago, and a friend told me about Code Warrior. But you have to pay for it. Still, I hope Eclipse CDT upgrades soon.
If we're talking real IDE with a GUI, the answers from me would be Kdevelop3 and Eclipse.
:)
Both are fine, nice, sometimes superb. And yes, both need some adaptation from the coder's part, but after that, you'll just find that they both do their job pretty well.
Next question ?
I am putting myself to the fullest possible use, which is all I can think that any conscious entity can ever hope to do.
what more do you really need?
dave
...I always thought it'd be a place full of ducts, designer ducts for your discriminating taste.
"...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 is evidence of little more than you work in environments where the best developers worked that way...nothing more. My experience has been almost the opposite...with the text editor/shell/terminal guys being outdated fuckwits that CAN'T or WON'T learn new development tools/methodologies. So I guess we cancel each other out in that department.
".. 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.."
It's really cute that you think that is "complicated".
the old Turbo Pascal IDE has been cloned to linux, I'd go for that.
Great for joe users.
Shame about the debugging support.
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
Good lord, people. I don't get what your problem is. [whiny]"Don't use an IDE-- it'll make you fat and lazy."[/whiny]
Personally, I don't often find myself wanting to run various small tools on my code. I mean, what do I find myself doing in a 2,000 line file of code? Well, editing 20 lines at a time. Not running a tool on all 2,000. Give me something that helps me with the 20.
Give me something that lets me just mark a freaking breakpoint somewhere, then watch what the values of the variables are as I step through the code. Don't make me scatter printf's everywhere. I still don't understand how you people managed to build vast operating systems without a debugger. (And no, gdb doesn't count. Gdb was my great-grandfather's debugger.)
I find it insulting and just a tad moronic that someone would think I choose an IDE because I can write ugly code faster. I write very nice code, thank you very much, and-- what's that? Wow! I use an IDE! It didn't turn all my code into spaghetti-- because I'M STILL THE PERSON WRITING THE CODE. Not the IDE.
Is there a good book that would take someone relatively new to C, and teach them how to use make and cvs? Something that would slowly introduce things you can do with make and cvs, starting a project from scratch, then teaching you things as need without assuming years and years of programming experience, or lots of experience with the issues of why using make and cvs are helpful. Building from simple commands line stuff, through complicated command lines stuff, through distributed cvs via cups, etc, and lots of concurent users, etc. Pointing out security and management issues along the way?????????????? I'm not a real programmer, and may never be, I'm mostly an administrator, I occasionally use CGI, to impliment something for my users, but I gotten the impression make and cvs are what good programmers use when they have the choice, but it seems awful hard to get into it. Its one thing to write a c program with a couple of files, but a project like mozilla is a huge jump in complexity. Sorry for hardly using any periods.
Conversely, vim also has all of these features and more. If you're coming from emacs, you can set vim to use emacs-style keyboard bindings, if you wish. Some emacs-style completion is supported by default.
My colleagues and I had an all out war (emacs vs. vim). In the end, we discovered that they are both just as feature complete and able to emulate each other quite well. Emacs could be a tad more efficient, as it requires more RAM, disk space, and CPU time than vim. It's a non-issue if you have enough resources. For us, it was an issue (flash drive).
In any case, if you are willing to invest the time to master either emacs or vim, I think you'd be best served. Graphical IDE's are often easier on the eyes, but I've yet to find one as customizable. All the features you'd ever need can be had in either of these two editors and they really are superb at what they do.
What happened to your previous declaration "as a Jaffa"? Couldn't resist the Ori-worshipper mod points, huh??
Real men code in binary. Use your favorite hex editor.
.sig: No such file or directory
I don't know how well it will suit your needs but it seems a preety good one. It's not free but I think it can do the job.
One great gui I would recommend is Lazarus.
http://www.lazarus.freepascal.org/
This is a Delphi clone based on Free Pascal.
The source code virtually compiles on any platform available.
Most Delphi code can be reused. The quality is really good.
RTH
IDE's are to real programmers what Flight Sim is to real pilots. There I said it.
I love the question. The replies it get never fails to make me LOL on the floor.
Frankly, Linus sounds like a guy who haven't used a debugger much and therefore thinks it's a bad tool. Very unprofessional, if you as me. There are many, many programmers that are much more talented than him, that use debuggers all the time. More than anything, it shows Linus' limited capabilites. /David
I'm surprised no one has mentioned Code::Blocks. I love it. It feels like a real IDE and has good gdb support. It supports 4 compilers (gcc and mscc are the only ones worth noting IMHO).
There's one little rub, you can download the "stable" version but if you only use that, you may end up not liking it much. Here is what I do (on windows):
- Download and install the stable version and grab a nightly build and plunk it on top of the stable. That way you get g++, gdb and other good stuff with all the new features of the nightly. I haven't seen a nightly crash yet.
For Linux, if you have Ubuntu, there is a deb. The only bugger with the deb is that it doesn't depend on a compiler (g++) which I think it ought. Small problem though.
Check it out, it's the best in my world.
http://www.codeblocks.org/
Cross-platform (using wxWidgets) IDE.
People dising pico, praising vi and emacs
IDE's are for wimps, real men use ed
What a fucking stupid question to ask these 1980's OS users
I tend to use Eclipse for Linux based dev, although I tend to pop open a shell window for doing build tests and the like (I mostly write daemons). Of course when I'm whoring it on Windows I use Visual Studio - yeah I know, but I rather like having money and when someone specifies they want Windows software, that's what I write.
Yeah, I had a sig once; I got bored of it.
Redundant and Retarded, seriously can we have a better question???
duh.. If you like vi and want GUI.. the choice is easy.
-=[ place
Works very well with C/C++ and other languages. If you write Java check out JDEE. Check out the Emacs wiki (http://www.emacswiki.org/) for more tips.
I realised that IDEs were slowly turning me into a lazy programmer, and with all the fancy tools for searching / locating and hyperlinking I was actually not getting to know the code base. By forcing myself to use emacs and the command line I found myself getting to know the code more intimately and actually learning the language much better. I found that with IDEs highlighting my mistakes, I was constantly making the same mistakes because I would correct them out of habit rather than learning not to make them in the first place. I still use an IDE when I need to get an overview of the code base, or sometimes for intense debugging sessions, but I use them more as a supplement than a main tool and it's completely changed the way I code for the better.
Visual Slickedit is the best by far but you have to pay for it. I have used the Windows version professionally for decades and bought the Linux version when I got my first contract job using Linux. If you are doing serious programming, it is unbeatable. It is complicated enough to require some study to master it. It can be configured to work as a front-end for any command-line tools and the Linux version comes set up for all of the usual ones. It analyses program structure, parses compiler error messages and references them to the source text, etc. It does an excellent job of organizing large projects involving hundreds of files and many modules. http://www.slickedit.com/ Mike
In my nearly 30 years of coding computers of all sizes and shapes, I have reached the conclusion that there is a lot to be said for simplicity in your setup, no matter how big the project. I have found again and again that the most important concern is portability; even though you work on Linux, you live in a world of UNIXes and even Windows. So the following are my suggestions:
1. Learn to use vi properly - not vim, but 'classic' vi. Or alternatively, use emacs. It is not that vim is bad, but it is not on all platforms. Being able to do my coding anywhere is something I have had enormous benefit from over the years. GUIs and syntax highlighting may be pleasing to the eye and look cool, but proper indentation is all you really need.
2. Learn to use make properly. GNU make is probably the de facto standard now; it is certainly the same on all platforms. Put subprojects in subdirectories; it is very simple and efficient.
3. Learn to use a source code control system properly. I prefer Perforce; it comes with a GUI interface if you must.
4. Learn to code properly. This is not so much about algorithms or fancy coding, but about legibility. I always imagine I'm writing my code as an example for somebody to see how the current problem should be solved. I include comments that actually explain what and why rather than stating the obvious. I indent according to a rigorous model and I avoid unnecessary whitespace. Code should be read as literature, so don't put things in columns - that's for accountants.
5. Learn to debug properly. I don't use debuggers at all - I used to, but stopped because I found the advantage was too small. Instead I rely on trace statements - yes, basically printf()'s. It is only in the very simplest cases that a debugger is effective. But whatever your preference, learn to do it properly; the UNIX debuggers are more or less equivalent, so I suppose there's no real need to stick with just one.
- So why not an IDE? Well, mostly because you don't need it. It binds you to just one way of doing things and it isolates you from what is actually going on. If you are used to eg. Visual Studio, do you actually know what happens underneath it all? You will need to know from time, especially if you are going to write portable code. A better way, I find, is to have several xterms open, one for each task, more or less: one for building (with make), one for testing the program, and one or more for editing code.
And before you start scoffing at my ideas, I can say that I'm far from being the slowest coder in my company.
I've been wanting to try this one for a while: Qemu + eclipse
But then kdevelop gave me the least problems out of the three;
Non sequitur: Your facts are uncoordinated.
I have 20 years experience as a programmer and I can tell you that the best environment is universal.
After years of programming on Solaris, IRIX, Linux, Cygwin my development environment is the following:
one shell window of vi for editing.
another shell window for gdb (on Linux) or dbx (on all other UNIXes) for debugging and running, or just running for scripts. Script interpreters have their own built in tools, for example perl.
And cvs for source control.
And that is all to it.
You never have to learn new programs you hired to the company, in the evening you produce solid compiled cvs'ed running almost bug free code. Minimal learning cycle related to the environment.
I do not believe in karma. "Funny"=-6. Do good and forbid evil. Yours, Oft-Offtopic Flamebaiting Troll.
Regarding Visual Studio and Microsoft programming in general. I use Visual Studio when writing code for Windows, but I dislike it for one of it's major strengths. I have heard it said that very few people really understand WIndows, and that most Windows programming is an exercise in cutting and pasting bits of code from a book, or the web, or whatever. There are several things I hate about Visual Studio. The first is the project wizards. They ask you a bunch of questions about the program you want to write, then generate 28000 lines of code. When compiled it has the look and feel of a windows program. A menu, populated with submenus and everything. That's the good news. The bad news is that you have to sit down and comprehend 28000 lines of code before you can take the next step. Assuming you still remember what the program was supposed to do. You immediately have a todo list of hundreds of things and you only just got started. You are already way behind. The second thing I hate about Visual Studoio is the Class Wizardry. If you really do understand Windows, you can sit down and hit a thousand buttons in a row, and write a complete program. I believe there are some people who can do this, but I never met them. What I hate the most about the wizards, is that their functionality is inscrutable. They touch a thousand things behind your back, and speaking of back, you can't back up. Using wizards is a one way deal. If you do need to back up, that usually means changing parts of the code by hand, that screw up future use of the wizards. Then there is the problem that the projects settings are kept in binary files, and there are so many binary files in a project, that its difficult to use source code control tools with any comfort. That's why I still enjoy programming with Makefile at the command line over using the Microsoft IDE. I know it's powerful, but too powerful for me. VS IDE is hooked right in to their knowledge base, but most of the knowledge base talks about ancient history like millenium edition or Windows 95. The minute you start using VS, the list of things you don't know starts expanding exponentially. I think I have said enough. Does anyone else have an opinion about something better?
I've recently found clewn, it's a handy interface between gvim and gdb. I like to set breakpoints visually, step through code right in the code (rather than seeing a peice of the code), and ddd is an ancient turd in terms of UI (as are most unix guis I've seen). Clewn doesnt get in the way, yet gives you just enough integration to make things a bit faster. (I've only tried it on linux, so I dont know how portable it is.. everywhere else it's just vim)
:)
If you want software for project management, I dont have any ideas. mkdir, perhaps?
-- 'The' Lord and Master Bitman On High, Master Of All
Whether it can or not, I don't know.
Whether anyone should be trying: hell no.
Your spreadsheet layout is utterly flawed, but using various excel features can be reorganized into something a lot more sane.
What are you doing where 366 columns (no more! no less!) seems like a good idea?
I really am interested.
-- 'The' Lord and Master Bitman On High, Master Of All
The existence of Scientology is part of the reason I'm agnostic - the impossibility of recognising a good religion.
Some people would gladly die for their belief in Jesus, but other people will gladly die for L. Ron Hubbard, who is recognised (by non-Scientologists) as a con-man. In 1000 years, what will be remembered of the beginnings of Scientology? If anyone remembers it at all, it will be the Scientologists, who will have deified Mr Hubbard even further than they already have, and any rumours to the contrary will be treated with the same disdain given to the Da Vinci Code. The man will be made perfect. Given that, how can we be sure of anything about the life of Jesus, when it becomes apparent that a con-man with no miraculous powers could have filled his shoes?
Perhaps LRH's greatest achievement was unintentional: he created a satirical religion that beats the pants off "The Life of Brian".
Honestly, whatever makes you comfortable is the best editor. If you feel that you have hit some wall with 'vi' that you cannot surpass, then it is time to try something new. Personally, I have tried many GUI editors under Linux (and Windows, for that matter), and I think that many of them do not get it right. For that reason, I do use GNU Emacs. It supports nearly everything you can think of, and if it does not yet support it, you can concieve of it supporting it by writing support for it in Lisp. I use Emacs to work on C, C++, PHP/XHTML/CSS/JS, Shell scripts, SQL, and more, keeping many of my projects in a Subversion repository. I am currently using "emacs-snapshot-gtk" on Ubuntu, with is a version of Emacs compiled with GTK+ support (though, still using the perfect "fixed" font that I prefer so much). In any case, if Emacs makes you unhappy, try gedit or another simple editor that has some support for programming. You can also try the IDEs that are available, but I have felt that they try to take too much of the process away from me, especially for GUI projects, particularly in the case where they have been established already. I think that Emacs really is the best bet. Do beware the learning curve, though.
going from being a windows coder to being a linux coder, i found kdevelop to be the easiest to use when switching from msvc.
but, if you can afford it, grasshopper from mainsoft (microsoft's partner who port their apps to *nix), which is a full *nix port of msvc ide.
portfolio
PLEASE do not facilitate people with a religious console-fixation trying to convert people away from IDEs.
The submitter DID NOT ASK ABOUT CONSOLE EDITORS. They asked about Integrated Development Environments of the likes of Eclipse.
How little you know small one :-) The higher you climb the pyramid, no matter which side you are climbing on, even be it the
catholic side, the closer you get to The Eye, the more contempt you have for the ignorant masses. And the higher you climb
th narrower the sides of the pyramid get the more blatant the interaction between the "sides" gets, such such as
the catholic Jesuits founding the Bavarian Illuminati in Ingolstadt or Sir Albert Pike a 33rd degree Freemason founding
the Ku-Klux-Klan and so forth.
We all serve the Eye, most of us unwittingly, many eagerly and going from your definition everything on this planet qualifies as a
cult, from society at large to your next-door wicca coven to your baptist church. Well I suppose with the exception of
Landover Baptist of course, which is definitely an exception and maybe whatever leaked from Robert Wilson's deranged hashish
enhanced thought into your reality tunnel.
http://www.codeblocks.org/
An awesome open source programming IDE.
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.
So do I, thanks to cross-platform development I use VC++ 6 mostly for debugging even if I use the code later on Linux.
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.
True, there's no IDE on Linux which has as simple project files as are my makefiles. You don't believe that? Just go to the wyoGuide project (http://wyoguide.sf.net/) and look for yourself. BTW I use about the same tools on Linux but for wyoEditor, this way I can use the same editor on all platforms.
O. Wyss
See http://wyoguide.sf.net/papers/Cross-platform.html
What about a Windows IDE which handles remote execution / debugging ? I am currently searching for a good solution for one of my Windows C/C++ developers who is currently using VS 2005 and will shortly need to take what he has coded and try to compile / debug it on FreeBSD. The app being developed is a non-GUI traditional socket server app. I want to find a tool that works on Windows so he doesn't have to learn a new Desktop environ at the same time as he is learning how to debug the app on FreeBSD. any suggestions? thanks, root-a-begger ;-)
New Empty Project, FTW. I've tried using the Project Types, and they all seem to add a bunch of crap that I don't need. I much rather start from scratch, building the foundation myself.
My twitter
Emacs is the way to go. The debugger can be run as an X app, rather than running it within emacs. Avoid the X version of emacs. In the first few weeks, your productivity will be VERY low. In a few months, you'll wonder how you ever used the IDE.
Macros and incredible keyboard support mean being able to accomplish a huge amount very quickly. Not having the IDE do things for you mean you'll understand the code much better under Emacs.
Using Emacs make it possible for you to be a better programmer. But if you're happy in an IDE, you may not want to know your code and improve as a programmer. Honestly, there's a desired level of work/knowledge. You may not want to go beyond that -- if so, try myEclipse.
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
I vote Eclipse with CDTplugins... that works quite nicely for me.
There's no place like 127.0.0.1
...using punchcards or paper tape, of course.
"My country, right or wrong; if right, to be kept right; and if wrong, to be set right." --Senator Carl Schurz (1872)
it is ironic about the Eclipse C++ support comments since the Gnome project devloeprs are using Elcipse don't you think?
Fred Grott(aka shareme) http://mobilebytes.wordpress.com
The real question for me is: which development suite will allow me to use vi as the editor, while giving me all the power of an integrated IDE? Now, I know that this would not be trivial to accomplish, but there are vim-plugins out there, arent they?
The point is that I've been almost exclusively using vi for many years now, and I use a lot of advanced vi and vim features. I got used so much to the vi-ish way of editing text that I never succeeded in getting used to an IDE, the major obstacle being that the editor isn't vim.
j.
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!
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.
They've moved Platform Builder (CE6) into VS2005. I am working with a beta, hence the AC.
Click the build button on a new project and it'll SYSGEN everything and build the NK.bin. Then, click it again. It'll start from scratch and SYSGEN everything. Apparently these guys have never heard of MAKE. Anyways, the only way to do a fine grained build without rebuilding absolutely everything is still to fiddle around in a DOS shell.
No added functionality, and nothing changes except now I don't know where all the build options are since they're hidden in new menus. Thanks for the upgrade, MS.
I use Komodo from ActiveState (http://www.activestate.com). It's cross-platform, runs well on *nix/Windows/and OS X, and has a very good feature set. It's extremely flexable, supports plugins, language syntax, error checking (the basics of what you would expect in any IDE). It's a commercial utility, but the price tag isnt terrible (Pro for ~$300, Personal for ~$30). One my favorite features is the regex explorer, which lets you see the effects of regex expressions without running your program - a handy feature if you do alot of regex manipulation.
http://www.accelerateglobalwarming.com
I would try this one out. It's superior to all others.
I personally find that IDEs make it far too easy to navigate around the code base, preventing me from ever really learning how things fit together. If you can memorize how things fit together from within an IDE, more power to you. I also feel that it's important to be able to perform various tasks without an IDE because eventually you will find yourself in a situation where you are not able to use the IDE (Going to the desk of a co-worker who doesn't have the IDE, working on a customer's site with whatever software they decided to provide you. etc) and if you don't know how to do things outside the IDE then you're pretty much lost. If you use the IDE as a crutch to avoid learning the tools that are available on the system, perhaps a career in marketing and sales would be more your speed.
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
Anjuta is one of the best Linux IDEs I've had the pleasure to use, it is intuitive and easy to use. Kdevelop, on the other hand, is a piece of crap and I would gladly use pico instead.
Truth and a lie.
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.
Thanks for the tip. Since I still have to use it, maybe this will help make it easier. My other observations still hold. Command line programming with multiple windows, vi and gnu tools feels more under control. BTW check out my project on sourceforge, xmldevotools. Doug
I can't say that your wrong; however, using simple tools while trying to remember what that method you want to call in some little used Object can lead to a lot of time not spent programming but spent rambling through help files trying to track down the relavent method.
After a while with an object like a text box, or things of that nature they are pretty much embeded in or memory so as you type along you just know the method or property name and you moev on to the next line.
I cut my teeth on Borlands IDE Products, I like them and I am most comfortable with them, they don't get in my way. The compilers are blazingly fast so they can be used as a syntax checker if you like. This may induce some amount of laziness on my part but I think thats ok. My idea of programming is to focus on the problem and logic at hand, not to spend hours writing Emacs or VI macro's.
Hey KID! Yeah you, get the fuck off my lawn!
And programming doesn't?
I'd hardly call the learning curve for emacs "bad." Steep, perhaps. A long slog, perhaps. But it isn't "bad." Not for everyone, anyway. Press "F9" to compile. No hunting among mysterious icons trying to figure out which one is going to do what you expect it to do.
I hate VC. Despise it. I've tried others like it, too: Eclipse, Anjuta, and a few others that I can't recall right now. VC is always getting in the way-- popping up code completion when I know what I'm completing, breaking my concentration, slowing me down. It makes me think about the environment at almost every step. So do the others, don't get me wrong. VC isn't bad for what it is; it's that what it is is bad. (See, I guess I mean it's bad for me. YMMV. So much for my "bad" rant at the beginning.)
Emacs has a steep learning curve, absolutely. I've been using it for five years, and I still don't know everything about it. Now that compiling and debugging have become second nature in it, I can concentrate on my code. I code in my head, not on the screen, and that's the problem with every single heavy IDE I've ever used: they are screen-oriented, not head-oriented. They try to keep you from thinking, rather than help you think, in the name of "making things easier."
And then, every single new version of your favorite development environment comes out with flashy new features, a re-designed interface, and you have to learn it all over again. It might take a couple of weeks to get comfortable with it again, to get used to the new things that pop up, or the location of the 'Build' button, or what-have-you. You have to unlearn some things, and learn some new.
This is a strange thing. GUIs are generally there either to help new people along (such as all the buttons on a word processor), or to do things that are graphical in nature (such as graphics programs). Many other places, GUIs get in the way, rather than help. Starting off, it might help a user to have a GUI. But in the long run, it's much faster to use keybindings. One of the things I hate is the way VC and Eclipse slow me down. They are both dog-slow, and by the time I've stopped debugging my program and waited for the environment to catch up, my stride has been broken. Hell, I get that just trying to switch files while editing. I can switch to an already-opened file in emacs in less than two seconds. It takes me that long just to start scanning the open tabs on VC.
I guess you just have to decide on which you prefer-- the hand-holding, but somewhat slow, development using a GUI-based IDE, or the long-term commitment to something like vi or emacs, with the payoff that they won't get in your way while you are coding (once you've learned them, of course).
So, in the end: do what you feel best. Just try to understand why some folks like vi and emacs over the easier-to-use IDEs like VC.
Microsoft is to software what Budweiser is to beer.
I used to use Visual Studio for everything back in the day before seeing the light....
When that bright light slapped me upside the head, I was still a little lost without my IDE I was used to.
Although it is a commercial offering, it is well worth the money, or at least is used to be.
Lately, ( I still use v9 because of it) they've been concentrating more on the windoze side of things, and broke the tabs/docking features I use.
They've improved the STL support, but the Qt MACRO support is still a little lacking.
Does re-factoring, CVS, intellisense (- can't spell), debugging, etc.
Check it out, it isn't very expensive...
B-)
A friend will come and bail you out of jail, a true friend will be sitting next to you saying, "damn that was fun!"
Tool choices these days are all too often a matter of corporate taste.
..... ...
Case in point, I am mandated to use Visual Studio. Its OK an mostly does
what I want it to but it can be maddening trying to figure out why something
that worked yesterday now fails to link and what has changed in the project
properties. Thats the Winders situation.
Now flash forward to my Linux box.
IT Guy: Why do you want to put a server on our corporate network.
Me: Server?????? Its a workstation for doing development!!!!
IT Guy: You're developping on the corporate network????
Me: D'uh yeah! Me and several thousand other folk.
IT Guy: Doesn't development happen in labs?
Me:
Me: Not since the 1990's or so.
This sort of thing is maddening and the IT Guy was mid-level management.
So corporate has a set of tools we are mandated to use for windows and not clue one
about Linux. Fortunately this allows me to more or less set the standards or suggest
them. But it is still a pain.
There's one small thing the "IDEs let the wrong kind of people into our club" forget. IDEs are part of a process. Much like security is part of a process. Worse case someone goes wild and generates a mess. Best case the rest of the process keeps that from happening.
Incidentally, the best development platform for large projects in Linux/Windows is Ultimate++ (PocketPC in beta testing, MacOS support in development). BSD licensed, fast executables, very productive. It contains TheIDE environment, which is specifically designed for large projects. See http://upp.sourceforge.net/ Mirek
My parent's basement...
Yeah, I work both within and without Windows. And whenever I'm not programming for Windows, I favor Kate for my editor and a console window in Linux. It takes a while to learn where all the options are in VS, so little things like adding the sockets library becomes maddening to a beginner.
I tried to find your project on sourceforge, but searching didn't turn up anything. I did however manage to go over to your live space and read about the concept which seems interesting.
My twitter
I think it was originally developed by Red Hat, but it died a few years ago. http://sourcenav.sourceforge.net/
1. It Works
2. Qt
3. You can use Embedded Vim if that's your thing
Reasons enough for me never to come back to the stone age.
OTOH, if you can live with Emacs, it can be used as an IDE. (And an distro, too.)
Making laws based on opinions that stem up from false informations leads to witch hunts.
But when you start running with dependencies etc it gets confusing. Of course, it might be the projects I've been tryin to work with (Ogre3d etc) which seem to base their documentation on the premise that it's better to start halfway through things and require that any new apps require libs from the samples...
On the other hand, if you're looking for simple web development, I've found that Quanta (KDE) works quite well, although depending on the version it can crash on ocasion.
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.
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.
:)
:)
Personally, I don't like operating systems. 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.
By preference, I use assembly language, or direct machine code. Depending on the task and the requirements, plugboards and circuit diagrams. Throw in flowcharts and all the usual suspects in support. Toggling code in from front panel prefered over other inputs, commands that read from punched card prefered over others. Special exemptions made for clever hardware hacking.
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
If the structure of an application is too complex to manage under a decent circuit diagram, 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
Agreed, Code::Blocks is very comparible to the Microsoft IDE
environment.
Absolutely agreed. I used to be an Eclipse evangalist before my dev team got me hooked on IntelliJ. Java-based, so it runs everywhere. The built-in conveniences never seem to end (jump straight to a method's JavaDoc, instantly find all uses of a function anywhere in your project, show a dropdown of all possible methods off an object, built-in auto-generation for getters/setters, try/catch blocks with the right exception handler, etc., etc., et-fucking-cetera). Debugging is an absolute joy. And the plugins! Oh, the plugins! My personal fave-of-the-moment is Hibero, which allows you do perform Hibernate queries on the fly.
I'm a big fan of Quanta Plus. Very nice for web developers/coders. --Vince--
After skimming the responses, I think it's time to dig out my old floppys for the best programmer's editor I've know, and run Brief under Wine....
mark "column copy, too!"
I am working on a small (around 40,000 lines) 2D platform-style game in C using the Allegro library. I started the development last year in MSVC 6, because that was all I knew (before switching to Linux). Now that I use Linux, I learned vim, and enjoy it immensely for smaller projects, Makefiles, etc. Even though I found vim's taglist plugin, which allowed me to navigate between functions quickly like I had been used to, I found it insufficient for my needs. Eclipse CDK sounds nice, but I stopped trying to use it after about a half hour because it was far too bloated for my Dell laptop with a Celeron processor. I eventually settled on Anjuta, which I find amazing. I like how you can have it list every function in your project (distributed across multiple source files even) listed alphabetically on the left side. Autocompletion is nice, saving me typing time, and one key build + one key execution = saved time as well. I discovered Code::Blocks from this thread, though, and will investigate.
In the end, if I'm developing in C, I use: vim for smaller files, because it is better at moving text around, Anjuta for larger projects, because it is better at navigating through all the files/functions, and MSVC if I HAVE to because I'm on a Windows Only environment where I can't install anything else (like work!). The End.
BRIEF, dBRIEF, where has the time gone?
:-). I do miss it at times, but I now actually /sleep/ at nights :-).
However, if you liked BRIEF there is a persistent rumour that it was merely derived from EMACS. I couldn't be asked to browse through the comments, but someone is bound to have thrown that up as an alternative. The problem is that virtually any keystroke bar alphanumerics is apparently a command .
However, I haven't cut code in over 20 years now (Corporate Security, CEO level IT coaching and generally running a couple of businesses has ended that
Thanks for the memory..
Insert
I for one vote on the Church of the Flying Spaghetti Monster
I have been using cygwin lately because it has the windows, and comfortable command line tools. I will look into Kate right away. May I list you as a friend in my slashdot profile? You can find the XML Development Tools at: http://www.sourceforge.net/projects/xmldevotools Regards, Doug p.s. Spaces.Live.Com is a lot of fun. Even though I know HTML, its nice to be able to be creative at a higher level sometimes. I have really enjoyed it. I blog there, and my photo album is there...
Religion siphons wealth into the upper ranks... ever watch evangelicals on TV? Ever take a look at the Vatican? The Mormon Crystal Palace? How can you prove that people like Benny Hinn, Pat Robertson, Oral Roberts, David Koresh, Reverend Moon, Bhagwan Shree Rajneesh or Mullah Mohammad Omar did or did-not believe thier actions were in the spiritual interests of thier followers? Do you doubt Fred Phelps' of the Westboro Baptist Church's devotion to his flock and the betterment of the world? Is Zionism a cult or religion? Even if trying to swindle thier congregation out of everything possible, the leader would still need to cater to thier followers spiritual interests to a degree... otherwise they'd all leave! You should check out the Salaries of the Pastors in these megachurches these days, more than a few make 6 digit salaries. I would argue that devotion decreases in even Christianity by citing situations with Oral Roberts, Jim Baker, Benny Hinn, Pastor John Hagee The current money scandals in the Russian Orthodox Church money/sex scandal, the Syriac Orthodox money scandal, the Ward AME church sex scandal, the Catholic sex scandal, The proliferation of "megachurches" and rules on procreation in the bible... if it is not a means of control for a large populace I don't know what is. By keeping the poor faithful, it keeps them content in thier misery as well. The difference between a "Religion" and a "Cult" status of a belief system depends on popular acceptance of thier claims to be a religion. According to Pat Robertson all non-christian faiths would be dangerous cults steering thier congregations straight to hell.
I have no problem with friends. :D
I'm not sure how well Kate would work with cygwin. Kate is a text editor (with syntax highlighting) built using the KDE libs and distributed as part of KDE. But my exposure to Cygwin has been limited.
My twitter
... and it wants its desktop environment back. :)
I only say this since I remember (fondly) running AfterStep around 1997, before WindowMaker came along, and it was pretty cool then, beat the hell out of fvwm2 with its horrid Win95 theme (or any of the other horrid themes that existed for it).
In all seriousness, I've played the what-wm-or-environment-do-I-want-this-week? game enough to have settled on KDE. I'm all done messing about with alternative desktops like ratpoison. I've tried Gnome and no I don't want more, thank you. I like my desktops, well, desktopy. I spend enough time inside of remote SSH sessions that I don't really *need* a WM, except that it's a pain configuring print + multimedia options from within a framebuffer console. KDE works, and it works well enough across different platforms that I just use that now. Sure it's big, and it can be bloated and a memory hog and slow to start up on old hardware, but it provides an acceptable alternative to what WinXP and MacOSX give you on the desktop.
Sometimes all you want to do is set up a printer. KDE, plus a decent distro like (K)Ubuntu, makes that really easy, and doesn't get in your way too much.
"We can categorically state that we have not released man-eating badgers into the area." - Major Mike Shearer, UK
How about a year's-worth of instantaneous solar radiation measurements, collected at one sample per minute. Now work out:
.)
1. What is the mean daily radiation over the year?
2. What is the mean radiation profile over a day?
I don't use Excel for it! (See http://dfsmith.net/cap
I can't find Kate in the list of supported editors, but when I get a chance, I will bring up KDE on my FreeBSD box and give it a try. It's nice to have friends. :-)
A neat IDE that is often overlooked is Geany. Uses GTK+2 and is very small and fast (the binary distro for most systems is about 1.1 MB). Other good IDEs for Linux are Code::Blocks (which has great support for compilers besides gcc), and Sun Studio. Vi is a great text editor, but I wouldn't consider it an IDE (coming from a DOS/Windows background) in the sense of an integrated development environment. KDevelop is pretty cool if you're on KDE, but it's quite hefty. Even as a Gnome user, Anjuta just plain displeases me: I find the UI unbearable. Eclipse is good in some respects, but I find it's too big and slow. Maybe there's something new in there you could try, but it's all really a matter of preference. I can believe Vi is awesome myself, but clearly other people don't like it at all, and everyone is entitled to use what they like. Flames haven't managed to convert anyone to anything, guys. If anything, they manage to put people off and make them less likely to use convert!
~
~
You don't use excel for it, and you shouldnt.
But if you did, it would be simple, and you'd store the data in rows, not columns.
I don't recall if Excel's row maximum was based on a short or an int, not really relevent since it's trivial and common to write something to overflow when importing data.
If you have data divided into various discrete units, the tradition is for each unit to be a row. Due to that tradition, Excel was designed for many many units with a handful of parameters for each. If you have over 32,000 parameters for each record, then you might want to put it in sideways.
A certain well known international corporation ran their internal billing reports through some very inappropriate tools. It wasnt ideal, but a year's worth certainly fit into excel, could be averaged, etc. Excel is one of those things that shouldn't be pushed, not that can't.
-- 'The' Lord and Master Bitman On High, Master Of All
https://libre2.adacore.com/gps/main.html
Commercial, there is a tech preview of their next release at: http://www.codeforge.com/
I don't think I understand your reply. My original comment was a disparagement of the statement "Excel is just about right".
The data I'd like to load into a spreadsheet is 365 by 1440 (by 10 numbers deep too, but let's ignore that for a moment).
A decent spreadsheet should be able to handle one column per day for a year. Excel handles 256 by 65536. Therefore in my opinion "Excel is not right".
I am sure that such a dataset could be loaded in some munged form, but the hassle would be extraordinary---hence I cannot use Excel for a task that Excel is supposedly suited for.
Now let's return to the original headline topic! I use jmacs with lots of terminals.
You want SciTE! It's a very nice syntax-highlighting mouse-oriented text editor, and you can build with a menu item, which opens a shell window for the build. Click on the syntax error, and it takes you to the line of code, just like the big IDE's. You can even type in shell command directly. http://www.scintilla.org/SciTE.html/
Works in Linux and Windows!
I love jedit as well. So customizable and so cross-platform! If I had mod points, you would get some! Nobody ever seems to remember jedit in these discussions. When on the command line, I stick with "joe".
Meh.
using openbsd/ratpoison/xterm/screen/vim+plugins here, and no mouse in sight (the cat takes care of that problem for me...)
btw, my xorg resolution is 800x600 with the terminus font size 14, which gives an effective 99x41 screen size (-1 line for the gnu screen hardstatus). that's just about perfect on my 15-inch laptop lcd. it's super-legible and thus i can code for hours on end...
I should know. I bought a genuine Digital VT100 for $30 back in 1993 or 1994.
It was an off-white color. You could call it beige I suppose. It wasn't as colorful as amber. I guess you could compare it with a light bulb in the 15-watt to 40-watt range.
Amber was very popular in that era as well. My other terminals, made by Televideo I think, were amber.
For sharpness: the green value matters most, the blue value does not matter at all, and the red value matters almost as much as green.
OK, so you'd have to develop in python mostly, but that's no big deal, right? It does a great job with all of the latest whiz-bang IDE features. I love the debugger, where you can just browse down the tree structures of your global and local objects. Searching, navigation for definitions/references in all of your modules and packages is a breeze. I also found out completely by accident that it keeps track of where you put all of our ## TODO: and ## FIXME: tags.
I really like the model of building in python first, (use psyco if you need the 10-100 extra speed), then profiling and rewrite just the things that need optimization in C.
Bonus points if your name is Eric too.
ProjectCenter + Gorm of the GNUStep project
All ready great and getting better every day
But it's _faster_ to just set a breakpoint, and inspect whatever you need.
I'm sure you can run programs in your mind. The problem is that debugging output, while very useful, is slower in some occasions. Then, it's faster to use a debugger.
Aside from that, if you did make a mistake in your code, you could make it again when running it in your head, and make incorrect assumptions, when you can see the value of all variables on demand, whether you think they are relevant or not, you get an advantage.
The debate is over GNU emacs or Xemacs, they do work slightly different.
I prefer GNU emacs for general use.
I also use vim quite a bit too. I think it's worth learning both.
Hm,
... they can't do anything anymore except, copy/paste/delete, retype etc. I do stuff in 10 mins where they need several hours for.
... probably using a framework like Qt instead of only knowing about GTK (which simply sucks and is based on a 30 year old technology), probably learing somethign about CASE/UML and using something like Open Architecture Ware or Andromeda.
.... but are you still attempting to improve your self? Or are you self illusioned with what you have achieved so far?
well, I agree with most what you say but I like to phrase and EDIT one sentence of you and comment on that.
But I will say that, without exception, all the best developers I've known in my career (yes, every single one of them) HAVEworkED with a text editor and a shell window.
Probably our day school absolvents don't have this experience. Nevertheless, I know hundrets of ppl who made the same claim you make above (without my bold edits) and lots of them simpy suck in coding, thinking, analyzing, designing, testing: everything. They only can show that they do simple tasks in vi faster than I do in Eclipse. But as soon as I say: oki, lets refactor this a bit
No one who is sane writes ANT scritps or any other XML based files like deplyoment descriptors for an J2EE container in vi or emacs.
The problem guys like you have is: you never digged into a descent IDE because you frown on M$ developers (visual basic coders / excel macro writers) who can't do anythign without an IDE. Sure, those guys only know half as much as you know. OTOH you could easy double our performance and also learn 50% more than you already know by simply working with a decent tool instead of archaic ones.
Decent tools mean: ant or maven instead of make, some of the XUnit tools fitting your language, test(code) coverage tools, refactoring IDEs
However, as I said above, I agree basically with you
angel'o'sphere
Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
This is undeniably neat, but it's not "a whole new way" or even unique to Linux -- except perhaps as applied to C++.
The OCaml language has had a free-moving debugger with the ability to step backwards as well as forwards for years now, and its debugger works just as well in Windows, FreeBSD, Solaris, OS X, and a whole host of other platforms as it does in Linux.
Applying the same principle to primitive languages like C++ that don't have access to the advanced programming techniques that make this kind of thing trivial in OCaml is certainly a great step forward, though, and I for one look forward to trying UndoDB out next time I'm forced to program in C or C++.
The Linux way is the mixing of different things. I run pekwm, though. Fully customizable to your own needs.
Please, for the good of Humanity, vote Obama.
Sounds like a job for slickedit.
:(
I've been using it instead of VC++ for years (5 years now) and I love it.
No bullshit wizards, no slowdowns, and it just works.
And no, im not paid by them, either
ben
Sorry, but you're a moron. As the GP said you should swap the rows for columns.
But tone down the arrogance, please. Guess what: If you're tracking down a bug in your program, then pretty much by definition you don't understand "how it works." "Sufficient diagnostic output?" Yeah, littering your code with printf()s, recompiling and executing sure is better than examining a snapshot of the program at the crash/bug/whatever point, or tracing the code to see exactly when things start to fry. What's that? You have a superb logging system and you've already got all the tracing statements in the code, ready to be #ifdef'd into existence? What a waste of time. (Note: I don't use IDEs).
A simple program can be understood and "debugged" in the way you describe. A complex program with complex interactions can generate arbitrarily ridiculous bugs, with arbitrary amounts of "diagnostic output" to wade through.
If other reasons we do lack, we swear no one will die when we attack
Which is that many current dev tools on Linux are far too chained to the autotools way of doing things. Hopefully KDE's switch to cmake will herald a shift away from them. I can only imagine how many developers are nauseated when they first look into setting up autotools for their project. I don't care how many more features/detectors/vibrators autoconf and its ilk have, 95% of them are superfluous for most projects and the interface to them needs better abstractions.
/flamebait
If other reasons we do lack, we swear no one will die when we attack
Well Cliff, you've discovered something thats been irritating me (as well as many other multi-platform developers) for years. We all agree Linux (the kernel) is a great system. However, a lot of GNU tools that accompany the OS are unfortunately lacking in ease of use, and as such has actually hurt the developer's ability to create user friendly software for Linux. User friendly software requires not just good programming skills but also requires that the developer can spend time focusing on writing his software and not on configuring his development tools. Lets face it, lots of developers hate Microsoft (mostly for political reasons), but fail to realize just how sophisticated and helpful their development tools really are. Moreover, its because of these great tools that lots of high quality GUI software has been written in Windows and not in Linux.
Lets look at another industry for example. Take a car mechanic. Go to any shop today and you'll rarely see a mechanic slide under a car anymore. Today hydrolic lifts are used. Or will you not see a hand socket being used to remove your cars tire lugs. Instead, the mechanic will have use a pneumatic (air) gun to remove the lugs. Now what you don't see in this industry, are mechanics still using the hand wrench and the floor dolly telling other mechanics that they are not knowledgable because they don't use the less sophisticated tools. In fact, pretty much all mechanics want to use these tools. Perhaps the cost of a lift was the prohibiting factor not a "tool religious war". Why I mention this is that unfortunately, in the unix development industry, most developers don't see the merit in using anything other than archaic console development tools to write GUI applications perhaps because it makes them less geeky? Who knows.
At first some have broken down and developed third rate GUI applications in X windows (such as xxgdb, DDD, graphical emacs and vi tools), but no where near the likes of a Visual Studio. When people got tired of these horrific screen scraping abortions next came, what I like to call the "somewhat functional" IDEs (KDevelop and glade), still no where near the likes of a Visual Studio. I say somewhat functional because they still require about 6 to 10 different libraries to be downloaded, installed and hand configured to even be able to compile a simple "hello world" application! After this, open source GUI developers began to question the languages of which they were developing. C and C++. The mindset now became, "What if we were to develop GUI apps with a simpler language using the same GUI libraries we used for C/C++ development. And so became the bindings war! Perl-TK, GTK-Perl, pyGTK, pyQT, PHP-GTK, PHP-QT, QT#, GTK#, tcl-GTK... You name the language and it has a GUI development system for it and a group of developers who SWEAR by it. Of course you still have to pray your distro comes with these languages and all it's libraries installed. Otherwise, your back to the same problem you had the C/C++. Besides, none of the above mentioned languages still provides a useful IDE.
"Ok, enough already!" you say. "So what constitutes a good IDE?"
Here are a just a few of the features an IDE (in the year 2006) should have regardless of OS.
1. Editor supporting syntax highlighting and code folding
2. GUI builder with a toolbox and generation of event code when a control is double clicked
2. Automatic makefile generation.
3. Full code completion support for all GUI and unix system libraries (including completion for classes and functions you create)
4. Code completion that includes a parameter list that indicates the parameter you're cursor sits at
5. Built in visual debugger with a tree-like hierarchy displaying members inside classes and structs
6. Ability to drag and drop variables to watch windows
7. An immediate window to run code and execute expressions while debugging
8. An editor that lets you find variable and class declarations by clicking on a variable
10. Mouse-over variabl
Ok here goes I hope this gets back to the original poster rather than being buried by my anonimity (I'm not paranoid just lazy).
We've just migrated our development environment at work from windows desktops to linux (KDE) desktops. On windows we used various IDEs/editors of visual studio, code wright, ultra edit, notepad++ and some brave souls even used eclipse. Our development is embedded so integrated debugger support is not really available.
When migrating to linux we tried various IDEs starting with Kdevelop (because it shipped with the distro we were using) and Eclipse (because I'd used it for Java). Both of these really slowed down when the code volume escalated. They also did not like a linux kernel project being thrown at them. I particularly hated Eclipses inability to work with an externally managed source tree (or my inability to tell it not to copy all the files into its workspace).
I looked around to see what other people were using and what was free. Visual Slick edit came up and I even managed to convince my boss to pony up with the cash but the eval version never worked so I gave up. Anjuta was also mentioned but it suffered similar problems to KDevelop and Eclipse.
By that time my workmates had started using Gvim and Kate (which ships with some distros). I started using vim + cscope then I happened upon kscope and while its not perfect it makes navigating a large source tree a lot easier. I still have to use a terminal to do builds and use gdb for remote debugging.
Most of us are now using Kscope (some still like Gvim for the vi key bindings). There is no real answer but I'd suggest setting aside a day or so to try out some of these (and recommendations from other posts) to find whats best for you.