04 Apr 2020

Some might say that the last thing the world needs is another programming language. There are literally thousands of them. To non-programmers they are all equally abstruse. Programmers on the other hand often feel very strongly about which is better or worse. Clearly they can’t all be right.

It’s hard to believe but virtually all programming languages were created in an effort to make programming easier for people. Remember that programming languages only exist for the benefit of humans - computers would get by just fine without them. So the evolution of programming languages has proceeded in a series of mostly small steps such as “lets use square brackets instead of round ones.” This is the reason why all programming languages are fundamentally so alike.

Zoea came about as a way to make programming accessible to many more people. It is blatantly obvious that the main thing that makes computer programming difficult is programming languages. No amount of sugar coating is ever going to change that. So if we were going to make programming significantly easier we would have to dramatically change our model of what a programming language is and how it works.

Virtually everyone these days is comfortable using software. People have simple mental models of how software works in terms of inputs and outputs. These simple black box models may extend to conditional logic and scenarios. Similar scenarios are widely used in software specifications and testing.

The idea of describing software using inputs and outputs has been around for a long time but until recently this has only been practical for very small programs. Zoea makes this approach feasible for programs of any size.

If Zoea had a single guiding design principle it would be minimalism. Zoea is focussed on data and transformations rather than being concerned with the imperative mechanics of how things should happen. The result is a programming language that is completely different from anything else and also much simpler.