It is possible and sometimes entertaining to analogize these most basic of programming tools by viewing them as personal weapons. In chronological order of experience, I have the following subjective opinion:
- Fortran == bow and arrow. An ancient weapon, I learned how to use it over 40 years ago. Yet, in its modern form, seems a perfectly usable weapon for certain specialized applications. And still fun to use.
- Assembly language == toothpick. Hard to use and I never quite believed I could actually kill anything substantial with it.
- Applesoft Basic and Turbo Pascal == decided these weren't actually weapons. More like a cocktail fork and a butter knife.
- C == Battle sword. Found out I could kill anything with it. But required considerable courage and expertise for large jobs. And oh, I often cut myself with the "pointy" end (pointers!). (My fellow programming warriors used to accidentally stab me with their weapons' pointy ends too, no matter how careful they tried to be.)
- C++ == Klingon Bat'leth. Looked like a very formidable weapon and knowledge about it was a formal requirement for the honor of being known as a true programming warrior. But somehow, I never did figure out how to use the thing exactly right. I couldn't ever kill any problem much better than just using C. At first, I tried to wield it like a battle sword. Then I tried to adopt various styles, but never really felt graceful. Now I mostly wield it like a battle sword again. Screw it. The problems get killed.
- Java == Catapult. Seemed like an "infernal contraption" and took a team to use it right. Most practical only for certain types of big jobs.
- PHP == Hammer. Nothing fancy, but a handy little tool for building sites.
- Python == Starwars light-saber. Currently my favorite. For an old programming Jedi like me, I feel like I can elegantly kill any problem with this tool.