Probabilistic Programming with Infer.NET
Probabilistic Programming is a way of defining probabilistic models by overloading the operations in standard programming language to have probabilistic meanings. The goal is to specify probabilistic models in a compact manner for human communication and in a precise manner for automatic inference. A good overview of the research in this area was provided by the NIPS 2008 Workshop on Probabilistic Programming (opens in new tab).