C had Procedural Paradigm, then C++ came with OOPS and success of JAVA make it best suitable Programming Paradigm.

Now, Look at recent trends, Kotlin, Swift these languages are not like JAVA these are providing a flexible way of coding, Neither Procedural nor OOPS, and also these languages are being accepted widely.

Is it going to make programming easier and programmer a little more away from system understanding?

In other word, what is the cost programmer going to pay for this Flexibility?

closed as too broad by TheCatWhisperer, gnat, BobDalgleish, Thomas Junk, Andres F. May 31 '18 at 19:21

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.


I'm not sure we are, I'd argue that Lisp is a multi-paradigm language and as its the second oldest high-level lengauge we have pretty much always had multi-paradigm languages.

C++ also is arguably not an OO language. Its perfectly possible to write procedural code in C++, C++ Templates form a pure-functional language, and obviously there is support for OO as well (even if Kay doesn't like it)

With no evidence at all I'd say that most languages that we tend to use end up being multi-paradigm (Java was somewhat an exception to this at least until recently). Teaching languages tend to be better as single paradigm. But this could just be my opinion

  • +1 good answer. Just curious, what constructs make lisp multi-paradigm? – TheCatWhisperer May 31 '18 at 14:27
  • 2
    en.wikipedia.org/wiki/Common_Lisp_Object_System also you can pretty much write procedural code in any language which allows I/O somehow – jk. May 31 '18 at 14:28
  • Hmm, never learned about OO lisp in college. I was under the impression lisp was purely functional/list oriented – TheCatWhisperer May 31 '18 at 14:33
  • 2
    @TheCatWhisperer: You never learned about Scheme? It was explicitly designed as an object-oriented Lisp. After Smalltalk, the Lisp community was the first to pick up on OO and start experimenting with it. Flavors, New Flavors, LOOPS, CommonLOOPS, Object Lisp, Common Objects, … Almost any OO concept that does not come from Smalltalk was invented there. Mixins in the Flavors object system, Multimethods in LOOPS, I believe. For how much Rich Hickey likes to criticize OO, Clojure is an amazing OO language. And of course, there's Dylan. – Jörg W Mittag May 31 '18 at 14:40
  • 2
    And in the other direction, Alan Kay was heavily inspired by Lisp. – Jörg W Mittag May 31 '18 at 14:42

I would say that a language doesn't necessarily force you to program within a certain paradigm. A paradigm is more of a way of thinking and constructing your program, while a language is a tool which either:

  • allows you to code a program in a certain paradigm;
  • supports the paradigm of your choise natively, or
  • doesn't allow you to do certain things.

C++ allows you to program in the object-oriented style as well as in the procedural style, and, if we consider templates, as jk. said, you can get pretty close to the functional style of programming. Kotlin, arguably, not only allows you to do such things, but also natively supports many features that are required to code in all of the mentioned paradigms. On the other hand, Java doesn't allow you to do pretty much anything except OOP. Maybe some kind of functional-style code is possible if we consider Java 8 streams. It is much easier to do aspect-oriented programming in Java and Kotlin then it is in C++.

Some languages limit you to certain paradigms, the others give you more choices. The price of a choice is obvious: when you have more options, it gets hard to stick to a single paradigm all the time, and your code may quickly start to smell.

  • 2
    +1 Though it can be argued that Java is not particularly suited to OOP. Sure, it has classes and inheritance, but that's not necessarily OO. It can also be argued that whatever OOP was supposed to be, Java overrode that definition with "OO is whatever Java does". For example, to a Smalltalk dev, arguing that Java supports OOP are fighting words :P – Andres F. May 31 '18 at 19:25
  • 1
    @AndresF. being created to implement a single paradigm and ending up ruining it completely. What an irony :D – G. Kashtanov May 31 '18 at 19:40

Not the answer you're looking for? Browse other questions tagged or ask your own question.