paperlined.org
dev > programming_languages
document updated 16 years ago, on Feb 23, 2008
NOTE: This is not meant to be a comprehensive overview of each language.   It's only meant to
hilight points that I think are most noteworthy.  There are *certainly* points I've completely
missed, or have misjudged their importance. If you're looking to start a language war, look
elsewhere.



=== Perl [many years of experience] ===

+ CPAN      http://en.wikipedia.org/wiki/CPAN#The_CPAN.27s_Influence

- unnecessarily complex syntax for dereferencing  (said to be fixed in Perl6, if it ever comes out)
    (not a major downside, but it *is* a statistically significant stumbling block when teaching the
    language to new people)

- multi-threading has long been "will be available Real Soon now"



=== Javascript [a few months of experience] ===

+ JS-the-language is more robust than people give it credit for...  something
  like 1/3rd of the code in Mozilla is Javascript, rather than C.
        (comparing the gziped .exe size to the gziped .js size)

- JS-the-API is why people wince when they think of Javascript...  the APIs
  provided by Firefox/MSIE/Opera differ in both subtle and large ways, making it
  a pain to try to code cross-browser apps (though the situation is improving as
  time goes on, and things like Google Maps demonstrate what you can do when you
  try to push the limits (and have large development resources))



=== Lua [several days of experience] ===

+ A rather simplified grammar.  While it's a downside in that it provides
  almost no syntactic sugar, it's a refreshing counterpoint to Perl's golf
  contests.  (and, given that Lua's primary goal is to have as small of a
  footprint as possible, it's an entirely appropriate design decision)

+ I've only briefly browsed through the C-API-exposure side of things, but it
  really does look like it's an excellent way to add scripting onto any C
  program.

+ Used in LOTS of performance-conscious games.

+ Though aiming for a small footprint, it still considers regexps valuable
  enough to include in the standard library.



=== C# [several weeks of experience] ===

+ It's Perl/Python/Ruby, with static typing, and some of the lower-level
  nitpicky mentality of C, which is appropriate for shrinkwrap code (eg. when
  footprint and performance matter)
        (though this nitpicky mentality doesn't lend itself to the kind of
        programs I usually write)

+ The system library is somewhat cleaner... it isn't bogged down with some of
  the baggage that Java has accumulated (though I'm sure it will accumulate a
  similar amount as the years pass)



=== AutoHotkey [a few months of experience] ===

- Suffers greatly from baggage from its early history.  There are TWO DIFFERENT
  forms of several very basic language features, that actually act differently
  (they're not syntactic sugar either, quite the opposite, their existence is a
  clear detriment):

        - assignment:     "=" and ":="
        - conditionals:   "if (expression)" and "if expression"
        - interpolation:  "%varname%" and "varname"  (which one is required depends on context)

- has no true arrays or variable references; instead allows variable
  interpolation on the *left* side of assignment to allow assigning to a dynamic
  variable name

+ on the other hand, the system library is obviously outstanding enough to make
  it worth trudging through the awkward syntax for.  The GUI-event-injection
  functionality is robust enough that everyone from game-hackers to sysadmins
  rely on it.