Compilation Quotient (CQ): A Metric for the Compilation Hardness of Programming Languages

Fuente: arXiv
Guardado en:
Detalles Bibliográficos
Autores principales: Szabo, Violet, Winterer, Dominik, Su, Zhendong
Formato: Preprint
Publicado: 2024
Materias:
Acceso en línea:
Etiquetas: Agregar Etiqueta
Sin Etiquetas, Sea el primero en etiquetar este registro!
_version_ 1866914028138266624
author Szabo, Violet
Winterer, Dominik
Su, Zhendong
author_facet Szabo, Violet
Winterer, Dominik
Su, Zhendong
contents 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.
format Preprint
id arxiv_https___arxiv_org_abs_2406_04778
institution arXiv
publishDate 2024
record_format arxiv
spellingShingle Compilation Quotient (CQ): A Metric for the Compilation Hardness of Programming Languages
Szabo, Violet
Winterer, Dominik
Su, Zhendong
Programming Languages
Software Engineering
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.
title Compilation Quotient (CQ): A Metric for the Compilation Hardness of Programming Languages
topic Programming Languages
Software Engineering
url https://arxiv.org/abs/2406.04778