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.
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.
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
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