Friday, January 05, 2007

Visual Esperanto

Among my recurring New Year's Resolutions is to learn another programming language. Actually, I consider this much more often than annually; this is not only a recurring resolution, it is a chronic interest. Like a surfer searching for theperfect wave. The problem remains, which one? The answer probably is "more than one". If there were a "Visual Esperanto" programming language, it would probably be as popular as Esperanto.

In an article in the American Scientist last summer, The Semicolon Wars by Brian Hayes, the author notes that collectors estimate the number of programming languages between 2,500 and 8,500! Diarmuid Pigott, the curator of the Encyclopedia of Computer Languages (the one with over 8,500), lists his favorites--about 70 of them! Among those I've known (at least a little), Algol 68, APL, and REXX are included; Fortran, BASIC, VBA, php are not, nor are Java, JavaScript, or XSLT. I suppose he has his reasons.

Of course, I am not choosing a first language; to the ones I mentioned above, I should add SQL, Lotus123 and Lotus Symphony macros, Express and Acumen (mainframe proto-olap languages), CML (a simulation language written by a PhD student), and a matrix generation and report writing language for linear programming. Of them all, I most enjoyed APL. Much as "the determined Real Programmer can write Fortran programs in any language"(see link below), I am inspired by the APL-style in whichever language I use.

It's best, actually, to learn all five of Python, C/C++, Java, Perl, and LISP. Besides being the most important hacking languages, they represent very different approaches to programming, and each will educate you in valuable ways.

Overall, they mostly agree. Perl; c; C++, Java/C# (said to be Microsoft's Java for .net); Python. VB.Net is Microsoft platform specific (as is C#, isn't it? Yet the table on Wikipedia says it it "multi-platform".) so there are some jobs but not open source community interest. I'll drop Ruby and Rails, or save it for next year or the year after, when we can judge whether they have staying power or not. So that slightly shortens my list of candidates, but it is still pretty long, and I think XSLT should be added.

To shorten the list, I now turn to the programming style or paradigm aspect of the languages. My past favorite is APL, which is a functional language. If I make "functional" a requirement, that eliminates c, C++, Java (and C# and VB, which were already eliminated), plus php (which I do already know and use somewhat anyway).

Lisp (Common Lisp) is tempting because of its long history in artificial intelligence and similar endeavors, but I suspect it would have limited commercial acceptance. Now the list is: JavaScript (or ECMAScript in its official specification), Python and Perl. Plus XSLT. Perl and Python seem to have similar uses and performances (and they both clearly outperform JavaScript): I'll toss a coin and probably pick Perl, and continue with XSLT and ECMAScript in parallel.P.S. Personally, I've already "learned" Java several times. I just don't like to use it; I'll learn it again when I have a use for it, if that ever is the case.

P.P.S. "J", the new improved "APL", looks pretty interesting,too, so I may reconsider, ignoring the above-cited "advice".

powered by performancing firefox, except that it failed to post to blogger due to blogger detecting a < within an href, no cases of which can I find in the html.

About Me

Why uwwoonp.?

In response to criticism for ending a sentence with a preposition (the part of speech), Winston Churchill replied "This is the sort of pedantry up with which I cannot put." I think there are plenty of things Up With Which One Ought Not Put, and maybe pointing some of them out will help (or at least make me feel better).