Visual C++ .Net Not

Well, I can't stay silent much longer - I've been using the product referenced in the title for over a week now, and have yet to find a single redeeming quality in it. Please note that this critique is directed at Visual C++, and not the other components of the Visual Studio developer suite - I've actually been quite pleasantly surprised by C#, and .Net is not at all out of line as frameworks go, except for one little niggling detail that I'll get to in a moment. But I digress: I'm here to slag the Evil Empire's sorry ass excuse for a C and C++ compiler, and shall not be deterred from my appointed rounds by glimmers of hope on the horizon.

I'm been writing and compiling C programs for better than 20 years now, so I'm not exactly a newbie. And the compiler I loved best in the days before Windows was a Microsoft product: QuickC. It was lightening fast on compiles and links, had the ability to inline assembly and the optimizer was nothing short of a marvel for it's time. It had an IDE of sorts, and an arrary of companion languages (QuickBASIC and QuickPascal, as well as a QuickAssembler, believe it or not). I found the editors much friendlier than Borland's offerings in Turbo Pascal and Turbo C, and the compiler/link cycle much cleaner. But then came Windows and Visual C 1.0, and it all went to Hel in a handbasket.

In an effort to retain some of the DOS command line geekiness that permeated the early days of software, Visual C++ decided to retain it's switch settings as "command line options". That you entered in an edit box, on a buried configuration screen, as though you were still typing them in a makefile. You still had to set environment variables, and you had to set them globally, because after Win32 came of age every compiler instance had it's own environment.

Despite the obvious advances in user interface that the GUI represented, and that Microsoft insisted you use in your programs, by the way, their development tools remained stuck between the worlds: command line settings in a GUI, sans radio buttons, sans checkboxes and sans sense, unless you can remember what /Od /Mt /Dd really mean...

And they've retained the basic style to this day, with one important and exceptionally annoying addition: the wizard. It's hard to create a Visual C++ project without running into a wizard of some sort, that fills in all the blanks you don't need filled.

I don't think they've changed the debugger since 1.0. I've yet to be able to find a real dump screen, or even a easy way to watch variables or inspect classes while a project runs.

Which brings me to another thing that's still the same: the debug and release builds. In two separate directories, under your main project source folder. Why? Maybe it helps some folks organization, but to me it's just clutter - a PE format executable has version info embedded, including a flag for a debug build. This was, of course, designed by M$. Why don't they just use that? I do.

I think there's a way to actually place controls on a form now - but damned if I could tell you how! A huge part of this products problem is it's documentation: there's no lack of it, to be sure, but it's so disorganized as to be useless. My fellow PC programmer at the new job suggested just abandoning the help system in favor of Google - and she said it with a straight face! The embedded help viewer is, of course, Internet Explorer, which adds a toolbar of it's own to your main window, cluttering things up even more. And whereas you can right click on a source or header file's tab to close it, you can't do it with a help file's tab! Truly they've taken Emerson's dictum about a foolish consistency being the hobgoblin of little minds to heart.

Maybe I'm just so used to Borland's tools, but it seems to me that the layout of the editor and the IDE in Delphi and C++ Builder is much more rational than in Visual C++. The help system as a whole still sucks, 'tis true, but at least I can get easy access to class definitions. And I get a much finer degree of debugging control, to the point of being able to step through while watching and inspecting. Which I'm sure is possible in VC++, but nobody seems to be able to tell me how to do it!

I could go on, but there's not much point. I've gotta deal with this beast for the duration, and learn it I will. I just wish M$ would stop making it so difficult.

But before I go, a final word about C# and .Net in general. It's a nicely thought out language and a well designed framework - and a 22MB download that's not distributed by default with any given M$ operating system. And since most of our customers are still on dial up, and we don't distribute our software on a CD, it's completely useless. Tantalizingly so, I'm afraid.

I feel much better now.

21:18 /Technology | 0 comments | permanent link