The next Accidental Difficulty in software

First, go read this article by Joel: Book Review: Beyond Java.  He mentions this list, of great advances that have address some accidental difficulties in software:

  1. Assemblers
  2. Algebraic languages (including Fortran)
  3. Structured languages (Algol-60 and C)
  4. Declarative languages (including SQL)
  5. Memory-managed languages (including Lisp, VB, and Java)

First, I'm disappointed he didn't list C# next to Java in #5.  By no means did Java (or VB) invent automatic memory management (garbage collection).  Perhaps you would give those languages credit for bringing managed memory to the masses, but in that case, C# belongs on the list. 

I remember a very interesting discussion here a couple years back, about this very topic.  Cyrus was saying that at some point we'll expand the domain of the Garbage Collector to non-memory entities, like files, database connections, etc.  Sure, figuring out of it's time to dispose of those things is hard, but computers are getting more powerful, and we'll eventually build that in to our programming systems.

So, think of all the times you have written 'using' statments in your code, and consider the possibility of a language that made them unnecessary.