Historical or sociological studies of programming language evolution?

I have been reading Ostler's "Empires of the Word: A Language History of the World" with an eye towards making analogies between the spread and evolution of natural languages with engineered computer ones. While we prefer to discuss languages here based on 'technical' merits within the language (e.g., ability to reason about programs, performance and implementation implications, etc.), I'm curious about more contextual social factors. For example, one way to explain the creation of FrTime's variant of data flow / FRP is that Greg Cooper was a member of the PLT Scheme community (so it is Scheme based and has side effects), previously worked in embedded systems (so it emphasizes glitch-freedom), and is a member of the PL community / an hour or two from Yale (so influenced by Haskell-style FRP). As another, the recent discussion on LtU about the matlab vs S/R vs python for statistics ultimately was more about communities than technical merit, suggesting the human / societal / cultural element of language use is fundamental to the success of a programming language in terms of penetration.

I'm wondering if anyone has suggestions on papers or studies in a similar vein. For example, what was the canonical source breaking down 'generations' of language (first gen, second gen, etc.)? I think there was a neat diagram floating around the web showing a basic parent-child relationship between languages over time. Another relevant one (I believe in CTM) is Peter van Roy's language spectrum focusing on relationships between languages based on features. Another obvious relevant source is History of Programming Language style articles about the inception of particular languages. Paper citation chains hint at time and geographic relationships. If there happen to be linguists around, sharing reading lists about the natural language side of things as I break into this could be fun too :)

Comment viewing options

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

You can also analyze

You can also analyze language relationships based on the relationships of their primary authors. If someone worked for another language designer before, there is a strong bet that their language is influenced by that someone's language. Or was someone a teacher of someone else, or did the school have a particular culture (e.g., an MIT scheme bias)?

But I think this is true in any field of craft or research. A programming language is not any different from any other tool in this regard. I don't believe there is any naturalistic linguistic evolution going on, as programming languages themselves are fairly brittle and are evolved with consider intentional effort. If you buy that a program encodes its own unique language, then this language would evolve over time as the programmer gains experience and is influenced by interactions with others. But because programs are meant to be communicative, I don't think a kind of community-shared lingo would evolve from that.

You can also analyze

You can also analyze language relationships based on the relationships of their primary authors. If someone worked for another language designer before, there is a strong bet that their language is influenced by that someone's language. Or was someone a teacher of someone else, or did the school have a particular culture (e.g., an MIT scheme bias)?

Yes. More generally, a relevant phenomena is the benevolent dictator / original driving force, and thus we can focus on the environment of the core language designer(s). Their industry, their location, their education, etc. In the long term, I'm hoping to make some basic statistical models about this to tease out a better understanding.

as programming languages themselves are fairly brittle and are evolved with consider intentional effort.

The brittleness makes life easier for parts of an analysis -- languages even have names, major/minor version numbers, documentation, and, increasingly, online source repositories! (the spread of the internet does likely complicate the study of PL evolution, with analogous to democratization and homogenization happening in language, e.g., TV, and perhaps also a diversification/specialization effect as it has for research and subcultures)

I don't believe there is any naturalistic linguistic evolution going on

There is clearly evolution occurring. Why languages being artificial does not imply an underlying naturalistic process is not obvious to me. Perhaps this is just a matter of terminology. I don't know yet; furthermore, one related/symbiotic component that I'm equally interested in is language spread. While the same language may spread to another group (python to scientists), it may also evolve as part of the spread (S became R) and generally does. I suspect the accessibility of language creation and that popularly used languages are from practitioners (myth?) means that (academic) design principles are eschewed and makes notions like dialects/trends common.

There are some interesting analogues in vectors for spread. For example, trade and economy are big incentives for language adoption (and simplification): Microsoft's and Sun's approach to language, and the current 'Java' generation, are screaming examples. The association of language with cultural identity (e.g., counter culture) is a common motif in 'startup' languages (big time in Ruby/Python) and to an extent in Schemes/MLs.

Anyways, I'm trying to avoid making conclusions. I want to build up a dataset on languages and understand the linguistics/sociology side of things, and was wondering if there was anyone in the LtU audience familiar with interesting/relevant studies in either. I don't think I'm the only curious about more rigorous analyses for these questions :)

My point was that you could

My point was that you could substitute "programming language" for architecture, writing style, bridge building technique, physics theories, etc...and nothing really changes. People design stuff (or create ideas) based on the designs/ideas they've been exposed to on the past (from other people). This influence leads to evolution of ideas, possibly different schools of thoughts, or occasionally, a revolution in thinking.

In general, I agree. For

In general, I agree. For example, while reading "The Tipping Point" (Malcom Gladwell's pop science), I often thought about insights into the spread of PLs.

Looking for analogies in natural language spread is appealing for two basic reasons: 1) it has been studied as a science and 2) programming languages can be viewed as special forms of written languages (so specialized observations might be more easily translatable between domains).

Obviously the scientific method, perspiration, inspiration, randomness, etc. are paramount at a fine-grained level, but I'm looking for tools for analyzing what's going on at a societal/communal level. Another relevant topic is something like the science of science/research (e.g., all that citation graph business) and the trend in social network analysis... but I think these are less related to the understanding of the rise (and fall) of popularly used PLs. E.g., an ideal outcome for me would be something similar to an econometrics model, though, as a starter, I'm happy to just come out with some basic relevant principles or a taxonomy that correlates/covers the past history.

To be clear, I don't think there's anything too relevant about the contents of languages when analyzing their evolution/spread, and most linguists would agree. That hasn't stopped them from studying the topic and I suspect their studies are the best starting point. Stuff like syntactic or grammatical change/replacement/assimilation are interesting, but the understanding of why the evolution/spread occurred is more of a historical question (geography, politics, immigration, economics, cultural, technology, etc.) and using the lens of language is even an interesting way to understand history.

PL has a big engineering component, which is where I think the analogy really breaks down (and which you alluded to). I'm not sure what the implications are... but I need to start somewhere :) I'm not too worried about it atm: the engineering side might be reduced to a catalyst of change from the linguistic perspective.

Weak analogy

Looking for analogies in natural language spread is appealing for two basic reasons: 1) it has been studied as a science and 2) programming languages can be viewed as special forms of written languages (so specialized observations might be more easily translatable between domains).

There certainly is an extensive literature on language spread, but there are some key differences between PLs and HLs (human languages) that make the analogy a weak one:

  • With PLs, no one really has a "native language". They are all learned second languages. Moreover, it is very hard to fake speaking an HL natively, but this notion doesn't really apply to PLs.
  • Learning a new HL is expensive, and if possible, most people will avoid learning any more new ones than they have to. With PLs there is very little cost to learning the basics of a new one, and it is fairly easy (as many on LtU can attest) to understand dozens of PLs well enough to use.
  • PLs don't have stable social groupings and social functions associated with them. For example, not that long ago, doing Web programming meant knowing Perl, but now Web development is done in almost any language.

The biggest driving forces for PL adoption I can think of run are fairly marginal for HLs: the "hot new thing" syndrome and "elites that no one wants to join" syndrome. (I think everybody knows which languages fit in each category ;-))

In HLs, both of these are marginal phenomena.

The closest thing to "the hot new thing" in HLs is knowing the latest slang from youth culture. Most such slang doesn't not make a lasting impression on language, since its whole raison d'être is to make it hard for adults to fake it, so it has to change frequently in subtle ways.

The only "HL" analog I can think of at the moment for "elites no one wants to join" is learning Klingon.

So overall, I'd say if you were serious about studying the sociolinguistics of PLs, it would be useful to have a grounding in HL sociolinguistics, but many of the basic mechanisms and circumstances of language diffusion for the two are just not the same, and in the end you would have to end up with radically different theories.

With PLs, no one really has

With PLs, no one really has a "native language".

I disagree, but neither of us has proof. Also, I'm not sure if you're distinguishing between primary and native. E.g., Russian was my first language but I now think in American English 100% of the way.

Perhaps you mean we can be 'native' speakers of multiple PLs at the same time. I'm not sure, nor about the implications of this statements. Anyways, this is second-order nitpicking which suggests the analogy is fruitful.

They are all learned second languages.

You need to learn one first, so no.

With PLs there is very little cost to learning the basics of a new one, and it is fairly easy (as many on LtU can attest) to understand dozens of PLs well enough to use.

I disagree. The cost is different from HLs, which changes the dynamics, but arguing that LtUers are proficient in multiple languages leading to everyone being easily multiPLigual is akin to folks on the language log being multilingual suggesting the the average person should be multilingual.

The biggest driving forces for PL adoption I can think of run are fairly marginal for HLs: the "hot new thing" syndrome and "elites that no one wants to join" syndrome.

First, there are analogues to this in HL learning (e.g., kids learning Japanese to watch cartoons). Second, I don't think culture / entertainment is the driving force for most programmers (who likely don't do it for excessive fun anymore).

As for 'elites', there's always Latin and, for English speakers, Mandarin ;-)

HLs and PLs are clearly distinct, but responses like the ones in this thread that seriously discuss it suggest 1) our understanding of the spread and evolution of PLs from a non-technical level is ungrounded and 2) the analogy is surprisingly effective. As a starting point for understanding the social side of PLs, I'm becoming more convinced that the linguistics side of things is the place to understand first. I agree -- I'd be surprised if the theories didn't deviate. However, standing on the shoulders of giants, etc.

Perhaps you mean we can be

Perhaps you mean we can be 'native' speakers of multiple PLs at the same time. I'm not sure, nor about the implications of this statements. Anyways, this is second-order nitpicking which suggests the analogy is fruitful.

Let's me put it to you like this: language involves two people speaking, who you talk to and who talks to you will influence your dialect and the words you use. Actually, their is a feedback loop, because you will also influence the people you speak to. Hence we have language evolution.

Now, a programming language is designed by the preferences of a designer and perhaps the preferences of a community, but it doesn't evolve in any way similar to a natural language because...the computer doesn't talk back and adapt its understood language with respect to that of the programmer. No natural evolution occurs, and we can only look back on experience in communication and design something "better" periodically (same with designing a better bridge).

HLs and PLs are clearly distinct, but responses like the ones in this thread that seriously discuss it suggest 1) our understanding of the spread and evolution of PLs from a non-technical level is ungrounded and 2) the analogy is surprisingly effective. As a starting point for understanding the social side of PLs, I'm becoming more convinced that the linguistics side of things is the place to understand first. I agree -- I'd be surprised if the theories didn't deviate. However, standing on the shoulders of giants, etc.

If you take some linguistics classes...say on 2nd language acquisition, I think you'd see differently. For PLs at least, the fact that they are communicative to computers and not to humans means that they are optimized for expressing computations, and pretty much aren't natural. If you designed a PL that was designed to express ideas/algorithms to other programmers, we'd be having a different discussion.

Let's me put it to you like

Let's me put it to you like this: language involves two people speaking, who you talk to and who talks to you will influence your dialect and the words you use. Actually, their is a feedback loop, because you will also influence the people you speak to. Hence we have language evolution.

While there is the romantic image of the lone hacker, most developers do not live in a vacuum. Open source, peers, compilers, APIs, teams, blogs, etc. Informal 'patterns languages' (a la GoF) are a wonderful example of this.

PLs at least, the fact that they are communicative to computers and not to humans means that they are optimized for expressing computations, and pretty much aren't natural

I don't know where this is coming from -- most time spent with code is in reading it.

Anyways, going further in this thread doesn't seem appropriate as there is no quantitative or technical basis to most of the discussion here. I'll dredge it back up once/if I understand more. Good to see it did prompt reactions (even if not the ones I was hoping for).

While there is the romantic

While there is the romantic image of the lone hacker, most developers do not live in a vacuum. Open source, peers, compilers, APIs, teams, blogs, etc. Informal 'patterns languages' (a la GoF) are a wonderful example of this.

Yes, but I'm not communicating to other people in Scheme. I'm more likely to communicate to someone using a social coding site like github.

I don't know where this is coming from -- most time spent with code is in reading it.

Again, see Elisa's paper. It is very relevant.

Anyways, going further in

Anyways, going further in this thread doesn't seem appropriate as there is no quantitative or technical basis to most of the discussion here. I'll dredge it back up once/if I understand more. Good to see it did prompt reactions (even if not the ones I was hoping for).

Since I mentioned it in another thread, I think you'll really like Everett Rogers' Diffusion of Innovation. It is the second most cited sociology studies book, ever.

Just got it, thanks!

Just got it, thanks!

A Traveller's Report

I disagree, but neither of us has proof.

On the contrary, there is quite a lot of evidence for the phenomenon of "native languages", including an indication that they are processed differently in the brain. I'm pretty confident that no programming language will be shown to have an analogous role in the brain; our brain hasn't had time to evolve for programming.

|They are all learned second languages.
You need to learn one first, so no.

I was speaking relative to one's native HL, not a first PL.

Anyways, this is second-order nitpicking which suggests the analogy is fruitful.

I'm not trying to blindly discourage you, there may still be insights to be gleaned in the analogy. However, this is a question that has been considered before (and which we've discussed in various ways here over the years). I personally have an academic background in Linguistics, was particularly interested in language change and diffusion, and have also studied PLs for a long time. So the question of how HLs and PLs are similar and different has crossed my mind a few times.

I'm pretty confident is not proof

Besides, how many times have you heard someone say that learning some form of Lisp (or more recently: Haskell) has changed the way they approach problems in all programming languages?

Edited for a mistake.

I'm pretty confident that no

I'm pretty confident that no programming language will be shown to have an analogous role in the brain; our brain hasn't had time to evolve for programming.

Do you think PLs use similar regions of the brain as HLs? Given the specialization of the brain, it's hard for me not to at least at a superficial level (reading, writing, SLA quirks). Have you ever seen sources about this or measured your bias against it?

Anyways, I think this is a red herring for the topic. First, a neuro basis doesn't seem essential. Second, theories about second language acquisition are probably relevant to our individual ability to learn and use multiple languages, but I suspect they're only one of many factors in the diffusion of languages throughout pockets of society.

owever, this is a question that has been considered before (and which we've discussed in various ways here over the years). I personally have an academic background in Linguistics, was particularly interested in language change and diffusion, and have also studied PLs for a long time. So the question of how HLs and PLs are similar and different has crossed my mind a few times.

And you're exactly the type of person I was hoping to respond :) Instead of hunches and discussion, I'm asking for references (positive or negative) that has led us (to or away) from the analogy. Over the years, I've looked at a variety of cog/neuro sci topics (enough to not connect them to my PL interests), but am a very much a baby to linguistics, syntactic or social (the latter of which, in contrast, from what I've seen on this question, seems very relevant).

Be careful

Do you think PLs use similar regions of the brain as HLs?

Don't conflate mathematical models. There is a task model, i.e., using fMRI, How is bloodflow in the brain affected by solving Tower of Hanoi, and there is a longitudinal skill acquisition model, i.e., can we see regression or improvement of activity in brain regions over time using PET imaging; PET is traditionally used to model whether a drug abuser has 'recovered' from addiction or if a drug has normalized a pathology, and has not been used much to study longitudinal skill acquisition, in part because human research studies are expensive and that equates to 1. funding from drug companies 2. successful studies the FDA likes 3. ??? 4. PROFIT [Edit: I forgot to state that PET imaging is a little trickier than fMRIs due to the introduction of radiotracers and requirement of head stability to pinpoint the origin of a positron-emitting nucleotide, given crystal detecting the gamma rays; although some new fancy techniques try to correct for head movement and suchlike stuff.]

Also, eye scanning study movements show programmers read code differently from written word; the free book Best Kept Secrets of Peer Code Review discusses the impact this has on peer review within a programming language, for languages with mutable references (IMHO, an important distinction not highlighted directly by the authors).

[Edit: Jon Fincham, one of the authors of the Tower of Hanoi paper, has a number of neat studies on brain activity during computer tasks, and if you follow a correlation, you'll notice John R. Anderson as well... (his thesis advisor)]

A potted summary

I'm asking for references (positive or negative) that has led us (to or away) from the analogy.

If you want to get a feel for the basics, any intro sociolinguistics text will get your feet wet (there seem to be be a LOT in print these days).

Very generally, people learn a language to either have membership in or access to the community that uses that language. At this level, I think this works pretty well for PLs too.

But this is why I think the "native language" issue makes a difference: HLs usually rise on the back of the prestige or advantages of their native speakers. The fact that people don't change their native language (at least not easily) gives this change some staying power.

Take the familiar example of English as a world lingua franca, especially in science. It acquired this role because its native speakers had enough political and economic power (and enough scientific funding) that it was worth the effort for non-native speakers to learn it and so to have access to that community. This created an even bigger second language community that reinforced the utility of the language as an access medium. The case of Latin shows that this phenomenon has some staying power, so much so that it can last long after the native speakers are gone.

With PLs on the contrary, individuals and whole communities can abandon their old language for a new one with a relatively short investment, and you get more volatility. Moreover, it is much easier to have "full membership" in multiple communities; no one is going to snub you from a party invitation because you are "hard to understand" in the community's PL.

Moreover, with PLs it seems to be the language itself that has the prestige or advantage, since "elite speakers" of old languages often have to switch as the languages in fashion change. For example, the shift from C++ to Java, or from Visual Basic to C#.

This crucial difference of the mechanism and cost of change suggests that a study of fashions, fads and technology diffusion would be a better analog than HL diffusion when it comes to PLs.

Citation???

Take the familiar example of English as a world lingua franca, especially in science. It acquired this role because its native speakers had enough political and economic power (and enough scientific funding) that it was worth the effort for non-native speakers to learn it and so to have access to that community. This created an even bigger second language community that reinforced the utility of the language as an access medium. The case of Latin shows that this phenomenon has some staying power, so much so that it can last long after the native speakers are gone.

Citation, please.

From what I've heard, English is the superior technical language and its structure makes expressing scientific thought easier than in other languages.

Likewise, there are "romance" languages: Buon giorno, principessa!

I don't have citations myself, but I would be interested to know where you came up with the idea that political and economic power led to English dominance.

This crucial difference of the mechanism and cost of change suggests that a study of fashions, fads and technology diffusion would be a better analog than HL diffusion when it comes to PLs.

I am highlighting this, because I think this is your key point (and rests above the details I am picking at in this thread). Leo should therefore pay most attention to this point; the key question is, What do we gain by making an analogue between HL and PL? I think there is a LOT of indirectly interesting work here. For example, Harvard's Architectural Studies research program is looking into "algorithmic architecture", and AI researchers like Luc Steels are coming up with models for allowing robots to create languages; there are some LtU users, such as J Storrs Hall, who think this is the future. Hall even wrote a book about this stuff recently called Beyond AI.

Moreover, with PLs it seems to be the language itself that has the prestige or advantage, since "elite speakers" of old languages often have to switch as the languages in fashion change. For example, the shift from C++ to Java, or from Visual Basic to C#.

In my books, what makes switching difficult is semantics and pragmatics, not syntaxis. This means that languages can on the surface look alike and familiar, but actually have totally different meanings, and how those meanings are exploited tend to vary on context to the task... in particular, in C++ you might use Walter Bright's Name Value Optimization in order to release register pressure but not so in Java. Languages in use today do not make all three of these first-class. Ian Puimarta at View Points Research Institute has been working with Alan Kay to do just that; but the idea was (I think) first proposed by compiler writer gurus Muchnick and Jones in the '70s. See: Binding time optimization in programming languages: Some thoughts toward the design of an ideal language. Today, Piumarta's COLA system is an attempt to make syntaxis, semantics and pragmatics all first-class.

I don't have citations

I don't have citations myself, but I would be interested to know where you came up with the idea that political and economic power led to English dominance.

The book I quoted in my original post highlights these factors with many case studies. E.g., trade languages in Indonesia. Politics concentrated French in Louisiana. Depending on how you look at war (corporate takeovers? ;-)), that's a common trait as well -- I was just reading a bit about the impact of the Normans in 1066 on England. I don't think this is a contentious point.

In my books, what makes switching difficult is semantics and pragmatics, not syntaxis.

There are different types of switches. E.g., I don't think there is a big conceptual jump between JavaScript, Python, PHP, and Ruby. I'm guessing there is more an issue of idiomatic code and libraries. However, HLSL or real prolog from Java, without some deeper understanding, is probably quite an investment. Perhaps libraries are the real deal: that's the difference between being able to order a sandwich and negotiating a new contract. Either way, there's clearly some sort of cost involved.

But this is why I think the

But this is why I think the "native language" issue makes a difference: HLs usually rise on the back of the prestige or advantages of their native speakers. The fact that people don't change their native language (at least not easily) gives this change some staying power.

There is a reliance upon community in PL as well. Just as you'd learn Latin in the hopes of benefitting from the Romans, you learn JavaScript to be webby. Wouldn't you rather be writing Scheme? There are lots of interpreters written in JS, but that doesn't mean they're used. [[I acknowledge this analogy is weak; there are more dominant factors here, but hopefully my point is clear. There are probably better examples in academic and music language communities.]]

Take the familiar example of English as a world lingua franca, especially in science. It acquired this role because its native speakers had enough political and economic power (and enough scientific funding) that it was worth the effort for non-native speakers to learn it and so to have access to that community. This created an even bigger second language community that reinforced the utility of the language as an access medium. The case of Latin shows that this phenomenon has some staying power, so much so that it can last long after the native speakers are gone.

Is Java dead, or just Sun?

With PLs on the contrary, individuals and whole communities can abandon their old language for a new one with a relatively short investment, and you get more volatility. Moreover, it is much easier to have "full membership" in multiple communities; no one is going to snub you from a party invitation because you are "hard to understand" in the community's PL.

Bilingual fluency is common with HLs. Also, in PLs, you can have a primary language influence before you reach fluency. E.g., the popular woes of reading C++ written by Java programmers and "aha!" moments in new languages.

The reason I think PLs and HLs make a good analogy is actually *because* of the costs you are downplaying. I agree they are likely lower (especially when we ignore libraries). However, I'm considering this lower (but still high) cost, coupled with the ability to create new languages, as catalysts for language evolution: they're still within a comparable ballpark. The costs are still high (especially when we talk about software eco-systems), so fashions of the year seem off base. Fashions of the decade, maybe -- but I think the costs related to learning vocabularies and mathematical maturity (/ abstract thinking / symbolic stuff) play a larger role and are more related to natural languages. I don't think either are hard for PLs nor HLs, just take repetition/immersion (children need to be able to learn HLs!). In contrast, buying pants or getting a new haircut can be done by looking at a magazine, a meticulous significant other, etc. -- the costs seem off. E.g., how about yet another tutorial on monads or how JavaScript's prototype system works? But maybe not; this is getting close to Sean's reasoning.

HL/PL

Just as you'd learn Latin in the hopes of benefitting from the Romans, you learn JavaScript to be webby. Wouldn't you rather be writing Scheme?

I think you have actually emphasized the difference: the main advantage of JS is that it is the only language supported by the current ubiquitous medium, browsers. If next week all the browsers started supporting Scheme as well, or if next year Apple introduces some new medium other than browsers that everyone adopts, then the use of JS might drop into the void.

Latin, on the other hand, has ridden on the influence of the Roman people, which has subtler, more lasting properties than mere technical utility.

But I think we are arguing from opposite ends of the language question. There are some parallels between HLs and PLs as expressions of community, and I certainly don't want to discourage you from exploring them.

I'm at the point where, taking a lot of these links for granted, I'm more interested in where the analogy breaks down. ;-)

I personally have an

I personally have an academic background in Linguistics, was particularly interested in language change and diffusion, and have also studied PLs for a long time.

My academic background includes PET imaging studies on the human brain, focusing on things like MAO-B and MAO-A and the roles enzymes and transporters play in serotonin, dopamine, and norepinephrine reuptake. Even these things don't really equip me to say what's possible and what's not. Years ago leading researchers said you can't grow new brain cells; new research suggests there are complex chemical inhibitors that aggressively inhibit growth, especially after injury, and new techniques work on formulating compounds to selectively chase out these inhibitors.

Bottom line: Anything is possible with the right mathematical model, short of finding a unicorn.

For example, what was the

For example, what was the canonical source breaking down 'generations' of language (first gen, second gen, etc.)?

Either Maurce Wilks or Jean sammet, would be my best guess...

Edit: Wow, I am lazy, and WRONG!

http://en.wikipedia.org/wiki/Fourth-generation_programming_language:

Though used earlier in papers and discussions, the term 4GL was first used formally by James Martin in his 1982 book Applications Development Without Programmers [4] to refer to non-procedural, high-level specification languages.

The article on Fifth-generation languages also pointed to this article that appears to be from an old Atari magazine, I never read before today.

Marketecture

For example, what was the canonical source breaking down 'generations' of language (first gen, second gen, etc.)?

I think a modern equivalent of what you are asking would be "Who was the canonical source for defining 'Web 2.0'?"

Well, nobody really because it isn't a well-defined concept, but rather a convenient way-of-speaking and a marketing term.

As I recall it, the whole "generations" thing only took off when a bunch of data-centric "not-too-hardcore-programmer" languages started to be touted as "4th generation", following on the vague notion that languages like C and Pascal represented a 3rd generation (after assembly code and bare metal).

"Fifth generation" took the meme one-step too far, and we haven't really heard from it since, in spite of many changes in the PL world since then.

If you don't believe me that there isn't much substance to the "generations" concept, consider Cobol. Most systems people come up with place it in the 2nd or 3rd, but conceptually it shares more in common with the 4th generation languages. (Intended to be less intimidating to "non-programmers", focused on data and business tasks, etc.) That kind of categorical vagueness doesn't really bear much scrutiny.

That kind of categorical

That kind of categorical vagueness doesn't really bear much scrutiny.

What I remember learning in college is exactly what you describe: books on design with such handwaving.

What I remember reading on my own, in books on model-driven software engineering, is that 3GL and 4GL are conceptually different in terms of physical coupling concerns. Chief among these coupling concerns is freeing computing from the von Neumann Model:

Surely there must be a less primitive way of making big changes in the store than by pushing vast numbers of words back and forth through the von Neumann bottleneck. Not only is this tube a literal bottleneck for the data traffic of a problem, but, more importantly, it is an intellectual bottleneck that has kept us tied to word-at-a-time thinking instead of encouraging us to think in terms of the larger conceptual units of the task at hand. Thus programming is basically planning and detailing the enormous traffic of words through the von Neumann bottleneck, and much of that traffic concerns not significant data itself, but where to find it.

Dijkstra has the best critique there is about Backus's Turing Award lecture.

I understand your objection, but also think that taxonomies, when people know what the taxonomies are meant to refer to (e.g. physical coupling issues), are very helpful! In the model-driven SE books I've read, this discussion of physical coupling mainly emerged from structured programming, as the link on 5GLs suggests!

5GL was really Japan's attempt to apply its Deming Method-based approach to manufacturing physical goods to intangible goods (software). I don't think there is a better explanation for that term than that.

Good and bad taxonomies

taxonomies, when people know what the taxonomies are meant to refer to (e.g. physical coupling issues), are very helpful!

I will agree, but it is exactly on this ground that I don't think the "generations" concept is helpful.

First, it suggests that there was a linear development of languages, each one somehow "better" than the previous, which is not accurate or helpful. (It wouldn't surprise me though that an MDA advocate would see MDA as an inheritor to this "evolution"...)

Second, it is ambiguous. Unless you nail down what features represent different approaches to "physical coupling issues", and can't reliably categorize a language into its taxonomical grouping, it really isn't a helpful taxonomy.

I agree 100%

My use of these terms is only because I sometimes talk to retired programmers in their late 60s and early 70s who shed some light on the history of computing, as told by them, working at big companies like DEC and IBM.

I think these terms do come across as marketing goop, and better terminology is possible. Nevertheless, I have assimilated the phrases as having distinct meanings, even if the parts of the phrase, i.e., numbered generations, are stupid and ugly.

Small World Networks

Paper citation chains hint at time and geographic relationships.

Read books, such as Small Worlds: The Dynamics of Networks Between Order and Randomness, by Duncan Watts, who is the seminal author in the math field that studies networking phenomena such as this.

Programming Paradigms and Mind Metaphors

I just came across this paper, abstract:

This paper describes a notable convergence between biological organization and programming language abstractions. Our aim is to explore possibilities of cross-fertilization, at both conceptual and empirical levels, towards the understanding of what cognition and cognitive systems might be.

tl;dr

ok, i am actually trying to read it, but on the side i'll say that any time people talk about emergent properties or trying to behave like biological systems i can only wonder how the heck they are going to really debug it and make it not hurt. one has to have real answers to that, i think.