Comparison of multi-paradigm programming languages: Difference between revisions

Content deleted Content added
Citation bot (talk | contribs)
m Alter: title, template type. Add: date, title, isbn, pages, doi, chapter, chapter-url. Removed or converted URL. Converted bare reference to cite template. Formatted dashes. | You can use this bot yourself. Report bugs here. | User-activated.
Line 25:
* [[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 language|Visual programming]] – manipulating program elements graphically rather than by specifying them textually (e.g. [[Simulink]]); also termed ''diagrammatic programming''<ref>{{cite webbook |chapter-url=http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=381508 |titlechapter=Diagrammatic-graphical programming languages and DoD-STD-2167A |last=Bragg |first=S.D. |last2=Driskill |first2=C.G. |date=20–22 September 1994 |work=IEEEXplore |publisher=IEEE|doi=10.1109/AUTEST.1994.381508 |title=Proceedings of AUTOTESTCON '94 |pages=211–220 |isbn=978-0-7803-1910-3 }}</ref>
 
==Language overview==
Line 123:
|-
| [[Haskell (programming language)|Haskell]] || 8 (15)
| {{yes}}|| {{partial|Library}}<ref>[https://hackage.haskell.org/package/hswip Prolog embedding]</ref> || {{partial|Library}}<ref>[{{Cite web | url=https://wiki.haskell.org/Functional_Reactive_Programming] | title=Functional Reactive Programming - HaskellWiki}}</ref> || {{yes}}|| {{partial|Library}}<ref>[https://haskell-distributed.github.io/ Cloud Haskell]</ref>|| {{yes}} ([[lazy evaluation|lazy]]) || {{yes}}<ref>[{{Cite web | url=https://wiki.haskell.org/Template_Haskell] | title=Template Haskell - HaskellWiki}}</ref> || {{yes}} || {{yes}} || {{partial|Library}}<ref>[{{Cite web | url=https://hackage.haskell.org/package/logict] | title=Logict: A backtracking logic-programming monad}}</ref> || {{no}} || {{partial|Immutable}} || {{yes}} || {{yes}} || {{partial|Library}}<ref>[https://web.engr.oregonstate.edu/~erwig/HaskellRules/HaskellRules_June06.pdf]</ref> || {{yes|literate, reactive, dependent types (partial)}}
|- |
| [[Io (programming language)|Io]] || 4
Line 135:
|-
| [[Julia (programming language)|Julia]] || 9 (17)
| {{yes}} || {{partial|Library}}<ref>https://jump.readthedocs.io/en/latest/</ref> || {{partial|Library}}<ref>{{Cite web | url=https://github.com/MikeInnes/DataFlow.jl | title=Contribute to MikeInnes/DataFlow.jl development by creating an account on GitHub| date=2019-01-15}}</ref><ref>{{Cite web | url=https://github.com/JuliaGizmos/Reactive.jl | title=Reactive programming primitives for Julia. Contribute to JuliaGizmos/Reactive.jl development by creating an account on GitHub| date=2018-12-28}}</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>{{Cite web | url=https://github.com/abeschneider/PEGParser.jl | title=PEG Parser for Julia. Contribute to abeschneider/PEGParser.jl development by creating an account on GitHub| date=2018-12-03}}</ref><ref>{{Cite web | url=https://github.com/gitfoxi/Parsimonious.jl | title=A PEG parser generator for Julia. Contribute to gitfoxi/Parsimonious.jl development by creating an account on GitHub| date=2017-08-03}}</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)
|-
|[[Kotlin (programming language)|Kotlin]] || 8
Line 171:
|-
| [[Perl6]] || 10
| {{yes}}<ref>[https://docs.perl6.org/language/concurrency Channels and other mechanisms]</ref> || {{yes}}<ref>[{{Cite web | url=https://docs.perl6.org/type/Signature#Type_Constraints] | title=Class Signature}}</ref>|| {{yes}}<ref>[https://docs.perl6.org/routine/==%3E Feed operator]</ref>|| {{no}}|| {{partial|Library}}<ref>https://github.com/perl6/doc/issues/1744#issuecomment-360565196 Cro module</ref>|| {{yes}} || {{yes}}<ref>{{Cite web | url=https://perl6advent.wordpress.com/2011/12/14/meta-programming-what-why-and-how/ | title=Meta-programming: What, why and how| date=2011-12-14}}</ref>|| {{yes}}<ref>https://perl6advent.wordpress.com/2009/12/18/day-18-roles/ Parametrized Roles</ref>|| {{yes}} || {{no}}|| {{yes}}<ref>{{Cite web | url=https://docs.perl6.org/language/mop | title=Meta-object protocol (MOP)}}</ref>|| {{yes}}<ref>https://docs.perl6.org/language/classtut Classes and Roles </ref> || {{yes}}|| {{no}}|| {{no}}|| Multiple dispatch, lazy lists, reactive.
|-
| [[PHP]]<ref>[http://php.net/manual/en/index.php PHP Manual], [http://php.net/manual/en/language.functions.php Chapter 17. Functions]</ref><ref>[http://php.net/manual/en/index.php PHP Manual], [http://php.net/manual/en/language.oop5.php Chapter 19. Classes and Objects (PHP 5)]</ref><ref>[http://php.net/manual/en/index.php PHP Manual], [http://docs.php.net/functions.anonymous Anonymous functions]</ref> || 4
Line 227:
|-
| [[Tcl]] with Snit extension {{Citation needed|date=March 2007}} || 3
| {{no}} || {{no}} || {{no}} || {{no}} || {{no}} || {{yes}}<ref>{{cite web|title=Tcl Programming/Introduction|url=https://en.wikibooks.org/wiki/Tcl_Programming/Introduction#One_language.2C_many_styles|website=en.wikibooks.org|accessdate=22 October 2016}}</ref> || {{no}} || {{no}} || {{yes}} || {{no}} || {{no}} || {{yes}}<ref group="a" name="prototype" /><ref>{{cite web|title=TCLLIB - Tcl Standard Library: snitfaq:|url=http://tmml.sourceforge.net/doc/tcllib/snitfaq.html|website=sourceforge.net|accessdate=22 October 2016}}</ref> || {{no}} || {{no}} || {{no}} || {{no}}
|-
| [[Visual Basic .NET]] || 6 (7)