Content deleted Content added
Updating features of common lisp, with references |
m Bot: link syntax and minor changes |
||
Line 47:
! Rule-based
! Oth­er para­digms
|-
| [[Ada (programming language)|Ada]]<ref>[http://www.adaic.org/standards/05rm/html/RM-TTL.html Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3], [http://www.adaic.org/standards/05rm/html/RM-9.html Section 9: Tasks and Synchronization]</ref><ref>[http://www.adaic.org/standards/05rm/html/RM-TTL.html Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3] [http://www.adaic.org/standards/05rm/html/RM-E.html Annex E: Distributed Systems]</ref><ref>[http://www.adaic.org/standards/05rm/html/RM-TTL.html Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3], [http://www.adaic.org/standards/05rm/html/RM-12.html Section 12: Generic Units]</ref><ref>[http://www.adaic.org/standards/05rm/html/RM-TTL.html Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3], [http://www.adaic.org/standards/05rm/html/RM-6.html Section 6: Subprograms]</ref><ref>[http://www.adaic.org/standards/05rm/html/RM-TTL.html Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3], [http://www.adaic.org/standards/05rm/html/RM-3-9.html 3.9 Tagged Types and Type Extensions]</ref> || 5
| {{yes}}<ref group="a" name="rend-mon">rendezvous and monitor-like based</ref> || {{no}}|| {{no}}|| {{no}}|| {{yes}} || {{no}}|| {{no}}|| {{yes}} || {{yes}} || {{no}}|| {{no}}|| {{yes}}<ref group="a" name="class" /> || {{no}}|| {{no}}|| {{no}}|| {{no}}
Line 74:
| [[Claire (programming language)|Claire]] || 2
| {{no}} || {{no}} || {{no}} || {{no}} || {{no}} || {{yes}} || {{no}} || {{no}} || {{no}} || {{no}} || {{no}} || {{yes}}<ref group="a" name="class" /> || {{no}} || {{no}} || {{no}} || {{no}}
|-
| [[Common Lisp]] || 5
| {{partial|Library}}<ref>[https://www.cliki.net/Concurrency] many concurrency paradigms implemented as language extensions</ref> || {{partial|Library}}
|-
| [[Curl (programming language)|Curl]] || 5
| {{no}}|| {{no}}|| {{no}}|| {{no}}|| {{no}}|| {{yes}} || {{no}}|| {{yes}}<ref group="a" name="temp-meta" /> || {{yes}} || {{no}}|| {{yes}} || {{yes}}<ref group="a" name="class" /> || {{no}}|| {{no}}|| {{no}}|| {{no}}
Line 83:
| [[Curry (programming language)|Curry]] || 4
| {{yes}} || {{yes}} || {{no}}|| {{no}}|| {{no}}|| {{yes}} || {{no}}|| {{no}} || {{no}}|| {{yes}} || {{no}}|| {{no}}|| {{no}}|| {{no}}|| {{no}}|| {{no}}
|-
| [[D (programming language)|D]] (version 2.0)<ref>[http://www.digitalmars.com/d/2.0/comparison.html D Language Feature Table]</ref><ref>[http://www.digitalmars.com/d/2.0/phobos/std_algorithm.html Phobos std.algorithm]</ref> || 6
| {{yes}}<ref group="a" name="actor" /> || {{no}}|| {{no}}|| {{no}}|| {{no}}|| {{yes}} || {{yes}}<ref>[http://dlang.org/mixin.html D language String Mixins]</ref><ref group="a" name="temp-meta" /> || {{yes}}<ref group="a" name="temp-meta" /> || {{yes}} || {{no}}|| {{no}}|| {{yes}}<ref group="a" name="class" /> || {{no}}|| {{no}}|| {{no}}|| {{no}}
Line 111:
| [[F Sharp (programming language)|F#]] || 7 (8)
| {{yes}}<ref group="a" name="actor">actor programming</ref> || {{no}} || {{partial|Library}}<ref group="a" name="tpldf">using [http://msdn.microsoft.com/en-us/devlabs/gg585582.aspx TPL Dataflow]</ref> || {{yes}} || {{no}} || {{yes}}|| {{no}} || {{yes}}|| {{yes}} || {{no}} || {{yes}}|| {{yes}}<ref group="a" name="class" />|| {{no}} || {{no}} || {{no}} || reactive<ref group="a" name="rx">using [http://msdn.microsoft.com/en-us/data/gg577609.aspx Reactive Extensions (Rx)]</ref>
|-
| [[Falcon (programming language)|Falcon]] || 4
| {{no}}|| {{no}} || {{no}}|| {{no}}|| {{no}}|| {{yes}} || {{yes}} || {{no}}|| {{no}}|| {{no}}|| {{yes}} || {{yes}}<ref group="a" name="class" /> || {{no}}|| {{no}}|| {{no}}|| {{no}}
|-
| [[Fortran]] || 4 (5)
| {{yes}} || {{no}}|| {{no}}|| {{no}}|| {{no}}|| {{yes}}<ref group="a" name="pure-func">purely functional</ref>|| {{no}}|| {{yes}}<ref group="a" name="param-class">parameterized classes</ref> || {{no}}|| {{no}}|| {{no}}|| {{yes}}<ref group="a" name="class" /> || {{no}} || {{no}}|| {{no}} || Array <small>(multi-dimensional)</small>
Line 120:
|[[Go (programming language)|Go]] || 4
| {{yes}}|| {{no}} || {{no}} || {{no}}|| {{no}} || {{no}} || {{no}} || {{no}} || {{yes}} || {{no}} || {{yes}} || {{no}} || {{yes}} || {{no}}|| {{no}}|| {{no}}
|-
| [[Haskell (programming language)|Haskell]] || 2?
| {{yes}}|| {{partial|Library}}<ref>[https://hackage.haskell.org/package/hswip Prolog embedding]</ref> || {{no}} || {{yes}}|| {{partial|Library}}<ref>[https://haskell-distributed.github.io/ Cloud Haskell]</ref>|| {{yes}} ([[lazy evaluation|lazy]]) || {{no}} || {{yes}} || {{yes}} || {{no}} || {{no}} || {{no}} || {{no}}|| {{yes}}|| {{no}} || {{reactive, dependent types (partial)}}
Line 129:
| [[J (programming language)|J]] {{Citation needed|date=March 2007}} || 3
| {{no}} || {{no}}|| {{no}}|| {{no}}|| {{no}}|| {{yes}} || {{no}}|| {{no}}|| {{yes}} || {{no}}|| {{no}}|| {{yes}}<ref group="a" name="class" /> || {{no}}|| {{no}}|| {{no}}|| {{no}}
|-
| [[Java (programming language)|Java]] || 6
| {{yes}} || {{partial|Library}}<ref>https://jcp.org/en/jsr/detail?id=331 JSR 331: Constraint Programming API </ref> || {{partial|Library}}<ref> https://github.com/GoogleCloudPlatform/DataflowJavaSDK
|-
| [[Julia (programming language)|Julia]] || 9 (17)
| {{yes}} || {{partial|Library}}<ref>https://jump.readthedocs.io/en/latest/</ref> || {{partial|Library}}<ref>https://github.com/MikeInnes/DataFlow.jl</ref><ref>https://github.com/JuliaGizmos/Reactive.jl</ref> || {{partial|Library}}<ref>https://github.com/davidanthoff/Query.jl Query almost anything in julia</ref> || {{yes}} || {{yes}} ([[eager evaluation|eager]]) || {{yes}} || {{yes}} || {{yes}} || {{partial|Library}}<ref>https://github.com/lilinjn/LilKanren.jl A collection of Kanren implementations in Julia</ref> || {{yes}}|| {{yes}} (multiple dispatch, not traditional single) || {{yes}}|| {{no}} || {{partial|Library}}<ref>https://github.com/abeschneider/PEGParser.jl</ref><ref>https://github.com/gitfoxi/Parsimonious.jl</ref> || [[Multiple dispatch]],<br> Array <small>(multi-dimensional)</small>; optionally [[lazy evaluation|lazy]]<ref>Lazy https://github.com/MikeInnes/Lazy.jl</ref> and reactive (with libraries)
Line 144:
| [[Lava (programming language)|Lava]] || 2
| {{no}} || {{no}} || {{no}} || {{no}} || {{no}} || {{no}} || {{no}} || {{no}} || {{no}} || {{no}} || {{no}} || {{yes}}<ref group="a" name="class" /> || {{no}}|| {{yes}} || {{no}}|| {{no}}
|-
| [[Leda (programming language)|Leda]] || 4
| {{no}}|| {{no}}|| {{no}}|| {{no}}|| {{no}}|| {{yes}}|| {{no}}|| {{no}}|| {{yes}} || {{yes}} || {{no}}|| {{yes}}<ref group="a" name="class" /> || {{no}}|| {{no}}|| {{no}}|| {{no}}
|-
| [[LispWorks]] (version 6.0 with support for symmetric multi-processing, rules, logic (Prolog), CORBA) || 9
| {{yes}} || {{no}} || {{no}} || {{no}} || {{yes}} || {{yes}} || {{yes}} || {{no}} || {{yes}} || {{yes}} || {{yes}} || {{yes}}<ref group="a" name="class" /> || {{no}} || {{no}} || {{yes}} || {{no}}
Line 153:
| [[Lua (programming language)|Lua]] {{Citation needed|date=March 2007}} || 3
| {{no}} || {{no}} || {{no}} || {{no}} || {{no}} || {{yes}} || {{no}} || {{no}} || {{yes}} || {{no}} || {{no}} || {{yes}}<ref group="a" name="prototype" /> || {{no}} || {{no}} || {{no}} || {{no}}
|-
| [[MATLAB]] || 6 (10)
| {{partial|Toolbox}}<ref>{{cite web|title=Execute loop iterations in parallel|url=http://mathworks.com/help/distcomp/parfor.html|website=mathworks.com|accessdate=21 October 2016}}</ref>|| {{partial|Toolbox}}<ref>{{cite web|title=Write Constraints|url=https://mathworks.com/help/optim/write-constraints.html|website=mathworks.com|accessdate=21 October 2016}}</ref>|| {{yes}}<ref>{{cite web|title=Getting Started with SimEvents|url=https://mathworks.com/help/simevents/getting-started-with-simevents.html|website=mathworks.com|accessdate=21 October 2016}}</ref>|| {{no}}|| {{partial|Toolbox}}<ref>{{cite web|title=Execute loop iterations in parallel|url=http://mathworks.com/help/distcomp/parfor.html|website=mathworks.com|accessdate=21 October 2016}}</ref> || {{no}}|| {{yes}}<ref>{{cite web|title=Execute MATLAB expression in text - MATLAB eval|url=https://mathworks.com/help/matlab/ref/eval.html|website=mathworks.com|accessdate=21 October 2016}}</ref>|| {{yes}}<ref>{{cite web|title=Determine class of object|url=https://mathworks.com/help/matlab/ref/class.html|website=mathworks.com|accessdate=21 October 2016}}</ref> || {{no}}|| {{no}}|| {{yes}}<ref>{{cite web|title=Class Metadata|url=https://mathworks.com/help/matlab/get-information-about-classes-and-objects.html|website=mathworks.com|accessdate=21 October 2016}}</ref> || {{yes}}<ref>{{cite web|title=Object-Oriented Programming|url=https://mathworks.com/help/matlab/object-oriented-programming.html|website=mathworks.com|accessdate=21 October 2016}}</ref>|| {{no}}|| {{yes}}<ref>{{cite web|title=Simulink|url=https://mathworks.com/help/simulink/index.html|website=mathworks.com|accessdate=21 October 2016}}</ref>|| {{no}}|| Array <small>(multi-dimensional)</small>
Line 159:
| [[Nemerle]] || 7
| {{yes}} || {{no}} || {{no}} || {{no}} || {{no}} || {{yes}} || {{yes}} || {{yes}}|| {{yes}} || {{no}} || {{yes}} || {{yes}}<ref group="a" name="class" /> || {{no}} || {{no}} || {{no}} || {{no}}
|-
| [[Object Pascal]] || 4
| {{yes}} || {{no}}|| {{no}}|| {{no}}|| {{no}}|| {{yes}} || {{no}}|| {{no}}|| {{yes}} || {{no}}|| {{no}}|| {{yes}}<ref group="a" name="class" /> || {{no}}|| {{no}}|| {{no}}|| {{no}}
|-
| [[OCaml]] || 4
| {{no}}|| {{no}}|| {{no}}|| {{no}}|| {{no}}|| {{yes}}|| {{no}}|| {{yes}} || {{yes}} || {{no}}|| {{no}}|| {{yes}}<ref group="a" name="class" /> || {{no}}|| {{no}}|| {{no}}|| {{no}}
|-
| [[Oz (programming language)|Oz]] || 9
| {{yes}} || {{yes}} || {{yes}} || {{no}} || {{yes}} || {{yes}} || {{no}} || {{no}} || {{yes}} || {{yes}} || {{no}} || {{yes}}<ref group="a" name="class" /> || {{no}} || {{no}} || {{yes}} || {{no}}
Line 183:
| [[Prograph]] || 3
| {{no}}|| {{no}}|| {{yes}} || {{no}}|| {{no}}|| {{no}}|| {{no}}|| {{no}}|| {{no}}|| {{no}}|| {{no}}|| {{yes}}<ref group="a" name="class" /> || {{no}}|| {{yes}} || {{no}}|| {{no}}
|-
| [[Python (programming language)|Python]] || 5 (10)
| {{partial|Library}}<ref>{{cite web|title=Parallel Processing and Multiprocessing in Python|url=https://wiki.python.org/moin/ParallelProcessing|website=wiki.python.org|accessdate=21 October 2016}}</ref><ref>{{cite web|title=threading — Higher-level threading interface|url=https://docs.python.org/2/library/threading.html|website=docs.python.org|accessdate=21 October 2016}}</ref>
Line 194:
| {{yes}}<ref>{{cite web|title=PEP 443 -- Single-dispatch generic functions|url=https://www.python.org/dev/peps/pep-0443/|website=python.org|accessdate=22 October 2016}}</ref><ref>{{cite web|title=PEP 484 -- Type Hints|url=https://www.python.org/dev/peps/pep-0484/#generics|website=python.org|accessdate=22 October 2016}}</ref>|| {{yes}} || {{partial|Library}}<ref>{{cite web |url=https://sites.google.com/site/pydatalog/ |title=PyDatalog |accessdate=22 October 2016}}</ref>|| {{yes}}|| {{yes}}<ref group="a" name="class" />
| {{no}}|| {{no}}|| {{no}}|| [[Structured programming|structured]]
|-
| [[R (programming language)|R]] || 4
| {{no}} || {{no}}|| {{no}}|| {{no}}|| {{no}}|| {{yes}}|| {{no}}|| {{no}} || {{yes}} || {{no}}|| {{yes}} || {{yes}} || {{yes}}<ref>{{cite web|title= Magrittr: A Forward Pipe Operator for R|url=https://cran.r-project.org/package=magrittr|website=cran.r-project.org\accessdate=13 July 2017}}</ref>|| {{no}}|| {{no}} || Array (multi-dimensional)
|-
| [[Racket (programming language)|Racket]] || 6
| {{no}} || {{no}}|| {{no}}|| {{no}}|| {{no}}|| {{yes}}|| {{yes}}|| {{no}} || {{yes}} || {{yes}}|| {{yes}} || {{yes}} || {{no}}|| {{no}}|| {{no}} || {{no}}
|-
| [[ROOP (programming language)|ROOP]] || 3
| {{no}}|| {{no}}|| {{no}}|| {{no}}|| {{no}}|| {{no}}|| {{no}} || {{no}}|| {{yes}} || {{yes}} || {{no}}|| {{no}}|| {{no}}|| {{no}}|| {{yes}} || {{no}}
|-
| [[Ruby (programming language)|Ruby]] || 4
| {{no}}|| {{no}}|| {{no}}|| {{no}}|| {{no}}|| {{yes}}|| {{no}} || {{no}}|| {{yes}} || {{no}} || {{yes}}|| {{yes}}<ref group="a" name="class" /> || {{no}}|| {{no}}|| {{no}}|| {{no}}
|-
| [[Rust (programming language)|Rust]] (version 1.0.0-alpha) || 6
| {{yes}}<ref group="a" name="actor" /> || {{no}}|| {{no}}|| {{no}}|| {{no}}|| {{yes}}|| {{yes}}<ref>{{cite web|title=The Rust macros guide|url=http://doc.rust-lang.org/1.0.0-alpha/book/macros.html|website=Rust|accessdate=19 January 2015|ref=rust-macros}}</ref><ref>{{cite web|title=The Rust compiler plugins guide|url=http://doc.rust-lang.org/1.0.0-alpha/book/plugins.html|website=Rust|accessdate=19 January 2015|ref=rust-plugins}}</ref>|| {{yes}}<ref>[http://doc.rust-lang.org/1.0.0-alpha/reference.html#generic-functions The Rust Reference §6.1.3.1]</ref> || {{yes}}|| {{no}}|| {{no}}|| {{yes}}|| {{no}}|| {{no}}|| {{no}}|| linear, affline, and ownership types
Line 233:
| [[Visual Basic .NET]] || 6 (7)
| {{yes}}|| {{no}} || {{partial|Library}}<ref group="a" name="tpldf"/> || {{no}} || {{no}} || {{yes}} || {{no}} || {{yes}}|| {{yes}} || {{no}} || {{yes}}|| {{yes}}<ref group="a" name="class" />|| {{no}} || {{no}} || {{no}} || reactive<ref group="a" name="rx" />
|-
| [[Windows PowerShell]] || 6
| {{no}}|| {{no}} || {{no}}|| {{no}}|| {{no}}|| {{yes}} || {{no}}|| {{yes}} || {{yes}} || {{no}}|| {{yes}} || {{yes}}<ref group="a" name="class" /> || {{yes}}|| {{no}}|| {{no}}|| {{no}}
|