2022-11-03
Programming languages are often developed by adding features along the way as seen fit while using the language. Designing the language before implementation around low level abstractions such as sequences and sets might result in more consistent and thus easier to understand langauge.
Clojure ⬀ tries at least at this point in time be more thoughtful in adding new features. For example if some function works for one kind of data structure, it should work for all datastructures for which it makes sense.
We could collect abstractions and algorithms from existing languages and find a core language that has small but coherent set of functions around fundamental abstractions. Such language could be considered complete at some point and no new features would then be added. The language would from then on only evolve through the code libraries that are written for it.
In The Last Programming Language | SkillsCast | 13th July 2011 ⬀ Bob Marting argued that Clojure could be "the last programming language" meaning that it would be the common language used to discuss programming similarly as mathematics, physics and chemistry have their own commonly accepted languages.
Similar approach could be used to define langauges for other domains other than programming. For example we need a language for describing argumentation for online argumentation. At first, if there are no good examples of such langauges it may be useful to just start modelling arguments and inventing the language on the way. But the end goal should be to find minimal, coherent and comprehensive set of language constructs. Removing features from a language is as important as removing repetition or dead code from computer programs.
This site is generated with zetgen