Add a bit more philosohpy

This commit is contained in:
Yann Esposito (Yogsototh) 2021-11-16 14:44:17 +01:00
parent 0c91ab07c0
commit 7d5c74e79c
Signed by untrusted user who does not match committer: yogsototh
GPG key ID: 7B19A4C650D59646
2 changed files with 25 additions and 25 deletions

View file

@ -131,3 +131,5 @@ a,a:visited { color: var(--fg); }
/* LEGACY */
.inlineblockimg { display: inline-block; }
.inlineblockimg > img { display: inline-block; vertical-align: middle; width: 3em; }
.definition,.example,.theorem,.conjecture { padding: 0 1rem; margin: 1rem; }

View file

@ -8,37 +8,35 @@
#+options: auto-id:t
#+startup: showeverything
I recently followed multiple discussions around a similar concept.
Retro compatibility, languages, etc…
Have you remarked how difficult it is to have something now.
I mean, really have an object that you know, could be passed to your
children that they themselves pass to theirs for many generations.
I would like to provide a better definition for "Eternal Language".
In particular in the Software programming industry, or community at large.
This remark is not only valid for the industry but for the science as well.
See how it was difficult to reproduce AI experiments.
See how difficult it is for a searcher to provide the same stable testing
environment he has locally.
Worse than that.
The code they provide will almost not be compatible with the future
environment.
And imagine someone has a great new idea to update an old idea.
It will not be able to use a recent library on the old code.
So having a nice reproducible environment is not enough.
Where are the Joconde of the XXIth century?
Where are the thinker in the Software world?
We should strive to find, if possible a single, "Eternal Language".
#+begin_definition
*Definition:* An /eternal programming language/ is a language for which code
written today will still compile and work any time in the future but also
in the past.
*Definition:* An /eternal programming language/ is a language both backward and
forward compatible.
#+end_definition
So any new feature introduced in the language should not break anything.
Backward compatible: using code from v1 will work with v2.
Forward compatible: using code from v2 will work with v1.
By this definition it provide a great deal of constraint on the language
but provide a tremendous amount of advantages.
As a professional developer it will provides stability.
The work you done today can be forgotten.
Even if the quality of code is not perfect, if it works, it works.
No need, to change unless a new major security issue is discovered.
There are a few programming languages that try to achieve this.
So, by their nature it is normal to have a period of adaptation during
which a language is not Eternal.
The code will break with convention from the future.
Or new feature will be added to the language in the future that will not be
supported today.
Eventually, when a language is used professionally, most would really
appreciate if a language reach the "Eternal Language" status.
There are a few examples I like:
- *TeX*, once written, it was never updated. It contained everything it
needed. The project was over, and there is an active philosophy of