3 ms·
Yes, but: C# is just as good as Java on all accounts. Rust is just as good as Java except the talent pool is yet growing. C++ is just as good as Java except
by sshine 4y ago
Yes, but:
C# is just as good as Java on all accounts.
Rust is just as good as Java except the talent pool is yet growing.
C++ is just as good as Java except the language has no ceiling and the talent pool is shrinking.
- Feeble 4y agoC# is just as good from a technical stand point I think, but there is a significant financial cost attached from the licenses. Large server installations with dev, stage, prod & load test envs tend to get expensive with .net.
- kaba0 4y agoRust and C++ are low level languages, making low level detail leak into its module contracts. This will make refactors/faster code changes slower. Depending on the application niche, this tradeoff is not worth it, e.g. I wouldn’t write a CRUD app in Rust/C++ —- Java (and C#, and the litany of other managed languages) implementations will be much more maintainable and fast to create. This is automatic memory management’s greatest “gift”.
- sshine 4y agoHave you tried Rust? Garbage collection is over-valued. CRUD in Rust is not as low-level as in C. > making low level detail leak into its module contracts There is the risk, yes. Design a good API, and it won't happen. Onboard 50 people who don't care, and you'll have all sorts of low-level thinking when it isn't appropriate. This is the risk of a language having no ceiling: Suddenly someone is spending the "novelty budget" without asking.
- kaba0 4y agoIt’s not a risk, it is always there. Rust just cleverly hides it behind syntactic sugar, but in reality every single API mandates the what lifetime each parameter should have (they are just generic to lifetimes, and it can be inferred more often than not). This is in stark contrast to any managed languages’ function signatures, and one will have to change to accommodate bigger changes and the other doesn’t. And I’m talking strictly about memory management here, sure Rust is a very cool language (it is my go to choice for low-level programming) and has a strong enough type system to actually make these refactors safe, but it doesn’t change the fact that this is simply of no concern with automatic memory management.
- 112233 4y agoSmall nitpick about C++ — tooling there is atrocious. Despite heroic efforts the language itself is a boss monster that evolves new moves every few years. Standard committee lives in a parallel universe, where writing compilers and editors is not a valid concern, yet pretending to support C source and single-pass parsing somehow is. C++ should be something of a last resort, especially when you are given a choice.
- za3faran 4y agoNone of the languages/ecosystems you mentioned have anything resembling the JVM's JFR for continuous profiling. I've seen some commercial offerings, but then (1) they're not free, and (2) you're bound to the provider. Java's GCs are superior to what C# offers by the way (and I like both languages).
- sshine 4y ago> None [...] have anything resembling JVM's JFR for continuous profiling You could say a similar thing for Erlang and its Dialyzer. Yet other ecosystems manage. The point I want to make is: While that's an argument in favor of Java, it's not an argument against everything but Java.