I know I know, pseudo OO took over the world, and then people revolted against it, so the easiest thing to do to stay relevant is to become "slightly functional with curly braces", rather than to actually try and do OO well.
I know I know, pseudo OO took over the world, and then people revolted against it, so the easiest thing to do to stay relevant is to become "slightly functional with curly braces", rather than to actually try and do OO well.
But my question is: what is missing from the OO side? What would it take for C# and/or others to "do OO well"?
As for what C# could do better, the OO solution to the problem pattern matching solves is multiple dispatch - with single dispatch languages you need things like the visitor pattern. Making that a first class part of C# would be fantastic.
https://shawnhargreaves.com/blog/visitor-and-multiple-dispat...
Multiple inheritance. (j/k)
Having "interfaces" and "abstract classes" is just a kludge, multiple inheritance covers all of this with one language construct.
The "diamond problem" is a C++ issue, every other language solved it.
https://learn.microsoft.com/en-us/dotnet/csharp/advanced-top...
CLOS and Ocaml figured it out
Also C++ has exactly what you want. No interfaces, multiple inheritance. People don't utilize it unless it's a GUI lib.
Which concepts or feature you have on mind?