▲ | cies 6 days ago | ||||||||||||||||||||||||||||||||||||||||||||||
> It's okay for you to have the opinions you do Likewise. > I know [...] C, C++, C#, Python, Go, various flavors of Assembly That's good. But these are all languages that either lack strong typing and or are themselves rather quirky. Only C# and Go stand out, IMHO, as languages that are recently designed. Even Python did not have user defined classes in the first versions, and some things thus feel off (__len__, __init__, etc.). Also C# and Go still have implicit nulls all over the place. Their designs show ignorance for modern language design. Sum-types, explicit null, immutability, sound type systems -- all lacking in all langs you mention. So what languages do have these IMHO "Game changers"? OCaml/ReScript/ReasonML, Haskell, Elm, Rust, Gleam, F#, Scala, Kotlin, ... Those languages really showed _me_ something important: how it could be better. There is another group of languages that also sits on a unique place in the solution space: the LISPs (incl. Racket, Schemes and Clojure). I found it very worth while to learn to program with them as well. | |||||||||||||||||||||||||||||||||||||||||||||||
▲ | neonsunset 6 days ago | parent | next [-] | ||||||||||||||||||||||||||||||||||||||||||||||
In the last few years C# did away with implicit nulls. Nullable and non-nullable object references are disambiguated with T? and T. There are multiple keywords and expressions to further make it nice to work with these. You would be correct to note that there are "nullability holes" in certain edge-case scenarios, particularly around JSON serialization. But other than that it's a pretty smooth sailing. If you do use C#, you may also want to add <WarningsAsErrors>nullable</WarningsAsErrors> to .csproj too. | |||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||
▲ | leptons 5 days ago | parent | prev [-] | ||||||||||||||||||||||||||||||||||||||||||||||
I prefer Assembly before any of the fringe languages you mentioned. There are no types in Assembly, and I rather like it that way. If you know how to work with data, then there's very little confusion about what you're doing. And there's a reason practically nobody uses the languages you mentioned, and Javascript is so wildly popular. Most people don't really like or need type nagging systems. Sure, if you're trying to launch a rocket or doing something like building medical equipment or something else that requires covering your ass, then yeah, sure, go ahead and type the hell out of it. But for most programming tasks the languages you mentioned are overkill and frankly too obscure to use. | |||||||||||||||||||||||||||||||||||||||||||||||
|