Smalltalk was released in the 1970s and was one of the first pure object-oriented programming languages. You can now find object-oriented programming everywhere. It has dominated the world of programming languages.
The concept behind object-oriented programming is quite simple: All but the most trivial programs require some form of structure.
The most clear-cut way of achieving this is by using the concept of storage containers. A programming language can be broadly divided into data and operations to be performed on data. What we can do is store specific data and specific operations in some type of container. Furthermore, these containers are made to be general. Hence, they not only store data and operations but they are themselves values which can be stored in other containers and passed as parameters to other operations. In object-oriented programming, these containers are known as objects.
Alan Kay, the inventor of Smalltalk, remarked that in this way the simplest object has the same construction principle as a full computer: it combines data with operations under a formalized interface. Martin Odersky, the inventor of Scala, infers that because of Alan Kay’s remark, objects have a lot to do with language scalability: the same techniques apply to the construction of small programs as well as large programs.
And now, even though object-oriented programming can be found in a multitude of languages, very few actually follow the principles set by Smalltalk. Scala, on the other hand, is a pure object-oriented programming language with every value being an object and every operation is a method call. So, + is not just an operator in Scala, it is a method which is a part of a much larger class of methods and data.