Visual C++ 2005 Express
The interface is very pretty, and I like the organization of stuff, but I find the menus to be less intuitive (not that they ever were very intuitive in VC++). Overall, a better experience with the GUI, though.
I noticed there is no "make me a Windows app" option for unmanaged that I could see. This annoys me, since I would rather not play with managed code (not liking the theory for the kind of apps I write). Maybe I just did not look hard enough. Anyway, once I settled on making a managed Windows program, it spat out a screen that reminded me very much of VB!
Once I found the toolbox of widgets to place, I happily went about placing buttons, text boxes, group boxes, and a number of other fun Windows GUI elements on a form -- it even has that nifty list of properties you can change for each element, many of which seemed much more robust even than the VB equivalent. I like the "clamping" ability especially, which makes resizing windows a breeze. As cool as that is, though, to make it even cooler, when you double-click an element, such as a button, it spits out a class method for when that button is clicked and takes you directly to the code for it.
The CLI syntax threw me off immediately upon seeing the code. It puts a "^" sign where the "*" would normally go in pointers to signify that it is managed and that you do not need to delete it. Overall, this is an easy concept to get used to, but I do not like it, all the same. I feel uneasy not deleting things I create, heh. You can also mix unmanaged code as well, though, but I am not sure that is a good idea.
The other major change that smacked me in the face was the relatively bizarre way it creates the whole program by default -- all VERY object-oriented -- it makes a class derived from another class, then calls the run method, basically. All the functionality goes within that class, and the aforementioned "click and place" portion generated stuff in this class automatically (and even renames everything when you change the name of an element, which is spiffy). I do not recognize ANY of the code involved -- I am used to the non-object-oriented "CreateWindow" way of doing things, but it seemed intuitive nonetheless, and I managed to write the code for a simple XOR-based encryption program in what would have been a combined total of about 10 minutes if not for one major problem…
The "System::String" class that all the text-boxes and such use has no easy method (that I could find) of getting an individual character or setting it. I ended up having to convert the thing to a regular string class and then back again, which was not easy or intuitive, either. This was my biggest complaint but I suppose a couple conversion functions can fix that right up.
I do not know if you can use the same OO-method of Window creation in unmanaged code, but I certainly hope it is possible to use that nifty GUI for making forms that generates code for you! If not, I am fine -- I am used to doing things the old-fashioned way, anyway. In the end, I do not want anything to do with CLI or managed code, unless I am writing little toy programs that do not matter… and I doubt I will benefit from any of this, except the pretty new GUI that reminds me of Office 2003 (it looks exactly the same, in fact).
Visual C++ 2005 Express Review
Nice review.
I think if you wanted to write a managed application I would stick with C#. It designed very well with OO in mind and GUI ease of use. Managed C++ is an ugly hybrid I'd rather not touch. Look at the QT library, you should able to whip up a GUI pretty easily and their is a generator for the it too I think for picking/pasting components on forms.
I think if you wanted to write a managed application I would stick with C#. It designed very well with OO in mind and GUI ease of use. Managed C++ is an ugly hybrid I'd rather not touch. Look at the QT library, you should able to whip up a GUI pretty easily and their is a generator for the it too I think for picking/pasting components on forms.
After using it some more, I have some new opinions about this software.
First of all, as a warning, you need to download the Windows SDK separately if you want to compile anything native beyond simple console applications. It took me a while to figure this out, and it frustrates me. It also took some work to convince it to look in the right places for libraries and such. The interfaces for all of the options are different, too, and many menu items are arranged differently, so not a whole lot of knowledge on getting things to work is transferable, but the ideas are mostly universal and easy enough to find once you get the hang of things.
One feature I really like is this little button that lets you make a new class. Click the button, type in a name, click an accept button, and viola', it creates a header and a code file with the barebones class in it for you -- saves a whole minute or so of making files and encourages me to do things properly (as opposed to having a bunch of classes in the same file).
You can also remove files from the project and delete them at the same time, which, as far as I know, you could not do in VC 6 (only remove). Maybe I am wrong and you could do it then, too, but this is a simple but nice feature.
Another of my favorite features is that it intelligently groups chunks of code together (mostly functions, etc.) and lets you minimize whole sections of code by clicking on a [+]/[-] button next to it. In large source files, this makes finding the stuff you want oh-so-easy and nice. Absolutely amazing feature. The text highlighting seems very good, too.
One snag I hit, though, is that it is much more strict about what you put in header files. A library I tried using had a global variable in a header that was sat to only compile once, but it still refused to let me have it there unless I did all kinds of nasty tricks. I eventually just moved it.
It gives you stern warnings whenever you try to do something that is not standard C++, which I suppose is a good thing. It refuses to compile when a variable might leek through a switch statement, which annoys me, though. It also gives you MUCH better warnings and errors in general, often with suggestions as to how to fix the problem. It does not like when you use sprintf, for example, and suggests using the more secure sprintf_s instead. I like that.
I still have not figured out how to switch between projects that are loaded at the same time, but it intuitively knows which you are working with and which to add files to, etc. which I had issues with the old version of VC6. My biggest hangup with multiple projects open at the same time is that you cannot run two debugged programs at once, and I see no easy way to execute them from within the IDE unless it is the primary project (and I have not figured out how to tell it which one is the primary). I have circumvented this issue in my client/server projects by having the server be the primary, running it outside the debugger, and running the client in the debugger, which is easy to do by right-clicking the project. I think this would annoy me more if, for whatever reason, I had three projects open at once.
Another thing I like is the mini version of version control it has built in. Besides insanely long undo lists, it marks any new code with yellow on the side until it is compiled, and then marks it with green, so you can easily tell what your most recent changes were. A very nice feature indeed.
While slightly annoying, and much more strict, I enjoy the IDE much more than VC6 now, and will continue using it. I would hate to have to help someone else set it up, though, given the library issues.
First of all, as a warning, you need to download the Windows SDK separately if you want to compile anything native beyond simple console applications. It took me a while to figure this out, and it frustrates me. It also took some work to convince it to look in the right places for libraries and such. The interfaces for all of the options are different, too, and many menu items are arranged differently, so not a whole lot of knowledge on getting things to work is transferable, but the ideas are mostly universal and easy enough to find once you get the hang of things.
One feature I really like is this little button that lets you make a new class. Click the button, type in a name, click an accept button, and viola', it creates a header and a code file with the barebones class in it for you -- saves a whole minute or so of making files and encourages me to do things properly (as opposed to having a bunch of classes in the same file).
You can also remove files from the project and delete them at the same time, which, as far as I know, you could not do in VC 6 (only remove). Maybe I am wrong and you could do it then, too, but this is a simple but nice feature.
Another of my favorite features is that it intelligently groups chunks of code together (mostly functions, etc.) and lets you minimize whole sections of code by clicking on a [+]/[-] button next to it. In large source files, this makes finding the stuff you want oh-so-easy and nice. Absolutely amazing feature. The text highlighting seems very good, too.
One snag I hit, though, is that it is much more strict about what you put in header files. A library I tried using had a global variable in a header that was sat to only compile once, but it still refused to let me have it there unless I did all kinds of nasty tricks. I eventually just moved it.
It gives you stern warnings whenever you try to do something that is not standard C++, which I suppose is a good thing. It refuses to compile when a variable might leek through a switch statement, which annoys me, though. It also gives you MUCH better warnings and errors in general, often with suggestions as to how to fix the problem. It does not like when you use sprintf, for example, and suggests using the more secure sprintf_s instead. I like that.
I still have not figured out how to switch between projects that are loaded at the same time, but it intuitively knows which you are working with and which to add files to, etc. which I had issues with the old version of VC6. My biggest hangup with multiple projects open at the same time is that you cannot run two debugged programs at once, and I see no easy way to execute them from within the IDE unless it is the primary project (and I have not figured out how to tell it which one is the primary). I have circumvented this issue in my client/server projects by having the server be the primary, running it outside the debugger, and running the client in the debugger, which is easy to do by right-clicking the project. I think this would annoy me more if, for whatever reason, I had three projects open at once.
Another thing I like is the mini version of version control it has built in. Besides insanely long undo lists, it marks any new code with yellow on the side until it is compiled, and then marks it with green, so you can easily tell what your most recent changes were. A very nice feature indeed.
While slightly annoying, and much more strict, I enjoy the IDE much more than VC6 now, and will continue using it. I would hate to have to help someone else set it up, though, given the library issues.