archives

What are The Atoms of Programming Languages?

Atoms are true elements that can not be divided any further into other elements. There exist a finite set of atoms relatively small as compared to a set of all possible physical substances that can be constructed from these atoms.
Can we define a finite set of programming atoms that all existing programming languages can be built from?
Is it possible to build a Periodic Table of Programming Elements similar to the one discovered by Dmitri Mendeleev for physical world?
Will such Periodic Table of Programming Elements allow to envision properties of new programming languages not existing yet?
Chomsky and other linguists have already discovered atoms of natural language. (See for example "The Atoms Of Language, The Mind's Hidden Rules Of Grammar" by Mark C. Baker. Excellent work!)
Using these linguistic atoms any of several thousand human languages existing today or used in the past can be constructed. To say more new natural languages can be fully built from these linguistic atoms.
Atoms of natural language turned to be parameters used in recipes for building all other language constructs.
The following recipe reflects one of these parameters/atoms:

"Heads precede phrases in forming larger phrases in English-type languages".

"Heads follow phrases in forming larger phrases in Japanese-type languages".

Parameter used in these recipes is called "Head Directionality Parameter". This parameter or natural language (atom) defines how more complex phrases are built from simple ones by adding new "heads" to the phrase.

For example, for both language types we can build a complex noun phrase:
"all existing programming languages"

from a simple phrase:
"languages".

Steps to build complex noun phrase in English-type languages:

1) languages
2) programming languages
3) existing programming languages
4) all existing programming languages

Steps to build complex noun phrase in Japanese-type languages:

1) languages
2) languages programming
3) languages programming existing
4) languages programming existing all

There are other atoms / recipes that can be used for natural languages existing today, used in the past or just envisioned and yet to be implemented in future.

But what about programming languages? What are their atoms? Being just another breed of languages programming ones may also have parameters in a role of atoms as their natural brothers and sisters do.
So what finite set of parameters can be used to construct from the same building blocks C++, J, Java, Lisp, ML, Oz, Erlang, Basic, Fortran and Perl ? And what are the building blocks?

For starters I propose these building blocks that any programming language can be built from:
Object, Variable, Program Scope, Closure, Lambda / Function, Template

As for Parameters (atoms) I would start with Assignment, Binding, ... what else?