So I've known Java for a few years and done alot of code with it, learned C and Miranda (obscure functional language) recently, and simply, bleh, I love programming, I'm a computer science major in university, ffs, but it's getting frustrating working with languages that are useless in a modern windows based environment. I want to learn a language with which I can create real programs that aren't just good exercises in programming, but also useful for creating things I can actually compile into professionally looking programs and use myself, as well as give to others.
I was thinking between C#, C++, and Visual Basic, but seeing as C# afaik requires the .net framework for anyone who wants to use it's executables, and everything I've heard about VB says it's on the way out -- plus, C++ is often mentioned as the most popular language..... I figure C++ is the way to go, and I want to mess around with it a bit. But I don't have the desire, nor the cash at the moment, to throw down for a copy of Visual C++.
Are there any good C++ IDEs out there that anyone can recommend for me?
I've already used Eclipse for Java before, how is it for C++?
Posts
Dev C++ - Free, open source, uses some kind of GCC-for-Windows thing I think
Visual C++/C# Express - Free, Microsoft-made, on Microsoft.com
There are others, but those are the main two. Depends on your liking.
Wait wait wait what?
/me reads wikipedia
So... what's it missing, then? What's the difference between this and regular Visual C++? (Which, btw, I understand is generally the 'industry' standard as far as C++ IDEs for windows go, right?)
I'M A TWITTER SHITTER
Keep in mind that, usually, programs you would create using Visual C++ are a tad different than plain C++, in that you're usually using the visual designer component as well as a few windows libraries. But you don't really have to, and you could just use it to write/compile your code if you want to get used to the toolset. Visual C# is also free, and used with XNA if you want to get into game development.
If you just want to make simple command line or cross platform applications, use something like Eclipse, Dev C++, or Quincy, all of which (I believe) use gcc to compile. Eclipse is fine if you're already used to it with Java apps, since it's a pretty nice toolset and the only complaint anyone has is that it's a little bloated. I like it though since I can use it on whatever the hell computer or OS I feel like writing some code on, and the RadRails component is pretty neat for rails development.
If you want to try to use C++ with it, just set up the Eclipse CDT - C++ Development Tools by using one of these howtos
As for the rest of what you said, half of the point is that I definitely want to go BEYOND simple command line programs, I want to make some creations with a nice GUI, little tools here and there.
Like, I was thinking of making my own little alarm clock app for mine and a few of my buddies use, that would launch an MP3 and raise the volume at a specified time in the morning, just as an example.
Eventually, of course, I want to get into DirectX too, make some games, but that's a bit farther off.
I'M A TWITTER SHITTER
Woo, time to shill for my product >_<
As far as standard C++ goes, VC++ express is a complete package. You have full disposal of the C++ compiler and standard libraries so you'll have no problem creating cross-platform applications or using cross-platform libraries. Our C++/CLI implementation is also included if you want to use the .NET with C++.
What you'll be missing are Microsoft-specific libraries, most notably MFC/ATL, although you can integrate the Windows SDK as a post-installation step so you can create Win32 apps by hand. You'll also be missing out on advanced features like profile-guided optimization and the 64-bit cross-compilers that you (hopefully) don't need with your projects.
All in all, speaking with absolutely no bias ( ), I recommend trying express out to learn C++ if you're running Windows.
Ahahaha, talking to an actual developer of the software. internet wins again.
Thanks, Kambing.
One thing:
Again, having no experience with this, as the extent of my GUI coding is Java's Swing library (and it blows goats).... What would be the difference between doing my apps "by hand" with the SDK versus with the MFC?
I'M A TWITTER SHITTER
If "Windows SDK" means the Win32 C libraries, then you don't want to go down that path. The only API I've ever used that's worse is Xlib.
You can try Qt or GTK+ which are both free. GTK+ is very easy to set up on Windows, but looks ugly. Qt is a pain in the ass to install, but has a much better Windows theme and is a bit easier to code in.
C++/MFC and C#/.NET are both good environments for Windows applications, IMHO. The C#/.NET route is easier, and I don't think it's too much of an obstacle at your level to require the .NET framework (which is available here). On the other hand, you'll probably learn more if you tackle C++/MFC. It might look better to some employers too, as I would tend to have more respect for someone who has experience in C++ as opposed to C#.
I'd recommend attempting C++/MFC (assuming you can get your hands on the full version of Visual Studio), and if you get too frustrated, switch to C#/.NET and come back to C++ later.
this has a few less features, but most importantly, is only ANSI/ISO C/C++ compliant. You can use it to learn to work with basic C/C++, but there is absolutely no way for you to use it to write any programs that use any part of the Windows API.
The IDE itself, though, is every bit as good as Visual Studio standard.
Are we talking about the same Windows API? I have a program that uses Win32 functions for things like opening windows and grabbing input, and it compiled fine in VS express.
I mean, yes, it's nice to have syntax highlighting, code refactoring, code browsing and all that, and most other IDEs/editors have all that, but it's the debugging environment that's really won me over to Visual Studio.
MFC: A set of C++ classes that wrap the functions of Win32. Pretty much everything in Win32 proper is exposed in the MFC which means you can write your app entirely in C++ using good OO practices and be much happier in life. Here's a short introduction (part two)to the MFC in relation to the Win32 API.
These are not the only two choices you've got WRT Windows development. There's the Qt framework which is fantastic to work with. It's far better designed (IMO) than MFC and much easier to work with. However it does mean you've got an added dependancy to your deliverable (the Qt library). I would definitely recommend it over MFC however, for many of the reasons documents in this article.
Honestly look into C#/WinForms development if you have an extensive Java background. C# is the conceptual heir of J++ (not technologically but if you ever programmed in J++ you know what I mean). Not only is it far more friendly to learn coming from Java, through the Mono project you've also got the option of your work being naturally cross-platform. Barring some minor issues Qt has this same benefit as well. You're also not tied to Visual C++ as you would be with MFC (though you can use it)
Yeah, what everyone has said is correct. With paid versions of VS2005, you can use MFC and the resource editor to make the Win32-GUI experience more pleasant. With the pure express edition, you're stuck with the Win32 API for native development which, nicely speaking, requires lots of background knowledge in order to get up and running.
As bash points out, Qt is a good alternative. You can also use WinForms, the managed set of GUI classes, with C++/CLI, our language extensions for managed development. If you are intent on learning on C++, then there is that path that will allow you to leverge the .NET framework (which is not a bad dependency to take given that it is installed on virtually all Windows machines).
No kidding.
Also, the bits about importing and exporting tables aren't necessarily true. If you're smart you can put together some SQL and leverage linked servers & ODBC to work small miracles.
The .NET languages are nice to work with if you're in an environment where you need to turn out things that work very quickly. If you're putting together smaller applications that solve business problems, and you're in a Windows environment, it's fucking beautiful a lot of the time.
Now, there is a project out there called Mono that allows the .NET stuff to work outside Windows, but it's less well known.
If your interest is in moving into game programming, you're going to be developing for Windows most of the time anyhow. If you want to learn DirectX instead of OpenGL, you'll be developing for Windows all of the time. In either case, Visual C++ is a good place to get started. If you want to move away from Windows when you start getting into games, teach yourself OpenGL instead of DirectX.
CUZ THERE'S SOMETHING IN THE MIDDLE AND IT'S GIVING ME A RASH
Yes yes yes. VC++'s debugger is all sorts of awesome. A very good breakpoint system, the ability edit your code and recompile it mid-debug, very good explanations when errors do happen, the ability to see the values of any variable in scope and change said values for testing purposes, all in one convinient package.
Visual Studio in general rocks, and now that you can get the Express Edition for free, I highly recommend it.
If you don't want it for some reason, Dev-Cpp is still a very nice alternative.
If you're in a college, the free Visual Studio prof edition is provided courtesy of the Microsoft Developer Network (MSDN) Academic Alliance. However, I wouldn't count on you being able to access it yourself as it is mostly restricted to faculty and staff or public access computers.
That being said, the easiest way to check what free software you're entitled to as a student is to utilize your school's web page search function (if it has one) or browse software related pages on your school's networking and technology page, wherever that is.
Doc: That's right, twenty five years into the future. I've always dreamed on seeing the future, looking beyond my years, seeing the progress of mankind. I'll also be able to see who wins the next twenty-five world series.
I'm sure there's tons easier ways to do shit like that, but you can do all this in Notepad if you want, which I always think is pretty cool.