Artificial Intelligence (AI) is probably the hottest IT topic nowadays. A large number of enterprises are already leveraging some form of AI in their products and services, while others are planning to do so in the short or medium term. In simple words, AI is defined as computing systems with the ability to do things similar to humans. This definition is very broad and covers a rich set of intelligent applications ranging from machine learning programs, expert systems and chatbots, to robotics, drones and automated guided vehicles. These different types of applications are usually developed based on a variety of tools, such as programming environments, big data processing infrastructures, natural language processing platforms, robotics frameworks and chatbot development platforms. Due to the surge of interest in AI, the landscape of tools is rich and quite complex. Indeed, there are many hundreds of AI related tools that serve the needs of the above-listed applications. While it’s quite difficult to keep track of every individual tool, but it’s certainly useful to understand the various types of toolkits along with representative tools in each type.
Programming Languages for AI
Software is an integral component of most AI systems. Programming languages for AI present clear benefits for producing AI software. Some prominent examples include:
- Python, one of the most popular and fastest growing languages nowadays, which is very commonly used in AI applications. Its popularity stems from its simplicity and lower learning curve when compared to other languages. Moreover, AI developers appreciate Python’s features for manipulating large datasets and implementing machine learning tasks. The latter are supported by a rich set of libraries that facilitate the development of data-intensive applications, including applications that involve sophisticated scientific computations.
- R, which is also very effective for implementing data intensive tasks, such as the implementation of machine learning agents. It’s a very good choice for statistical processing and comes with a rich set of machine learning libraries. These are the reasons why it’s widely used in the development of AI systems.
- Java, a general-purpose programming language, which provides compelling advantages for AI development as well. In particular, AI developers benefit from its ease of use and ease of debugging, as well as for its support for neural networks and genetic programming. It integrates many libraries for machine learning and deep learning. Moreover, it offers very good performance and comes with support by a strong community.
- Lisp, a rather “old” language that is extremely powerful in processing symbolic information. Once upon a time is was considered the “AI programming language” as it provides versatility in implementing and evaluating logical functions. Nevertheless, over the years, such features have been added in other languages, which reduced its popularity among AI communities.
- Prolog, another legacy language that has been widely used for implementing expert systems and other knowledge intensive projects. It provided strong human-like reasoning functionalities such as complex pattern matching and automatic backtracking. However, over the years, some of its functionalities have been subsumed by other programming languages.
Machine Learning (ML) and Deep Learning (DL)
The majority of AI applications include some machine learning component. In several cases, AI applications incorporate machine learning techniques based on neural networks with many hidden layers, which are commonly known as deep learning techniques. Therefore, some of the most prominent tools for AI include libraries for machine learning and deep learning, which are used in conjunction with the programming languages outlined above. For instance, scikit-learn is a popular free-to-use machine learning module, which is very effective for data mining and data analytics. It comes as a Python add-on based on SciPy. Scikit-learn users can select and evaluate different machine learning models, while also performing data preprocessing tasks. As another example, TensorFlow is an open source framework for building deep learning applications. It is nowadays considered one of the most popular and advanced toolkits for AI applications. Beyond Scikit-learn and TensorFlow there are numerous other packages for ML and DL tasks that fit different applications needs and work along with different programming platforms. These include libraries for video processing (e.g., OpenCV) and speech processing, which are among the most well-known AI tasks.
Machine Learning as a Service (MLaaS)
MLaaS services are offered by cloud providers in order to facilitate ML and DL development. Their value proposition is that they enable their users to start with ML or DL without a need to deploy computing infrastructure and to install ML libraries. For example, Google offers the “Cloud Machine Learning Engine”, a cloud-based platform for predictive analytics. The cloud services of the platform integrate with various popular Google services such as Google Photos and Google Cloud Speech. Likewise, Amazon offers an MLaaS service called “Amazon Machine Learning”. It provides the means for loading data from multiple sources and performing data preprocessing operations on them. Moreover, it supports automation of complex data processing pipelines. Beyond Google and Amazon, most giant IT vendors and cloud providers (e.g., Microsoft, IBM, Apple) offer similar services.
Bots and Chatbots Platforms
Bots are also among the trending AI applications. The development, deployment and operation of bots is based on special purpose platforms and tools. For instance, Meya is a bot platform that is used to create interactive personalized AI agents, which are integrated with messaging platforms in order to improve customer experience. It is primarily used in customer service applications. As another example, Chatfuel is a chatbots development platform, which enables the development of bots for Facebook Messenger. It supports the development of chatbots that gather information using forms, interact with the users through buttons and chat modalities, while at the same time boosting the development of scripted conversations. Chatfuel is a pretty advanced tool, as it allows people without programming knowledge to develop fancy chatbot applications. There are also other chatbot platforms that support conversations in other publishing platforms (beyond Facebook’s Messenger) such as Slack, Telegram and WeChat.
Robotics Development Platforms
Robots are considered among the most prominent AI applications. Robots’ development tasks make use of frameworks and tools that enable developers to focus on programming the mission of the robot without dealing with the low-level details of the robotics hardware. In particular, they provide features like hardware abstraction, low-level device control and process-based message passing. ROS (Robotics Operating System) is probably the most widely used robotics development framework. ROS provides hardware abstraction allowing developers to work with many different robotics hardware.
Application Specific AI Tools
Most of the above listed AI tools are general purpose and can be used to develop applications in different vertical areas. However, there are also AI tools that are focused on specific vertical applications. As an example, “Salesforce Einstein” is an AI application focused on sales data processing. It integrates various AI tools that ingest and processes information as a means of delivering accurate sales projections and of providing intelligent recommendations to salesmen. It offers a wide range of automation features, which can be used by people that do not possess advanced machine learning and data mining knowledge. While general purpose AI tools are the basic pillars of the AI tooling ecosystem, application specific AI tools deliver added value to vertical communities. In the near future we therefore expect to see more application specific AI tools.
In an era where AI is the most trending IT topic, hundreds of AI toolkits have emerged. Earlier paragraphs have attempted to categorize them according to their functionalities and positioning of use in the AI applications development lifecycle. This provides a good guide for anyone looking to start with specific AI tasks for his/her application, like to develop a robot or a chatbot. We would however love to hear your feedback in case you could propose other types of AI tools.