My Programming Language Ecosystem Wants

In my pre­vi­ous ar­ti­cle I an­swered part of the ques­tion of what makes a pro­gram­ming lan­guage con­ve­nient for me by fo­cus­ing on syn­tac­tic and se­man­tic lan­guage fea­tures. In this ar­ti­cle I am going to pro­vide the other half of the an­swer that deals with the ecosys­tem of a lan­guage. A lan­guage’s ecosys­tem con­sists of every lan­guage re­lated as­pect that is nei­ther syn­tac­tic nor se­man­tic, e.g. the lan­guage im­ple­men­ta­tion, the li­braries, the cul­ture, the com­mu­nity, the tools and so on. With­out a doubt, these as­pects are in gen­eral much more im­por­tant for solv­ing par­tic­u­lar tasks than a lan­guage’s syn­tac­tic or se­man­tic mer­its. The fol­low­ing list thus enu­mer­ates those as­pects that I want to find in the ecosys­tem of a lan­guage to call it con­ve­nient.

  • Good name1
  • Good image/mar­ket­ing
  • Great Com­mu­nity2
  • Easy in­stal­la­tion
  • Good doc­u­men­ta­tion3
  • Good pack­age man­ager and build tool4
  • Many good li­braries/frame­works
  • Good Tool­ing
  • In­ter­op­er­abil­ity
  • Script­ing ca­pa­bil­ity
  • Com­pi­la­tion to Javascript and na­tive code
  • With re­gards to the im­ple­men­ta­tion
    • Great stan­dard li­brary
    • Great per­for­mance5
    • Fast com­pi­la­tion6
    • Garbage col­lec­tion
    • Man­ual/semi-au­to­matic mem­ory man­age­ment7
    • Con­text-free gram­mar8
    • Sta­tic type sys­tem9
    • Par­al­lelism
    • Good error mes­sages10

Many main­stream lan­guages ful­fill most of the above cri­te­ria which should come as no sur­prise since a lot of these as­pects are sim­ply a nat­ural con­se­quence of hav­ing a lot of users over a long time. Yet other fea­tures are not, or mostly not, de­pen­dant on the num­ber of users but on care­ful lan­guage de­sign and right de­ci­sions.

With this ar­ti­cle I con­clude my an­swer to the ques­tion of pro­gram­ming lan­guage con­ve­nience for now. The next in­ter­est­ing ques­tion is then which con­crete lan­guages I find con­ve­nient. That will be an­swered in an­other ar­ti­cle.

The fol­low­ing are fur­ther rel­e­vant links I found after hav­ing pub­lished this ar­ti­cle.

  1. The most im­por­tant thing in the pro­gram­ming lan­guage is the name. A lan­guage will not suc­ceed with­out a good name. I have re­cently in­vented a very good name and now I am look­ing for a suit­able lan­guage.

    D. E. Knuth 

  2. Ide­ally: many (com­mer­cial) users, a ra­tio­nal and help­ful cul­ture, many en­thu­si­asts but also be­grudgers, “stars” and a grumpy dic­ta­tor. 

  3. In par­tic­u­lar there should be many an­swers on Stack­over­flow for the lan­guage. 

  4. With sup­port for sand­boxed en­vi­ron­ments. 

  5. Es­pe­cially for id­iomatic code and not only for “C writ­ten in lan­guage X”. 

  6. This im­plies a mod­ule sys­tem and sep­a­rate com­pi­la­tion. 

  7. With help from the type sys­tem if pos­si­ble. 

  8. “Toola­bil­ity” 

  9. Ben­e­fits in­clude: bet­ter toola­bil­ity (refac­tor­ing, com­ple­tion…), ma­chine-checked doc­u­men­ta­tion, pro­gram de­sign aid, per­for­mance, bet­ter error mes­sages… 

  10. This is a major ad­van­tage of ma­ture sta­t­i­cally typed lan­guages over ma­ture dy­nam­i­cally typed lan­guages. 

Published: 11.04.2014 Last modified: 07.01.2015
Comment? Mail or tweet me.