Languages that are easy to pick back up

Some programming languages are much easier to come back to than others. In my previous post I mentioned that Mathematica is easy to come back to, put Perl is not.

I found it easy to come back LaTeX after not using it for a while. It has a few quirks, but it’s basically consistent. The LaTeX commands for Greek letters are their names, lower case names for lower case letters, upper case names for upper case letters. The command for a mathematical symbol is usually the name a mathematician would give the symbol. Modes always begin with begin and end with end.

Python also has a consistent syntax that make it easier to come back to the language after a break. Someone has said that Python is similar to Perl, except that the word “except” does not appear nearly so often in the Python documentation.

It’s more important that a language be internally consistent than conventional. Each of the languages I mentioned have their peculiarities. Mathematica uses square brackets for function argument arguments. LaTeX uses percent signs for comments. Python uses indention to denote blocks. Each of these take a little getting used to, but each makes sense in its own context.

A special case of consistency is using full names for keywords. Mathematica always spells out words in full. For example, the gamma distribution object is named GammaDistribution. I don’t mind a little extra typing. I’d rather optimize for recall and readability than minimize keystrokes since I spend more time recalling and reading than typing. (One flaw in LaTeX is that it occasionally uses unnecessary abbreviations. For example, \infty for infinity. The corresponding Mathematica keyword is Infinity.)

7 thoughts on “Languages that are easy to pick back up

  1. Dunno about Mathematica — never had a license — but I’ve heard English is hard to learn. Full of exceptions, especially in spelling / pronunciation. But it is common. Reminds me of Larry Wall’s remark about Perl being written in C — not because C is a good language, but because it is ubiquitous.

    Python sounds good but I don’t know if I could get used to working in a language where the amount of contiguous whitespace is meaningful and variations in it are part of the language. IIRC even Perl closed a loophole allowing the space character to be used as a text delimiter, much to the dismay of Perl poets, in the interests of more legible code. Which for Perl is unusual.

  2. I used to think differently about the analogy between programming languages and human languages. I agreed with Larry Wall’s Natural language principles in Perl that languages need to be easy to use rather than easy to learn. Learn once and use forever.

    That line of reasoning holds for someone who uses only one programming language and uses it continually for years. But if programming is only part of your job or if you have to use multiple languages, it matters how hard it is to (re)learn a language.

  3. I feel that languages that are easy to pick back up are those that are easy to pick up the first time. I wanted to offer a reply to John Venier regarding English. As a non-native speaker, I found English way easier both to learn and to remember than German with respect to grammar, and much harder with respect to phonetics. Same with English versus Russian. So, my experience with natural languages is consistent with my experience with programming languages. Latex/C/Python/R/Matlab: easy to learn and remember. C++: hard to learn, remember, use. One feature that makes C++ hard is its sprawling, vast syntax and the many programming styles. Had it strictly enforced template programming, it would have been much easier.

  4. Of course, LaTeX’s sometimes bizarre abbreviations can be easily solved by including a custom package containing a bunch of lines like

    definfinity{infty}

    and so forth. Almost all mathematicians that I know do something like this. I agree with your general sentiments though – good post.

Leave a Reply

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

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>