3 ms·
I think this idea of "no broke compatibility"/"no rewrite" is never properly considering the presence of COST * TIME. In short time, is bad. The more time pass
by mamcx 7y ago
I think this idea of "no broke compatibility"/"no rewrite" is never properly considering the presence of COST * TIME.
In short time, is bad.
The more time pass, is good.
The cost of STUPID C/C++/JS behavior is measured in the billons.
Is not the makers of this langs aware? Yes. They know how could be fixed? Sure. Then WHY is not fixed?
Because not considering time in the calculation (and how many MILLONS OF PEOPLE are affect). But today, are DECADES behind of 100% certainty of the cost of this mistakes, and proved beyond doubts that the langs that fixed them ARE better.
In the face of reality and facts, why resist so much?
---
The thing is HOW get out of this mess?
The big irony is that the JS world show how (but not commit with the proper force): Build transpilers. Make "Better C++" that transpile to "BAD C++". Make clear that everyone must move forward, but provide this as partial step.
Make auto converters. Fix damm stupidity like dangling IFs, (seriously some stuff is not brainer). Have a clear vision in how move forward.
And drop the ego. C/c++ not need to turn into Rust, but why believe it could not truly get better?
Now, in the case of C/C++ exist a big trouble in the case of being the "de facto" ABIs for the rest of the world. Apple have the same issue with swift -> ob-c with the case of nullability (which apis never return null even if in theory could?).
Them do annotations to the APIs. This could allow to mechanize the transformations and provide ABI translations that could be injected in the compiler.
For example:
ABI STEP 1 (annotate only):
fn evil():NullableString //Imply NullableString = Option(Str)
[safe(NullTerminatedString == Str)]
fn not_evil(): NullableString
Old code is assumed to be alike evil.
ABI STEP 2 (rewrite):
fn ex_evil():Option<Str>
fn not_evil():Str
Then it could autotranslate the calls in demand at compile time, following transformations alike maps.
Eventually, when the calls are converted this step is erased and the runtime penalty removed, then all become good.
- NullPrefix 7y agotl;dr but what's wrong with a new name?
- _chris_ 7y agoMy boss will never sign off on using a new language?