  Today's programmers can choose from an exceptional range of programming
languages, each with its own traits, purpose, and complexity. A key aspect of a
language's complexity is how hard it is to compile programs in the language.
While most programmers have an intuition about compilation hardness for
different programming languages, no metric exists to quantify it. We introduce
the compilation quotient (CQ), a metric to quantify the compilation hardness of
compiled programming languages. The key idea is to measure the compilation
success rates of programs sampled from context-free grammars. To this end, we
fairly sample over 12 million programs in total. CQ ranges between 0 and 100,
where 0 indicates that no programs compile, and 100 means that all programs
compile. Our findings on 12 popular compiled programming languages show high
variation in CQ. C has a CQ of 48.11, C++ has 0.60, Java has 0.27 and Haskell
has 0.13. Strikingly, Rust's CQ is nearly 0, and for C, even a large fraction
of very sizable programs compile. We believe CQ can help understand the
differences of compiled programming languages better and help language
designers.
