KOA Language Project


Introduction

The great diversity of computer languages ​​is, in my opinion, one of the major riches of computer science since it offers people different tools and different ways of reasoning to achieve the same objective: to communicate with the computer. Everyone could choose the type (object-oriented ones, procedural-oriented ones, functional-oriented ones, etc.) and the level (from low-level ones like C to high-level ones like Swift) of a language to fit the best to his project. I always wanted to apport my vision of programming and develop a new language; hopefully, French lockdowns gave me the free time needed to get involved in this project, so I started to develop my own language: KOA. My Assembly language skills are not currently sufficient to create a compiled language, so I decided to use C++ to code a first interpreted version of this language.


Realization

My main objective was to create a language that will give access to programming to a new kind of population, considering it more like basic users than experimented programmers. I thought about a system of keywords to try to synthesize a kind of conversation the user could have with the machine, like var to declare a variable or set to change its value. The user could also create his own keywords with a specified keyword dedicated to this. It would almost look like the definition of a function in other languages, but more like the definition of a "rule" associated with a precise keyword.

I also thought about directly define the type of a variable in its name with a prefix. It could help users to easily find the type of a variable, and as I considered this language like a "conversation" with the computer, it seemed logical to do not separate the variable and its type, as you do not separate a noun and its pronoun or its determiner.


KOA code example

Why KOA? This name comes from the Acacia Koa tree, used by ancient Hawaiians to build outriggers canoes to sail on the Pacific Ocean. It was like a tool that people could use to discover new things and to explore new horizons, and so an incredible means of communication that help to found civilization. And that is exactly how I wanted KOA to be: a tool that everybody could use to communicate his ideas, to get started, and to create new things. As increasingly smart UI are now offered rather than lines of code in a terminal, I think that a part of the new generation of developer community may appreciate smart and spurred computing languages.

As I work on this personal project alone and in my free time, I currently have only implemented basic operators on simple types: the language is currently capable of performing basic operations (+, -, * and /) between integers or floats, concatenating strings, and print values of variables of primordial types in a terminal. I will improve KOA's functionalities in my free time, especially in the way I would like to implement the creation of functions with keywords. It may take a while before I could add more things, but I really want to finalize it, at least to create an operational basic language.