Machine learning has been defined by Andrew Ng, a computer scientist at Stanford University, as “the science of getting computers to act without being explicitly programmed.” It was first conceived in the 1950s, but experienced limited progress until around the turn of the 21st century. Since then, machine learning has been a driving force behind a number of innovations, most notably artificial intelligence.
Machine learning can be broken down into several categories, including supervised, unsupervised, semi-supervised and reinforcement learning. While supervised learning relies on labeled input data in order to infer its relationships with output results, unsupervised learning detects patterns among unlabeled input data. Semi-supervised learning employs a combination of both methods, and reinforcement learning motivates programs to repeat or elaborate on processes with desirable outcomes while avoiding errors. (To learn about the history of programming, check out Computer Programming: From Machine Language to Artificial Intelligence.)
Several different industries are already benefiting from machine learning, and there is an increasing demand for ML products and services across the developed world. Businesses of all sorts are taking advantage of its predictive capabilities, and seek to develop prescriptive machine learning methods in order to make informed decisions. There are many different ways for companies to approach this technology, including several programming languages that stand out in the field.
Developed by the Python Foundation in the early 1990s, Python is a high-level programming language that has many different uses, including data science and back-end web development. As a powerful data analysis tool, it is widely used in big data technology, and a strong community of machine learning developers have helped elevate its status in the burgeoning field of artificial intelligence.
Due to this vibrant community, there are already many pre-built libraries for machine learning in Python. And Python is platform agnostic, meaning that it is adaptable to virtually any operating system. It is also open source, which makes it very accessible to the general public.
Python is a dynamically typed language, which can create problems in machine learning environments. For one, errors can become difficult to track as the program grows larger and more complex. This can create costly drawbacks and also slow down performance.
Also developed in the early 1990s, R is part of the GNU project. It is widely used in data analysis, and is typically applied to common machine learning tasks like regression, classification and decision tree formation. It is a very popular programming language among statisticians.
R is also open source and is widely renowned for being relatively easy to install, configure and use. It is platform agnostic and integrates well with other programming languages. Along with data analysis, R has particularly strong data visualization capability.
Despite being relatively easy to integrate with other tools, R has some unique quirks that can make it somewhat confusing to learn, like its unconventional data structures and indexing (which starts at 1 instead of 0). It also is less popular than Python and thus does not have as much documentation available for machine learning applications. (For more on these two languages, see The Debate Between R and Python.)
Among today’s most common programming languages, C++ is probably the oldest. Developed at Bell Labs in the early 1980s, C++ emerged out of doctoral research that sought to extend the C language. Enabled with both low and high-level programming ability, C++ allows for a higher level of control and efficiency than other programming languages in machine learning contexts.
C++ works especially well for resource intensive applications, which is part of what makes it great for machine learning. And as a statically typed language, it can execute tasks with relatively high speed.
However, C++ requires a great deal of complex code in order to build new applications, which can be highly time consuming and can cause a great amount of difficulty in maintenance. This can make it very easy for beginners to create errors.
Developed by Sun Microsystems in the mid-1990s, Java was originally built to be a high-level and object-oriented programming language that looks and feels similar to C++. Along with being extremely popular, Java can implement a wide variety of algorithms, which are very useful to the machine learning community.
Java is regarded as one of the most secure programming languages, largely due to its use of bytecode and sandboxes. Java manages to harness much of the power of C++ while overcoming its security issues and overall complexity.
But with all of its improvements over C++, Java has a reputation for being slower than many other programming languages. Additionally, as of 2019, Java has implemented commercial licensing for certain business applications, which can be costly.