  We propose design guidelines for a probabilistic programming facility
suitable for deployment as a part of a production software system. As a
reference implementation, we introduce Infergo, a probabilistic programming
facility for Go, a modern programming language of choice for server-side
software development. We argue that a similar probabilistic programming
facility can be added to most modern general-purpose programming languages.
  Probabilistic programming enables automatic tuning of program parameters and
algorithmic decision making through probabilistic inference based on the data.
To facilitate addition of probabilistic programming capabilities to other
programming languages, we share implementation choices and techniques employed
in development of Infergo. We illustrate applicability of Infergo to various
use cases on case studies, and evaluate Infergo's performance on several
benchmarks, comparing Infergo to dedicated inference-centric probabilistic
programming frameworks.
