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.

Comments (3)

  1. AndrewSeven says:

    He seems to be favoring untyped/scripting languages, I wonder how he feels about stuff like LINQ which is strong typing without the explicit type declarations.

    Maybe he didn’t include c# because its closer to the pinacle than it is to the initial conception. 😀

  2. Jon Hart says:

    I would say that he offers three languages branches ( esoteric, mainstream server, mainstream client ) and doesnt see the need to be exhaustive. It simply demonstrates that memory management is wide spread, and not some research project.

    Secondly, I would say that he selected VB over C# because VB was released first, it covers the ‘windows’ angle, and it is ( was? ) the most popular language in the world.

  3. Darren Oakey says:

    It’s an interesting exercise though – but think he, like a lot of people, miss the point… people talk about language syntax, purity, support libraries etc etc – but no one takes the big view – it’s all about how can we achieve the MOST ROBUST JOB in the QUICKEST TIME – all these language abstractions are about finding ways to do that…

    but at the end of the day, there are some things that provide us more than others, and in some ways I think

    * color syntax highlighting


    * intellisense

    have actually advanced programming as much as or more than garbage collection or “OO” programming – because they do more towards improving speed and reducing errors.  People focus so much on the language, and forget the rest of the picture.  

    For me, it’s never C# against Java – it’s VS2005 + Resharper vs Eclipse – and it’s a fairly close race, which is what makes it all fun!