
Anglican: A Probabilistic Programming System - espeed
https://probprog.github.io/anglican/index.html
======
dtolpin
I am the author of the most of current Anglican code base. Anglican's name
indeed comes from the Church of England, Church being the name of an
influential probabilistic programming language
[https://cocolab.stanford.edu/papers/GoodmanEtAl2008-Uncertai...](https://cocolab.stanford.edu/papers/GoodmanEtAl2008-UncertaintyInArtificialIntelligence.pdf)
. Frank Wood, the inventor of Anglican, moved to Oxford from the US and the
name reflects the move.

Clojure was chosen because it was a modern lisp which was apparently easy to
deploy (leveraging the JVM). That choice was given to me (I learned Clojure to
join, but new Common Lisp well before). Original Anglican syntax was Scheme-
like, for Church compatibility, but we switched to Clojure syntax later.

Anglican has been a platform for a number of research projects (and some
practical applications). Now Anglican is in dire need of new maintainers or it
will stagnate (I am not working on Anglican code base anymore, doing other
things: [http://infergo.org](http://infergo.org) among others). One low-
hanging fruit which unfortunately refuses to fall is automatic
differentiation.

------
nafizh
Anyone interested in learning probabilistic programming, this is a great book
that has integrated code written in WebPPL.

[https://probmods.org/](https://probmods.org/)

~~~
dtolpin
Another book from the same source:

[http://dippl.org/](http://dippl.org/)

------
mrcactu5
why did they pick Clojure to do probabilistic programming?

btw, Python programmers have the option of pymc3
[https://docs.pymc.io/](https://docs.pymc.io/)

~~~
nerdponx
Why not? I think lisps could use a visibility boost in the various data
sciences. Also probabilistic programming tends to be highly declarative, which
works well in a language family where "code is data" is a core philosophy.

At first glance, maybe Common Lisp would have made more sense. As far as I'm
aware, the CFFI is pretty good, which means you can interact with other
machine learning code that is largely written in C under the hood.

That said, there is a mature machine learning ecosystem for the JVM, not to
mention the prospect of running massive probabilistic models on Yarn or Spark.

By the way, there are many probabilistic programming languages in addition to
PyMC3. There are Stan, Edward, Pyro (fairly new), and even the venerable
BUGS/JAGS.

~~~
dtolpin
One advantage of Clojure compared to Common Lisp is very well implemented
parallelism and corresponding functional data structures. Something which is
hard to find for Common Lisp implementations.

------
xvilka
There are also WebPPL[1] and ProbLog[2].

[1] [http://webppl.org/](http://webppl.org/)

[2]
[https://dtai.cs.kuleuven.be/problog/](https://dtai.cs.kuleuven.be/problog/)

------
hprotagonist
It took me a second to figure out why they chose their project name. Clever.

(edit: maybe not? The good reverend was not CofE)

~~~
tmalsburg2
I don't know what CofE is but always assumed that they named it Anglican in
reponse to Church.

~~~
joshuacc
CofE is an abbreviation for the Church of England (parent church of the
Anglican Communion).

