squiggle/packages/website/docs/Overview.md
2022-07-27 16:54:25 -07:00

3.9 KiB

sidebar_position title
1 Overview

Squiggle is a minimalist programming language for probabilistic estimation. It's meant for intuitively-driven quantitative estimation instead of data analysis or data-driven statistical techniques.

The basics of Squiggle are fairly straightforward. This can be enough for many models. The more advanced functionality can take some time to learn.

Using Squiggle

You can currently interact with Squiggle in a few ways:

Playground
The Squiggle Playground is a nice tool for working with small models and making prototypes. You can make simple sharable links, but you can't save models that change over time.

Typescript Library
Squiggle is built using Rescript, and is accessible via a simple Typescript library. You can use this library to either run Squiggle code in full, or to call select specific functions within Squiggle (though this latter functionality is very minimal).

React Components Library
All of the components used in the playground and documentation are available in a separate component NPM repo. You can see the full Storybook of components here.

Visual Studio Code Extension
There's a simple VS Code extension for running and visualizing Squiggle code. We find that VS Code is a useful editor for managing larger Squiggle setups.

Squiggle Vs. Other Tools

What Squiggle Is

  • A simple programming language for doing math with probability distributions.
  • An embeddable language that can be used in Javascript applications.
  • A tool to encode functions as forecasts that can be embedded in other applications.

What Squiggle Is Not

Strengths

  • Simple and readable syntax, especially for dealing with probabilistic math.
  • Fast for relatively small models. Strong for rapid prototyping.
  • Optimized for using some numeric and symbolic approaches, not just Monte Carlo.
  • Embeddable in Javascript.
  • Free and open-source.

Weaknesses

  • Limited scientific capabilities.
  • Much slower than serious probabilistic programming languages on sizeable models.
  • Can't do Bayesian backwards inference.
  • Essentially no support for libraries or modules (yet).
  • Still very new, so a tiny ecosystem.
  • Still very new, so there are likely math bugs.
  • Generally not as easy to use as Guesstimate or Causal, especially for non programmers.

Organization

Squiggle is one of the main projects of The Quantified Uncertainty Research Institute. QURI is a nonprofit funded primarily by Effective Altruist donors.

Get started