10 thoughts on “No Silver Bullet”

That’s slide number 3 (And a reference to an article Fredrick Brooks wrote many years ago.) Giving credit, the graph of processor vs. memory speeds came from the Sony Data Driven Design article I linked to.

Looks good, with one major omission. Metaprogramming and Lisp – one of the major insights I got using Lisp in school. The metaprogramming language of Lisp is Lisp. Enough so the you can readily create domain-specific languages within Lisp. One of the main failings of C++ templates is that they are yet-another programming language, within C++, with limited inflexible semantics.

Or to put this differently, they re-implemented an aspect of Lisp programming, poorly.

One point on the slides confuses me, though: C, C++, Lisp, Java, Python and Ruby are listed as “stack based” languages, while the slide titled “C# Note” seems to argue that C# is not stack-based. But, I can’t think of any reasonable definition of the “stack based” category such that Java falls into it but C# does not.

There are a number of other things on the slides that I could nitpick, but that one jumped out at me the most.

What about graphical programming languages? I have had arguments with people who think that tools like simulink and UML are silver bullets because you graphically draw the if statements and it makes the code easier to read. I do think these tools have their place but definitely not a silver bullet.

I agree that it is hard to define everything in UML so the code can be auto generated. The diagrams get complex fast. But there are still people and at least one company who believe in this approach, it is not dead yet as an idea. I don’t personally like it and so far I don’t have to.