C# 20: Resolving All Historical Legacy Issues #7653
-
Let's name the next version of C# "C#20." Through a significant version leap, we can introduce substantial disruptive changes and discard all outdated designs. If the language's development is constantly constrained by its historical legacy, it cannot truly keep up with the times, and we are forced to continue enduring those outdated designs. The best time to make changes is always "now." Building a tall structure on an unstable foundation will only become increasingly hazardous. As for which designs are considered "outdated," that can be a topic for discussion. For example, I believe that the current method of equality comparison is outdated and should be replaced with Another example is to introduce a new keyword, Anyone who has other suggestions is welcome to share them below, aiming to make "C# 20" a comprehensive solution for all historical legacy issues in one go. |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments 3 replies
-
Closing out as far too vague. Please make specific proposals on the changes you are interested in. Catch-alls of "here are all the things I want to be different" are not helpful. Thanks! |
Beta Was this translation helpful? Give feedback.
-
You mistake historical design for legacy design. There are often multiple reasons why the language and runtime behave as they do. For example, it's already been noted by C# and .NET have different concepts of equality. It's not legacy, and if C# were to be redesigned it would retain that same behavior, because it is important that it behave correctly in different circumstances. It's probably true that if the language and runtime teams had the opportunity to start all over again that they'd do some things differently. For one, it's been expressed that method overloading would likely be something they wouldn't include, due to the massive complexity it creates. But they're not going to "start again", and if they did, whatever it was wouldn't be "C#". |
Beta Was this translation helpful? Give feedback.
-
There's a mainstream language that tried this. Python. In 2008, Python 3 was released with the intent that it would quickly supplant Python 2. This didn't happen.
Between 2008 and 2020, the Python community had to deal with an enormous amount of pain. Library developers targeted Python 2 because of the larger community who could benefit. Application developers used Python 2 because the libraries they needed weren't Python 3 compatible. And so it went on. There will undoubtedly come a time when a new language is introduced, taking all of the lessons of C# and its counterparts, discarding outdated features and creating a foundation for the future. However, it won't be called C#. |
Beta Was this translation helpful? Give feedback.
That's already the case. Language ideas have to be good enough on their own merits.
If you have some you'd like discussed, please open discussions on them. Thanks!