Probabilistic models of human cognition have been widely successful at capturing the ways that people represent and reason with uncertain knowledge. In this talk I will explore the ways that this probabilistic approach can be applied to systematic and productive reasoning – in particular, natural language pragmatics and semantics. I will first describe how probabilistic programming languages provide a formal tool encompassing probabilistic uncertainty and compositional structure. I'll illustrate with a examples from inductive reasoning and social cognition. I will then present a framework for language understanding that views literal sentence meaning through probabilistic conditioning and pragmatic enrichment as recursive social reasoning grounded out in literal meaning. I will consider how this framework provides a theory of the role of context in language understanding, focusing on examples from implicature, vague adjectives, and figurative speech (hyperbole and irony).