The organized chaos of programming language design

Ayman Nadeem
Coinmonks
9 min readAug 12, 2018

--

Like human languages, programming languages evolve over time. However, this process is unstructured, inconsistent, and influenced by a variety of forces. While new language features and versions trigger fiery debates across the industry, the underlying forces that shape programming languages, and ultimately their footprint on technology, are discussed less frequently.

Language developers publish extensive documentation justifying why particular modifications were introduced throughout versions. There is also a tremendous amount of ink spilled about lineage of programming languages, such as the ancestral tree of Go including Oberon, Pascal, C and ALGOL 60. That said, there is little written to generalize isolated decisions that lead to extensions within a language — let alone ideas that gave way to a new language altogether — into a canonical set of principles applicable to all languages. This is primarily because no such universal “standard” exists; even if it did, it might not be all too useful or nuanced since programming languages, along with their uses and applications, are so vast and diverse. This is why certain languages have gained more popularity over others. The variability across languages mirrors the enormous range of domain-specific applications available for each language, its user-base, community, differences in schools of thought, preferences and taste, in addition to social and economic factors that influence its success or decline.

--

--