“Why have we not been reliably able to improve on C?” Rabkin asks. Part of the problem, he says, is that language designers don’t always have practical objectives. “There’s a tendency in academics of trying to solve a problem when no one actually ever had that problem,” said Rabkin, who recently received his computer science PhD at Berkeley and is now at Princeton working on a post-doc.

He says that academics are so often determined to build a language that stands out from the crowd, without thinking about what’s needed to actually make it useful. In some cases, he says, they fail with the simplest of things, like documentation for their language. In other cases, he says, designers will keep adding new features to a language and effectively overload the engineers who are trying to use it.

“Maybe the solution isn’t entirely technical,” Meyerov says. “We need to start building more ‘socially aware’ languages.”