What is "Scala"?
A condensed history of programming languages
Computer programming started with assembly programming, which was about feeding lists of instructions to the CPU that they would understand; a point was reached where the limitation was no longer the computation speed but the speed of development of the programs, and this is an idea that takes us all the way to Scala.
The first widely used commercial programming language was courtesy of IBM called FORTRAN ("Formula Translation"; 1954) that meant computer programmers would no longer have to translate formulas into assembly code by themselves, but have the computer do it for them. However, it was found by Grace Hopper that it was not that friendly to many users, and this finding lead to COBOL ("common business-oriented language"; 1959), a programming language that reads like English, and has job positions available to this day, especially at banks.
Over the next few decades, many programming languages sprung up, enabling different ways of expression ("models", "paradigms") for the human users ("computer programmers") towards different niches. While there are many interesting and highly important languages, practicalities were the most significant factor in the popularity of programming languages. While LISP (originally used for AI) and Haskell (originally used in academic) are still in use to this day and have huge merits to be considered some of the most powerful and advanced programming languages, they did not gain the widespread traction traction; all to do with practicalities of the day. For example, commercial Pascal had huge traction but C took over thanks to its distribution with UNIX systems; BASIC was highly popular but not as powerful as Pascal or C (although versions of BASIC still live in your Microsoft Excel installation to this day!).
Come internet age, since the 1990s to this day in 2021, numerous general programming languages (we will exclude specialised ones) gained mass popularity for varieties of reasons, all to do with practicality: C/C++, Objective-C, Perl, Python, Java, PHP, Ruby, JavaScript, C#, Go, Rust, Kotlin, TypeScript, Scala and Swift. As an internet user, you will most certainly have interacted with software written in all of these languages. What made these languages practical was that they were easy to get started with or deploy it easily, or solved deficiencies of more popular platforms:
- C (born in 1972) was on every UNIX distribution;
- C++ (b. 1998) solved deficiencies of C;
- Objective-C (b. 1980s) had Apple behind it;
- Perl (b. 1987) made it very easy to script and build websites;
- PHP (b. 1995) made it very easy to build websites compared to anything before;
- Ruby (b. 1995) offered an all-batteries-included web framework, solving deficiencies of Perl & PHP;
- Java (b. 1991) could run on every platform and had Sun behind it;
- JavaScript (b. 1995) could run on every web browser;
- C# (b. 2000) had Microsoft behind it and solved deficiencies of C/C++;
- Scala (b. 2003) solved deficiencies of Java;
- Go (b. 2009) solved deficiencies of C and had Google behind it;
- Rust (b. 2010) solved deficiencies of C and had Mozilla behind it;
- Kotlin (b. 2011) solved deficiencies of Java and had Android behind it;
- Swift (b. 2015) solved deficiencies of Objective-C and has Apple behind it;
We start to get the picture: you solve deficiencies of something that already exists, or you have wide distribution prowess.
A condensed history of Scala
Many other languages suffered from a simple problem of verification: if your program was expecting a "list of bank-notes", and you gave it a "list of coins", it would do unexpected things (depending on the language), because all of it would be represented simply as a "list", without the information of what is inside this list. A team of engineers, Gilad Bracha, Dave Stoutamire, Philip Wadler (behind Haskell), and Martin Odersky developed "Generic Java" which would resolve this exact problem, which would become a cornerstone feature of Java 1.5.
Odersky, becoming intimately familiar with Java (as he built Java 1.3's compiler!), knew of its limitations and took on developing a language based on this platform, that would solve the things that made Java difficult, and at the same time merge it concepts of "functional programming" were widely present in Haskell that were very theoretical, not very accessible but at the same time hugely powerful. Odersky also knew that to achieve any degree of adoption of a language, it needs to build on a platform with all the batteries included; all the code developed in Java can be re-used very simply in Scala.
Scala's growth in the last 10 years has coincided with a new trend of "functional programming" and "simplicity" making their way into every popular programming language: C++, Swift, PHP, Java, C#, Python, Rust, Kotlin among many others. However, Scala was truly built ground-up for these functional programming ideas, and stands as the most widely-used advanced functional programming language. If you use Netflix, Twitter or LinkedIn, you are using Scala.
Scala is built as a "Scalable Language": with focus on being suitable from the smallest task to the largest enterprise applications; with the focus on enabling the user to express whatever they want without having to switch to another programming language.
What is Scala?
What is Scala? Scala, dare I say, is a daring attempt at a final programming language.