Scala is known to be one of the pioneers in combining the paradigms of object-oriented and functional programming. Its advanced type system, combined with the implicit resolution mechanism and the macro system, allows you to write a concise and expressive code, the correctness of which can be largely verified by the compiler itself.
On the other hand, the incremental addition of functionality to Scala 2 has led to the emergence of a language often considered complex and with a high entry threshold. Scala 3 aims to return to the language’s original premise of scalability, which is to enable the writing of simple programs to solve simple problems that, if necessary, can gradually evolve into complex, but still easy to understand and refactor, systems.
As part of the lecture, students will learn what are the basic differences between Scala versions 2 and 3, how the language has been organized and simplified while increasing its expressive power, and what new possibilities it opens up for programmers.
** The lecture assumes basic knowledge of Scala 2 **