Finding and Fixing Standard Misconceptions About Program Behavior

A large number of modern languages — from Java and C# to Python and JavaScript to Racket and OCaml — share a common semantic core:

Read more…

Privacy-Respecting Type Error Telemetry at Scale

Thesis: Programming languages would benefit hugely from telemetry. It would be extremely useful to know what people write, how they edit, what problems they encounter, etc. Problem: Observing programmers is very problematic. For students, it may cause anxiety and thereby hurt their learning (and grades). For professionals too it may cause anxiety, but it can also leak trade secrets.

Read more…

Profiling Programming Language Learning

Programmers profile programs. They use profiling when they suspect a program is not being as effective (performant) as they would like. Profiling helps them track down what is working well and what needs more work, and how best to use their time to make the program more effective.

Read more…

The Examplar Project: A Summary

For the past several years, we have worked on a project called Examplar. This article summarizes the goals and methods of the project and provides pointers to more detailed articles describing it.

Read more…

A Core Calculus for Documents

Document languages like Markdown, LaTeX, PHP, and Liquid are widely used to generate digital documents like PDFs and web pages. Document languages often come with programming features like variables and macros to help authors write complex documents. However, these document programming features are often designed or implemented in problematic ways, especially by the standards of a modern programming language. For example:

  • LaTeX’s macro system is not hygienic, which can cause macro arguments to conflict with a macro body.
  • PHP’s templating system relies on mutating a global output buffer, which means document fragments are not first-class values.
  • Liquid’s variable system provides a small and fixed set of data types, which limits the expressiveness of computations.
Read more…