Mine is that the useState hook is an actual plague on the entire React ecosystem. Regardless of your opinions of React, if you wanna use something then use it right.
Mine is that the useState hook is an actual plague on the entire React ecosystem. Regardless of your opinions of React, if you wanna use something then use it right.
Sometimes we have to use them, but Java and C# sucks hard as languages.
I actually really like C#, it’s my favourite. But don’t know how much of that is Stockholm syndrome at this point haha. But whenever I’m writing in other languages i always end up missing something i do regularly in c#, especially from it’s latest versions (which i also deeply miss when forced to work on legacy software that is still using shit like version 4 or 5 of C# (ASP.NET 4.8 / .NET standard) whereas I feel like C# really got good and fun to use from C# 8 onwards (I think this was .NET Core 3.0 or .NET 5 - we’re on C#14 now with .NET 10, with 15 on the horizon).
It’s a bit of a kitchen sink language now. I haven’t used it professionally in quite a while but using it for Godot (anything but gdscript) has me scratching my head over some of the architectural decisions. It seems to be led by „if people do a certain form often enough, add a shorthand to the language“, which is one way of cutting boilerplate, but does lead to something very hard-to-parse if you’re not familiar with it.
What do you miss?
Not the oc, but honestly just random shit, like:
Linq.
Async and await are both in python or rust, but still via anexternal provider afaik (like Tokio).
Explicit interface implementation (default trait implementation for the Rust fans)?
Nice source generators and what you can fo with them (kinda like aspect programming).
Idk if python or js support pattern matching or proper low level or no GC coding.
I also enjoy my langauges to have an end of statement character like
;instead of the horrible visual mess python is.Type safety of compile and runtime type checks lol. In C# if you say your module requires int parameter, noone will be able to call it passing None/null/string/date.
AKA - We have Monads at home…
Rust is really missing something like do syntax. It’s half-way there with the semicolon and question marks, but it’s missing an idiom for .map_or_else and to generalize the thing to work with a trait.