When learning about or discussing, a new programming language, it can be useful to understand the programming paradigms that the language can be classified with. A programming paradigm can be thought of as a means of classifying languages based on common features.
Object-oriented languages, such as Java and C++, all support some form of modeling data with logical representations such as classes. Functional programming languages, such as Common Lisp or JavaScript, perform operations as pure transformations of data without global state or mutable data.
Languages can fall into multiple paradigms at the same time. Kotlin allows developers to write imperative object-oriented code and functional code, as well as asynchronous reactive code. Developers can mix-and-match these methodologies as they see fit because, while Kotlin supports them all, it doesn...