Multiparadigm languages

Multiparadigm languages support more than one programming paradigm. They allow a program to use more than one programming style. The goal is to allow programmers to use the best tool for a job, admitting that no one paradigm solves all problems in the easiest or most efficient way.

  • ChucK (imperative, object-oriented, time-based, concurrent, on-the-fly)
  • Common Lisp (functional, imperative, object-oriented (class-based), aspect-oriented (user may add further paradigms, e.g., logic))
  • Corn (concurrent, generic, imperative, object-oriented (class-based))
  • Curl (functional, imperative, object-oriented (class-based), metaprogramming)
  • Curry (concurrent, functional, logic)
  • D (generic, imperative, object-oriented (class-based), metaprogramming)
  • Dylan (functional, object-oriented (class-based))
  • ECMAScript (functional, imperative, object-oriented (prototype-based))
  • Eiffel (imperative, object-oriented (class-based), generic)
  • J (functional, imperative, object-oriented (class-based))
  • LabVIEW (dataflow, visual)
  • Lasso (macro, object-oriented (prototype-based), procedural, scripting)
  • Lava (object-oriented (class-based), visual)
  • Leda (functional, imperative, logic, object-oriented (class-based))
  • Lua (functional, imperative, object-oriented (prototype-based))
  • Maple
  • Metaobject protocols (object-oriented (class-based, prototype-based))
  • Nemerle (functional, object-oriented (class-based), imperative, metaprogramming)
  • Objective Caml (functional, imperative, object-oriented (class-based))
  • Oz (functional (evaluation: eager, lazy), logic, constraint, imperative, object-oriented (class-based), concurrent, distributed)
  • Object Pascal (imperative, object-oriented (class-based))
  • Perl (imperative, functional (can’t be purely functional), object-oriented, class-oriented, aspect-oriented (through modules))
  • PHP (imperative, object-oriented)
  • Pliant (functional, imperative, object-oriented (class-based))
  • Poplog (functional, imperative, logic)
  • ppC++ (imperative, object-oriented (class-based))
  • Prograph (dataflow, object-oriented (class-based), visual)
  • Python (functional, object-oriented (class-based))
  • REBOL (functional, object-oriented (prototype-based))
  • ROOP (imperative, logic, object-oriented (class-based), rule-based)
  • Ruby (functional, object-oriented (class-based))
  • Scala (functional, object-oriented)
  • Seed7 (imperative, object-oriented, generic)
  • SISAL (concurrent, dataflow, functional)
  • Spreadsheets (functional, visual)
  • Tcl (functional, imperative, object-oriented (class-based))
  • Windows PowerShell (functional, imperative, pipeline, object-oriented (class-based))
  • XL (concept programming approach)

Macro languages

Macro languages embed small pieces of executable code inside a piece of free-form text.

Scripting languages such as Tcl and ECMAScript (ActionScript, DMDScript, E4X, JavaScript, JScript) have been embedded into applications so that they behave like macro languages.

Metaprogramming languages

Metaprogramming is writing of programs that write or manipulate other programs (or themselves) as their data or that do part of the work that is otherwise done at run time during compile time. In many cases, this allows programmers to get more done in the same amount of time as they would take to write all the code manually.

Logic-based languages

Logic-based languages specify a set of attributes that a solution must have, rather than a set of steps to obtain a solution. Examples:

Machine languages

Machine languages are directly executable by a computer’s CPU. They are typically formulated as bit patterns, usually represented in octal or hexadecimal. Each group of npatterns (often 1 or more bytes) causes the circuits in the CPU to execute one of the fundamental operations of the hardware. The activation of specific electrical inputs (eg, CPU package pins for microprocessors), and logical settings for CPU state values, control the processor’s computation. Individual machine languages are processor specific and are not portable. They are (essentially) always defined by the CPU developer, not by 3rd parties. The symbolic version, the processor’s assembly language, is also defined by the developer, in most cases. Since processors come in families which are based on a shared architecture, the same basic assembly language style can often be used for more than one CPU. Each of the following CPUs served as the basis for a family of processors: