I mentioned in my blog before (I think) my metaphor for Perl, Java, and C++: C++ is steel, good for structures on which you can build things, and system tools that have engineering-sounding things like tolerances; Java is glass, a fragile material for making clean, pretty systems that tend to be mere trinkets; Perl is duct tape, a relatively ugly thing for gluing things together quickly and simply.
Here's my recently adapted version, focusing more on the idea of how one programs in those languages, and including Python:
- C++ is metalworking, with structures and things built of metal. Still connoted with engineering. Easy to sever one's limbs or smaller bits on rough edges. C++ advocates are construction workers with actual tasks to perform.
- Java is glassworking. It's slow and difficult, and it's easy to burn yourself, but if you do it right, you get lovely results. Java advocates don't fit the analogy, since J Random Javaprog'r is somebody who read Enterprise JavaBeans in 21 Dummies because it looks good on a resume; they would otherwise use Visual Basic.
- Perl is woodworking. Produces small one-shot throwaways (ie, whittling), or sturdy utilitarian items (shelves, cabinets, and tables). Perl advocates are craftspeople, with lots of tools and experience at their disposal.
- Python is clay sculpture. It has simple, flexible physics. Advocates are typically artists, producing lovely code that others can admire.