Komputer    
   
Daftar Isi
(Sebelumnya) List of motion and gesture fil ...List of network scientists (Berikutnya)

Daftar/Tabel -- multi-paradigm programming languages

Programming languages can be grouped by the number and types of paradigms supported.

Contents

Paradigm summaries

A concise reference for the programming paradigms listed in this article.

  • Concurrent programming – have language constructs for concurrency, these may involve multi-threading, support for distributed computing, message passing, shared resources (including shared memory), or futures
    • Actor programming – concurrent computation with actors that make local decisions in response to the environment (capable of selfish or competitive behavior)
  • Constraint programming – relations between variables are expressed as constraints (or constraint networks), directing allowable solutions (uses constraint satisfaction or simplex algorithm)
  • Dataflow programming – forced recalculation of formulas when data values change (e.g. spreadsheets)
  • Declarative programming – describes actions (e.g. HTML describes a page but not how to actually display it)
  • Distributed programming – have support for multiple autonomous computers that communicate via computer networks
  • Functional programming – uses evaluation of mathematical functions and avoids state and mutable data
  • Generic programming – uses algorithms written in terms of to-be-specified-later types that are then instantiated as needed for specific types provided as parameters
  • Imperative programming – explicit statements that change a program state
  • Logic programming – uses explicit mathematical logic for programming
  • Metaprogramming – writing programs that write or manipulate other programs (or themselves) as their data, or that do part of the work at compile time that would otherwise be done at runtime
    • Template metaprogramming – metaprogramming methods in which templates are used by a compiler to generate temporary source code, which is merged by the compiler with the rest of the source code and then compiled
    • Reflective programming – metaprogramming methods in which a program modifies or extends itself
  • Object-oriented programming – uses data structures consisting of data fields and methods together with their interactions (objects) to design programs
    • Class-based – object-oriented programming in which inheritance is achieved by defining classes of objects, versus the objects themselves
    • Prototype-based – object-oriented programming that avoids classes and implements inheritance via cloning of instances
  • Pipeline programming – a simple syntax change to add syntax to nest function calls to language originally designed with none
  • Rule-based programming – a network of rules of thumb that comprise a knowledge base and can be used for expert systems and problem deduction & resolution
  • Visual programming – manipulating program elements graphically rather than by specifying them textually (e.g. Simulink); also termed diagrammatic programming[1]

Language overview

Daftar/Tabel -- multi-paradigm programming languages
Lan­guageNum­ber of Para­digmsCon­cur­rentCon­straintsData­flowDe­clar­at­iveDis­trib­utedFunc­tion­alMeta­pro­gram­mingGen­er­icIm­per­at­iveLo­gicRe­flec­tionOb­ject-ori­entedPipe­linesVisu­alRule-basedOth­er para­digms
LabVIEW2NoNoYesNoNoNoNoNoNoNoNoNoNoYesNoNo
APL2NoNoNoNoNoYesNoNoYesNoNoNoNoNoNoNo
ALF2NoNoNoNoNoYesNoNoNoYesNoNoNoNoNoNo
Dylan[citation needed]2NoNoNoNoNoYesNoNoNoNoNoYes[a 1]NoNoNoNo
Sather[citation needed]2NoNoNoNoNoYesNoNoNoNoNoYes[a 1]NoNoNoNo
Claire2NoNoNoNoNoYesNoNoNoNoNoYes[a 1]NoNoNoNo
Spreadsheets2NoNoNoNoNoYesNoNoNoNoNoNoNoYesNoNo
AmigaE[citation needed]2NoNoNoNoNoNoNoNoYesNoNoYes[a 1]NoNoNoNo
Simula[citation needed]2NoNoNoNoNoNoNoNoYesNoNoYes[a 1]NoNoNoNo
Metaobject protocols2NoNoNoNoNoNoNoNoNoNoNoYes[a 1][a 2]NoNoNoNo
Lava2NoNoNoNoNoNoNoNoNoNoNoYes[a 1]NoYesNoNo
PointDragon3NoNoNoNoNoNoNoNoYesNoNoYesNoYesNoNo
SISAL3YesNoYesNoNoYesNoNoNoNoNoNoNoNoNoNo
Erlang3YesNoNoNoYesYesNoNoNoNoNoNoNoNoNoNo
ChucK[citation needed]3YesNoNoNoNoNoNoNoYesNoNoYes[a 1]NoNoNoNo
Prograph3NoNoYesNoNoNoNoNoNoNoNoYes[a 1]NoYesNoNo
Poplog3NoNoNoNoNoYesNoNoYesYesNoNoNoNoNoNo
BETA[citation needed]3NoNoNoNoNoYesNoNoYesNoNoYes[a 1]NoNoNoNo
J[citation needed]3NoNoNoNoNoYesNoNoYesNoNoYes[a 1]NoNoNoNo
Perl[citation needed]3NoNoNoNoNoYesNoNoYesNoNoYes[a 1]NoNoNoNo
Pliant[citation needed]3NoNoNoNoNoYesNoNoYesNoNoYes[a 1]NoNoNoNo
Tcl with itcl or XOTcl extensions[citation needed]3NoNoNoNoNoYesNoNoYesNoNoYes[a 1]NoNoNoNo
PHP[2][3][4]3NoNoNoNoNoYesNoNoYesNoNoYes[a 1]NoNoNoNo
ECMAScript[5][6] (ActionScript, E4X, JavaScript, JScript)3NoNoNoNoNoYesNoNoYesNoNoYes[a 2]NoNoNoNo
Lua[citation needed]3NoNoNoNoNoYesNoNoYesNoNoYes[a 2]NoNoNoNo
Tcl with Snit extension[citation needed]3NoNoNoNoNoYesNoNoYesNoNoYes[a 2]NoNoNoNo
C++6 (13)Yes[7][8][9]Library[10]Library[11][12]Library[13][14]Library[15][16]YesYes[17]Yes[a 3]YesLibrary[18][19]Library[20]Yes[a 1]NoNoLibrary[21]No
D (version 1.0)3NoNoNoNoNoNoNoYes[a 3]YesNoNoYes[a 1]NoNoNoNo
Embarcadero Delphi3NoNoNoNoNoNoNoYes[a 3]YesNoNoYes[a 1]NoNoNoNo
E3YesNoNoNoYesNoNoNoNoNoNoYes[a 1]NoNoNoNo
Curry4YesYesNoNoNoYesNoNoNoYesNoNoNoNoNoNo
Java4YesNoNoNoNoNoNoYesYesNoYesYes[a 1]NoNoNoNo
Python[citation needed]4NoNoNoNoNoNoNoNoYesNoYesYes[a 1]NoNoNoprocedural
Ruby4NoNoNoNoNoYesNoNoYesNoYesYes[a 1]NoNoNoNo
OCaml4NoNoNoNoNoYesNoYesYesNoNoYes[a 1]NoNoNoNo
Leda4NoNoNoNoNoYesNoNoYesYesNoYes[a 1]NoNoNoNo
ROOP4NoNoNoNoNoNoNoNoYesYesNoNoNoNoYesNo
Io4Yes[a 4]NoNoNoNoYesNoNoYesNoNoYes[a 2]NoNoNoNo
REBOL4NoNoNoNoNoYesNoNoYesNoNoYes[a 2]NoNoNoNo
Fortran5YesNoNoNoNoYes[a 5]NoYes[a 6]NoNoNoYes[a 1]NoNoNoNo
Ada[22][23][24][25][26]5Yes[a 7]NoNoNoYesNoNoYesYesNoNoYes[a 1]NoNoNoNo
Windows PowerShell5NoNoNoNoNoYesNoYesYesNoYesYes[a 1]YesNoNoNo
Curl5NoNoNoNoNoYesNoYes[a 3]YesNoYesYes[a 1]NoNoNoNo
Common Lisp (some other paradigms are implemented as libraries)[citation needed]5NoNoNoNoNoYesYesNoYesNoYesYes[a 1]NoNoNoNo
Falcon5NoNoNoNoNoYesYesNoNoNoYesYes[a 1]NoNoNoNo
D (version 2.0)[27][28]5Yes[a 4]NoNoNoNoYesNoYes[a 3]YesNoNoYes[a 1]NoNoNoNo
Object Pascal5YesNoNoNoNoYesNoNoYesNoNoYes[a 1]NoNoNoNo
Scala[29][30]7Yes[a 4]NoYes [a 8]YesNoYesYesYesYesNoYesYes[a 1]NoNoNoNo
Nemerle7YesNoNoNoNoYesYesYesYesNoYesYes[a 1]NoNoNoNo
C#7YesNoLibrary[a 9]NoNoYes[a 10]NoYesYesNoYesYes[a 1]NoNoNoreactive[a 11]
Visual Basic .NET7YesNoLibrary[a 9]NoNoYes[a 10]NoYesYesNoYesYes[a 1]NoNoNoreactive[a 11]
F#8Yes[a 4]NoLibrary[a 9]YesNoYesNoYesYesNoYesYes[a 1]NoNoNoreactive[a 11]
Oz9YesYesYesNoYesYesNoNoYesYesNoYes[a 1]NoNoYesNo
LispWorks (version 6.0 with support for symmetric multi-processing, rules, logic (Prolog), CORBA)9YesNoNoNoYesYesYesNoYesYesYesYes[a 1]NoNoYesNo
Mathematica11YesYesYesYesYesYesYesYesYesYesNoYesNoNoYesNo
  1. ^ a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am Class-based
  2. ^ a b c d e f Prototype-based
  3. ^ a b c d e Template metaprogramming
  4. ^ a b c d actor programming
  5. ^ purely functional
  6. ^ parameterized classes
  7. ^ rendezvous and monitor-like based
  8. ^ Akka
  9. ^ a b c using TPL Dataflow
  10. ^ a b only lambda support (lazy functional programming)
  11. ^ a b c using Reactive Extensions (Rx)


See also

References

  • Multiparadigm Design for C++, by Jim Coplien, 1998.
(Sebelumnya) List of motion and gesture fil ...List of network scientists (Berikutnya)