Life at Datategy : Dounia Lagumairi Hey , I am...Read More
There are currently a large number of programming languages used by developers, Scala relies on the different concepts it offers. Most of these concepts are not innovative; the contribution of the Scala language comes in fact from the combination of these different concepts into a single language. These concepts are: Scalability, multi-paradigms and compatibility with existing systems, and that’s why our papAI platform uses this language.
What is Scala ?
The Scala language takes its name from the english word “scalable”, which can be translated in this case as “extensible”, Scala is a programming language developed in 2003 by Martin Odersky’s team at the Swiss Federal Institute of Technology in Lausanne, Switzerland. One of the particularities of Scala is that it is based on the Java language, and thus inherits its libraries and its virtual machine.
The Scala language has been democratizing at a high speed and is also starting to be used a lot in industry: several companies have announced the transition of some of their applications to the Scala language, such as Twitter or The Guardian. Several widely-used web frameworks based on Scala have also been created (Play, Lift, …). Last but not least, the well known distributed computing framework Spark is also developed in Scala (although it provides a quite popular Python API).
Reason 1 : Extensibility
Scala has the ability to be extended according to the needs of the programmers. The idea is to relegate everything that is not essential to the functioning of the language to libraries. In return, the user uses these libraries in a transparent way, having the impression of using the basic functions of the language.
The management of real numbers of a size greater than 2^32 is a good example to illustrate this point. In Java, you have to use the BigInteger class. In Python, big numbers are handled natively, but this systematically adds new processor operations for each operation on an integer. The Scala designers have therefore split the difference: the developer of a Scala program, after having chosen between “classical” or “big number” integer handling, will handle his integers in the same way whatever his choice.
Reason 2 : Multi-paradigms
The first programming paradigm proposed by the Scala language is object-oriented programming. This paradigm has been proven today, is widely used in the industry, and is also understood by most programmers. It is important to note that Scala inherits all the possibilities offered by the Java language in terms of object-oriented programming: inheritance, polymorphism, exceptions, etc.
The second programming paradigm is functional oriented ,which has its origins in lambda-calculus, where everything is considered to be mathematical functions on algebraic structures. It allows us to define a rigorous mathematical framework and is adapted in situations of distributed calculations.
Reason 3 : Compatibility
At present, it is unthinkable to develop a new programming language that runs on only one architecture and one operating system. The designers of Scala decided not to deal with this constraint themselves, and to compile Scala programs into Java bytecode, executable on the Java virtual machine. In this way, all operating systems and architectures that have a working Java Virtual Machine can execute Scala code.
This reuse of the Java Virtual Machine has another important advantage: Java code can be called at any time from a Scala program. The main advantage is the possibility to use Java libraries without the need to rewrite or adapt them.
Reason 4 : Statically typed
In general, a statically typed language like Java prevents programmers from doing bad things, while, with a dynamic language like Python, you only know about a bad thing when you run the program. Scala has the best of both worlds. It feels dynamic, but it’s strongly statically typed. The Scala compiler is really smart and uses type-inference to its fullest extent. Scala provides type inference for variables and functions, much better than the limited type inference in Java.
Reason 5 : Growing community
Along with the language and associated frameworks, the Scala community is also growing. Lots of programmers, including Java developers, are joining the Scala bandwagon,more and more IDEs have started to support Scala syntax, and there’s much better support in Eclipse and IntelliJ. There’s also great build tool support in SBT, Maven, and Ant. In recent surveys, Scala has also been touted as the number one alternative to Java.
Scala has clean syntax, nice libraries, good online documentation, and lots of people in the industry using it. With a growing community of Scala on forums, it’s not difficult to find an answer to any Scala questions.