Here’s a simple program development process:
Take a program A.
Let’s call the new version A’.
If the A’ is tested to be better than A, merge the patch.
This simple program development process seems simple, unbiased, and safe right?
Except, even this simple process is flawed.
Imagine if A has a big assumption x.
Now, since A always merges any test that improves, it would likely be very well-optimized.
This means that each code section is very well-tuned and changing it would very easily make it worse.
Now, imagine A has many code sections that make use of the assumption in the design.
Now, what would removing assumption x imply? It would imply a major change to many parts of the code.
However, the law of A being well-optimized means that each code change probably makes A worse.
This means changing several parts at once is pretty much impossible.
This means that A is probably stuck with assumption x.
I thought that this simple development process had no flaws, but it had such a big and glaring flaw.
It seems nothing is easy in this world.
But here comes the part where it might be relevant to Julia. You might think that it might only apply to some software, maybe some package of yours. Except, even Julia (as a language itself) might not be safe.
Julia is extremely optimized for some metrics like performance, ease of use, etc. Considering that Julia is a really greedy language, it is also probably optimized in some hardcore ways.
If there are assumptions in the making of Julia… those assumptions might be staying here for a really long time.
In an ironic twist, “We are greedy” might not just mean wanting more, but also means myopic optimization as in greedy algorithms.
Are we in for a reckoning? I don’t know.