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.
The nfoCentrale Blog Conclave
nfoCentrale Associated Sites
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.
Technorati Tags: orcmid, Visual C++ Express, learning VC++, C programming, C++ programming, computer science, software development
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 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:
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:
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.
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
|You are navigating Orcmid's Lair.|