Probabilistic programming: Difference between revisions

Content deleted Content added
Probabilistic programming languages: Updated the list of PPLs to reflect languages that are actively maintained or are historically important
Tags: Reverted references removed
Reverted 1 edit by Grayson642 (talk): Broke numerous WP:CITE
Line 26:
 
== Probabilistic programming languages ==
PPLs often extend from a basic language. The choice of underlying basic language depends on the similarity of the model to the basic language's [[Ontology (information science)|ontology]], as well as commercial considerations and personal preference. For instance, Turing.jlDimple<ref name="TuringjlDMPL"/> isand Chimple<ref name="CHMPL"/> are based on [[JuliaJava (programming language)|JuliaJava]], [[Infer.NET]] is based on [[.NET Framework]],<ref name="INFET"/> while PRISM extends from [[Prolog]].<ref name="PRISM"/> However, some PPLs, such as [[WinBUGS]], offer a self-contained language, that maps closely to the mathematical representation of the statistical models, with no obvious origin in another programming language.<ref name="BUGS"/><ref name="Stan"/>
 
The language for WinBUGSwinBUGS was implemented to perform Bayesian computation using Gibbs Sampling (and related algorithms). Although implemented in a relatively unknown programming language (Component Pascal), this language permits [[Bayesian inference]] for a wide variety of statistical models using a flexible computational approach. The same BUGS language may be used to specify Bayesian models for inference via different computational choices ("samplers") and conventions or defaults, using a standalone program WinBUGSwinBUGS (or related R packages, rbugs and r2winbugs) and JAGS (Just Another Gibbs Sampler, another standalone program with related R packages including rjags, R2jags, and runjags). More recently, other languages to support Bayesian model specification and inference allow different or more efficient choices for the underlying Bayesian computation, and are accessible from the R data analysis and programming environment, e.g.: [[Stan (software)|Stan]], NIMBLE and NUTS. The influence of the BUGS language is evident in these later languages, which even use the same syntax for some aspects of model specification.
 
Several PPLs are in active development, including some in beta test. Two popular tools are Stan and [[PyMC]].<ref>{{Cite web|url=http://blog.fastforwardlabs.com/2017/01/30/the-algorithms-behind-probabilistic-programming.html|title=The Algorithms Behind Probabilistic Programming|access-date=2017-03-10}}</ref>
Line 55:
|-
| Bean Machine<ref name="beanmachine"/> || |[[PyTorch]] || [[Python (programming language)|Python]]
|-
| CuPPL<ref name = "CuPPL"/> || NOVA<ref name="nova"/> ||
|-
| Venture<ref name="Venture"/> || [[Scheme (programming language)|Scheme]] || C++
|-
| Probabilistic-C<ref name="Probabilistic-C"/> || [[C (programming language)|C]] || C
|-
| Anglican<ref name="Anglican"/> || [[Clojure]] || Clojure
|-
| IBAL<ref name="IBAL"/> || [[OCaml]] ||
|-
| BayesDB<ref name="BAYESDB"/> || [[SQLite]], [[Python (programming language)|Python]] ||
Line 63 ⟶ 71:
|-
| [[Infer.NET]]<ref name="INFET"/> || .NET Framework || .NET Framework
|-
| dimple<ref name="DMPL"/> || [[MATLAB]], [[Java (programming language)|Java]] ||
|-
| chimple<ref name="CHMPL"/> || MATLAB, Java ||
|-
| BLOG<ref name="BLOG"/> || Java ||
|-
| diff-SAT<ref name="diff-SAT"/> || [[Answer set programming]], [[Boolean satisfiability problem|SAT (DIMACS CNF)]] ||
Line 70 ⟶ 84:
| BUGS<ref name="BUGS"/> || ||Component Pascal
|-
| FACTORIE<ref name="FACTORIE"/> || [[Scala (programming language)|Scala]] ||Scala
|-
| PMTK<ref name="PMTK"/> || MATLAB || MATLAB
|-
| Alchemy<ref name="Alchemy"/> || [[C++]] ||
|-
| Dyna<ref name="Dyna"/> || [[Prolog]] ||
|-
| Figaro<ref name="Figaro"/> || Scala ||Scala
|-
| [[Church (programming language)|Church]]<ref name="Church"/> || Scheme || Various: JavaScript, Scheme
|-
| [[ProbLog]]<ref name="ProbLog"/> || Prolog ||Python
Line 85 ⟶ 107:
|-
| ProbCog<ref name="ProbCog"/> || || Java, Python
|-
| Gamble<ref name="Gamble"/> || || Racket
|-
| PWhile<ref name="PWhile"/> || While || Python
|-
| Tuffy<ref name="Tuffy"/> || || Java
|-
|-Pomegranate || Python || Cython
Line 104 ⟶ 132:
|-
| WebPPL<ref name="WebPPL"/>||JavaScript||JavaScript
|-
|Let's Chance<ref>{{Cite book|title=Let's Chance: Playful Probabilistic Programming for Children {{!}} Extended Abstracts of the 2020 CHI Conference on Human Factors in Computing Systems|url=https://dl.acm.org/doi/abs/10.1145/3334480.3383071|access-date=2020-08-01|website=dl.acm.org|series=Chi Ea '20|date=April 25, 2020|pages=1–7|language=EN|doi=10.1145/3334480.3383071|isbn=9781450368193|s2cid=216079395}}</ref>
|Scratch
|JavaScript
|-
| Picture<ref name="kurzweilai"/>
Line 113 ⟶ 145:
| Julia
|-
| Gen<ref>{{Cite web|url=https://wwwprobcomp.gengithub.devio/Gen/|title=Gen: A General Purpose Probabilistic Programming Language with Programmable Inference|access-date=20242019-06-1117}}</ref>
| [[Julia (programming language)|Julia]]
| [[Julia (programming language)|Julia]]
|-
|-
| Low-level First-order PPL<ref name="LFPPL"/> || Python, Clojure, Pytorch || Various: Python, Clojure
|-
|Troll<ref name="Troll"/>
|
|Moscow ML
|-
|Edward<ref>{{Cite web|url=http://edwardlib.org/|title=Edward – Home|website=edwardlib.org|access-date=2017-01-17}}</ref>
Line 125 ⟶ 164:
|Python
|-
|Edward2<ref>{{Cite web|url=https://github.com/googletensorflow/probability/tree/master/tensorflow_probability/python/edward2|title='Edward2' TensorFlow Probability module|website=GitHub|language=en|access-date=20242018-0610-1102}}</ref>
|TensorFlow Probability
|Python
Line 136 ⟶ 175:
|[[Google JAX|JAX]]
|Python
|-
|Saul<ref>{{Cite web | url= https://cogcomp.org/page/software_view/Saul|title=CogComp - Home}}</ref>
|Scala
|Scala
|-
|RankPL<ref>{{Citation|last=Rienstra|first=Tjitze|title=RankPL: A qualitative probabilistic programming language based on ranking theory|date=2018-01-18|url=https://github.com/tjitze/RankPL|access-date=2018-01-18}}</ref>
|
|Java
|-
|Birch<ref>{{Cite web|url=http://birch-lang.org/|title=Probabilistic Programming in Birch|website=birch-lang.org|access-date=2018-04-20}}</ref>