Hammer Principle

I’ve sometimes been asked “why use language X when you already have language Y”, and I’m bad at answering these things on the spot because I don’t generally think about it in a “pros/cons” sense. The differences are sometimes subtle and numerous, not few and obvious.

In any case, it seems someone has already crowd-sourced this problem for *everything*, not just programming. In googling about Mathematica vs. other languages, I came across HammerPrinciple.com, where things are compared side by side in multiple dimensions. I’m almost incredulous over the amount of data.

C++

Based on 108674 responses from 8978 people, this is the picture we’ve built up of C++.

Ranked high for

  • This language is large
  • I use many applications written in this language
  • This language makes it easy to shoot yourself in the foot

Ranked low for

  • This language is good for beginners
  • This language is minimal
  • This language would be good for teaching children to write software

Most similar to

  • C
  • Java
  • Fortran

Most dissimilar from

  • Lua
  • Smalltalk
  • Scheme
That’s just a taste. All the data is hyperlinked, and there are language comparisons too. For example, when I’m sometimes asked to compare Perl to Python, I might respond with a sampling of data:

Perl — Python
THIS LANGUAGE MAKES IT EASY TO SHOOT YOURSELF IN THE FOOT
89% — 11%
187 out of 209 picked Perl over Python
THIS LANGUAGE EXCELS AT TEXT PROCESSING
77% — 23%
237 out of 306 picked Perl over Python
THIS LANGUAGE HAS A NICHE OUTSIDE OF WHICH I WOULD NOT USE IT
76% — 24%
206 out of 268 picked Perl over Python
I FIND THIS LANGUAGE EASY TO PROTOTYPE IN
27% — 73%
220 out of 302 picked Python over Perl
IT IS EASY TO DEBUG PROGRAMS WRITTEN IN THIS LANGUAGE WHEN IT GOES WRONG
26% — 74%
196 out of 268 picked Python over Perl

These are the sorts of things my colleagues might be interested in hearing when weighting the benefits of choosing one tool over another.

 

 

Leave a comment

Your email address will not be published. Required fields are marked *