Obvious question, non-obvious answer
Like any question on a topic as hot as AI, this one has already triggered answers, corrections, comments, and new questions on the Web. Some developers claim it is Python. Others claim it is a new language just a few heard about (for example, Julia) or an old language that was forgotten (for example, Lisp). And yet others assert there is no one best-fit and that every language can do the job. The goal of this paper is to provide facts to answer this question.
Programming languages across the layers
An AI application is like any other application. It has the following modern layered-architecture: a front-end, a web server, an application logic, one or multiple databases/data streams, and an core system accompanied by networking and security protocols. This architecture applies to AI applications as well — whether the latter are for choosing the best places to advertise, finding the best locations for stores, or optimizing a supply-chain:
- Server-side layer: The situation is much clearer when it comes to the web server-side. It is the realm of PHP and ASP.NET with around 78% and 11% of websites followed by Java with 3% of websites (source: W3Techs surveys).
- Application logic layer: When we descend down the technology stack below the front and web server layers to the application logic layer, the situation is also straightforward: Java and .NET for enterprise business applications, C/C++ for high-performance technical applications, and Python to add machine learning capabilities. With the resurrection of symbolic AI, new probabilistic programming languages are built on top of traditional languages and libraries. The most advanced include Figaro (a super-set of Scala), and Pyro and Edward (both super-sets of Python). These new languages allow the development of many real cases where the quantity and quality of data are insufficient.
- Data layer: When we go even further down to the data layer, it is the world of data management ruled by SQL, big data ruled by MapReduce frameworks, and statistics ruled by R.
- Core system layer: At the lowest layer, reign the performance languages C and C++. If the situation has to change, a new entrant could be Google’s Go that the company has developed as a replacement to C++ and Java in its high-scale servers.
Why so many languages?
To a wannabe developer or non-technical person, the software development ecosystem would seem complex. He or she would likely ask “why so many programming languages?”. There are two reasons that explain the apparent complexity in using a programming language.
Although based on previous research, consulting, and implementation work, the views, thoughts, and opinions expressed in this article belong solely to the author, and not to the author’s current or previous clients or employers. The author welcomes comments, please post them here or on LinkedIn.
About the author
Hassan Lâasri is a consultant in digital, data, and AI technologies for business transformation. You can reach him at linkedin.com/in/hassanlaasri