Choice of supported programming languages


#1

I’m wondering what went into the decision-making to support only Python and Javascript as programming languages for defining methods (as opposed to adding in Java / C++ support). Much of the Type System (inheritance, mix-ins, attributes) feels more like the Scala type system. A couple of thoughts that come to mind:

  1. These are common languages that have a wide user base already.
  2. These are both single threaded, interpreted languages, so it is easier to ensure that they don’t cause unexpected problems during execution.

#2

The main reason is that supporting any single language takes time that we could otherwise spend supporting more databases, cloud services, etc. Since the same javascript code can run server AND client side, it is the main language we support. Supporting a single Turing Complete language is sufficient. The only reason we really support python is because of the large number of useful libraries that are available for machine learning. In addition to this, minor reasons include:

  1. java and c++ are compiled languages. which makes it a bit hard (also, c++ doesn’t run very well on the JVM)

  2. Also note that the server does not go down during provisioning, so if you had methods written in java, provisioning would have to add them to the system without bringing it down. There are technologies that allow this but tbh they don’t work so well.

  3. Javascript is the single most popular programming language (https://www.businessinsider.com/the-10-most-popular-programming-languages-according-to-github-2018-10#3-python-8) and is popular for both server and client side programming.

  4. Javascript on the JVM IS single threaded.

  5. There are plans to support java as a language, but we’ve tried it several times as technologies come and go and nothing has really worked well enough yet.