What Free IDE Do You Use? 1055
postermmxvicom writes "I program only occasionally and mostly for personal interest. I went to update my favorite free IDE, Dev C++, yesterday and noticed that it had not been updated since 2005! I went looking for other free IDEs and came across Code::Blocks and Visual Studio Express. I work from a Windows machine, use C++, and make mostly console apps; but have written a few Windows apps and D3D or OpenGL apps. I wanted to know what free IDEs you use and recommend. What do you like about them? What features do they lack? What about them irritate you (and what do you do to work around these annoyances)? For instance, when I used Visual C++ 6.0 in college, there was an error in getline that had to be fixed, and the code indenting in DevC++ needed to be tweaked to suit my liking."
What I use (Score:3, Interesting)
getline and IDE (Score:3, Interesting)
The error with getline is a bug with the library/compiler etc. This is separate from the IDE. It's not very difficult to modify the compiler/C runtime etc VC uses - its just an editor which calls out to other executables to do compilation.
In any case - I'm sure that problem has been fixed with Visual Studio express - Microsoft actually do IDEs and compilers very well, especially with their last few iterations. 6 is pretty old.
Personally I use vim on unix. But when doing GUI work on windows, Visual Studio is hard to beat.
Lazarus (Score:2, Interesting)
Thank you
Either emacsclient or ed (Score:3, Interesting)
Say you're working with git (but it may be the same with other VCSs, not sure).
Say you run git-commit -a (with no -m) in a M-x shell. Then git wants to spawn your $EDITOR so that you can edit your commit message (and see what you're committing).
In that case, you'd want either emacsclient, which tells emacs to open up a new window for the to-be-edited file (and when you say you're done, emacsclient terminates).
Or, you know that the thing that call $EDITOR from M-x shell require very light-weight editing, so you want a small editor which doesn't use curses.
Yes, I'm seriously suggesting to learn how to use ed. If you know sed and/or vi, it's as simple as spending five minutes with the man page, plus having the man page open for reference the first few times.
It's also a powerful tool for programmatic text manipulation, sitting in a niche where sed is not powerful enough and perl/sh/... is too general to do what you want easily. [it's kinda' like sed but with the whole file in the pattern space and with a few more powerful transformations.]
Re:99% of the answers are going to be Eclipse (Score:3, Interesting)
I like it, just wish I could get CUSP (Lisp plugin) working in Ubuntu. If anyone says Emacs or Vi they are insane and have never done 10k lines of code in a modern environment.
Let me start this out by saying that I use Eclipse daily, and that I consider that a modern environment.
Let me qualify that statement by saying that if our ultimate ancestors had known that the eventual development of Eclipse was the price of progress, they would have stayed in the trees.
I may be insane but 10k is nothing compared to some of the projects I've worked on using vim, and while I can't claim to be 100% satisfied, at least I don't feel like it's actively fighting me.
Not Free, but... CodeWarrior (Score:5, Interesting)
Not free, and also no longer sold for Windows, but it's my favorite IDE of all time. I still use CW9 on Windows for anything that doesn't require absolute latest C++ compiler/libs (mainly, my MUD, which I do my dev on Windows, but run it on a Linux server).
CodeWarrior has a feature no other current Windows-based IDE has - independent free floating edit windows without being locked into an MDI container with grey backdrop. I'd gladly pay a few hundred dollars for a modern, actively supported editor that had such a feature (I hear SlickEdit has been planning it, but they have yet to deliver).
Qt Creator all the way! (if you code in C++) (Score:4, Interesting)
I'm essentially a beginner in C++ programming and at least for that language I found extremely easy and straightforward doing projects on Qt Software's free IDE. Even if you don't implement their toolkit in your projects, you can still have a stable and unbloated environment to do some serious coding.
There is only one caveat, afaik, with Qt Creator. It's still in version 1.1.1... this means it probably misses some features (or has some not so obvious bugs) which shall probably be covered in later major releases. Nevertheless, if you bind Qt's capabilitities (ie, signals and slots) to your C++ projects there is no better IDE to unleash your productivity!
You can have more information and download your free copy here [qtsoftware.com].
Re:Emacs (Score:3, Interesting)
Re:Turbodelphi (Score:2, Interesting)
Don't forget the open source Lazarus [freepascal.org]
Or actually, maybe do forget it. Object Pascal and C++ have virtually identical capabilities with slightly different syntax. But C++ is so widely used that there are always more available libraries, IDEs and sources of support. And I say this as someone who used to program in Pascal myself. If you want to go for an obscure language, at least make it something interesting like Dylan [opendylan.org]...
I like simple. (Score:2, Interesting)
Personally I am happiest when not stuck in some program pretending to do everything, even if it would succeed admirably.
So for me, it's screen with at least one nvi session and one shell for compiling -- but usually many more, and lots of open manpages for reference. Doesn't even matter much what shell, as long as it supports arrow-up-history and tab-completion. Of course nowadays I have to have a web browser around, sadly very little way around that, so it's X and that and lots of XTerms... many of which sport screen again for various purposes, like irc.
The point? The magic isn't in the software, though it can help a bit. If you're used to the command line then at some point you might realise that speeding up your workflow is as simple as #!/bin/sh. Or any other language you might choose for the task; awk, sed, C, C++, perl, what-have-you.
Geany! (Score:4, Interesting)
Re:VI and Emacs? In this day and age? (Score:4, Interesting)
They simply don't encourage learning and get in your way
That's exactly why I just gave up on Eclipse, and decided to finally learn to use vi well. Modern IDE's try to do far too much. The last straw with Eclipse was when I wanted (as an inexperienced new user) to write a very short C++ file to test an idea. Eclipse forced me to jump through hoops, defining a project and suchlike. Many of my files are not a project, they're a short self-contained piece of code to do something specific. For coding, I want an editor with syntax highlighting, and a command line. I'm not averse to the right tool - I'm also a happy Qt-designer user, but I'm writing the code with vim.
Re:VI and Emacs? In this day and age? (Score:2, Interesting)
That's why you have a second xterm open with `make |& less` constantly queued up on the command line. Seriously. There's nothing an IDE does that you can't do faster and easier. Learn to write a makefile and an editor and your skills are portable. Learn an IDE and you're screwed as soon as you change jobs and they say, "Oh. We're a foo shop."
The vast majority of IDEs are stuck for exactly language, or perhaps two. You want something that handles everything. Use an editor. If you use a grownup editor like vi or emacs, you've got syntactic markup for pretty much everything, along with language specific folding. IDEs simply don't do that. Not that they can't, but they don't. It's because the IDE designers say, "Wouldn't it be cool if we built an IDE for foo?", and the IDE is biased towards that language and workflow.
So we should learn the quirks of behemoth IDEs instead?
Re:99% of the answers are going to be Eclipse (Score:1, Interesting)
Yes, vi has this. I'd also like to say that I think coloring is helpful, but it's a crutch you can live without. Reading in color requires less attention to detail, which leads to less productive code review. Seriously.
Vi has some rudimentary indentation support, but there is no substitute for a language-aware indentation tool. For example I like to use 'indent' for ansi C and 'astyle' for C++. Unfortunately there are no tools (yet) that can properly indent perl, javascript, or C99 (the C and C++ tools all choke on the { .foo = 42 } style initializers).
I like it in languages that require it, but needing this feature is usually a sign that you're doing something wrong. And using it without an integrated context-aware parser is torture. I hate to say it, but Microsoft's tools win hands down here.
Get cscope!
Serious/rhetorical question: Why on earth would you want to commit from within vi?
Don't do that. Edit your file. Test that it does what you think it does, and then commit it.
See above. Sadly this is another place Microsoft's offerings kick our ass.
Again, Microsoft wins here. But I still prefer keeping a separate window for make.
I don't want browser integration in anything. Why would you subject yourself to security risks in your IDE? Keep it simple, stupid. No integration.
Re:ID what? (Score:3, Interesting)
I can't believe I have to type this...
About 4-5 (or more depending on how many windows are open...) keystrokes, less programs open on your task bar, and if you don't code in the same fonts/colorization as your command prompt, the shifting of your eyes to another style of window and/or color scheme. (ie: moving from white to black or vice versa)
Doesn't sound like much, but if you can hit F9 (or whatever) and have the environment automatically create it...
Re:Quite (Score:3, Interesting)
I like and use muck of your toolchain. However, I like Emacs for helping keep my code layout legible, its support of displaying closing parentheses, and its support for running shell commands in one window and viewing the code in the other. I also find the Emacs shell helpful for recording all the input and output of a test sequence, rather than having it scroll entirely off the normal text display, and occasionally I find handy that it displays passwords as I type them so I can remember what the heck I did at the login ptompts of a test setup.
gcc is my friend. It actually works, follows standards, and can support writing portable code in ways that most commercial compilers have never even thought about trying.
autoconf is handy, but has proven problematic for compatibility reasons as different OS's update different components of that toolchain at different times.
And, oh dear, yes, git. I've worked extensively with many open source and some closed source source control systems, and the darned thing Just Works(tm). Being able to branch and record and merge changes from your branches, locally, and then merge them to the primary upstream repository gracefully, and actually caring more than a fig about security, is what Subversion _should_ have done. I'm delighted to have recently added it to my toolkit.
Lazarus (Score:2, Interesting)
Re:ID what? (Score:0, Interesting)
You seem to be assuming that no emacs/vi user has ever taken the time to create a macro that does everything your IDE "run" button does, if not more. It's pretty trivial to tie the saving, building and running of a program to a single keystroke.
You also seem to be unaware that emacs's m-x compile feature lets me click on a compiler error and jump right to the line too. So, at least based on your arguments, emacs is in a dead heat with your IDE.
Re:Quite (Score:5, Interesting)
I was a vim guy for a long time. I used it for everything from scripting, to full on applications, and even website development.
Then I bought my mac and discovered XCode. It blew my mind. If I ever go back to linux I will be finding myself a good IDE.
Speaking of which XCode + Interface Builder + applescript makes some of the most powerful graphical applications that any idiot could write. It's really quite amazing how easy stupid it can be. Of course real apps on a mac require ruby, python, or Obj-C.
Re:But it's not free (Score:3, Interesting)
I really like Notepad++ I really wish there was a Linux port for it. But it does run ok in Wine though.
Re:Quite (Score:3, Interesting)
This is plain discrimination.
Few people can - and want - to go into details of how tool-chain really works. I too prefer to view some things as black box with few buttons. By virtue of being system developer, I often have too look into the details of how tool chain really works. And I like to dissect it til understand it completely. But I am rather an exception than a norm.
I know many good developer who know about e.g. make only how to invoke it - "make all". Not more. Rest they do in e.g. Emacs. For Windows (or GUI development in general) it is very hard (if possible at all) to keep a track of all the details tool-chain does for you. And many people prefer to ignore the details - to concentrate on job at hand instead.
[ After all, the concentration is a limited resource: more things people have to keep in their heads constantly, less concentration they can direct to any one of them. ]
The holywar "Emacs v. vi" from its inception revolved around precisely the nature of developer. Some developers like to know the details. Some developers prefer to ignore them and just press a button to achieve desired result. On side of "vi", one has to deal with more information. On side of "Emacs" one has to accept that some workflows would be impossible, since there might be no ready button for it. Side of "vi" is flexibility. Side of "Emacs" is conservatism. Different people - different views of a system - different approach to development. And for a good team one needs a healthy mix of both, because looking at system from two different view points allows the team to cover wider range of solutions.
IDE (Score:2, Interesting)
Does it really require update? (Score:3, Interesting)
Is this necessarily a bad thing?
For every "it doesn't have snazzy new feature x" there's a "it hasn't broken/lost feature y". And you're comfortable and familiar with it. Stability has its advantages. Plus you *can* update the underlying programs if you really need to; they just haven't been rolled into an updated single package.
I'm an embedded systems programmer; we use IAR's ARM IDE at work (definitely NOT free). I used Eclipse briefly on a contract project, and I use DevC++ for my own little home stuff since using it for a course a few years ago. There's a balance point between staying on the bleeding edge, and working with existing fielded non-changing hardware that needs very stable updates from a stable development environment.
Re:Newsflash: The 1980's are over. (Score:1, Interesting)
It's not about "not having a choice". Windows programmers aren't stupid, they figured out IDEs are far more productive.
To answer the question: Visual C++ Express is the one. Lightweight IDE, best compiler, most standards compliant, best debugger ... it's a free download so don't waste time looking at anything else.
I agree with everything you have said, as I also use Visual C++ Express and find it to be highly useful. However, be warned that in my experience it will occasionally crash, losing any unsaved data. Save often!
Lotta help slashdot is today (Score:3, Interesting)
Neigh everyone mentioned either vi or emacs (I know they can run on Windows, but they are not acceptable as an IDE and all ya'll need to get with the times), a few said Eclipse (wtf Java?? yeah it has plugins, but it isn't a C++ IDE dammit!), and DevC++ is just dead.
I recently tried out the Qt Creator [qtsoftware.com] and I love it. It feels new and snappy, works well, and emulates Visual Studio's dialog creator (in my opinion, being Qt and not MFC, kicks Visual Studio's bug-laden ass). I haven't been able to really squeeze the useful juices out of Qt yet, but the potential is evident.
Visual Studio Express is great, and if you want to do MFC than thats definitely the way to go, but if you're just programming as a hobby or for personal projects then I suggest giving Qt Creator a try
Re:Vim (Score:3, Interesting)
I love Vim, and it's probably my favorite editor for anything in the small-medium size (99% of my perl programs, some C, some Java, most of my PHP stuff).
Eclipse is also fantastic, and picks up for me where Vim leaves off. It's a little too cumbersome for very short tasks, but awesome for anything with includes or lots of subs.
These plus XAMPP (Linux, and even Windows if you roll that way) make me quite productive on PHP/HTML/CGI stuff.
Note: I'm biased - roughly 90% of my coding is PL/SQL, SQL, Perl, PHP, and database driven frontends. I don't do anything fun with graphics, so I'm sure that my tools aren't the best for hardcore OpenGL/GLUT type stuff :)
Re:Newsflash: The 1980's are over. (Score:5, Interesting)
To answer the question: Visual C++ Express is the one. Lightweight IDE, best compiler, most standards compliant, best debugger ... it's a free download so don't waste time looking at anything else.
Lightweight IDE - it may only be a 3MB installer, but it downloads a lot more to install on the fly and it can chew up plenty of resources for any non-trivial code bases. It often stalls out updating Intellisense on a project of any appreciable size. Part of the reason it's a smaller install is all the help and docs are online which makes doing work without an active internet connection a PIA (i.e. laptop on an airplane).
best compiler - Nope. Not even close. Intel compiler is generally 10-20% faster code than MSVC++.
most standards compliant - I don't even know how to answer this other than to say I'm hoping you are joking. MSVC++ doesn't even handle empty-struct inheritance according to the C++ standards. Oh, and how about variables defined in a for-statement leaking out of their scope? For an idea of just how non-standards compliant MSVC++ is, take a look at the Boost source code and then check out how much of the code is actually work-arounds for bugs / non-standard features in MSVC++. Both GCC and Intel compilers come much closer to the C++ standard than MSVC++.
best debugger - You got me there. Visual Studio (Express) does have a pretty well polished and easy-to-use debugger. I guess I can give you one out of four.
Re:Quite (Score:3, Interesting)
Having had XCode also blow my mind, but in a bad way, I'm really curious what these features are too.
MS VS2k5/2k8 really is pretty good. Now, as I've stated elsewhere in these comments, I'm more of a Vim/Eclipse guy - but I still like any editor that does the following:
1) Improves my workflow .NET code)
2) Improves my speed
3) Reduces my bug count (bugs due to human input error... like an unmatched ' or a missing ; or something)
4) Simplifies hunting for methods/subs (I LOVE auto-complete when doing java or
5) If it involves a compiler, supports stack trace, debug, and walking through the compiler output (in, say, assembler)
I would argue these are the hallmarks of an IDE, actually. Otherwise, we wouldn't need them.
Apparently for you guys, XCode totally nailed these. For me, I spent hours trying to get even basic Carbon/C++/C type stuff to compile. Trying to design interfaces with interface builder made me long for even the Visual Basic 4 interface.
I'm glad it worked... and I'd love to hear what these features are, so that I can re-evaluate them and learn something.
Re:Quite (Score:3, Interesting)
That would be a mistake. I learned on the command line, and in many ways, it's still the way I'm most comfortable with and use more often, but if someone comes and asks me whether I "prefer" farting about at a command line over a decent modern IDE with RAD GUI tools, built in debugger, built in version control, click-to-edit error log handling, build configuration support etc., I'm liable to think they're living in the stone age.
Re:Quite (Score:3, Interesting)