Blunder Dome Sighting  

Hangout for experimental confirmation and demonstration of software, computing, and networking. The exercises don't always work out. The professor is a bumbler and the laboratory assistant is a skanky dufus.

Click for Blog Feed
Blog Feed

Recent Items
Code-Monkey Challenge: What is the PSDK Target-Pla...
What Is Object-Oriented Design? I have noticed tha...
Why Not .rtfx? The Suitability of RTF for Open Int...
Recipe for Nano-ISV Success? J. D. Meier just post...
The Difference Between Resolution and Size: Or, My...
Specialization is for Insects I’ve become a regula...
Getting to Unicode: The Least That Could Possibly ...
Dear Microsoft: No Thanks for the Updates
Raymond Chen: What Feature Did You Remove Today?
More Spolsky Gems: Open-Source, the Desktop, and S...

This page is powered by Blogger. Isn't yours?

Locations of visitors to this site
visits to Orcmid's Lair pages

The nfoCentrale Blog Conclave
Millennia Antica: The Kiln Sitter's Diary
nfoWorks: Pursuing Harmony
Numbering Peano
Orcmid's Lair
Orcmid's Live Hideout
Prof. von Clueless in the Blunder Dome
Spanner Wingnut's Muddleware Lab (experimental)

nfoCentrale Associated Sites
DMA: The Document Management Alliance
DMware: Document Management Interoperability Exchange
Millennia Antica Pottery
The Miser Project
nfoCentrale: the Anchor Site
nfoWare: Information Processing Technology
nfoWorks: Tools for Document Interoperability
NuovoDoc: Design for Document System Interoperability
ODMA Interoperability Exchange
Orcmid's Lair
TROST: Open-System Trustworthiness



VC++ Novice: What's the Visual C++ Express Edition?

This is an initial post of information and tips with regard to the Microsoft Visual C++ 2005 Express Edition (and its anticipated Visual C++ 2008 counterpart).  The choice of topics and coverage is random: It depends on the questions I've just been answering on the Microsoft Visual C++ Express Edition Forum.  These posts will be updated from time to time as more ideas surface.  My objective is to accumulate material in a visible, searchable place and eventually consolidate some tutorial and reference level of information as part of nfoWare

see also:

What it Is

The Visual C++ 2005 Express Edition is one of six independent Visual Studio Express Editions that were made available as part of the release of Visual Studio 2005.  The other editions are for for Visual Basic .NET, Visual C#, Visual J#, Visual Web Developer, and SQL Server 2005.  SQL Server 2005 Express Edition accompanies each of the other editions.  Note: The Visual C++ 2008 Express Edition has differences in how it is packaged and in some features.  The overall sense of this critique continues to apply.

The Express Editions are targeted to beginners and enthusiasts.  They are described as "Free, lightweight easy-to-use, and easy-to-learn tools for the hobbyist, novice, and student developer." [I don't believe that the Visual C++ Express Editions accomplish this.  See below.]

Express Editions are not limited to personal and educational use.  You can create commercial software applications and you can deploy your applications for use on other Microsoft Windows computers, including Microsoft redistributable components. 

The accompanying materials for these editions feature development with WinForms, .NET 2.0, and sometimes ASP 2.0 (um, ASP.NET).  Most examples, tutorials, and beginner materials guide newcomers in this direction.  The Microsoft sites for game development, coding for fun, and beginners rarely having anything to offer the Visual C++ 2005 Express Edition beginner and enthusiast.  There are on-line public Microsoft Developer Network (MSDN) Forums for three of the Express Editions.

The Visual C++ 2005 Express Edition includes the same professional-quality compiler as commercial editions of Visual C++ 2005 and Visual Studio 2005.  It includes standard libraries, utilities, and options for developing applications in Standard C, C++, and ECMA C++/CLI (.NET) languages.   You can make standards-based C/C++ console applications that run on x86-based Windows computers as console commands.  You can make WinForms-based .NET applications that run on .NET 2.0.

To make applications that use the native level of the Windows Graphical User Interface (GUI), the separately-obtained Platform Software Development Kit (PSDK) can be downloaded and integrated.  This will provide additional libraries, utilities, and documentation designed for those who want to develop "native" applications that use the Win32 API and that display and are used in the Windows GUI.  Note: Visual C++ 2008 Express includes a version of the Platform SDK, making it easier to begin developing native Windows applications.

What VC++ Express Edition Is Not

This list may seem quite negative.  My intention is to calibrate expectations.  Within that perspective, I continue to view the Express Edition as a bargain and an extremely valuable tool for study and for development of software.  I use it that way myself.  I also think that the enthusiast community could provide supplementary support and guidance to make the Express Edition even more appealing for beginners.

Visual C++ Express is not a Self-Contained Step-by-Step Learning Edition or Self-Study Course.  If you are attempting to learn programming for the first time, you can't just use VC++ Express Edition and figure it out from the error messages, built-in help, on-line forums, and web tutorials.  You will need to invest in some reference materials and a programming book or two.  If you've learned Java, Visual Basic, JavaScript, Python or any other non-C/C++ language, trying to apply what you know to C/C++ will be a serious challenge.  If you're determined to program for Windows, and insist on using C/C++ to do it, VC++ Express is useful for that.  If you're in a hurry, this is the wrong product.  If you are interested in Windows development and want to learn as much as possible as quickly as possible, you should start with Java or one of the .NET languages. 

Visual Studio 2005 and 2008 are also enough different from earlier versions, especially Visual Studio 6.0, that existing non-Windows/non-Microsoft-tools enthusiasts will be frustrated adapting to it without some easy-to-find and easy-to-use guidance.  Basically, and in large part related to some unique complexities in VC++, this is not an entry-level tool.  It just isn't.  That doesn't mean it couldn't be arranged to be.  Others are looking for ways to make it so: "Programming is still too hard today and, in a lot of cases, Express is still too high end for where we want to go."  I'm not sure about "too high end."  It may be more important to provide adequate foundation and have simple progressions (and training-wheels usage scenarios) for successfully building experience, including at dealing with failures and detecting programming errors.

If you are looking to adopt Visual C++ Express Edition in a programming course, this situation may be of great importance to you.  There are going to be startup problems and you'll have to enjoy the idea of providing the missing pieces before you can get your students ready to learn what you really want to provide them.  And then there's this next consideration:

The Express Edition does not match up with available text books, manuals, and other aids for learning C Language and C++ Language programming.  There are four problems: 

  1. VC++ 2005 and 2008 are different than earlier VC++ releases and are very different from other C/C++ products (Turbo C, Borland C++, any GNU C/C++ compiler) that a novice or student may have encountered.
  2. Visual C++ 2005 and 2008 are much more rigorous in support for ANSI/ISO Standards for C and C++.  They will reject programs that deviate from the supported elements of current standards, that use non-standard libraries, and that contain usages that are now obsolete.  Many C++ text-book examples and exercises fail immediately.  Knowing how to correct for this is not exactly a beginner skill. 
  3. Visual C++ supports more than one variant of the C/C++ Languages, including extensions to support the Windows API, .NET, and development of Windows GUI applications.  The beginner is left completely at sea with regard to navigating these variations, recognizing/avoiding conflicting usages, and understanding how these variations apply in adaptation of other programs (from a book on game development or graphical programming, say) to VC++. 
  4. Finally, although the ability to exchange libraries of reusable components is a key feature of C/C++ (and .NET), the C/C++ compilation model and creation/incorporation of library materials is a complicated, unfamiliar mechanism.  Not only is the current Visual C++ designed to make this invisible (and different from other C/C++ compilers), the added layer of solution and project machinery makes it impenetrable and difficult to trouble-shoot.  There are further difficulties in making a program installable and usable on a different Windows computer.

Windows Development is not the VC++ Express Edition sweet spot.  The appeal of full-up VC++ is its provision of an interactive development environment for Windows applications.  This is not the sweet spot for the Express Edition:  Used with restraint, VC++ Express Edition is a superior environment for study and programming of Standard C/C++ non-GUI applications.  It is necessary to obtain basic procedures for making and testing those applications and adapting existing C/C++ materials (as the preceding section warns).  After that, a great deal can be accomplished.

The Express Edition is not a Visual Studio work-alike.  There are major facilities not supported with and not licensed for VC++ Express Edition:

  • Microsoft Foundation Classes (MFC), Active Template Library (ATL), and deployment tools are not supported.  There are missing wizards/designers for those cases and even for creation of resources for GUI applications. 
  • Perhaps of greater importance, the Integrated Development Environment (IDE) interface of VC++ Express Edition is different than that of VC++ in Visual Studio.  This means that there are discrepancies to deal with in the use of tutorials and texts developed for and used with the full-up VC++.
  • There is no automatic integration with
    • Windows Platform SDK (VC++ 2008 includes an Express PSDK version),
    • with the Help of the Platform SDK (workaround available),
    • with the MSDN Library (other than the included Express version)
    • with source-control systems (VSS or otherwise)
  • There is no support for macros and plug-ins from any source

For more information on VC++ 2005 Express Edition, consult MSDN's Getting Started with Visual C++ Express Edition article and the feature comparison of Visual C++ Editions as well as the Visual Studio 2005 Product Comparisons

For comparable information on VC++ 2008, check out the Introduction to Visual C++ 2008 Express video and the Visual Studio 2008 Product Comparison.

It is not an upgrade for Visual Studio 6.0.  Enthusiasts and others who come to Visual C++ Express Edition as a way of upgrading from VS 6.0 will be frustrated.  This is not an upgrade and it does not install as an upgrade.  Existing VS 6.0 projects are unlikely to compile under the Express Edition (even with the correct Platform SDK installed for VC++ 2005).  The upgrade path from Visual Studio 6.0, including the various VC++ 6.0 Introductory Editions, is to Visual Studio Standard Edition or better.

Except for the integration with SQL Server Express Edition, the Express Editions do not integrate with each other.  You cannot directly develop solutions having sub-projects using different languages in the same way that is possible with Visual Studio 2005.   Some code-monkey labs developed for Visual Studio cannot be used directly with Express Editions.  There are IDE differences and differences among built-in tools to overcome.

It was exciting to learn of Visual C++ 2005 Express Edition.  Having a free, complete Integrated Development Environment (IDE) along with fully-functioning compiler was a giant leap over the previously-available Visual C++ Toolkit 2003 which was provided only in a command-line version.  There is some concern that working with the IDE can also impair learning, but having an unrestricted (but limited) free edition helped me choose to use the Express Edition.  I also appreciate that the Express Editions were made freely-available with considerable trepidation on Microsoft's part after tireless effort by those who believed in the merits of the approach.  There is much to appreciate in their availability.

I have been using the Visual C++ 2005 Express Edition quite successfully for a project where I want anyone to be able to rebuild it using these free tools.  My project is not very demanding and it can all be built using the console shell and batch-file scripts.  Fortunately, I already knew how to do those things and am reasonably fluent in C, C++, and those uses that I need to make of the Windows (Win32) API.  I know how to keep it simple and I don't have to deal with the using the tools at a complex level.

Unfortunately, most of the materials designed to put beginners on their feet start at the top of the tool stack, not the bottom.  A newcomer is rapidly left in a position of high incompetence without recourse and with little ability to recover from mistakes for which they have no sense of what's happening.  I find that discouraging, and my discouragement is renewed every time I answer yet-another-version of the same question on the MSDN Forum for the VC++ Express Edition.

I keep telling myself that some simple tutorial materials and examples would help beginners to use VC++ Express Edition along with already-available instructional materials, textbooks, and existing code examples.  I'd like to compile enough so that I can at least point beginners to it.  I'm not interested in writing a beginner book for Windows development (or even plain C and C++).  I just want to make an on-ramp for the beginner that serves them in having existing materials be useful.

I'm having trouble getting started while I continue to be dismayed by this situation.  I'm going to use this blog as a way to get over that.  What I am blogging is not what I have in mind as support for beginners and newcomers.  But it is a way of getting material that I can refer to and to adapt in the meantime.  It would be good to complete this before Visual C++ 2008 Express Edition arrives.

[update: 2008-02-08T17:40 Generalized to apply for both VC++ 2005 and VC++ 2008 Express Edition
 update: 2007-11-19T23:34 Linked to Availability of VS 2008 Express Edition and took opportunity to correct the title.
 update: 2007-08-25T04:49Z includes link to my initial determinations about Visual C++ 2008 Express Edition
update: 2007-06-16T16:41Z went fuzzy about ASP 2.0 vs. ASP.NET.  I'm not sure which is which.
 update: 2007-06-16T00:25Z tweaked an awkward sentence and added some more items about what doesn't happen with the Express Edition
 update: 2007-06-11T06:33Z to add additional links on feature information.]

Construction Structure (Hard Hat Area) You are navigating Orcmid's Lair.

template created 2004-06-17-20:01 -0700 (pdt) by orcmid
$$Author: Orcmid $
$$Date: 10-04-30 22:33 $
$$Revision: 21 $