18

Programming languages are formal languages, but unlike many formalisms, they also have certain inherent meaning defined by their operational semantics, or, in the case of markup languages, presentation semantics. And programming languages, though indeed formal, are very similar to natural languages, in terms of the communication they allow.

While the development of programming languages is artificial, the natural-language processes of evolution, borrowing, intermixing, and mutation all have fairly clear artificial counterparts. So I'm wondering: has there ever been any large-scale, in-depth research into the evolution and behaviour of programming languages from a linguist's perspective ?

Jon Purdy
  • 20,597

3 Answers3

6

Remember that formal grammars, without which modern programming could not be, are the product of the research of the linguist Noam Chomsky.

A car accident kept me from finishing a graduation thesis on the subject you ask about, so there's no references I can give you, only an opinion.

Spoken languages evolve at any speed depending on the context, and they do so in ways unpredictables as the unpredictable human contexts. The outcome of WW2 had huge effects on the Japanese language. British, Australians, South Africans, and North Americans don't quite speak the same language. The use of verb declinations among what used to be Spanish colonies has become quite different after two hundred years of independence (the ex-colonies think that the Spanish of Spain is archaic).

Just the force of efficiency over phonetics makes the different words used with different frequencies on different regions be pronounced differently: very common words are skimmed, or misspelled, and less common ones are stated as accurately as possible.

Natural languages, with their variations, nuances, and evolution are not apt for the determinism we demand of computers. (Gee! Given the commonality of misinterpretations and second-interpretations, it seems that they're not apt even for the simplest interactions among humans [refraining from quoting jokes about what girl/boy-friend says and what it really means])

Apalala
  • 2,283
4

I re-read the question, and I think my original answer didn't address it. Here's another try.

No, there has not been any serious research about programming language linguistics I'm aware of. There have been language lineages traced for two main branches and a subbranch:

For those of us with decades in the field it is obvious that programing languages have interbred, and that thus one finds most aspects of any pure paradigm in most modern programming languages, the now called multiparadigm programming languages: C#, Python, Java, .... Even previously pure functional languages like OCaml and Haskell include enough procedural (through monads) and OO features to let you do anything.

What has happened, I think, is that it became obvious that it was costly (when not silly) to have to switch programming languages just to be able to apply a the right paradigm to a given subproblem.

There remains an exception to the trend in the area of highly parallel and asynchronous systems. There the preferred languages are strictly functional, like Erlang, probably because it is easier to think about such complex systems functionally.

The non-paradigmatic part of the evolution has been on syntax. Languages that encouraged or even allowed cryptic programs have become less and less used (APL, AWK, and even Perl and LISP). The dominating syntaxes today are those of more readable (as opposed to easily writable) languages like C (C++, C#, Java, Objective-C, Scala, Go, IML, CSS, JavaScript, and also Python), Pascal (Fortran 90+x), Smalltalk (Ruby), ML/Miranda (OCaml, Haskell, Erlang), and SGML (HTML, XML).

This diagram is not completely accurate, and it is not up to date, but it gives a good idea of how much programming languages have converged since the language-per-site era of the 1970's.

programming language evolution

Apalala
  • 2,283
2

I like @Apalala's answers, which appear to show a convergence to a few major general-purpose languages. That only makes sense, since a good idea in one can sooner or later be picked up by the others.

What I would add is that whenever one is using a language, they are necessarily extending it, by adding terms, transforming it into a language more oriented to the domain at hand. Sometimes this is fairly straightforward, sometimes not. Here's an example that was not so straightforward.

A property I appreciate in a general purpose language is the extent to which it assists in the definition of new domain-specific languages.

Mike Dunlavey
  • 12,905