My Programming Language Ecosystem Wants

In my previous article I answered part of the question of what makes a programming language convenient for me by focusing on syntactic and semantic language features. In this article I am going to provide the other half of the answer that deals with the ecosystem of a language. A language’s ecosystem consists of every language related aspect that is neither syntactic nor semantic, e.g. the language implementation, the libraries, the culture, the community, the tools and so on. Without a doubt, these aspects are in general much more important for solving particular tasks than a language’s syntactic or semantic merits. The following list thus enumerates those aspects that I want to find in the ecosystem of a language to call it convenient.

  • Good name1
  • Good image/marketing
  • Great Community2
  • Easy installation
  • Good documentation3
  • Good package manager and build tool4
  • Many good libraries/frameworks
  • Good Tooling
  • Interoperability
  • Scripting capability
  • Compilation to Javascript and native code
  • With regards to the implementation
    • Great standard library
    • Great performance5
    • Fast compilation6
    • Garbage collection
    • Manual/semi-automatic memory management7
    • Context-free grammar8
    • Static type system9
    • Parallelism
    • Good error messages10

Many mainstream languages fulfill most of the above criteria which should come as no surprise since a lot of these aspects are simply a natural consequence of having a lot of users over a long time. Yet other features are not, or mostly not, dependant on the number of users but on careful language design and right decisions.

With this article I conclude my answer to the question of programming language convenience for now. The next interesting question is then which concrete languages I find convenient. That will be answered in another article.

The following are further relevant links I found after having published this article.

  1. The most important thing in the programming language is the name. A language will not succeed without a good name. I have recently invented a very good name and now I am looking for a suitable language.

    D. E. Knuth 

  2. Ideally: many (commercial) users, a rational and helpful culture, many enthusiasts but also begrudgers, “stars” and a grumpy dictator. 

  3. In particular there should be many answers on Stackoverflow for the language. 

  4. With support for sandboxed environments. 

  5. Especially for idiomatic code and not only for “C written in language X”. 

  6. This implies a module system and separate compilation. 

  7. With help from the type system if possible. 

  8. “Toolability” 

  9. Benefits include: better toolability (refactoring, completion…), machine-checked documentation, program design aid, performance, better error messages… 

  10. This is a major advantage of mature statically typed languages over mature dynamically typed languages. 

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