The most ambitious example is Oz , which has subsets that are a logic language (Oz descends from logic programming), a functional language, an object-oriented language, a dataflow concurrent language, and more. Oz was designed over a ten-year period to combine in a harmonious way concepts that are traditionally associated with different programming paradigms.
Languages can be grouped by the number and types of paradigms supported.
- Concurrent , Dataflow , functional
- --- SISAL
- concurrent, functional, logic
- --- Curry
- dataflow, object-oriented (class-based), visual
- --- Prograph
- functional, imperative, object-oriented (class-based)
- --- BETA
- --- J
- --- Pliant
- --- Python
- --- Tcl (class-based with the Xotcl or Itcl extensions, prototype-based with the Snit extension)
- functional, imperative, object-oriented (prototype-based)
- --- Lua
- --- Tcl (the Snit extension)
- --- JavaScript
- Generic ( Template Metaprogramming ), imperative, object-oriented (class-based)
- --- C++
- --- D
- functional, generic (template metaprogramming), imperative, object-oriented (class-based)
- --- Objective Caml
- functional, imperative, concurrent, object-oriented (class-based)
- --- Ruby
- functional, imperative, logic, object-oriented (class-based)
- --- Leda
- imperative, logic, object-oriented (class-based), rule-based
- --- ROOP
- functional, imperative, object-oriented (prototype-based), Dialected
- --- REBOL
- concurrent, Distributed , generic, imperative, object-oriented (class-based)
- --- Ada
- ''Multiparadigm Design for C++'', by Jim Coplien, 1998.
- ''Concepts, Techniques, and Models of Computer Programming'', by Peter Van Roy and Seif Haridi, 2004.
|