Make easy things easy and hard things possible

Make easy things easy and hard things possible was the motto of Perl from the beginning and indeed it made a lot of things much easer back when it was released in 1987. Even in the 90's it had it. That's one of the reasons it was so successful. Since then things changed and a lot of things that were hard back then are now expected to be easy.

IMHO, if someone wants an old language to stay relevant or a new language to succeed, among these general purpose languages s/he needs to make sure things that are expected to be easy are going to be easy. Always.

So what are things that are expected to be easy today that were only possible 20 years ago or that did not even exist back then?

  • For example processing JSON, YAML, CSV, XML, or Config (INI) files.
  • Handling zip, gzip, bz2 and similar compressed files.
  • Working with dates
  • Accessing databases.
  • Serving web pages.

Internally to the language: logging, throwing and handling errors, OOP, method signatures, and even opening files(!) is now expected to be easier than it was 20 years ago.

If a language does not provide these features "out of the box", then people who are new to this language need to do the following:

  1. Learn about the extension mechanism of the language (e.g. CPAN, PyPi, Ruby Gems, PEAR, Perl 6 modules)
  2. Find the right module among the competing modules. (e.g. which JSON module to use?)
  3. Learn how to install it or ask the sysadmins to install it.
  4. Ask permission to install it from the legal department or just get over the fear of "open source".
  5. Handle dependencies possibly on external packages.
  6. Make sure the module is available on all the system where the code is supposed to run or find a way to package it.

And then they can start doing whatever they actually need to be doing.

Of course a seasoned programmer in the specific language working at a start-up, who also happens to be a sysadmin does not need to deal with these things, but someone who is just starting out with one of these "dynamic scripting" languages will either suffer through all those phases or will go with the other language where the tools s/he needs come with the standard installation of the language.