Blunder Dome Sighting  
privacy 
 
 
 

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
 
Republishing before Silence
 
Command Line Utilities: What Would Purr Do?
 
Retiring InfoNuovo.com
 
Confirmable Experience: What a Wideness Gains
 
Confirmable Experience: Consider the Real World
 
Cybersmith: IE 8.0 Mitigation #1: Site-wide Compat...
 
DMware: OK, What's CMIS Exactly?
 
Document Interoperability: The Web Lesson
 
Cybersmith: The IE 8.0 Disruption
 
Cybersmith: The Confirmability of Confirmable Expe...

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

2007-06-16

 

Ed Nisley on Software Engineering

Praxis101 has a great post on discrepancies in building an open-source component from the source code, and wondering what to do about it.  Bill had a side note that intrigued me:

[Ed Niseley had an article in Dr Dobbs last year arguing that there can't be a software engineering discipline as long as software developers cannot predict the effects of compiler changes on the resulting code. He has a point. And, no I don't have a pointer to that article.]

I figured that I could chime in by finding the article.  What I found was a gold mine.  You may have to register to follow some of these links.  I can't tell if I have a cookie that is letting me in (and I'm not going to clear mine to find out), but the material appears to be accessible:

  • Dr. Dobb's Portal: Search for Nisley.  No, this is not the first thing I thought of.  But Nisley is a regular and sustained contributor and a local search was the only way to work it.   There are only 95 results (on 2007-06-16), so it should not be too difficult to find what I want.  The problem is looking at Nisley material is like browsing in a wonderful encyclopedia and I have to retrain restrain myself.  I glean some of these in the list below.   
       
  • David Tweed: Circuit Cellar Ink articles by Ed Nisley, #1 (January/February 1988) - #201 (April 2007), bibliography.  Accessed 2007-06-16.  The original Byte Magazine Circuit Cellar projects by Steve Ciarcia were always fascinating, whether or not you ever built any of them.  The Circuit Cellar idea has outlived the magazine and continues.  Ed Nisley has been a regular contributor to that wonderful hobbyist community.
           
  • R. S. Ramaswamy: Articles on Software Engineering Do not Have To Be Dry and Unlettered
    Apparently a typed-in version of Ed Nisley's "Only Stone Endures" from the Developer2 magazine issue of January, 2003.  Anyone who has lived along the route of the Erie Canal will love this piece.
      
  • Ed Nisley: Getting Experienced.  Dr. Dobb's Portal: Embedded Systems, March 13, 2007. 
    "Whether it's avoiding an error you've made before or recovering quickly from a new problem, experience matters."  I need to save this one for VC++ Novice and Cybersmith tips that I am accumulating.
        
  • Ed Nisley: Do the Experiment!  Dr. Dobb's Portal: Embedded Systems, November 1, 2006.
    "Doing the experiments is fundamental to good science. ... Although [the Society for Amateur Scientists] isn't a programmer's organization and the convention had nothing to say about hammering out code, you'll find a link between today's students and tomorrow's tech industry, plus a missing link in the desktop Linux revolution."  Another keeper.  The Amateur Scientist column of Scientific American was a wonderful treat, as were the beautifully drafted beautiful free-hand illustrations back in the 50's and 60's.  This is worth expanding upon specifically for amateur software, with or without any experimentation with devices.  [I need a VC++ Novice post about not being able to directly access devices under Windows too, something Ed has covered.]
       
  • Ed Nisley: Error Checking.  Dr. Dobb's Portal: Embedded Systems, October 5, 2006.
    "Code reviews are just one means of detecting program errors. Ed looks closely at how errors evade detection and gives you the opportunity to play code reviewer."  Oh my, some of the same problems noted in the Ariane 501 analysis are still cropping up.  An interesting addition to for more discussions on the so-called Ariane overflow problem and how we insist on getting the wrong lesson from that. 
         
  • Ed Nisley: Failure Analysis.  Dr. Dobb's Portal: Testing & Debugging, September 5, 2006.
    "Looking back at what went wrong is what failure analysis is all about. And you can bet that government-sponsored programs have lots of experience in this realm."  Another look at some results as well as being obsessive about understanding failure.  This is like reading a techno-thriller of every engineer's nightmares.  More and more for Cybersmiths, along with everything Henry Petroski.  Motivating why this is important and how to get the lessons in all forms of software development is going to be a challenge.
      
  • Ed Nisley: On Engineering.  Dr. Dobb's Portal: Embedded Systems, May 16, 2007.
    "Licensing, quantitative software engineering, and the demise of his antediluvian printer are on Ed's mind."  This column revisits the Professional Engineer question and how software development just doesn't measure up as an engineering discipline at this stage.  I think this might be the article that Bill recalls.  And maybe not.  There's a lot to chew on here.
      
  • Ed Nisley: Crash Handling.  Dr. Dobb's Portal: Embedded Systems, April 7, 2006.
    "Ed tries to track down an error with his GoVideo Rave-MP AMP256 music player. ... Mechanical and civil engineers must consider how their projects can fail, right at the start of the design process."  I think this applies in software development too, for all kinds of software that is embedded in the applications of others.
      
  • Ed Nisley: Tight Code.  Dr. Dobb's Portal: Embedded Systems, March 1, 2006.
    "Ed builds an ISBN bar-code scanner."  Off topic, but classic Circuit Cellar caliber, even though focused on what tight code is all about.  You won't be building this with VC++, that's for sure.
      
  • Ed Nisly: Professionalism.  Dr. Dobb's Portal:  Embedded Systems, January 28, 2006.
    "Ed recently saw no need to renew his status as Professional Engineer."  I find this discouraging and something to understand.  The IEEE Computer Society efforts may be more appropriate.   I just can't tell.  This should make David Parnas unhappy, and that's discouraging too.

There's more but I'm tiring and starting to be careless in my selections.  I'll stop now.

As a bonus, I found this gem, something I have climbed on a soap-box or two about as well:

[update: 2007-06-17T18:49Z found a few off-wordings to repair.  Embellished some of the items.]

2007-06-10

 

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 $