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
 
Grady Booch on the Limits of Software
 
Modeling the Office Open XML Packaging Conventions...
 
Appreciating ALGOL 60: Launching Computer Science
 
Orcmid's Lair: Global Social Identity
 
What We See Is Not What We Get: Character Codes an...
 
Blinking at Quarks: Is It an Object that I See Bef...
 
The Quarks of Object-Oriented Development
 
Performing in Teams: Where's the Praxis?
 
Windows Home Server Edition
 
The Ultimate Confirmable Incoherence Experience

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

2006-04-01

 

Does Visual Studio Rot the Mind?

Does Visual Studio Rot the Mind?  Thanks to Doug Mahugh having a dreary day indoors, I’ve found this October 2005 gem from Charles Petzold.  Petzold gives voice to a number of problems that have been nagging at me and for which I haven’t found a clear view.  Petzold (who’s April 1st 2006 parody on XAML is also brilliant) sharpens the difference between programming fast, programming well, and programming clearly.  Doug’s grey-day post and Petzold’s appraisal are instant candidates for Best Software Writing II when Joel Spolsky gets around to it.

{tags: conceptual integrity
  }

[update: There were some nasty typos and mangled wordings.  “Does Visual Studio Rot the Mind?” is already on Joel Spolsky’s list, but I was happy to add my vote.]

I only recently learned that Petzold has a blog.  The RSS feed quickly went into my WinDev category among others including Larry Osterman, Michael Kaplan, Raymond Chen and, of particular relevance here, the MSDN Forum for the Visual C++ 2005 Express Edition.  I learned of Doug’s blog through his involvement on the new site on Office Open XML formats and their use in document interchange.  I notice that seeing each new offering from him has me smile.

First, I think that Doug’s use of a kind of Structured English (what is also known as pseudo-code) for high-level characterization of a programming approach is classic.  It’s a recognized software-engineering methodology and is a recognized way to work on the conceptual organization and essentials of a procedure before dealing with the syntax and low-level details that can easily obscure the important overall organization.  It’s literally classic: it goes back to the very early days and Grace Hopper’s efforts to make programming languages match that level of expression more closely.  (I watched a dismal failure on that, ambitiously and prematurely advertised as “English Spoken Here,” but Cobol has to be counted as the eventual success.)

I can even recognize how that approach, which I have used and which I preserve in comments that introduce the detailed sections of code, fits into my breaking down of mainline procedures into use of components.  There, I find that I am designing header files with descriptions of interface principles and stub procedures with pseudocode, all to be filled in progressively and confirmed with successive layers of tests as more function is available to exercise.

This works great for procedural logic and decomposition of the approach, something that remains a valuable practice.  It also ties into how we can tell we’re done and that we have produced what it is we started out to provide. It should also let someone else confirm that what the program's for, not just what it is doing with the bits. That way, others can perform maintenance and continuation work with easy recognition of the invariants that preserve the program’s architecture and functionality.  (Yes, it helps to code like a girl, or anyone else who cares about who will need to read and understand their programs.  I code that way as a gift to my future forgetful self so I can recreate what exactly I was doing and why.  I’d like to think others may find interest in it.  It’s important to me for my own sense of competence and completed work.)

Where structured-anything doesn’t work very well without a lot of careful preparation and practice is when our code consists of fragments/components of something not in view (and that we may not understand how to debug).  For example, our bits might form a cohesive interactive performance only when integrated with a not-so-well understood User Interface threaded-messaging process.  We should be concerned about Petzold’s observation that we are losing something with tools that hide this mystery and leave developers with an uneasy sense of incompetence.  Old hands can adjust to it by bringing solid experience along with a willing beginner’s mind.  That’s advantageous to finding out what is going on and how to establish establishing that our creations are reliable and, with luck, maintainable too.  My concern is that beginners will not have that perspective and will suffer its absence down the road.

One of the great qualities I find in Petzold’s work is his appreciation for the beginner.  I value his care in making sure that his readers are advised about what they need to already know, while letting them operate with as little tool support and startup-cost as possible.  You don’t need Visual Studio for his classic Programming Windows (ending with the 1999 5th edition for Win32) and its sequel, Programming Microsoft Windows with C# (2002).  You just need the compiler, understanding of command-line operation, and some standard developer utilities plus the appropriate and freely-available SDK.  Another common feature of Petzold's work is progressive learning by doing and then doing more, backed up by worked examples that actually do something it is valuable to know about.

My interest in the Visual Studio Express Editions is not just that they are currently available for free so far (and there are books now available that include copies of them on CD-ROM).  It is that it the Integrated Development Environment is limited but sufficient, and the packages are intended for beginners, students, and hobbyists.  I also get to see where some people are stumbling and reporting it on the forums.  I don’t know how representative that is, but it gives me a sense of where there are serious blanks to fill in.  I notice this most with Visual C++ 2005 Express Edition, where there are the fewest beginner books and the power of the system is strewn with landmines for the unwary beginner.  Now let’s see if I can tap my beginner’s mind well enough to fill in the blanks and ease the entry for others who want to program for Windows.  Something that lets newbies come play with the likes of Doug and Charlie and see how satisfying that can be.

 
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 $