Types, leaky abstractions, and the best book on ASP.NET for pragmatic programmers

Don Box, in a comment, clarified that it’s “that having to define a new type just to write a program [is] the daunting part,” for casual programmers. Absolutely. There’s a certain amount of bookkeeping that takes the casual programmer out of the task-solving “flow.” This is a perfectly legitimate beef: a parallel to the complaint that checked exceptions interrupt “flow.” 

In Danny Boyd’s original post, he said that he was seeing “a number of PHP, Perl, and MySQL books appearing on the shelves of my coworkers.” This is a perfect example of the Law of Leaky Abstractions applying to Microsoft’s Visual Studio .NET. VS.NET attempts to “hide the complexity” of what is, in fact, an architecture that’s quite elegant. Since the vast majority of Microsoft documentation conflates VS.NET with “programming .NET” and VS.NET is not presenting a satisfying foundation from which to work, Danny’s coworkers are turning away from ASP.NET itself. Danny should buy them all a copy of Fritz Onion’s Essential ASP.NET book, which is a “Jolt Award” nominee for best technical book of the year, and whose “Chapter 1. Architecture” is exactly the concise explanation that Boyd’s coworkers need.

Open question: would a refactoring IDE help or hinder such casual programmers? Help because of the ease of “doing the right thing”, or hinder because of the “just trust us while we do some magic” factor? 

Nobody expects the object-oriented inquisition!

Danny Boyd has written an open letter to Microsoft challenging them on the subject of scripting languages. More specifically, he worries about the “need to produce simple, procedural, functional web-based database applications. I’m talking here about HTML forms that post or retrieve data for editing.”

Don Box, where I got that link, concurs with the general sentiment and cuts to the quick with the statement “many of us underestimate how big a deal type definitions are….”

What’s interesting, of course, is that to those of us who’ve drunk the Kool-Ade, types (roughly: what object-oriented programming calls a “class”) and events seem to make thinking about programs easier. When you think about a variable, don’t you think about the values it can have and the ways you can manipulate it? That’s its type. It’s just that there are a lot of applications where the only two types that are important are integers, strings, and dates. Three important types: integers, strings, dates, and floating point. Four! Four important types: integers, strings, dates, floating point numbers, and currency… Wait, I’ll come in again…