Certainly an interesting post, but, in my experience, your statement about scripting vs non-scripting languages is faulty.
At the company where I started programming, hash tables were the constant metaphor. We built routers. Small, home routers for AppleTalk and IP. AppleTalk requires the knowledge of all nets by all routers (non-scalable, and not widely used now), so the answer to any question was a hash table. You’d never use a btree, you’d never use a sorted list. My favorite from that chunk of code was a three-way indexed table, which was moderately innovative coding for the time.
Today’s common availability of hash tables is less about scripting languages and more about the wide availability of excellent support classes built into languages. I credit Java for starting the mad rush to excellence, and dun C++ for retarding innovation. The STL classes are poorly designed and don’t include some of the most useful structures, while Java entered with a strong collection framework and worked hard to fix design flaws (example: early versions forced synchronization when not needed, later versions created a synchronization wrapper class). I don’t count Java as a scripting language, but perhaps you do.
Thus, I agree with your premise, although I believe you are too quick to judge “low level languages” and too slow to judge the programmer. A programmer who doesn’t follow tools improvements, and improve themselves, is a poor programmer.
My professional programming has turned to Perl, Java, and C. If I want the complexity of objects, I want the structure of Java. I may, someday, migrate from Perl, as I’m still struggling with the syntax for references, and at some point you just try another language.
In any case, it’s a good time to be a programmer. A hash table used to be an annoying, scary construct, hand coded, now it’s something you simply new up, insert to, and go to town. Sweet.
I really wasn’t judging the language. If I were writing the same program in C++ I would have come up with pretty much the same algorithm and probably code pretty close to what Vince Huston had. The point is that having experience in higher level languages or different programming paradigms can improve your skills even if you’re coding in a lower level language because it gives you new tools for thinking about the problem. The obvious algorithm to a C++ programmer involved a bunch of nested loops while the obvious algorithm for someone with scripting experience involves a hashtable and the obvious solution for a Haskell programmer involves reusable higher order functions.
Anyone reading this post and seeing anything controversial I think is reading too much into it. It pretty much boils down to “having a broad understanding of programming is good.”
I have nothing against C++ or Java programmers or anyone else unless they have the mindset of “well, I know $LANGUAGE and I can get work done in it so there’s no point in me learning any other language that might make my head hurt.” A Lisp programmer who thinks they would have nothing to learn from studying assembly programming I would consider equally foolish.
brian bulkowski - 2007-10-31 12:08:19
Certainly an interesting post, but, in my experience, your statement about scripting vs non-scripting languages is faulty.
At the company where I started programming, hash tables were the constant metaphor. We built routers. Small, home routers for AppleTalk and IP. AppleTalk requires the knowledge of all nets by all routers (non-scalable, and not widely used now), so the answer to any question was a hash table. You’d never use a btree, you’d never use a sorted list. My favorite from that chunk of code was a three-way indexed table, which was moderately innovative coding for the time.
Today’s common availability of hash tables is less about scripting languages and more about the wide availability of excellent support classes built into languages. I credit Java for starting the mad rush to excellence, and dun C++ for retarding innovation. The STL classes are poorly designed and don’t include some of the most useful structures, while Java entered with a strong collection framework and worked hard to fix design flaws (example: early versions forced synchronization when not needed, later versions created a synchronization wrapper class). I don’t count Java as a scripting language, but perhaps you do.
Thus, I agree with your premise, although I believe you are too quick to judge “low level languages” and too slow to judge the programmer. A programmer who doesn’t follow tools improvements, and improve themselves, is a poor programmer.
My professional programming has turned to Perl, Java, and C. If I want the complexity of objects, I want the structure of Java. I may, someday, migrate from Perl, as I’m still struggling with the syntax for references, and at some point you just try another language.
In any case, it’s a good time to be a programmer. A hash table used to be an annoying, scary construct, hand coded, now it’s something you simply new up, insert to, and go to town. Sweet.
anders pearson - Wed 31 Oct 2007 14:29:23
I really wasn’t judging the language. If I were writing the same program in C++ I would have come up with pretty much the same algorithm and probably code pretty close to what Vince Huston had. The point is that having experience in higher level languages or different programming paradigms can improve your skills even if you’re coding in a lower level language because it gives you new tools for thinking about the problem. The obvious algorithm to a C++ programmer involved a bunch of nested loops while the obvious algorithm for someone with scripting experience involves a hashtable and the obvious solution for a Haskell programmer involves reusable higher order functions.
Anyone reading this post and seeing anything controversial I think is reading too much into it. It pretty much boils down to “having a broad understanding of programming is good.”
I have nothing against C++ or Java programmers or anyone else unless they have the mindset of “well, I know $LANGUAGE and I can get work done in it so there’s no point in me learning any other language that might make my head hurt.” A Lisp programmer who thinks they would have nothing to learn from studying assembly programming I would consider equally foolish.
I still have plenty to learn, myself.