Multi Paradigm Programming

There are many ways to structure computer programs. They include: object-oriented, event-driven, procedural, functional, dataflow and table-driven. It is likely that more will be discovered in the future. Many languages support particular programs particularly well and the two are strongly associated: lisp and list processing, or PascalLanguage and procedural. Of course it is possible, for example, to do OO in C or functional programming in Java, and often this is a good thing, but it's not WithTheGrain of the language.

No one structuring paradigm is "right" for all programs. This is one reason why there is no single right language. It's also a large part of why learning new languages helps you develop as a programmer. For many programs it might even be good to use more than one style within the same program.

PythonLanguage and RubyLanguage seems particularly good at allowing you to mix and match structures within a single language. The "default" (the way we write HelloWorld) is procedural, but it feels equally natural to write OO or functional or reflective programs. This lets it solve many different problems, and also means that experienced programmers keep discovering new things.

CommonLisp has much the same feature, though it's a less approachable language for newcomers. Its origins are in the functional world, but it works well for procedural programming too and probably has the world's most powerful object system. One nice feature of CommonLisp is that its macro system makes it possible to build any paradigm you want right into the language. (On the other hand, for many programmers nothing in any variety of Lisp feels "natural"...)

On the functional side, ObjectiveCaml also tries to be multi-paradigm.

[CeePlusPlus is then as well a MultiParadigmProgrammingLanguage in the exactly the same sense as CommonLisp, and InteLib demonstrates it ;-) -- AndreyStolyarov]

See Also: MultiParadigmProgrammingLanguage, ProgrammingParadigm, MixingParadigms

View edit of December 27, 2009 or FindPage with title or text search