Programming Languages Aren’t

What is a programming language? The common definition generally only includes the syntax and semantics of, for lack of a better description, the “text” of a program. For instance, we think of languages as defining how variables are declared, how loops are specified, functions defined, if certain mechanisms like continuations or closures are first-class (or close to it), etc.

This definition fails to capture how the languages are really used, though. Just because a handy library is written in C++ doesn’t mean it will integrate nicely into my present C++ program. The reason is that it is the APIs that are the real language - not the obscure rules that define what a loop looks like or which characters are allowed in a variable name.

I realize this is a (potentially mis-informed) blog post (from my own blog, no less), but I'm not familiar enough with the research to know if this phenomenon has been widely studied or not. (And if so, where I can read more about it.)

In my experience, the integration of multiple libraries with different styles is one of the primary reasons large programs often devolve into an incomprehensible mess over time. It's not the only reason, of course, but I think it contributes - especially when some programmers on the team are more familiar with one library vs. another, etc.

What could be done in the context of a programming language to mitigate this? Or, what has been done? It doesn't seem like the mainstream languages are very good at keeping this problem at bay. (Or is it perhaps not a problem for anyone but me?)

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.


I'd look at the literature on "architectural mismatch," especially the papers of David Garlan (like this one).

Aside: Is it just me, or is the new citeseer totally unusuably slow? And it seems like now the old one is no good either? Anybody know what's going on with this?

Thanks - This at least gives

Thanks - This at least gives some more keywords to use as a basis for searching!

Or anything debating the

Or anything debating the difference between a language and a framework (or what a DSL is :).

On the analysis side, perhaps pattern mining (and, therefore, on the language side, pattern languages). Tim Mattson seems to be active in the latter for parallel systems.

Perhaps, if you can describe something with a stochastic grammar, and there are (abstract?) interpretations of it that are similar under some metric, it's a language ;-)