Cloud Native Programming Languages


Some time ago, most programming was pretty simple: a program was compiled and run on a single computer, at most interacting with others through the network. A lot of today’s programming languages stem from those days. With the advent of the cloud it became possible to run software in many ways and automatically. In the platform-as-a-service (PaaS) model, a finished program is handed to the cloud operator and executed automatically. But this is done with the same old programming model of yesteryear.

The idea for this post is for a language which is native to the cloud, which does cloud computing first and foremost and only runs on your laptop as an auxiliary mode. To make this work, the pieces of code such as functions and variables would live in the cloud. Instead of defining a runtime to keep code isolated, the language would allow programmers to specify the boundaries between code parts, users and the host system as part of the language.

One way to make this work is through unique identifiers of sufficient bit-length. When defining objects in the cloud, a random identifier is generated automatically and used to refer to this thing from there on. This is similar to how virtual machines in web3 blockchains work, where contracts have an address.

So what are the benefits of creating such a language system? One is to make cloud functions more lightweight and hence faster. Some PaaS applications are fairly slow to start up, because an entire runtime needs to be loaded into memory. Another benefit is to make development easier and more flexible. Instead of building new containers all the time, functionality would be submitted to the cloud as new procedures by and by. The entire system in the dev or stage environment could be trialed instantly.

There are clearly disadvantages to such a scheme. This system will require a fine-grained security model to be built-in with the language, and even this would not mitigate all the risk. And in order to bill customers for use, fine-grained metering of use will have to be supported by the language system.

So far this idea is best realized as an open-source language project. But there is a way to make a startup idea from it, by using the open core approach. The basic software to make this work would be released for free, but power features can be sold as a commercial package.