Interesting InfoWorld column by Jon Udell about the problems backwards compatibility is causing in software, and how software is evolving at a much slower rate than hardware. Mr. Udell argues that software is evolving through increasing layers of abstractions:The arc of software progress is defined not by increasing speed or capacity, but by the growing complexity of the data, events, messages, and relationships flowing through software systems. We deal with that complexity by layering abstractions on top of abstractions.
Abstractions are really nice in that they let the developer focus on the task at hand instead of getting bogged down in implementation details. There are two frustrations with abstractions, though: The first one is that they slow things down. So using ODBC to talk to a database instead of using a driver written specifically for that database will always be slower. But heck, computers are fast. The other and more serious problem is what Joel Spolsky calls ”leaky abstractions.” Sometimes the underlying details of the abstracted layers pop up to the surface, forcing the developer to understand those details in order to understand why the abstraction broke.C++ string classes are supposed to let you pretend that strings are first-class data. They try to abstract away the fact that strings are hard and let you act as if they were as easy as integers. Almost all C++ string classes overload the + operator so you can write s + “bar” to concatenate. But you know what? No matter how hard they try, there is no C++ string class on Earth that will let you type”foo” + “bar”, because string literals in C++ are always char*’s, never strings. The abstraction has sprung a leak that the language doesn’t let you plug.I’m dealing with this sort of thing when teaching students about HTML (although granted, at a completely different level than what Mr. Spolsky is discussing). Basically, where do you draw the line? How much of the underlying issues should a person be expected to understand in order to create HTML? It is so tempting to go for the high-level abstraction and turn students loose on Dreamweaver, which is a lot of fun and lets you create sites with very little effort. But it also means that when the student needs to accomplish a task Dreamweaver isn’t equipped to handle through the GUI, the student needs to have an understanding of the underlying HTML.
The classic example is the Dreamweaver site folder. Whenever you start a new project, Dreamweaver asks you to create a site folder. If you don’t, Dreamweaver makes all local links absolute instead of relative. This means that instead of a link like “images/logo.gif”, you end up with “D:\Documents and Settings\images\logo.gif” and when the site moves to the server, every link and image is broken. Tears and gnashing of teeth ensues. Note that this isn’t Dreamweaver’s fault. It’s just unable to abstract away the concept of a site root folder.
The abstraction boat leaks a lot.
Posted Tuesday, 18 November, 2003 by Nic Lindh
Another book roundup, including some stellar athletes and soldiers, what might be the most jaded, soul-weary protagonist ever, and some grimdark fantasy.
The Internet is getting creepy, and Nic is breaking out his tinfoil hat after newspaper paywalls push him over the edge.
Nic is tired of tech sites obsessing over Apple’s financials and business strategy. So very tired.
Nic reads a book about the processed food industry and is incensed.
Computers are complicated. This brings out the irrational in people.
Nic proposes the loan word Rechthaberei be incorporated into American English.
The Core Dump is back! Books were read during the hiatus. Includes The Coldest Winter, Oh, Myyy!, Tough Sh*t, The Revolution Was Televised, The Rook, Mr. Penumbra’s 24 Hour Bookstore, Gun Machine, Fortress Frontier, Standing in Another Man’s Grave, and The Memory of Light.
This site will return in February.
From a true patriot to a world-weary detective, a dead god, and a civilization about to sublime from the galaxy, this book roundup spans the gamut. Includes Where Men Win Glory, Wild, Inside the Box, The Black Box, Three Parts Dead, Red Country, and The Hydrogen Sonata.
Springsteen gives a concert in Phoenix. It’s fantastic.