Add a bit more philosohpy
This commit is contained in:
parent
0c91ab07c0
commit
7d5c74e79c
|
@ -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; }
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue