What Free IDE Do You Use?
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."
nuf sed
I use nano, textwrangler, and jEdit depending on where I am...what's this "IDE" you speak of?!
I don't mess with C++ often but I still use Dev C++. Code::blocks wouldn't even install on my machine(or maybe it did, but never started up without a fatal error, can't remember which) and Visual Studio Express is a monstrosity which will take 45 minutes to install tons of weird crap while making your monitor flicker. Visual Studio express also allows only one programming language.
Contrast those with Netbeans and Eclipse which are known as Java IDEs but can be configured with plugins and add-ons to do all kinds of stuff, including C/C++ development. I haven't tried either of the two for C/C++ but I believe that Eclipse would be a the good middle ground between Dev C++ and the bloated NetBeans.
Here's[PDF warning] a good place to start. Good luck.
What else would you need?
I like Eclipse as an IDE because it supports many languages/modes and is very customizable. I mostly use it for Java, Perl and HTML/XML/CSS right now. There are MANY plugins and the context-aware help/auto-complete is very well done.
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.
An Education is the Font of All Liberty
Keep in mind that VC++ is not the Microsoft Platform SDK. These are two completely different, albeit related, products. The SDK had a bug in getline(), but VC can't really do anything about the quality of the installed SDK.
The best free IDE is the one that you don't have to think about, it just gives you the tools to do your job without getting in your way.
My in-laws have a Mercedes. On the infrequent opportunities I have to drive it, I am always amazed at how well it supports my driving. It is the little things like rotating the headlights into a turn, actually automatically switching into neutral when the car comes to a stop, and auto-dimming rear view for night driving that make driving it a pleasure.
version 7.0 RC5 came out 2 months ago.
Wiki page with link
On the rare occasion I'm forced to write something for windows, I prefer DevC++. Even though I haven't seen or heard anything new about it in years, it was the first IDE I ever used, and my first experience with C/C++, so I'm still very fond of the interface. For all my real work (on Linux), I stick with vim.
53 49 47 53 20 53 55 43 4B
I'm more than happy with gedit and make.........
As long as you don't piss yourself in disgust when Microsoft is mentioned (as many here do) - Visual Studio is actually very good.
I'm sure lots of people are happy with emacs.
I'm sure lots of people are happy with American cars too, but we have objective standards for a reason.
For Java & PHP development, Eclipse. Does everything I need it to. For Windows C++ development, VS2008. Work in a MS shop, so not much choice here. Mac Objective-C development, Xcode. Not much choice with this due to nib's being so intergrated with the code.
... for Perl the Padre IDE is getting pretty awesome.
Works identically on Windows, Mac and Linux and they even managed to get the entire IDE to install itself from the CPAN.
Personally i mix and match to make an IDE.
For the code editing i have notepad++.
For the compiling i have the intel core compiler.
For debugging i use Intel Debugger.
There's plugins for notepad++ to make the compiler/debugger only a keyboard shortcut away.
Free edition of Delphi.
Two options that have not come up yet. KDevelop 4 is shaping up really good, but I do not think it is actually working on win32/64 yet. The other is Qt Software's offer Qt creator which is also getting a good deal of praise. The latter is probably extra good if you use Qt... and if you don't, I would recommend at least looking at it, since it is a very nice LGPL library.
Religion is regarded by the common people as true, by the wise as false, and by rulers as useful.
You hit it in the summary. I program professionally. At work, I use gcc, xcode or msvs (depending naturally on the platform).
At home, for personal development on Windows in C++, nothing beats Visual Studio Express. It's lightweight, meaning they've trimmed out most of the stuff that you don't care about anyways for personal projects.
As much as it might pain the free software crowd, Microsoft has done a good job with Visual Studio Express.
I currently have no clever signature witicism to add here.
I swear by Eclipse - I mostly do Java these days though, but I do have it setup for C++, Perl and PHP as well. :-)
Good plug-in support - easy to install and update.. what's not to like?
Integrates with most versioning tools through plug-ins (CVS, SVN etc).
Runs on all platforms. It's great.
I use Apple's Xcode with the Ada plug-in from www.macada.org
Vim with a bunch of addons has been good enough for me.
Colorless green Cthulhu waits dreaming furiously.
I use Eclipse http://www.eclipse.org/ for all my IDE needs. I have found that it works well on any platform (and with any language) that I find myself sitting behind (or coding in). Eclipse gets my vote mainly for its very wide language AND platform support.
The world's smartest bug zapper www.zapstats.com/kickstarter
GVIM is not an IDE however. It's an editor, and one that can be integrated in various IDEs.
I've even used GVIM in Visual Studio.
I'm sure lots of people are happy with emacs.
I'm sure lots of people are happy with American cars too, but we have objective standards for a reason.
Are there objective standards for how productive a coder is? It doesn't seem an easy thing to measure.
I use Netbeans 5.5. I did upgrade to 6.x but quickly reverted back when I found out it did not support auto completion without having to import the package first. Maybe this was a bug in Netbeans 5.5 but I did like the way I didn't have to stop typing, use the keyboard combination or right click and select "Fix imports". Having to do this just to get method completion for something like a Hashtable was unacceptable to me.
Summation 2
Notepad++ isn't really an IDE but it's probably the best c++ editor I've found for Windows. If you want a full blown IDE then Eclipse is probably your best bet. It's written in Java but with a little fiddling it's not too ugly. As for Dev-C++ it's probably lost support because it's written in Delphi of all things.
Years ago I worked mainly in MS Windows, and I used Dev-C++ as the free IDE, because it's fast and simple.
Then I switched to Linux. Tried KDevelop for a few days but didn't like it. Then discovered Kate, which can work as a sort of IDE, because you can open multiple documents, and open a console window at the bottom to type compile and run commands.
Then KDE4 was release and Kate suddenly was unusable for programming (due to ruined search function). And that's when I discovered Geany, which is really nice, it has the same functionality as Kate but is more clearly geared towards programmers.
Geany works great in Linux, I see that it's cross platform, so I guess you can also get it to work in Windows. But note that due to Windows not having the same compiler tools as Linux available by default, it might be handier in Windows to have something that comes with its own compiler like Dev-C++ :)
Express edition. Free of charge.
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.
I.O.U One Sig.
http://monodevelop.com/ - Supports C, C++, C#, Asp.net.. rather nicely I might add.
-Troll, Flamebait, and Offtopic are NOT equivalent to disagreement.
Thank you
vim of course
Why UNIX?
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.]
I use Visual Studio exclusively when developing in Windows. My only complaint is the lack of multi-monitor support but that's coming in 2010.
and I keep them here:
http://www.marthastewart.com/goodthings/magnetized-pin-box
It looks cute, girls get interested in the field.
The lunatic is in my head
What else?
Try SharpDevelop if you ever decide to trade in C++ for C# and the .NET framework.
http://www.icsharpcode.net/OpenSource/SD/
http://en.wikipedia.org/wiki/SharpDevelop
I'm not really a Microsoft platform coder any more, but I've used this one in the past and it's not bad. Basically a free (as in speech - LGPL) clone of VisualStudio.
Be careful. People in masks cannot be trusted.
I've been using NetBeans lately for C/C++ development, and (for the most part) it has it's usual awesome editor features. Unfortunately, the C/C++ plugin only works with the Cygwin/MinGW development tools on Windows.
I'd say that it's most useful editing feature is it's code completion- it completes quite a few of the usual syntactical characters, and it enters them for you in a way that makes sense. Compare that to Eclipse, which only fills in (as far as I know) parenthesis and some brackets. Being accustomed to the completion NetBeans offers, I found the way Eclipse completes characters to be more frustrating than helpful.
For example, if you have this mostly-typed statement (')' autocompleted by editor):
...you might think that pressing the ';' key should make the cursor jump to the end and skip over the ')'. NetBeans will do the small things like this, where I haven't seen Eclipse do it.
some_function(something()[cursor])
I haven't used Eclipse as much as NetBeans, so I may have missed the "turn this feature on" checkbox, but I've always found NetBeans to be a more intuitive editor. I'm not an expert C/C++ programmer (Java is my main language), so I could just be making assumptions that may be true for one language but not another. Either way, its just my $0.02.
emacs may be many things, but it's not buggy. It's an app which can run for _months_ without trouble. In eleven years I do not believe that I have ever managed to make it crash.
Exceeding the recommended torque is not recommended.
Review their web site. Microsoft Visual Studio Express is free.
Well, you would probably get more than just IDE with that, as TheIDE is quite tightly coupled with the U++ library (http://www.ultimatepp.org/L$www$uppweb$idess$en-us.html_3.png, http://www.ultimatepp.org/L$www$uppweb$idess$en-us.html_4.png), anyway, ide-wise:
- it has cool highlighting, including highlighting of C++ blocks and coloring parenthesis (see http://www.ultimatepp.org/L$www$uppweb$idess$en-us.html_2.png)
- its C++ code-parsing abilitites (for purposes of code-navigation and 'intelisense') are at the moment said to be better than CDT's or at par with Visual Studio, although the problem is that it parses only the project files (not 'external' headers) http://www.ultimatepp.org/L$www$uppweb$idess$en-us.html_5.png.
- if you are rebuilding large projects often, it has very fast build process. It uses two tricks, one widely known (using multiple CPU cores to launch compiler instances), one special (combining files to avoid header reparsing). In practice, on quadcore CPU, it can build up to 16 times faster than plain make.
- works in Win32 and X11.
But there is also a drawback for many users:
- as it adds a strong crossplatform modularity layer, it gets a lot of suffering getting used to it. Simply do not expect your usual Visual Studio copy...
no longer needing to run linux to code?
Are there objective standards for how productive a coder is? It doesn't seem an easy thing to measure.
Back in 2000 we were taught by our CS instructors that 10 lines of code per hour was a good measurement for a productive programmer, all things considered. It was an old school faculty (some had never used Windows before), and I've no idea how accurate that was or is now, as there's only one realistic metric I've used to review programmers' work, perfectly illustrated by that xkcd comic I can't find (dammit).
Coder productivity is measured by how many "WTF?"s come up when the code is reviewed.
Why is it nobody seems to know about the excellent CodeLite? Described as "a powerful open-source, cross platform IDE for the C/C++ programming languages (build and tested on Windows XP SP3, (K)Ubuntu 8.04, and Mac OSX 10.5.2)" see http://www.codelite.org/
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).
Hunt your preferred prey at Aliens vs Predator MUD. Join the war at avpmud.com port 4000
I am pretty sure the Express versions are now, but I don't think they were always "free". Unless you mean "free" as in compiling the IDE from source yourself, in which case it is not! :-)
What could possibly hurt the security of the American people more than giving our own government the ability to hide its
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.
"Sum Ergo Cogito"
VS Express is and it works for most applications... http://en.wikipedia.org/wiki/Microsoft_Visual_Studio#Editions
First post! (just in case I am...)
Vi is one editor every professional should know the basics of because it's very feature complete and versatile. Emacs is more specialized but I'm not knocking it. However if you're developing today, you need to move away from modal editors that have awful help systems and no menus. They simply don't encourage learning and get in your way if you're away from the editor for too long and have to try to remember obscure commands (or look them up!). Note they are EDITORS. An IDE does much much more. You should also be using IDEs and editors that support multiple languages. Gone are the days when a computer professional could afford to know just one or two languages. Who the hell wants to learn the quirks of different editors for each one?
These posts express my own personal views, not those of my employer
3.5 isn't even too bad.
i wish i could stop
I've used several different IDEs, with several different languages, for many different programming tasks, over the past decade. I have encountered exactly one instance where having a "project" be anything more than a collection of files I work on at the same time was actually a good thing. Every other time it has simply been an obstacle to bottom-up design, by forcing me to make a lot of decisions about the structure of my code before most of it had actually been written.
The one time the project-oriented IDE was a good thing, I was working on a large app with more than a dozen people who never got to all meet at once, with a central authority dictating the general structure of things to make sure we didn't duplicate effort or step on each others' toes. There was AI involved, so having an integrated debugger to figure out why the AI was making particular choices was very useful. Kdevelop served us very well.
Of course, large development teams are inefficient and prone to communication problems that cause delays and bugs, so they should be avoided whenever possible, just like top-down design. Most of the time, I'm either working on incremental modifications to mature code, where a glorified source browser is sufficient, or writing a small utility from scratch by myself, where I really just need a text editor and a command line. I generally use kscope for the former, and kate for the latter. They get out of the way and let me code.
Sure, I still use a debugger, but the overwhelming majority of the time it's to analyze dumps from crashes I can't reproduce easily, so integrating it with the IDE offers no benefit. A debugger is no substitute for understanding the code, and I can count on one hand the number of times there have been enough control flow-relevant variables being modified at once to make that something I couldn't work out in my head or on a whiteboard.
There's no failure quite as dissatisfying as a complete and total solution to the wrong problem.
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.
After putting up with using Eclipse for a year, forking over $250 for Visual Studio 2008 standard didn't seem to bother me anymore. Trying to save a few hundred bucks just became too counter productive in the long run. There is always the free Visual C++ Express if you just want to program in one language.
Australian running a company that does C# / C++ / Java / SQL / Python / Mathematica
What you call "bloat", we call "features".
What you call "bugs", we also call "features". ;)
Forgot to mention that if you're using the monopoly "OS", the native version doesn't work. Cygwin's does. Right now I'm doing Perl/Tk development (on the PHB's XP system) with Cygwin & emacs. Works well. It also lowers my blood pressure considerably to have bash, grep, find, ls, and other real utilities on that otherwise abominable platform.
Exceeding the recommended torque is not recommended.
It's a problem, but not a big one if you have Tortoise or the like.
>Coder productivity is measured by how many "WTF?"s come up when the code is reviewed.
Isn't that code quality??
if (!signature) { throw std::runtime_error("No sig!"); }
I develop plenty of number-crunching code on different *NIX hosts, but I login to the network form a Windows computer. I found that BVRDE offers a rather pleasant developing environment. I also looked at NetBeans, but BVRDE allows to access remote sources through (S)FTP, a feature that is mandatory here.
* for .NET development on windows, Visual Studio Express / SQL Server Express / SQL Server Management Studio Express
* dynamic typed languages, PHP/Perl/Javascript, Komodo Edit (Linux and Windows)
* MySQL - MySQL GUI tools (Linux/Windows)
* Lightweight Windows text editor with rudimentary highlighting - PSPad (HTML, Javascript, C#/ASP.NET)
* recently been getting into Qt/Linux and Qt Creator I am finding good for that - has its quirks but it's newish
Sure, I suppose code quality is a better descriptor. It was reviewed as part of the development process, where quality determined how much had to be revisited. Each WTF was something that had to be worked on again, so in that sense it was a measure of productivity.
Hoping that I'm not about to start a flame war: why?
I should add to myself (sorry for the self-reply): I hope I'm also not feeding the trolls. I mean, seriously, 10 klocs is too much? On second reflection, that has a mild troll odor to it. At least as far as I nose.
But even if I am, I think I'm making valid points that not everybody knows about or would have though about.
Mostly Eclipse. Some Notepad++.
... my favorite free IDE, Dev C++, yesterday and noticed that it had not been updated since 2005!
Me? I've been using Dev PHP for a long time, so long that I just now noticed it hasn't been updated since 2007!
Likes? Fast, simple, doesn't-get-in-the-way, good syntax highlighting.
Dislikes? Just one: Search is weak. Search is regex by default, which requires an extra step to search for a particular codeblock. Worse, it doesn't wrap by default, so I have to scroll to the top before I search for something near the top.
It's a project that was developed for a while, dropped,picked up again, dropped, etc. so there are multiple "versions" of it floating around as of a year or two ago. I linked to one of them.
I have no problem with your religion until you decide it's reason to deprive others of the truth.
If anyone says Emacs or Vi they are insane and have never done 10k lines of code in a modern environment.
While the handling of Vi or Emacs actually *is* breathtakingly bizar and unwieldy, what you're saying is not correct. If someone actually takes the time to learn to use Emacs and the extensions it offers for developement - which can take a few years - it can be the most powerfull and fast IDE out there. And it opens files upwards of 40 MB (that's Megabyte) in half a minute and then you can navigate around them with no delay at all. That league of performance is the reason I started using it. In terms of performance Emacs is the most powerfull IDE on the planet.
Then again, I started using Emacs 3 years ago - after briefly considering the purchase of Macsperts new darling child TextMate, basically a modern Emacs rip - and I still can't bear it for longer than 10 minutes - mostly because it so totally doesn't comply with CUAS (Common User Access Standard). Yet then again, Emacs was created when CUAS didn't even exist, so that's no fault on behalf of Emacs.
Bottom line:
If you are willing to invest months (!) of time actively learning an IDE, the cli version of Emacs will be with you until the day you die, as it runs well on everything that uses electricity. Up from the most powerfull supercomputer using the most bizar unix variant right down to a 10-year old handheld PC.
We suffer more in our imagination than in reality. - Seneca
On what planet?
I've yet to choke emacs, on gigabyte files. (data & logs.... NOT code!)
To be sure, it can take a while to load a real monster, but if you're patient, have enough swap space, and take the time to reminisce about the '386 days, it _will_ work.
Exceeding the recommended torque is not recommended.
I have used Codeblocks for the last 3 years now. It was pretty good when I first started using it and their latest update to version 8.02 was just icing on the cake. Plus it uses the GNU compiler for windows which make the code pretty cross platform if you aren't using OS specific calls.
I've written console apps, graphical apps, compute games, to libraries that are being used at my university with this thing. Its basically everything nice about Visual Studio without all the bloat.
A while back I toyed around with Eclipse (with the C++ add-ons); I eventually gave up on it since its behaviour was really erratic while attempting to debug programs, making it nearly impossible to do so. I'm sure I was doing something wrong, but nonetheless sometimes a configuration would successfully manage to get a debug session going, while at other times the same cfg would balk. I didn't care too much for the interface to the debugger as well. Dev-C++/Bloodshed is still good, even if it's a bit dated; my current favourite is Code::Blocks. It has a few bugs in it which need ironing out, but still it's a great IDE (cross-platform too). Note to the 1st /.er: I had a few problems with Code::Blocks crashing when I first installed it too. It would freeze on startup; I investigated with Process Explorer and found that I was accumulating instances of the MinGW compiler which would linger after the last failed start, and that if there were such the program would freeze again. I deleted them all and some of the freezes cleared up, but not all. Finally I moved the C::B init file into the same directory, dumped the registry entries into a file and then wiped them, re-installed them only for the current user (not sure if this was the cause)-- I haven't had any problems since. (?)
Geany http://www.geany.org/ is small, fast, and has the basic features I need. It has syntax highlighting for everything from Assembly to Latex, Java, C, C++, HTML, you name it. And (very important) it stays the hell out of my face and just lets me do the job. I love it.
At the moment I'm developing a Python based web app. I started using PyDev/Eclipse but found the environment more hindrance than aid.
I then got the idea to package up my development environment into a Virtualbox VM. I modeled the VM as closely as possible to the production environment. I run a screen session with several Vim instances (using windows and tabs). I then ssh to the VM. I find this convenient for a number of reasons:
In my experience, having your development environment behave exactly the same *every* time you use it is not to be overlooked.
I can't remember the last time I forgot anything.
I use Qt Creator, xemacs and vim. On all platforms.
-- "Perceptions create reality. By changing your perceptions you change your reality."
Comment removed based on user account deletion
Oh, stop, please. I can't take it.
Exceeding the recommended torque is not recommended.
- MS Visual Studio, really, don't look for an alternative on windows if you don't have to, it is the best IDE available.
- Qt Creator for Qt on linux/Windows as Qt is missing msvc integration from the free version, waiting for kdevelop4 to get a little more stable
- netbeans + c++ plugin for interplatform projects that cannot be done with qt.
I used DevC++ for quite some time until I found out that it was out of date as well. Since then I've used Code::Blocks, and I find it to be quite an improvement. Since it's cross platform, working on different operating systems is pretty easy too.
KDevelop is my alternative choice. For all intents and purposes, KDevelop is my favorite IDE, but since it's only on Linux at the moment, Code::Blocks is my best choice for now. (Still, KDevelop is quite powerful, and I'm eagerly awaiting the cross-platform release.)
Eclipse is also a great choice, though I haven't used it nearly as much. I feel it's a little more focused on Java development, but many /.ers swear by it, so it's probably worth a try.
And on a final note, I've been using Vim a lot more often lately, and with the IDE plugins detailed in the Ars Technica article, I may make that my IDE of choice in the near future. (For others, there's Emacs. Both are great, take your pick.)
I find KDevelop to be excellent IDE for C/C++ development. IT has few rough edges, but tons of features makes it simply the best choice. Integrated debugger, valgrind and cachegrind support, integrated documentation viewer, doxygen generator, ctags, version control etc.
Most professional Linux developer I know are using KDevelop. Others are using Vim and Emacs. I have Emacs guy here who - when exposed to some nasty KDevelop's feature - always claims that "Emacs supports it too, I only have to find and install proper extension". He usually fails or forgets to do so.
Seriously. Why bother? IDEs are so hard to simply so hard to setup. Whenever I try to use one, I always end up fighting with trying to add nonstandard libraries, or hooking it into the code repository. It's horrible. Seriously, a three line makefile is all you need. It is so much easier just being able to say, "You! Compile this, with this option." It's 50 thousand clicks and it still doesn't work.
God, IDEs suck.
... but Visual Studio Express is actually quite good. I'm a Linux guy, and I use Komodo Edit (I do mostly "dynamic language" development now) and before that I used Eclipse for C/C++ and Java, and although Eclipse gets a lot of things right, it can't beat Visual Studio's breadth of features and simplified work-flow. Of all the things MS has done over the years, VS is hands down (IMHO) the best. They don't give it away with all the features so as to not kill the 3rd party market, but it's clear nothing out there in Win[32/64] land comes close (especially for C++ and C#).
It was necessary to develop monolithic graphical development "environment" programs for windows because it lacks even the basics for developement. Thus, windows "IDE"s are an environment within an environment. Unix was designed by programmers, for programmers. Unix IS and IDE.
The first thing that comes to my mind is Eclipse CDT: http://www.eclipse.org/cdt/
It has been around for quite a while, it's mature, frequently updateted, build on top of Eclipse.. definitely worth a try, unless you want to work on a pc with little memory - it's java, so it will need lots of it.
Visual Studio is actually very good.
Really?
Last time I checked, you had to move your hands all the way over to the arrow keys just to move around in your text.
Sure, you can cheat and get Ergo Elan keyboard from Kinesis, which puts the arrow keys in what's essential the Fn/Ctrl/Alt/Space "sub-bottom" row (and it puts Ctrl, Alt, Space, Enter, PgUp, PgDn, Home, End, Delete and Backspace under your thumb; go look at keyboard pr0n to see how it makes sense). But that's still in the sub-bottom row. Way harder to reach than the home or top row.
I don't think it's "actually very good". I think it gets the very basics wrong. It may have great features that are easier to use than in emacs and vi, but if I'm constantly pissed of by having gross inefficiency or discomfort imposed on me by poor design decisions, I'm not going to be happy and (thus) I'm not going to be as productive.
And it's not like Microsoft doesn't have the resources to fix the editor: they have many in-house coders who prefer to use emacs (more than they like to admit, in any case). Why don't they ask them why they prefer emacs, and think about how they can make VS provide what emacs users want?
(How do I insert 78 '#'es? How do I move forward five words? How do I select for copy-pasting the current function? How do I go to the next preprocessor directive? How do I jump to the matching parenthesis? How do I navigate the sexp tree? How do I look up in three seconds what a key does, or which keys a function is bound to? How do I jump to a function/struct/union/enum definition? All without a mouse, of course)
Can you only move around in your text with arrow keys, page up/down and home/end? That's a deal breaker for me. I've given VS some flak for that at http://tech.slashdot.org/comments.pl?sid=1245985&cid=28106773 but it applies to most editors except emacs and vi.
Yes, that's what's generally referred to as zealotry and ignorance.
If someone just wants to build Windows apps then Visual Studio is far and away the quickest and easiest way to do that.
A lot of people don't care if their software was built by an angel with a halo over his head, if that software isn't very productive they'd rather take the piece written by an average day to day coder.
Some people have better things to do than bicker about religious software vendor wars and just go for what lets them get the job done best, and sorry, but free software all too often just loses out here, until there's a realiation of that, it aint gonna change but the free software has a strong focus on getting things to work, without much effort ever being put into how it works and improving usability and productivity.
Asking people to give up usability and productivity for some moral stance is going to be about as easy as getting blood out of stone.
I support the idea of free software, but the free software movement has to accept these points and act on them as the ideology alone isn't enough to make people switch.
Do you really need anything else?
I'm surprised no one has mentioned Anjuta yet. I've tried it a couple of years back and found it quite usable. It may not be as sophisticated as MSVS or Eclipse, but is somewhat like dev-cpp, which has been mentioned. The latter being for Windows, I wonder what platform /. posters actually use/develop for !
Vi, gdb/dbx and strace should be all any unix/linux coder needs.
Which means that you don't use vim, make, a sccs, a profiler, ctags, or one of a dozen other tools.
"I don't know, therefore Aliens" Wafflebox1
and nmake. Who needs fancy syntax coloring. Step debuggers are for weenies who can't manage to use printf()
-=[ place
I'm strongly tempted to label this another 'bloze problem. I'll admit I've never tried a huge file on Winbloze. I've loaded and worked with dozen-megabyte files in Linux, and emacs on Solaris can handle a gigabyte file from halfway across the continent via nfs.
Exceeding the recommended torque is not recommended.
Tip of the week: Even if you're not writing QT code, the integrated qmake builder works WAY better than the autoconf stuff.. then again, anything works better than autoconf ;-)
I wrote my first program at the age of six, and I still can't work out how this website works.
And it's not like Microsoft doesn't have the resources to fix the editor: they have many in-house coders who prefer to use emacs (more than they like to admit, in any case).
I demand a citation from a credible source. If they don't like to admit using emacs I fail to see how you were possibly able to come by this information.
The only IDE I use is XCode, and that only when I'm working on some Mac-only open source package that doesn't include a Makefile.
I guess there might be some IDE somewhere that works cleanly with Make, but they all seem to have a thing about replacing a common portable cross-platform tool with their own proprietary project files... and I've seen where that leads all too often.
Frankly, I would put /bin/bash as first on the list.
My toolchain (ranked by degree of my dependency on the tool) is: bash, vim, exuberant ctags, GNU make, GNU diff, GNU grep, GNU find, GCC, man, git, perl, gdb, objdump.
The chain covers about 95% of projects I do. (To GNU moniker: I'm no GNU nazi, but just to highlight the fact that - flame me all you want - I find the BSD variants of the tools mostly useless in everyday use.)
VIM is powerful indeed. But one should never forget that sizable chunk of its utilities depend on good shell and system file/text tools. Otherwise you probably want to pick Emacs instead.
P.S. For Qt/KDE development one also has to include qmake and FireFox (on-line documentation browser).
All hope abandon ye who enter here.
I've just rebooted my "hobby" after many years of absence (having generally been accustomed to using Borland products), and I'm using Codeview under ubuntu. It works for me, but the lack of mention suggests it's not that well liked. Am I wrong?
Visual C++ Express 2008. Its free. You get a good help (msdn) system. If you install Windows SDK (also free) you can 1. Create Console Apps - ANSI C/C++ and Win32 2. Create Win32 based windows/GUI apps 3. Create DirectX/Direct3D/Open GL apps.
# cat > program.c
# !cc
What else do you need?
Definitely VIM or with extensions, gedit.
sudo mount --milk --sugar
Find it here. It does cost 15 euros, however. When I last tried it and the free alternative it was well worth the money.
Then again, I wonder what would happen to Eclipse, if I opened a 255 Meg file w/it. I have done this w/Vim and edited it w/o a problem.
The lyf so short, the craft so long to lerne
march is the month for ides! ther's precedents and all that
bring bak the ponies!!
So many comments about VI, Emacs, Ubuntu etc. Did anyone notice the original post said he works on WINDOWS ?
Why two lines when one will do
C:\>copy con: quake.exe
Got all those ATL-keypad codes memorized?
Views expressed do not necessarily reflect those of the author.
The vi support doesn't work too well. I've tried it. However, as it is easy to edit the files straight from the directories w/vim, you can just use the QT Creator as a debugger, for example.
Apart from the shoddy vi support I really liked QT Creator.
The lyf so short, the craft so long to lerne
Viplugin (commercial, 15 euros) and then there are the two other ones that did not work as well when I tried them 6 months ago.
The lyf so short, the craft so long to lerne
There are good free IDE's
But the best is Still Visual Studio 2008, specially when you work with .Net
I have used Eclipse to develop Java, but compared to VS2008 it sucks major!
In order of interest according to your requirements:
Code::Blocks
Anjuta
KDevelop
JEdit
Emacs
NetBeans
Eclipse
Anjuta and KDevelop only run under OSS Unix (Linux) but you can run them in an emulated enviroment - there is a no-hassle installation for such an enviroment from Ubuntu.
JEdit and Emacs are both editors that can be extended to IDEs and beyond. You may want to look into that approach.
We suffer more in our imagination than in reality. - Seneca
Actually, IDEs are fantastic, until you need to step outside what the IDE will do, then they are rubbish. Which is about 5 minutes into any non-trivial program.
To add my own opinion, start with CMake. I switched from GCC Autotools to CMake last year, and I'm not looking back. The great part about it is that it's much easier to setup than Autotools, and generates project files for Code::Blocks, Eclipse, KDevelop and Visual Studio. That makes your project trully portable across your favourite OS.
To answer the actual question, I strongly recommend Eclipse with CDT. I've also used jEdit and KDevelop quite a bit.
J-F
Goodbye Slashdot. You've changed.
GVIM is not an IDE however. It's an editor, and one that can be integrated in various IDEs.
Or you could integrate the IDE functionality into vim instead. Ars had a nice writeup on how to fairly effortlessly get IDE functionality in vim ( http://arstechnica.com/open-source/guides/2009/05/vim-made-easy-how-to-get-your-favorite-ide-features-in-vim.ars )
The free, yes FREE, IDE that I use is Visual Studio 2008 Professional Edition (Visual Basic, C#, C++). Unfortunately it's a student only deal at certain Universities, but check out the Microsoft Dreamspark program at http://www.dreamspark.com/ for more information.
For Java development I use Eclipse and NetBeans. I've only just began using Eclipse and will be using it when I start my new job, so it's likely I will sway that way and stick with Eclipse over NetBeans in the long run.
Finally, PHP and web development, as far as free tools I use Notepad++ for these. I haven't looked at the appropriate plugins for Eclipse or NetBeans yet, but then I don't exactly have reason to because I'm rather happy with Dreamweaver.
Frankly, I would put /bin/bash as first on the list.
My toolchain (ranked by degree of my dependency on the tool) is: bash, vim, exuberant ctags, GNU make, GNU diff, GNU grep, GNU find, GCC, man, git, perl, gdb, objdump.
The chain covers about 95% of projects I do. (To GNU moniker: I'm no GNU nazi, but just to highlight the fact that - flame me all you want - I find the BSD variants of the tools mostly useless in everyday use.)
Curious - I suspect this must have more to do with background than I thought. I find GNU make a total pain, even though I've worked 5 years on maintaining projects with a GNU build system (and been the person that did the build system maintenance); and I find BSD make (as in FreeBSD/NetBSD/OpenBSD) nice, with similar amounts of experience on that. I thought people preferring GNU make did so due purely due to availability or having all their experience with that - but if I read you right, you say you actually have deep experience with both and still prefer the GNU variant?
For diff, GNU is the only game in town; it used to be for grep, too; I'm not sure of current status.
Eivind.
Doubting the existence of evolution is like doubting the existence of China: It just shows that you're uninformed.
I use XCode, combined with Textmate (commercial), but XCode alone is pretty good, and I actually like it.
Nothing better for coding for your phone and desktop in the same IDE.
I've recently become responsible for a Drupal site. I have some PHP experience, but not with Drupal specifically.
I'm currently using NetBeans - it feels a bit heavy, it's not very good at following the spaghetti includes of Drupal, and it lacks line wrap. Hey, it's not originally my code :)
Are there any IDEs that are better suited for Drupal hacking? I'm making a lot of changes to the PHP code itself, so PHP is the primary focus. A big bonus would be if it was good at tracing execution of Drupal code, but I suspect this is impossible. Any suggestions are welcome!
Are you a grammar Nazi? I'm trying to improve my English; please correct my errors!
I thought people preferring GNU make did so due purely due to availability or having all their experience with that - but if I read you right, you say you actually have deep experience with both and still prefer the GNU variant?
I used BSD make ~10 years ago and only very shortly. So I can't really opine on it.
GNU make is often pain, but with careful planning it's getting the job done. But from my experience I would admit that GNU make has enormous capacity to confuse and freak out people. Lazy evaluation isn't for everybody. I probably should be considered GNU make profi, as I have read through its documentation numerous times already. That further precludes me from commenting on BSD make.
I personally prefer (and use for all my pet projects) GNU cons. It's simple and perl based. (N.B. There is also SCons which is Python based. At times slower than cons, but has more features and more portable.) Cons is pretty much only known to me solution to retain sanity on large projects: built-in dep checker, built-in installation support, proper dependency handling for static libraries, built-in object caching, support for commands having multiple products, etc. But the main goal of cons (and what I love it for most) is to guarantee consistent builds: unlike make(s), cons uses MD5 to check whether the source have changed. (Though can be reconfigured to use timestamps). Takes time to get used to, but is really worth it.
All hope abandon ye who enter here.
I'm a Web developer, not an "actual" programmer, but I love BASH, ssh, and vim. I find GUI tools get in my way. Like using boxing gloves to play cards.
Sounds like you've never found an IDE that suits you. I've tried using the vim + gdb + strace type of development and gotten along just fine, but when you find a decent IDE with a good debugger, stack trace, good search facility, debug probe and a ton of other helpful tools it's hard to go back to messing around with lots of separate ones. I think it's important to be able to use the separate utilities to get a project done, and understand what you're doing with them, but why make life more difficult if you can get something that's integrated and does everything you need in one place?
Try to stop being so suspicious of people who like to work differently to you. It's likely they know how to use the tools you use but prefer an integrated environment to get their work done. Not everyone using an IDE is using it because they want their hands held. Those that do won't be using their IDE properly anyway.
Silly rabbit
QtCreator is coming along nicely. It uses gdb, which is a bit slow on windows, but I'm finding it very useful for switching back and forth between windows and ubuntu.
"and if you think that emacs, and all those vi variants for that matter, aren't usable and productive just because _you_ can't work them"
And therein lies the problem, you apparently don't even understand what the term usability actually means.
Use Qt assistant instead. The class index function is much faster than navigating through the links with the browser.
Victims of 9/11: <3000. Traffic in the US: >30,000/y
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.
I would have to say I'm very impressed with SharpDevelop for .NET development. Plus they even wrote a book ("Dissecting a C# Application") about how they wrote it. On top of that it's open source and has an interesting add-on architecture.
"I have never let my schooling interfere with my education." - Mark Twain
NetBeans. It's had good support for C/C++ development for a long time. We use Eclipse and NetBeans at work and NetBeans is actually the more well behaved / light weight of the two. I have had netbeans running for about 3 days without closing it, working on a J2EE project and the IDE is consuming all of about 87mb of ram.
Lazarus is excellent for everyone familiar with Pascal or Delphi... Plus it can compile windows CE apps...
i was very happy to see this when i made my transition from windows world of visual studio over to linux, this ide is awesome, seems very powerfull
Even for a 1 million lines of code large scale C++ project? With a complex and deep class hierarchy?
Well, probably one should use C++ for such products nowadays anyway.
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.
Yes, indeed. Personally I would not hire a UNIX developer if they didn't work (or know or prefer to) this way. Specialized IDE is of course always an option, esp. if you are developing in say Java, but I would seriously question someone's ability if they eschewed the shell tool chain.
Now, a lot of people are working like that on Windows too, using either cygwin or MKS Toolkit.
As the island of our knowledge grows, so does the shore of our ignorance.
I really like Notepad++ I really wish there was a Linux port for it. But it does run ok in Wine though.
If something is so important that you feel the need to post it on the internet... It probably isn't that important.
Amen Amen Amen.
Add a file server with a really fast disk subsystem, a fast multicore build system, and a couple of separate targets.
Although I have to admit that I sometimes relapse to TextPad on Windows for editing.
thegodmovie.com - watch it
Yes! And when you build a house, you should only use hand tools!! A real car has no electronics either!!! Give me a break. You should use the right tools for the job. If someone wants to use an IDE becuase it has code completion, built in docs, etc. So be it!!
I'm not a programmer, but I am a systems engineer. I write mostly small tools or automation. For Windows I use ConText, for Unix/Linux I use Vim
You can't spell evil without vi.
Can we get a "-1 Wrong" moderation option?
Do you also use a second terminal for typing in the "make" command? What about other terminals for viewing documentation or file structure? Vim is only a small part of the entire interactive development environment that you actually use. I code mostly in Java and use Netbeans. It contains not only the middle bit for actually writing the code, but I also get windows for debugging and viewing the directory structure. Although this could mostly be achieved by a few terminal windows and Vim, I prefer to use Netbeans because I get nice context boxes showing me the structure of a particular method/function with a little documentation on it.
The question of whether a computer can think is no more interesting than the question of whether a submarine can swim.
Yep. joe + GNU make is the way I do it too.
Though using joe is kind of unpleasant on Windows (I have a hunch I am one of a small handful of people who actually do use it on Windows via cygwin). Using Console helps to make it bearable (at least then you can resize it to larger than 80chars).
I agree here. Frankly I find integrating Subversion into VS isn't all its cracked up to be anyways. I'd rather track that information elsewhere, through explorer for example.
Well then why don't you just explain it to us?
Your blanket statement that Free software somehow simply, automagically loses out to V$ in the areas of "usability & productivity" is an unsubstanstiated crock. Emacs is a mature, highly polished, extremely flexible/customizable IDE and the product of twenty-five years of user-driven development. It was probably the _first_ IDE. Vi is more tightly focused, but also an efficient, highly usable tool. Both have large, experienced, and fanatically loyal user bases.
Having used both, and Visual Studio, I _strongly_ prefer emacs and vi. You can't simply tell me that "they aren't usable". I find them more logical, efficient, productive (as in: faster) and _portable_ as well. I want you to explain just what you think makes V$ _soooo_ much more "usable and productive".
With the wealth of alternatives available (let's not leave out Eclipse, since it seems pretty popular too, as well as Free), I can see no reason to tolerate the moral bankruptcy of the factors of Visual Studio. But you don't want to talk about _that_.
So, enlighten us. What's so all-fired "usable" about V$? What makes it so superior to, say, emacs? What does it have going for it besides its Imperial market monopoly, with the accompanying shills, "analysts", and astroturfers?
And bear in mind that I place a great distinction between "User Friendly" and "Beginner Friendly". For "Beginner Friendly", I'll agree that the Imperial "Tools" are da bomb. Not being a beginner, however, "Beginner Friendly" is not what I want.
Exceeding the recommended torque is not recommended.
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.
All hope abandon ye who enter here.
Delphi and Lazarus/FPC.
When I'm doing web development (HTML, JavaScript, XSLT), I use the free version of Aptana Studio Professional, which essentially is a bundle of the Eclipse editor plus the Aptana plugins. I add the free AnyEdit Tools plugin so that it tabifies and deletes trailing spaces for me.
Vim with Exuberant CTags, GNU tools and a little self-education comprises a fully featured IDE.
The reason so many use and keep using Vim as an IDE, even for large projects is that they can roll together the toolchain - including debugger, profiler, code browser - and builders that suit them, in the way that suit them. Much of the time the people that complain that Vim cannot function as a full featured IDE seem unaware of Vim's shell interface (:!<program> <args> && <program2> <args> [..]) or its 'plugin' architecture, let alone tabs, split modes, keyword completion, folding or numerous other features typical of other IDEs.
A single terminal hosting Vim is enough to comfortably develop large projects in almost any popular language, covering coding, compiling, debugging and execution. Having worked a lot with the awfully bloated and manifold XCode, the sprawling and mysterious Visual Studio and a little with the rather nice Code::Blocks it's clear that I have no reason to consider changing IDE, for the time being.
UNIX world is slightly different. Advanced UNIX users live in the shell. They navigate their file system there, they manage their files there, they search for things, they edit their files there, and some even choose to browse internet there.
This already involves pretty much all a developer does too (except the knowledge of programming and writing actual code).
A developer might know in detail a few more commands and their more esoteric options, and of course be more proficient in writing a regular expression to find that source file that contains some line of code. But advanced UNIX users do that too anyway. And of course developer will know the language they develop in and libraries unlike plain user.
So demanding that someone knows UNIX and bash, is not an impossible requirement if you develop on UNIX. That is, we assume if you develop on UNIX that you know how to use UNIX.
It would be the same as saying that a Windows developer has to know how to use Windows.
As far as magic buttons go, there are no magic buttons. That magic button does something to automate in less general way something you could do yourself easily in more general way. And if you have 3000 UNIX command line utilities available to you that do simple specialized tasks really well, it's not hard to combine them to do pretty much anything.
UNIX users (let alone developers) are creative and know how to do this already, and will script away complex repetitive tasks.
Building your source code is one of those tasks, and make is used to script the build process, etc.
So, I don't really understand the objection.
As the island of our knowledge grows, so does the shore of our ignorance.
I am really surprised no-one mentioned QtCreator which runs on Windows too. You can use Mingw or the visual c++ compiler with QtCreator. Unfortunately you can debug only using Mingw.
I am wondering, though, what do others use for coding (and for Python coding in particular). Text editors are fine for many tasks, but perhaps there are more complex projects with lots of files which require something like Eclipse, etc. What's your experience w. that?
The Eric Python IDE is pretty amazing, with completion, and breakpoints with variable viewers, etc. First IDE to wean me away from emacs. Check it out:
http://eric-ide.python-projects.org/eric4-screenshots.html
If you're a student, you can also get Visual Studio 2008 Professional (and a few other things) for free under a student license at http://www.dreamspark.com/
You guys are such weenies.
Did you read the author's question? He's doing this for his own personal interest. He doesn't want to have to kill and dress a buffalo with his bear hands just to eat a hotdog.
You are welcome on my lawn.
If you still consider Code::Blocks to be "rather nice" you haven't worked with it long enough :) But that is my general opinion on most IDE's - the longer you've used a given one the more you hate it.
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.
No sig today...
I've tried a few IDEs and this is what I found for C++ development:
*Visual Studio*
- Best debugging
- Handles stl strings, etc
- Easy to change variable values while debugging
- Not very good with stl iterators
- Nice GUI for debugging
- Best interface
- Code completion, etc is all great
- Have to use project files: a pain
- A bit bloated (though not as slow as Eclipse)
*Code::Blocks*
- Debugging is pretty good
- Sometimes a bit buggy (Sometimes can't change variables and stl templates a bit weird)
- In theory does lots of good stuff
- Interface is nice
- Not quite as clean as VS but getting there.
- Allows plugins... could make it better than VS in future
- A lot less bloated then VS
- Project files are better than VS
- Allows for normal Unix makefiles
- Multi platform
*Eclipse/C++*
- Debugging not implemented in the C++ plugin
- Nice interface
- Really bloated, way too slow for me
*Emacs/make*
- I don't know how to use the debugging extensions and I don't feel like spending months to learn them
- Great when running things over ssh, no other method really works
Overall, I find that the debugging capabilities are by far the most important to me. So I use VS for almost all of my development. In fact, it's the only reason I still use Windows.
Check out Geany. It's cross platform, and it's a good minimalist editor. Combine it with sshfs on *nix or DokanSSHFS on Windows and you've got transparent remote editing.
-1 Uncomfortable Truth
I generally force myself to use vi to edit smaller Unix configuration files. It's a good skill to have for when the pandemic comes. I visit many different Linux, BSD, and Cygwin hosts. The crap default version of vi on these boxes (or the crap termcap config) seems to have different rules about breaking insert mode. The worst of all are the ones that break edit mode if you press enter to create a blank line to follow your insertion, then cursor up to the line where you wish to edit. Beep! Ah, f.......k the mother of all stupid interactions. Every installer-default vi with a different rule for which keystrokes break insert mode should be forced to have a different name. vi66579 would be the default on OpenBSD. On the worst systems I break down and upgrade vi to vim if possible. I just don't like vi enough to invest in making it bearable. Sorry, potentially you're my one true love, but I just can't get past the mole on your nose.
For a long time xemacs was my primary editor. I sometimes hate, sometimes like, sometimes love emacs. I was willing to invest in it: two or three times a year for half a day of power tweaking. Enough to become proficient in psgml mode when I needed to use that. But I was never willing to invest on a minute by minute basis, so I never achieved full orgasmic enlightenment.
On an untangent, the same is true of my relationship to Lisp. A belief in Lisp is a lot like the faith of economists in rational agents: let's just throw away everything the cognitive scientists have learned about human limitations. When Kurweil finally delivers the neurobot to enable me to paren count like the Rainman, I'll jettison 30 years of blood, sweat, and tears learning all these other languages in a heartbeat. Until then, I rest my shift key.
For my current work in embedded development, I dove head-first cold-turkey into Eclipse 3.4 (Ganymede) last summer. It was a lot to cope with all at once.
I can't say that CDT was a painless transition. I went the fully integrated subversion/JIRA route from day one. I tied to work with the managed build system on some simpler projects. The limitations of the MBS tend to be inscrutable and obscure. The Eclipse documentation (mostly with IBM's thumbprint on it) consists of a masterful job of telling you what you could have guessed already in giant swaths of enterprise-ready declarative text, without ever telling you anything you need to know or can actually use. With one exception: if you intend to acquire your Eclipse skillz by hacking on Eclipse itself, there's a lot of value in what IBM provides.
Hacking Eclipse for me is not an option. I'm using Eclipse mostly for the CDT, so I don't even know Java (which doesn't mean I can't write it, just that I can't correctly set up a classpath in under half a day). I ended up having to write an error parser for a non-standard embedded compiler, which required some Java. Considering my profound ignorance of all things Java, the process was actually pretty slick. Except for diagnosing the classpath problem, which took more time than the multiple ascents on missing skillsets combined.
I don't recommend the Ganymede CDT as an instant-gratification experience. You need some tenacity to get over the learning curve, discover the necessary work-arounds, and train your eyeballs to parse context menus 1000 pixels deep, where most of the selections are the expanding variety. I have a wiki to taking notes on any new technology I'm learning. I nearly melted my wiki server coming to terms with Eclipse.
Having said that, a year later I now have half a dozen major language plug-ins that I use on a regular basis, including some math languages, scripting languages, and simulation environments. Compared to my xemacs days, I love the ability to group a set of projects across multiple languages into a workspace and treat the workspace as a whole.
The current CDT C/C++ parser is not half bad. Having read the history, I would have screamed to have tried Eclipse for C++ development pr
Eclipse. I mostly use the usual Java plugins, Flex Builder, PHP development kit, EPIC, PyDEV and it handles the little bit of C/C++ I do without any complaints. If the RIM JDE plugin worked in Linux it'd never get closed.
>>I went to update my favorite free IDE, Dev C++, yesterday and noticed that it had not been updated since 2005!
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.
um edlin works for me!
I'm against being for anything.
The parent post may have been terribly rude, but I agree with the parent. I'll assume he was being sarcastic.
Anyway, I'm going to speak to those of you who want to indoctrinate people into using vim or emacs as if it was some kind of holy crusade.
The other day I began to read a science & technology magazine in the college I went to. There were a lot of things like instrumentation for earth sciences, translator software, and you know what? Most of them were built in Visual Basic.
Have you wondered why? Not because the language is good, but because the development environment allows you to create applications quickly without having to read a thousand manuals on how to compile.
And people busy with real problems don't have the time to "configure and set up these environment variables whatever". They want something that works FAST.
As for developer experience, here's something that happened in my last job: There were a bunch of vim/emacs fanatics out there. And there was this C/C++ project with a lot of buffer overrun problems.
So I did a recursive directory regex search using Code::Blocks. I copied and pasted the search results (all it took was a right click) and wrote a report. Why didn't they do that? Well, to do this the traditional "without IDE training wheels" way, they required to do a lot of command line stuff. And they were too busy "fixing bugs" using their l337 c0d3r 5k1llz so nobody even bothered.
IT'S ALL ABOUT PRODUCTIVITY, PEOPLE! It's not how "powerful" and "customizable" an editor can be (provided you have the time to learn over 9 thousand scripting commands and options), but how much time it can save you so you can do ACTUAL CODING. Same goes for the (insert your favorite linux image editor) fanatics. If you need to learn script-fu so you can do something that a commercial product does with just a right click, you're losing productivity time.
Not all development teams are scripting / shell experts. When a team needs to finish a project fast, standarizing the development tools is generally a good idea. Do you really want to standarize people into learning whatever macros and scripts you need to do a simple regex over all the project files? Are you INSANE???
The article poster did NOT ask for an editor, he asked for an IDE. Sheesh. You people act like if using an IDE would drain IQ points from you. Get over it!
That's why GNU make has :=.
If you reply, do so only to what I explicitly wrote. If I didn't write it, don't assume or infer it.
Why "don't you get much choice about using an IDE" on Windows ?
There's nothing you can do on Unix-style boxes that you cannot do on Windows.
Just download the Windows SDK for free from the Microsoft Download website, it comes with the command line VC++ compiler, and then install VIM or EMACS and ther you go, you can feel right at home.
I'm 22, so a fairly young *nix user, and I do all of my coding in Vim. However, I do most of my debugging in a visual debugger. How anyone could do anything else, I have no idea. Using a CLI debugger is insanity. For example, when I 'step', I can see every value that changed, without having to query every variable again. It may be easy for small programs, but for large programs with lots of objects it makes things a lot easier.
No, he is not being a smart ass. I tried Eclipse, KDevelop and XCode (oh, the horror) just to find that productivity was halved compared to vim+cscope. So I am back good old vim now.
"You can't allow somebody to commit the crime before you detain them." [Condoleezza Rice]
I do not think it means what you think it means.
An IDE is an Integrated Development Environment. That means all the necessary development steps for at least coding and compiling and debugging are part of the same interface.
That doesn't mean swap out to a different terminal session and type "make."
I've never understood the sad devotion to vi and vim and other obfuscated tools that UNIX elitists have. Sure I can use vi, but why in god's name would anyone want to unless they're forced to work over ssh for all of their development?
If you're comfortable with it, that's one thing. Recommending somebody else cripple themselves with obsolete technology that completely ignores how people actually work because it should be enough for anybody reeks of that famous Bill Gates quote.
I coded both with Vim and IDEs like Eclipse or KDevelop, but I never found the GNU equivalents for graphical UML modelling and class/objects trees. Or easy ways to integrate gdb with vim like so many IDEs integrate their debugger. When working with gdb I always have to search the right line in the backtrace and then jump to the line in the source code manually. That's a typical repetetive task that gets strenous after a while. Or when editing LaTeX: IDEs like Kile have a list for inserting special symbols for math mode; with vim I always start to search my little LaTeX book or the web because I can't (and won't) remember all special symbols that there are.
i use source navigator http://sourcenav.sourceforge.net/ Not fully functional but very good for large classes Development somewhat stopped though
IDE ? I live in Emacs!
There I can edit, compile, grep, open-shells, and run gdb that utilizes emacs buffers.
Then I used notepad.exe
Now I use notepad++
"Even for a 1 million lines of code large scale C++ project? With a complex and deep class hierarchy?"
Yes, why? You not heard of grep?
Eclipse, SQL Developer, Notepad++, Aptana Studio and Visual Studio Express C++/C#.
"Microsoft is the devil --and they make programming so easy,"
If you think an IDE makes writing the code any easier then I doubt you progressed much beyond "hello world"
"those who understand modern IDEs are writing functional software in a few hours that could take you weeks."
Not from what i've seen. They just spend more time pointing and clicking but don't solve problems or find bugs any faster.
Why not just use a good text editor that allows you to build directly from your editor? It will run on multiple operating systems, has a powerful find/replace function, syntax highlighting, tabs, folding, highly customizable, free, open source, yadda yadda yadda
Just go check it out, I've been using it for about 10 years at work and home and love it.
SciTE
http://www.scintilla.org/SciTE.html
As a heavy emacs user, I'd disagree on your assumption that emacs isn't dependent on the shell. Of course, theoreticaly, it is, but why would you reimplement make, grep, find, etc in lisp if they are already there? Emacs can do near everything, even leting bash do the work.
Rethinking email
Gdb is even usable inside emacs... I mean, you can scroll, and read other files... Just don't forget to kill it before you save!
Rethinking email
So demanding that someone knows UNIX and bash, is not an impossible requirement if you develop on UNIX. That is, we assume if you develop on UNIX that you know how to use UNIX.
So, I don't really understand the objection.
Objection withdrawn. This is common sense.
I generally am not that demanding and rarely have the choice of people with whom I work. I try to put everyone into position where they can do their best. Even in UNIX programming, there are lots of task which do not involve shell. Though, yes, being able to learn scripting is a great advantage.
As I put it: if people are not able to create their own working environment, then I simply write one for them.
Though, frankly, people who have decade(s) of UNIX programming experience struggling to write working 5-line shell script is still freaking me out. And I meet a lot of such folks - especially coming from commercial UNIX variants.
P.S. BTW, note how that correlate with old UNIX truth: real programmers do not write programs, they write programs which write programs for them.
All hope abandon ye who enter here.
Because it is best for Java and Web.
Yes. But try once to explain the difference to normal folks the declarative nature of Makefiles.
We had a case when some developers proclaimed a war on "=" and replaced it with ":=" in all their Makefiles. Since, you know, everybody understands better how ":=" works. You can imagine the disaster which followed during preparations of next release. Worst part was that I had to explain the difference between "=" and ":=" to the brainless developer who understand very little of how make works at all.
All hope abandon ye who enter here.
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.
How so? I mean, my major IDE experience comes with VS2k5, though VS is generally considered one of the better IDEs out there, and while I've found it useful, about the only things I find truly excellent is it's code completion features, and the ability to easily jump to a symbol definition with F12... but I'd hardly call those a "blew my mind"-type features (and they can certainly be done in Vim or Emacs).
So what else does XCode do that's so impressive?
Dude, move on to paper tape!
for windows:
Programmers Notepad 2
http://www.pnotepad.org/
and MinGw
http://www.mingw.org/
PN2 has tons of features, add your own code clips, tools, etc. It seems to be actively developed. Supports all languages with code completes and syntax highlighting. Its very nice.
Its also included in winARM toolkit as well if you want to dev arm7/9 embedded systems.
They Live, We Sleep
Even for a 1 million lines of code large scale C++ project?
What does line count have to do with anything?
With a complex and deep class hierarchy?
If that's true, you're doing something wrong. Inheritance should be used *sparingly*. Only an amateur thinks inheritance is the magical solution to all code reuse problems.
I've worked with one of the key developers of Code::Blocks, but never actually used the IDE he develops, but everything I've seen him write was very well polished. I agree with you on IDEs - every one I've ever worked with has odd quirks.
Visual Studio is a decent IDE for Windows, but has Microsoft quirks like libraries that need a .lib and a .dll, the property manager that has odd usability issues that never get fixed like having to click on a line to see a ... to add paths (unintuitive), and its oddities like insisting the C library is deprecated and you should use *_s functions (Microsoft's secure replacement for standard C functions).
Bloodshed's DevC++ worked well for me for a while, but I found binaries compiled with it were slower than Visual Studio's (due to using the gcc compiler rather than the Microsoft or Intel compiler). I haven't used DevC++ in about 2 years, so I'm not sure where it's at today.
I have used XCode extensively and agree with you on bloated - between X.2 and X.4 (I skipped X.3) it tripled its memory footprint on one of my projects (and God forbid I start the debugger). I also hate how XCode prefers System paths over local files (violating the C spec, and making it near impossible to override broken functions). Every 6 months or so the .Spotlight-V100 file gets corrupted and needs to be deleted, as well (XCode ties into Spotlight and some headers become unreadable - this problem has existed since X.0). The one feature I love is being able to see which files are not included in a project, which helps when I need to manually update the project, though I'd love this to be automatic or have a batch add capability.
Eclipse I can't say I like much - it is extensible, yes, but any IDE that requires a tutorial to get started with is more work than it's worth, IMO. I did get past understanding Perspectives and loading and compiling a project with it, but I personally found it a lot like my experience with Blender - when you know something else (and I know a lot of pro-CAD packages), everything with it seems backwards.
I've tried Anjuta and KDE Studio on Linux, but I wasn't fond of either one, though I can't remember why (that is more like 3 years ago). I admit, I have a tendency to just use vim for coding most of the time on Linux and debug with Insight (a gdb front end).
Also a long time ago I worked with Borland, CodeWarrior, and a few other IDEs, but most of those are dead now.
Do you also use a second terminal for typing in the "make" command?
Why would you do that when you could just type ":make"?
What about other terminals for viewing documentation or file structure?
That's why GNU Screen was invented. :)
Turbo C++
My favorite IDE is the combination of Python + wxPython + Boa Constructor. I tried to make the switch to IronPython, but it seems that it still lacks all the functionality of wxPython. Maybe in the future there will be a Visual Python Express Edition, only not yet.
"Editors", that's "Which Free IDE". We covered that in third grade.
Advice: on VPS providers
I would make the argument that a good developer must understand the tool-chain because otherwise the moment something goes wrong, they're shit out of luck. Is it so much to ask that developers understand how their source code turns into something their choice of CPU can execute?
Other notable tools missing from that list: A compiler, assembler, and linker.
http://www.codelite.org/ Its the only IDE I've ever found comfortable to use on Linux. Eclipse isn't designed for C++ and feels clunky as a result. Code::Blocks was OK, but seemed to have too many bugs to make it usable. CodeLite on the other hand is designed for C++ and I haven't encountered any major bugs preventing me from using it productively.
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 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
After a quick download from http://www.drjava.org/ you can start using the super lightweight IDE that I frequently turn to, partly because you can evaluate Java statements on-the-fly with the interpreter behind its handy Interactions Pane. You can interact with code in a compiled class or just start interacting with any lines of code you type immediately. It's really easy to get some code going without the bulk of something like Eclipse (which I generally use for all larger projects). I may be a bit biased since Dr. Java was created by folks from Rice University, my alma mater, but I genuinely find it more useful than other lightweight IDEs specifically because of the Interactions Pane. It's been around for nearly a decade and the latest release was earlier this month!
It is shiney.
Honestly, I feel the same way about XCode as the GP. Personally I just think the layout and UI is better with XCode. I am not a frequent coder and I was able to get up and moving MUCH faster with XCode than I was able to with VS2k5. That isn't to say that VS is bad. The major appeal of most things Mac is that they tend to have much cleaner and standardized UIs. I have found in most things that you can have all the advanced features in the world, but if the tool is too complicated to use it won't be used well or at all. (HP OpenView or MS SMS comes to mind, very powerful, very complicated foul beasts)
The only change I can believe in is what I find in my couch cushions.
Bam, 1 keypress to build.
Add this to the increase efficiency gained by editing your text with a real text editor and there is no way in hell an IDE is more efficient.
"linux is just DOS with a UNIX like syntax" -- Galactic Dominator (944134)
If someone just wants to build Windows apps then Visual Studio is far and away the quickest and easiest way to do that.
It's certainly hard to deny that. After all, the Mono folks are basically building a clone of VS as MonoDevelop... they wouldn't be doing that if they didn't realize VS was doing *something* right.
Really, it comes down to the right tool for the job. If I'm working on a Unix application, I prefer good ol' GNU Screen, Vim, Git, and a plethora of command-line tools (grep and sed, gdb, etc). But if I'm working in the Windows world, it's hard to argue that VS isn't the best tool for the job (though I like to marry it with a Cygwin environment so I can still use Git and grep, sed, perl, etc).
Asking people to give up usability and productivity for some moral stance is going to be about as easy as getting blood out of stone.
Here I have to argue a bit, though. Vim and Emacs aren't "usable", in the sense that a neophyte can come to them and immediately become productive. Rather, they're "usable" in the sense that, like driving stick, it requires time and practices to become used to them, but once you've crested the steep learning curve, they become extremely productive power tools.
That said, on Windows, where you need to build GUIs using the *horrible* Windows layout model, and need to build out installers and so forth the Windows way, the integrated tools in VS just make it that much more useful. But I think that's as much a function of the Windows ecosystem itself, rather than the inherent superiority of VS as a development environment.
Personally I just think the layout and UI is better with XCode. I am not a frequent coder and I was able to get up and moving MUCH faster with XCode than I was able to with VS2k5. That isn't to say that VS is bad.
I'm actually more interested in what XCode offers over, say, a Vim or Emacs-type environment. The GP said that, after years working with Vim, XCode "blew" his mind... but my experience with IDEs is that, while they provide some handy features, there's nothing in them that I truly couldn't live without. So either I'm missing something in these IDEs, or the GP was missing something in Vim (or he/she's easily impressed :) ).
10 lines per hour? That's way too high.
Assuming you're counting debugging, testing, and documentation.
I've heard, through oral history only, that good numbers for total-time-of-project / (LOC * number-of-programmers) is less than 30 lines per programmer per day.
Care about electronic freedom? Consider donating to the EFF!
Well at least having bear hands will make it easier to kill the buffalo. Where do I get a set of those?
Sturgeon was an optimist.
What I really like about kdevelop is that it can let me write my own makefiles and just carry on with editing etc.. still the debugger works just great etc.. kdevelop keeps from being in my way which I find very nice..
If you're working and serious about it there is only one solution for programming on, and for, a Windows system and that is Visual Studio Professional. Let's go back to the car analogy world. If you're a mechanic, and you make your living from that trade, you don't buy tools at the dollar store. You buy them from the Snap-On or other professional tool guy. The same goes for development. Don't be cheap. Buy Visual Studio Pro. VS2010 is coming out soon. I would recommend using VS2008 express until VS2010 is released.
If you really want to use free, then use a VS Express Edition or Code::Blocks.
Don't think of it as a flame, more like an argument that does 3d6 fire damage.
Asking people to give up usability and productivity for some moral stance is going to be about as easy as getting blood out of stone.
For some, living the moral life is a prerequisite for sleeping at night.
When coding for Flash, I've found FlashDevelop ( http://flashdevelop.org/ ) to be the best IDE out there for doing AS2 (Actionscript 2) or AS3 (Actionscript 3) based work. Our UI team used it on the last AAA title we shipped and my current UI team is using it in our pipeline for the current games we're tackling.
The fact it's free and open source is great. The fact I can make an entire game in it without Adobe's Flash IDE, bringing in raw assets (mp3, graphics, etc..) and tie into compiled Flash assets (swcs) make it indispensable. I'm hoping the community efforts to get it working on Linux and Mac OS succeed as it's the only reason I start up Parallels on my Mac (other than to play a game or two of "Plants vs. Zombies.").
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.
I'm in danger of fanning the flames here but I really think you are way off target on the above statement.
If you lift the lid on what Emacs can do (as in, you grok Emacs lisp), then Emacs offers a level of flexibility that can't be matched by vi. I've written utilities built into Emacs to crawl through custom traces looking for specific patterns and summarizing them on the fly as you move through files. View-linkage routines to allow you to navigate two related files (not two similar files - we're not talking about ediff-buffers here) in lock-step. Idle timers allow you to keep internal structures reasonably current without causing the interactive performance of Emacs to suffer. The list goes on.
Vi is extensible. Emacs is more extensible.
Cheers,
Toby Haynes
Anything I post is strictly my own thoughts and doesn't necessarily have anything to do with the opinions of IBM.
Most of my Code::Blocks stumbling blocks were performance and stability related. I've never had an IDE crash and freeze on me so much. The debugger felt very primitive as well, at least in terms of usability of its interface. Maybe they've fixed it by now, or maybe we were just doing some things it wasn't expecting us to.
I know the system interfaces for a couple of different OS's inside and out. This doesn't mean that there's a compelling reason for me to type them over and over again or not to allow the arguments to be autopopulated.
It's important to know the systems you work with, I agree. Once you know them, there's no benefit to continuing to prove it in every line of code.
Brainless developers should be fired.
If you reply, do so only to what I explicitly wrote. If I didn't write it, don't assume or infer it.
Though I love Eclipse (especially the debugger), give me Maven, git and subversion/svk and vi anyday.
I spent some time playing with Qt Creator last weekend at the recommendation of a friend, and I'm definitely liking it so far. Code completion, code folding, and the integrated debugger seems to work pretty well. And it's cross platform Windows and *nix, with a drag and drop GUI WYSIWYG editor. I believe it's C++ only, but it sounded like that's type of coding you were doing.
The reason the big two (Vim, emacs) are so popular is that they honestly are better tools than you're getting with a normal IDE. The stuff you traditionally get with IDEs: code browsing, graphical debugging, etc. become less and less valuable the better you get as a programmer (the better programmers usually end up with specialized tools for that stuff, which are more powerful than IDEs). However, the advanced text editing you get in these tools only gets more valuable over time.
To each their own on their selection between the two, but I"ll describe my work in Emacs:
I use it on mac, and windows, and a few big-iron unixes.. I share most of my .emacs between them, with my own customizations. I use org-mode to make checklists and plans for my work (e.g. which code has testcases done, which ones have testcases to write?). I use yasnippet for a template/snippet library, which lets me embed lisp code that evaluates at snippet insertion time (like generating proper INCLUDE_FOO_BAR #defines, documentation blocks, or namespace declarations). ido-mode means I only ever have to specify a filename by substring (with tab-completion). CTags support means I hit Alt-. to lookup a symbol name in an arbitrarily-large project, without caring about how my project is built or the platform it's on. On windows Visual studio is my build tool, and debugger, and emacs handles the text itself. The difference is quite substantial, and worth the setup. The only thing I wish it had was a way to tell an external editor which line to highlight while debugging (I use the built-in editor to list code while debugging).
Care about electronic freedom? Consider donating to the EFF!
APL is the IDE, editor, debugger, interpreter, compiler, help center, etc. It is the one true IDE which I have used for more than 35 years.
Singing:
"Rho rho rho of X
always equals one.
Rho is dimension,
rho rho rank,
APL is fun!.
Those who can make you believe absurdities can make you commit atrocities. - Voltaire
Visual Studio is what I started on so I am biased to that, though I still am on v6 ('98).
...I'm going to have to discount any Java-based IDE as they will consume all your resources eventually.
I've been migrating to Code::Blocks which seems comparable, but with more compiler options. It recognizes gcc from a CygWin install and compiles native windows apps w/o needing cygwin1.dll. I even got it working with BorlandC++ 5 (free). Debugging is decent on it as well.
from 09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0
to 45 2F 6E 40 3C DF 10 71 4E 41 DF AA 25 7D 31 3F
XCode (oh, the horror)
I second that. Maybe I just don't get it, but XCode is worst, ugliest, most cumbersome IDE I've used in 20 years.
That includes years of using Borland and Microsoft environments.
The "Best Ever" is still LSE on VMS... followed by edit /tpu, then Vim.
An operating system should be like a light switch... simple, effective, easy to use, and designed for everyone.
not only a very nice free IDE but an open-source cross-platform class library. My code compiles and runs on Windows (32 &64) Ubuntu (32 & 64) Red Hat Enterprise, FreeBSD - thats all thats been tested so far but no reason to think the list doesn't continue.
CMake is a huge thing to accommodate huge projects.
Cons is a small thing which also can huge projects. But probably doesn't have all the bells and whistles. (CMake IIRC also has facilities a-la autoconf.)
This two are out of different leagues.
Needless to mention, it is rather pointless to have Windows v. UNIX portability, as Windows tends to break trivial things on way too many levels, often requiring in the end source code modifications. (And that is actual experience of my colleagues who tried once to port (unsuccessfully) their Qt4.x project to Linux.) IOW, build system is least of concerns.
All hope abandon ye who enter here.
Actually killing a buffalo with bear hands (claws?) must be a bit easier than with human hands :)
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.
An operating system should be like a light switch... simple, effective, easy to use, and designed for everyone.
Well at least having bear hands will make it easier to kill the buffalo. Where do I get a set of those?
Uhm, I'm pretty sure it's part of emacs, but I forget the keystroke.
I only post comments when someone on the internet is wrong.
Anyone still use Borland's CodeWright tool?? Very good tool for editing C or C++ code/projects on Windows. Have some good functions to outline functions/procedures and a "Brief" mode as well. For the Unix/Linux folks, you can set the editing mode to "vi" and you can use the same commands for vi in this environment. Sadly, they dont support it anymore but it IS a good tool.
I never use it for development, just text editing when I'm on windows, but this is probably the best free text editor that I've seen in a long time. Props to them.
Bye!
He should have Googled = and :=.
It's both productivity and quality in one when you use WTF?s/Lines as your metric. Low line count, or high WTF? count will equally degrade your rating (not strictly true mathematically, but close enough). Hint, smaller numbers are better. You could of course also measure it in Lines/WTF?s, in which case larger values are better, but a lack of WTF?s leads to a division by zero.
Curiosity was framed, Ignorance killed the cat.
Take a look at http://www.codelite.org/. I occasionally teach C++ and I have the problem that not all students have a C++ dev platform installed. If they have one, I let them use it. If not, I recommend CodeLite. I spent a lot of time looking for an cross platform free IDE that I could recommend to students. I needed something that worked. Something that was pretty simple to get people up on running on. And, because students come from many backgrounds and have different ability to pay I really wanted something that was free. I used to use Dev-C++, but support for that project is over and wxDev-C++ is to closely tied to wxWidgets.
CodeLite works, is reasonable easy to learn, and it is free.
Stonewolf
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.
I feel that I am older than the IDE, if you don't count the line number editor in BASIC. I learned to program using punched cards... Yes, I am that old and I am only 56. I have seen a lot of IDEs come and go and I have used several. (I was really in love with the original TurboPascal IDE on DOS. :-) I've used several others including different generations of MS VisualStudio. I think I have learned a lot about how programmers program.
What I have learned is that everyone has their own style that fits the way their minds work. If allowed to programmers will eventually find a set of tools that works for them. Once they have found that set of tools they should be allowed to continue to use them.
I learned to program during a time when it felt like every new project was on a computer with a different architecture with a unique operating system. Even machines with the same architecture might have different operating systems. (How many OSes were there for the PDP 11 anyway?). I got to the point where I would invest no (zero) time in learning the new OS. All I wanted to know was how to invoke the editor, call the compiler/assembler, run a batch file (if the OS was that sophisticated) and some basic file handling.
As the chaos settled it became worthwhile to learn some more sophisticated tools. I spent several years on a DEC 20 and learned emacs. (My brain and vi do not get a long. :-). About that time I ran into MG (also known as MicroGNU) a small subset of emacs written in highly portable C. I carried it along with me for many years and used it for all my DOS C and asm programming. I used gemacs on VMS. I have been using variants of emacs for around 28 years now. I am too the point where I do not remember the key strokes to perform a task, my fingers just do the right thing.
Emacs + make works for me. But, I do not recommend it to new programmers or casual programmers. If emacs works for you, you will find it, love it, and use it. If vim works for you, then you will find it, love it and use it. If VisualStudio works for you then... actually I would never recommend proprietary tools to anyone. Tomorrow you might find yourself working on a different OS and all your investment in learning VS will be lost. FLOSS tools can be taken with you. And, you can continue to learn them for ever because they can never be taken away from you. I still have a copy of mg in a .zip file somewhere. If I have to, I can make it work on any machine and OS that has a text based display.
Stonewolf
Everyone forgets it because you only type it once. Then you can't type worth a darn anymore and you just join the circus.
Eclipse is very nice IDE and very useful, though competitor to Visual Studio (which isn't free and very CPU/memory consuming) .vimrc file (http://dotfiles.org/.vimrc).
:) Goodluck.
Vim is great if you get to know most shortcuts and download (/create/modify) a nice
Check them out and configure whatever you want
Read and Comment at my BLOG
!!!
I use GPS available in the GNAT GPL packages at http://libre.adacore.com/libre/. It supports Ada, C, C++, Python, SPARK, etc. Its probably the best free IDE for Ada and SPARK, especially for use on large projects.
And they are almost certainly hypocrits.
It's nigh on impossible to live the moral live without living in a cave.
No doubt the PC you posted that message on will end up in a nigerian scrap yard polluting the toxic components into the land rivers and sea in that area.
Living a moral life does not mean you get to pick and choose what morals you follow, doing that means you're just choosing a different set of morals that are and aren't important to you than someone else without actually making you any more of a good person.
Unless you sew your own clothes rather than purchase those in shops that have almost certianly come from sweat shops, unless you forego use of a vehicle filled up with fuel from the large fuel giants that pollute and even make species extinct, unless you have never wasted a drop of food in your life whilst children are starving in ethiopia, unless you've never consumed a product whose leftovers end up in a tip seeping pollutants into the earth and riverways used by humans, unless you've never consumed a newspaper or other publication from one of the controlling media groups such as Murdoch's, unless you can claim to have never done any of those things, you cannot possibly suggest that you are a more moral person than anyone else.
So there's the problem, when people are more than happy to support companies that have caused species of plant or animal to go extinct (from big oil, to wood/paper product firms) as a matter of their daily lives, I do not think taking a moral stance against Microsoft, which has actually been far more philanthropic than the likes of Apple and many other tech. companies ever have is really high on anyone's agenda.
Ironically, being more productive and hence less stressed is almost certainly going to net the majority of average joes working their day to day lives a much better night's sleep than pretending they've actually made a difference by not supporting Microsoft whilst guzzling gallons of fuel on their commute to and from work each week.
From a bear, I believe... preferably a dead one.
Abaddon: An Xbox 360 Indie game
Well at least having bear hands will make it easier to kill the buffalo. Where do I get a set of those?
Ask Me About LOOM
Probably here
The cesspool just got a check and balance.
"Here I have to argue a bit, though. Vim and Emacs aren't "usable", in the sense that a neophyte can come to them and immediately become productive. Rather, they're "usable" in the sense that, like driving stick, it requires time and practices to become used to them, but once you've crested the steep learning curve, they become extremely productive power tools."
That's not really usability though but merely productivity. I don't disagree that keyboard shortcuts and applications based on them (and in fact command line OS' vs. GUI OS' even) can allow you to be far more productive, but they are certainly less usable as usability is really defined as how easily you can use something without such prior knowledge.
One might argue then that they're extreme examples of productivity over usability, but I'm not convinced this is the case, I believe it's possible for an application to be both usable and be great in terms of productivity. Vi and Emacs are the way they are because it's the way they've always been, not because they've undergone studies in usability and been rehashed based on that. They just offer improvements in productivity on the classic design.
Some areas of the FOSS world are looking seriously at improving usability, IIRC GIMP has in the past couple of years taken this seriously which is a great step forward. Of course, if the classic way of doing things in a particular app. whose roots dates back decades need to be refactored to improve usability then there's bound to be resistance to change or will to develop a replacement in the OSS community because they're happy with the way things are and the way things work. This is why I'm not sure FOSS really wants to go truly mainstream in general because it will take a lot of sacrifice - developers are going to have to change or replace what they've always been used to to make way for mainstream acceptance. The question the FOSS community has to ask itself is whether it's important to keep developing what they themselves like, or whether they're willing to make the sacrifice to truly go mainstream which certainly will require an attitude change towards greater acceptance of usability. Of course you then get the question of accessibility, even the HTML5 spec seems to be shunning this despite accessibility being given great focus on the web in the last decade, realistically usability is only the first step, followed by accessibility but again they're steps that must be taken if FOSS is to truly displace Microsoft.
There are some moral standards to lose sleep over, however, compared to some of the things done in this world, I do not see how using the right programming tool for the job - whether it is free or not - would be something that will torture your eternal soul.
Si vis pacem, para bellum
Netbeans is free and easy to install and works great. It supports multiple languages. Great online community e.g. support, documentation, tutorials, etc. It freakin' works. Everything about getting Eclipse up and running sucks. Installation, getting plugins, documentation, etc. If you can get Eclipse up and running it's pretty good, but I still like Netbeans better.
On Windows, two prime candidates would be Visual Studio (Express if you want it free), and Qt Creator. Each has its own strengths.
Visual Studio has two things really going for it as far as C++ development is concerned: code completion, and debugging. Let me explain what's so special.
Code completion is a damn tricky beast for C++. I've yet to see an IDE that does it 100% correct (which isn't surprising, since dealing with templates requires a full-features C++ parser and template instantiator just to get completion lists). However, of all C++ IDEs that I know, VS deals with C++ templates best. Some trivial examples to test it:
If the above behaves as comments describe, then your IDE understands operator overloading, templates in general, and template specializations in particular. VS (2008, at least) does it right.
Second is debugging. One real nice thing that VS has going for it there is type visualizers for the watch windows. Basically, when you have a std::list or std::string, normally, since it's a class, the watch window will just show all its members, and you'll have to navigate to the underlying data yourself (and, in case of list, actually go through the chain of linked nodes until you get to the one you want). In VS2005+, however, there is an ability to define custom visualizers for types, that represent an instance of that type in some more convenient way. For example, for all STL containers, it will display the count of elements, and list the elements themselves (as if it was an array); for std::string, it will show the string; and so on. Of course this can be disabled for individual watch expressions when you actually need to see the real members (but frankly, unless you're debugging STL containers themselves, how often would you want to do that)? That feature is even customizable, albeit in a limited way (but still enough to cover all STL, ATL and MFC containers).
Now Qt Creator shines in a different area - it's a very, very nice RAD UI tool. Qt itself is simply the best C++ toolkit for that sort of thing today, on any platform, and Qt Creator is decent IDE with integrated visual designer, debugger, and other nifties. Note that you don't get MFC with Visual C++ Express (and even if you would, it's much more ugly and low-level than Qt). You can of course still use something like wxWidgets with Express, but arguably it's still worse (too MFC'ish for my taste), and you don't get any integrated designers.
I see you haven't used NetBeans. XCode isn't bad, it's far better then the MS IDEs. I think my fave is Eclipse, not because it's a great editor, but because the plugin ecosystem is very good. I give XCode props because the code completion and refactoring are some of the best I've come across. However, most "hard" programmers still fall back to the terminal for building / testing.
Good people do not need laws to tell them to act responsibly, while bad people will find a way around the laws-Plato
When it's done, I expect it to run equally well in any environment (that supports Perl & Tk, which is A LOT). Try that with Visual Studio. I bet you can't, because V$ was deliberately engineered to make it as difficult as possible to develop for any non-Imperial target.
Not true. VS is just an IDE, although it is of course strongly geared toward Windows apps, you can do cross platform development in it if you use the right kit. I used to do a lot of Perl/Tk, but now I've completely switched to using the cross platform wxWidgets for all my apps needing a GUI. For using VC with it I highly recommend using wxPack to install (it bundles in the very awesome wxFormBuilder). Now the only time I use Perl/Tk is for those 5-liner type perl programs where I want to throw something into a messagebox.
He doesn't want to have to kill and dress a buffalo with his bear hands just to eat a hotdog.
Well, if he's got bear hands then I don't see the problem. I think they'd be a lot more useful for killing a buffalo than typing in code.
I've been looking for an IDE for quite some time for my students to use in class.
The requirements are:
1. It should be fast
2. Easy to download and not require an online connection to use/activate
3. It should have the usual editing features
4. IT SHOULD HAVE A GREAT DEBUGGER
I'm trying to encourage my students to use a proper debugger.
Here's what I know:
Eclipse: weird installation process... compiler/debugger need to be configured separately.. lousy debugger
Netbeans: also weird installation process.. compiler/debugger need to be configured separately.. lousy debugger
DevCpp: good installation.. ok use.. buggy debugger
Visual C++ Express: last time i tried you need internet to install.. hard to configure projects to use pure C.. good debugger.
For now we mostly use DevCpp. Maybe I'll learn Delphi and fix it up a bit.
What about other terminals for viewing documentation or file structure?
That's why GNU Screen was invented. :)
GNU Screen provides other terminals. Not physical terminals perhaps, but then xterm isn't exactly a physical terminal either, and the only real difference with screen is that all the terminals are multiplexed though a single (physical or virtual) terminal.
Face it, you don't use an IDE because IDEs are the equivalent of those crappy all-in-one stereos they sell at Wallmart with a crappy radio, crappy CD player, crappy cassette player and crappy speakers all integrated into one craptacular package, so you can't replace any component. :)
(Frameworks with plug-in support are a little better, but most of them seem to be based around a crappy gooey editor that isn't 1/10th as good as vim or emacs! When the only non-replaceable part is the one part I most want to replace, I find it hard to become enthusiastic about the tool.)
XCode is the best I've used, and I use it every day.
typing ":!command" will give you a shell escape in vim. So you don't need two terms.
$ make available
Hmm... I'd go as far as to say, why the hell is any modern developer having to worry about = or := in makefiles anyway? Christ, there's a reason modern IDEs handle all this for you... its tedioius, error prone, and saps your time from the REAL issue, which is building the application.
To the Ask poster, use VS Express, and ignore the retards complaining about "handholding." I assume you want to program to get something done, not spend time on tasks barely related to programming and which modern tools have solved nicely.
Those people aren't good developers. The Makefile is part of the source code, just as the C (or whatever) sources. There are no more justifications to ignore it than to ignore some random foo.c file. (Of course, often it makes sense to avoid understanding all the source code, but the Makefile is one of the key files.)
Actually, I don't really get your concept of tool-chain. It's so old-fashioned. It's not something you study for a year and then become The Toolchain Expert. You need to do something, you ask someone how, and then learn how to do it. No need to learn things you don't have a use for!
I almost hope you are making this up as a trolling exercise. I see no real difference betweeen Emacs and vi users these days, and no flexibility/conservatism dichotomy either. It's also the first time I've seen someone accusing Emacs of not being extensible ...
In all things, moderation. That applies no less to moral activity, which otherwise becomes tyranny.
In this case, I was referring only to the moral choice of Libre. As with pollution, fair labor and despeciation, each person makes his own moral choices. Whether your neighbor will agree with your choices is another matter.
Emacs has good GDB integration (it also integrates with the debuggers of Python and Perl, and can be integrated with any command-line debugger). It's basically what Eclipse CDT does (which also integrates with GDB).
Emacs also has a good LaTex editing mode.
That's the biggest advantage of Emacs over Vim. In Emacs you can integrate external tools without blocking the main thread, making it possible to execute those tools in the background. Emacs is a lot more IDE-like.
Why would you need UML modeling? Surely UML diagrams are good for documenting the code, but not for development.
It's not so much that it has features that vim does not have (with or without other shell tools). Ti's that everything I wanted is basically there out of the box.
I didn't have to configure my code completion or color scheme, I didn't have to mess around getting debugging and output to work the way I wanted. I just open it up and write code. When I want to build an interface I find the interface builder dead simple to use and it's drag and drop messaging interface fool proof.
Other things that are nice are the total integration with the OS. The command + something buttons do what they should and sadly the more I use OSX the more my hands start to naturally want to use the command + something shortcuts. So instead of k I find myself pressing command-x. Other buttons like command shortcuts to pop up symbols, macros, etc. The type ahead really fills out a lot of code for you quickly. Type @imp and get a very nice implementation skeleton. Or whi and get a very complete while loop example. It knows about your variables, functions, and methods (messages, etc). So it auto completes them as well. I'm also a big fan of the design of the interface. Everything is there and easily broken out or removed if you don't need it.
By large my favorite feature is the snapshot. No need to commit to my repository until I ready. If I want to try a major risky change I can just snapshot with a single click and roll back if it really gets screwed up. I also enjoy how the editor points out errors quickly and simply. It makes it easy to find my problems.
I also enjoy textmate and use it for a lot of my web work. It is very powerful and for a good while I even considered using it as a external editor for xcode. Now I use it for quick scripts where opening a full IDE is foolish, and as my everyday text editor.
nm(1) is pretty high on my list, otherwise they are pretty similar (s/vim/emacs/ though).
What's more interesting is that such lists are open-ended. There's no IDE designer deciding what tools we should have and not have. Also, the tools on *my* list do not conflict with yours. You can use your tools and I can use mine, and we can build a piece of software together. (Except we must agree on the building and version control parts.)
No doubt that annoys small-minded people ...
I use Eclipse (For Java) but I know that they do make a C/C++ version. There is a real nice community surrounding the project as well.
Somewhere in a dark place you will find:
www.m1
It's also the first time I've seen someone accusing Emacs of not being extensible ...
Then code to make Emacs in cc-mode upon press of the Tab to insert a Tab in studio.
I have searched for that little crap for two weeks - before giving up. Even exchanged e-mails with cc-mode authors. Nobody f***ing knows how to do anything in Emacs. Because everybody lost track of the things in Emacs very very long time ago.
So, yeah, as a matter of fact I state that Emacs is not extensible.
I see no real difference betweeen Emacs and vi users these days ...
VI users know precisely what every key press does. And know how to change that to achieve different effect if desired. Emacs users - do not. They just hope that Emacs by default does something sensible. And most of the time it does. Not always. But most of the time. Not always what user actually wants or needs - but since one can't change that anyway, they learn to love it. It's not that they have a choice. Isn't it?
I'm in 100% control over my VIM and what it does to files I edit. I can also change every however tiny aspect of VIM's behavior at any given time. With Emacs you can never ever achieve that.
Feel the difference.
All hope abandon ye who enter here.
I honestly don't understand that attitude.
You can build a boat using only hand tools and I'm sure people who can are better craftsmen than people who can't. However, even the best boat builder will build boats faster if they have an electric drill.
Likewise, a well designed IDE will improve a coder's productivity. I like writing code but why should I have to handcraft the build rules for my application when a good IDE will do it for me?
All I want is a secure system where it's easy to do anything I want. Is that too much to ask ~~ Randall Munroe
Netbeans is the best IDE I have ever used. Netbeans is written in java so it will run on multiple platforms. While it has lost some
"street cred" to Eclipse it is still wildly popular and attracts developers to volunteer their time to add support for many languages.
Plus, Netbeans in and of itself is a development platform which can help you create some very nice apps.
Advanced UNIX users live in the shell.
I saw this, and read it as "Unix users live in a shell", and I thought you were calling them hermits. :)
Convert FLACs to a portable format with FlacSquisher
Code completion is one of the first things I turn off in Visual Studio. Ever try adding a link tag around some text and have VS helpfully add the closing tag immediately afterward. I also turn off the pretty formatting. Keeping the same indentation level that I am at (and no, replacing the spaces with tabs does not count) is useful.
I do turn on the view visible whitespace, as this is useful to identify where whitespace is inconsistent. Sometimes though, I wonder if I'm better off not knowing -- having 3 spaces followed by a tab, or "inti;" make me want to throw VS out of the window (it oh so helpfully adds the tab when you start typing from having moved the cursor in virtual whitespace mode).
I want an editor to preserve what I am typing and get out of the way.
Thanks for the response! Sounds like what I expected... it ties a lot of tools together in a nice package, and adds a lot of convenience features (like code completion)... nothing that can't be done with Vim/Emacs and related tools, of course, but probably better tied up in a single package (which matches pretty well my experiences with VS).
On this particular point, though:
By large my favorite feature is the snapshot. No need to commit to my repository until I ready. If I want to try a major risky change I can just snapshot with a single click and roll back if it really gets screwed up.
Now, obviously if you're in a corporate setting, your toolset is more or less dictated for you, but if you're working on person projects, or if your company is uses SVN and you have the flexibility to use your own tools, I'd strongly suggest you check out git (assuming you haven't already done so). Forget snapshotting, imagine being able to arbitrarily, at will, create new temporary branches for experimenting with new work. Bug comes along that you need to fix? No biggie, commit to your working tree, switch back to the primary, fix the bug, commit, then go back to what you're doing. It puts the full power of branching and merging right at your fingertips, and makes those operations *cheap*.
If your company uses SVN, you can even use Git as a front-end to SVN (this is how I work... VS2k5 + Git for Windows development). You can do all your work in your local repo, and when you're ready to publish your work to the corporate SCM, you just push your changes upstream. It really is a revelation after working with SVN/CVS for years.
Of course, you do sacrifice SCM integration with your IDE. But, IMHO, it's a worthwhile tradeoff.
What, so you are not hand-crafting the machine code using Vi??? What is wrong with you man ;)!
I'm curious, is there any mode or plugin except the "It's open source, make it yourself"-plugin to make Vi/Vim/Emacs support 'intelligent search/replace' or other quick refactorings? By that, I don't mean regexps, I mean that the editor actually has deeper knowledge of the language you're editing, and can help you change the name of a type in a specific namespace, without touching any methods or variables or other strings in the code that happen to have the same name as the type. Or change the method name on this particular type, but not the methods with the same names on other types, etc. Over an entire project with multiple sub-projects.
To me, (and probably anyone who refactors code), this is a huge time-saver compared to standard search/replace. Also, I imagine this would be hard to implement as a plugin to Vi/Vim/emacs if you let the tool chain be totally replaceable links - e.g. how do you determine which files are part of the project and need to be looked through, if you can use any one of a pretty large number of tools that can do the work of 'make'?
(I may be wrong. I used emacs/make etc. on SunOS until the early 90s, then moved on to Windows in mid/late 90's, and am now moving back to the *nix-world again, so I've been out of the loop for quite some time. Maybe this type of functionality is now standard in Vi/Vim/emacs too...)
Basically, an IDE sets a standard that makes it possible to ignore some of the most basic problems and instead concentrate on solving higher-level problems. I think this is a good thing (tm). I also don't value 'understanding the build process' that highly. I've been around enough that I happen to understand it (should probably qualify that with a 'most of the time'), but I'm not sure that it's been all that useful since I started using IDEs. Most of the time the build broke before, it was because I did something stupid in the makefile. An IDE typically handles all that for you. I do not miss editing makefiles.
It's frankly made worse by the fact that (at least when I used complied languages, which was ages ago), it was hard to find a good reference. The old O'Reilly book was terrible. It was actually the K&P "The UNIX Programming Environment" that had the best intro to make.
Madness takes its toll. Exact change please.
You ask what more I could want. There's actually lots of answers to that, but probably the biggest and most relevant is automatic documentation and syntax assistance. When you're using an API that you've used many times before, this is of course unecessary, but often you need to work with APIs that are at least a little unfamiliar. In this case, even something as simple as a listing of a function's parameter types and names, and preferably its return type, can help a lot (moreso if it has the Windows API IN/OUT/OPTIONAL tags). Ideally, the IDE would also display the documentation for the function (doxygen-style or even just a single-line comment) - this is especially helpful with macros since they are much less self-documenting. Most IDEs have these features.
Automatic completion of variable names and such is nice, but often you need more than that. The core C/C++ libraries aren't so bad, but many third-party libraries are rich with overly-long class, type, function, or macro names. Remembering these can be a bitch, and most editors will only auto-complete names that you have already used in the "document" (code). By comparison, most IDEs will build up symbol tables from your libraries, etc. which makes it possible to find the name you want even if you've not used it before. Visual Studio's "Intellisense" will even determine, based on context and previous usage, which auto-complete options you're most likely looking for and will place them at the top.
Background syntax check/compile. Rather than writing a bunch of code, running make, waiting while it recompiles *everything* because somebody touched a high-level header, and eventually getting to your code only to have some 157 lines of mostly incomprehensible error referencing things that don't even appear to be on the line for which the line number is given, you can get a nice red underline exactly under the incorrect tokens, with an explanation of why it is incorrect and often even a simple way to fix the problem (yes, I meant to put "using SomeRandomNamespace;" at the top, thank you for the reminder). This is also an easy well to tell if you've fixed a large number of those 157 errors, or only one, or you fixed a bunch but you create 37 new ones... you get the idea. IDEs do this kind of check, and it is a lot more helpful than slogging through a bunch of build errors.
There's no place I could be, since I've found Serenity...
I like Code::Blocks a lot, it lacks features of Visual Studio, but it is has plenty for developing applications.
When i started coding there was no such thing as an idea, really. I think my first IDE was turbo c++ (a dos application).
The one constant in my life has been VI(m) and i've come to rely on it quite heavily.
When I got into visual studio, there was even a plugin back then to make vi work as the editor for visual studio.
But I've also used alot of IDE's, they are "handy" for a number of reasons. Most of it comes from hitting compile and getting links direct to the place in your code when your code failed to compile.
In my more recent time i've used (and not hated) the following IDE's.
Code::blocks
KDE Kdevelop
Visual Studio
Eclipse
Netbeans (v5 was good - version 6 felt like i was coding over vnc via a 14.4k modem it was sooo slow and laggy).
PHPEdit (err, commercial now i think and only php)
Anjuta - fairly simple but binary and fast
Gleany - probably starting to stretch the meaning of "ide" a bit here
Monodevelop and sharpdevelop.
Theres more in there worth mentioning - I just cant remember them all. The thing I really prized in an IDE thought was its ability not to tie me to it (eclipse is great for this, mostly). Like VS and Kdevelop have massive code writing bits that do alot of work for you and when you decide "ahh, i need to use a different IDE" you spend alot of work moving away from them - thats frustration personified.
Eclipse is a beast of a tool, anything you can ever want to do you can find a plugin for (or modify settings to do it for you - like getting it to ssh into another box to actually execute the compile). The sheer bredth of whats available for eclipse is what sets it apart from everything else.
Kdevelop was/is absolutely brilliant at handling coding for unix/qt (it has a "manager" for the automake process which is just awesome).
And the rest all work quite well.
However, my last word is simply this - nothing (imho) can replace a good editor (such as VI). The IDE can provide briliant little extended functionality but nothing is anywhere near as important as what the editor does, this is where you type your code and ultimately the most important part of the process. The generic editors in most IDE's (including visual studio) do have some functionality that can be quite broad, but when you get to know an editor as well as you can know VI there's really nothing that compares. (by the way, im a VI boy, but coders i know who use emacs can do anything i can just as efficiently - so choose emacs or VI you cant go wrong).
The problem is learning an editor like VI (or emacs) takes patience and often its not until someone shows you some little trick they did in VI without even taking their hand off the keyboard that makes people go "wow, thats some pretty useful functionality" and you start wanting to learn more. But being able to do almost anything from the : menu in VI with a few choice commands is something that truely becomes invaluable in terms of efficiency (i.e. not reaching for the mouse). No one really seems to appreciate that until they actually see it in use though.
Yea XCode supports SVN and CVS. We use SVN, so I like the built in integration. However I like your method as well. Our team only has 4 developers and we have talked about moving to git for some time now. I could live without built in support if it improved my workflow.
That's not really usability though but merely productivity. I don't disagree that keyboard shortcuts and applications based on them (and in fact command line OS' vs. GUI OS' even) can allow you to be far more productive, but they are certainly less usable as usability is really defined as how easily you can use something without such prior knowledge.
Sure, but you should ask yourself something: should power tools, such as code editors, etc, focus on being usable, or being productive? Personally, I would argue that, because these tools are directed at professionals whose ultimate goal is to be productive, it's better to create a powerful tool with a steep learning curve than an easy-to-use tool that gets in the way.
Or, to put it another way: IMHO, when evaluating any development tool, "usability" should *not* be the first item on the list.
'course, I'm also a huge fan of Git, which is the SCM equivalent of vi or emacs. :)
One might argue then that they're extreme examples of productivity over usability, but I'm not convinced this is the case, I believe it's possible for an application to be both usable and be great in terms of productivity. Vi and Emacs are the way they are because it's the way they've always been, not because they've undergone studies in usability and been rehashed based on that. They just offer improvements in productivity on the classic design.
I disagree. Vi and Emacs are the way they are because developers decided that that's how they wanted to work, and could work most productively. I mean, those tools have been around for 30 or more years, now... and they've stood the test of time. I think that says something for their underlying design.
Now, can a tool be both usable and productive? Honestly... I'm not convinced. The best applications in their fields, be it FrameMaker or Photoshop or AutoCAD or <insert favorite product here> have one thing in common: they take a long time to become productive in. Similarly, Emacs, for example, can easily be used without knowing anything about it's more powerful features. But to *truly* use it, you've gotta take the time to learn it.
'course, in the case of Vim, you probably have a point... it's, to say the least, esoteric. It just happens to be esoteric in a way I like. :)
In short, is it possible to have a tool be both usable and powerful/productive? Perhaps. But I certainly can't think of an example off the top of my head. Can you?
As for the rest, personally, I've never viewed the free software "movement" as any kind of mission, and, frankly, I find those who do... amusing. Personally, rather than wasting time worrying about world dominance I'd rather spend my time doing what I do best: writing code.
Frankly I'd rather wear a cowboy hat and drink out of a toilet than program in C++. Scala under Netbeans -- now that is the good stuff!
Of course, you do sacrifice SCM integration with your IDE. But, IMHO, it's a worthwhile tradeoff.
Speaking as someone who has moved from a tortoise svn + VS.Net 2K5 to TFS + VS.Net 2K5, it ain't just a worthwhile trade off, it is a good thing. TFS has some issues, but even if it weren't broken in a number of areas, the problem is SCMs are oriented towards managing files and IDEs are oriented towards managing projects. They don't always co-incide. For example, adding a new file to project does not mean it needs to be added to SCM. Equally some files might often be managed by something other than the IDE.
meh
So far, I have used VS, VIM, EDIT, notepad, gedit, etc..and my favorite choice after VS is Code::blocks. It can be configured to create makefiles, projects, and can create them for VC and GCC. IMHO it is the next best thing to VS(and runs on linux)
Ultimate++ is a project as an IDE with a GUI Creator and a library (faster replacement for much of STL) with many additional helpful libraries that make C++ development so much smoother. http://ultimatepp.org/ Check out their forums as they are very active. I would download the latest SVN build from here: http://code.google.com/p/upp-mirror/downloads/list
No, I don't think there is such a thing. In vi/vim you usually either search for what you want to rename, make one replacement, then do n to move to the next match, . to do last edit or n again to skip it. Alternatively you do :%s/for_string/replace_string/gc
so it will ask you each time if you want to replace. It still requires you to know if the replacement should happen or not. The plain text editor does not have insight into code like say Eclipse does for Java (or technically any language that supports reflection).
Yes, for certain things (like find me all callers of this method) or for refactoring good IDE for certain languages (like Eclipse for Java) will do certain things a lot better. But the shear speed of editing is still much slower in each of these IDEs.
Now, if the two could be combined (with a good VI/VIM plugin) then you could have best of both worlds. And Netbeans has an excellent vim plugin which is almost 99% VIM. Eclipse unfortunately does not.
As the island of our knowledge grows, so does the shore of our ignorance.
I have used many IDEs over the years from Borland, M$oft, Metrowerks, IBM - but now I use Code::Blocks.
I write primarily cross-platform command line and server apps.
What I like about C::B is that it doesn't get in my way and I can easily switch back and forth between my Windows and Linux machines without skipping a beat. Using MinGW under the covers and watching my coding I am able to truly "write once & run everywhere".
C::B gives me the basic things I need and then gets out of the way... What's not to love?
I could use anything -- but C::B is consistently getting the job done for me.
I also poke at things from time to time with Visual Slick Edit and of course VIM ... but I wouldn't classify either of those as IDEs (not the way I use them anyway)
Stalinism works better than autoconf.
-I like my women like I like my tea: green-
Knee-jerk reactionary. I hate Microsoft software because it stinks on ice. It is not productive. It is the opposite of productive. Counterproductive. I have wasted more time on closed microsoft software than I would ever have dreamed possible. You can't fix it when it is broken. It is always broken. There is no useful documentation for the most important features -- and this is by DESIGN. The software intentionally shoots you in the kneecaps, because it is part of the microsoft business plan to sell you a wheelchair. This is no more a religious issue than hating someone who rapes my child.
-I like my women like I like my tea: green-
Hairshirts don't help anyone.
That said, asking me to give up usability and productivity in order to make bill gates richer isn't going to get any traction.
-I like my women like I like my tea: green-
VC++ 9 is OK. You just have to ignore/disable what you don't need, and realize that it really wants you to write C# or "Managed C++", rather than pure C++ so watch out for that.
But I'd also check out Qt Creator: http://www.qtsoftware.com/products/appdev/developer-tools/developer-tools (download at the bottom of http://www.qtsoftware.com/downloads). It's intended to be used to use Qt to make GUI applications but you don't have to use Qt. It's a nice simple interface, no feature bloat (yet?).
VOS/Interreality project: www.interreality.org
I'll chime in here with another plug for Visual C++ Express Edition. You don't get either MFC or ATL, but for what you want, you don't need those. Also, VC++EE can process makefiles. Augment it with Boost and the platofrm SDK, and you'll have a solid IDE for developing Windows application.
This might not be popular on this board, but for C++ on Windows with varying target applications there is only Visual Studio in some flavour. Preferably with the VI plugin. Nothing comes close...
I churn C++ code under VS2005 at work.
All in all, I like the IDE, although free-floating edit windows would be nice.
That said, I find Visual Assist indispensable.
It is expensive but if you can get your employer to pay for it, I highly recommend it.
I also use Artistic style (free) to reformat code, and PC-Lint ($$$) to find lurking problems.
I have used Several IDEs in a seach for a perfect one. Plain text like vi or gedit is fine, but at the moment I am likeing Code:Blocks