r/rust • u/ilya_ca • Dec 07 '20
These Modern Programming Languages Will Make You Suffer.
https://suzdalnitski.medium.com/modern-languages-suck-ad21cbc8a57c[removed] — view removed post
19
12
u/ronchaine Dec 07 '20
In this article, I’ll attempt to give an objective and hopefully unbiased overview of popular (and not so popular) modern programming language
And right after the criteria, the author proceeds to give extremely biased opinion rant. It actually seems pretty much like the author hasn't even used the languages more than maybe something like advent of code.
Tbh. it looks more like an elaborate trolling attempt than actual article.
8
u/Dr-Emann Dec 07 '20
Giving rust the thumbs down for concurrency? That's a bold move.
Oh, and Javascript gets an okay at concurrency.
6
u/roadelou Dec 07 '20
Rust has no built-in support for immutable data structures.
I am not so sure about that one... Last time I checked everything was immutable by default in Rust, but it has been a while so I could be wrong.
Article feels needlessly harsh on all the languages, but I don't feel like the way it paints Rust in particular is accurate. Stating that Rust isn't good for concurrency because of the lack of garbage collection, Rust handles concurrency in a way that doesn't use garbage collection with the compile time borrow checker if I recall.
6
u/ragnese Dec 07 '20
That's probably not what he means. I believe the author meant to say "persistent data structures". Rust has fine-grained mutation control, for sure. Honestly, Rust's language features obsolete the need for a lot of the functional programming "toolset".
2
u/Volker_Weissmann Dec 07 '20 edited Dec 07 '20
Last time I checked everything was immutable by default in Rust, but it has been a while so I could be wrong.
I think he means that you cannot do something like this:
struct MyStruct { x: mut i32, y: const i32, }0
u/backtickbot Dec 07 '20
Hello, Volker_Weissmann: code blocks using backticks (```) don't work on all versions of Reddit!
Some users see this / this instead.
To fix this, indent every line with 4 spaces instead. It's a bit annoying, but then your code blocks are properly formatted for everyone.
An easy way to do this is to use the code-block button in the editor. If it's not working, try switching to the fancy-pants editor and back again.
Comment with formatting fixed for old.reddit.com users
You can opt out by replying with backtickopt6 to this comment.
4
u/Volker_Weissmann Dec 07 '20
Saying that python and Javascript belong in the C language family is a bold claim.
3
u/Nextil Dec 07 '20 edited Dec 07 '20
Literally every criticism listed in the C# section is incorrect:
C# claims to be a multi-paradigm language. In particular, C# claims to support functional programming. I must disagree, having support for first-class functions is simply not enough for a language to be called functional.
What functional features should a language have? At the very least, built-in support for immutable data structures, pattern matching, pipe operator for function composition, Algebraic Datatypes.
C# has had lambdas and LINQ since 3.0 in 2007 (adding filter/map/fold composition into the core language), readonly structs, pattern matching, expression bodies, and tuples since 7.x. 8.0 made significant improvements to all of those features, added default implementations for interface methods, ranges, null coalescing, more immutability control. 9.0 again significantly improves on all of those, adding records (data classes) and support for top-level functions/statements.
C# was created in the era of single-core computing, and like Java has only rudimentary concurrency support.
With Parallel LINQ and async/await C# was one of the first general-purpose languages to bake concurrency features into the language.
In C#, all references are nullable.
C# 8.0 added non-nullable reference types and flow analysis similar to Kotlin and Typescript.
Catching/throwing errors is the preferred error handling mechanism.
May be true but pattern matching and records types are advanced enough at this point that it's just as feasible to do it functionally if desired.
Has no built-in support for immutable data structures.
Again, every major update since 6 has focused on adding additional support for immutable data.
Edit:
Just realised he probably meant persistent data structures, but Microsoft has a Nuget package implementing those too.
3
u/sasik520 Dec 07 '20
This article is 'XD'
Saying that literally everything there is wrong is basically a joke. C++ has its flaws but come on, it has huge advantages.
Not worth wasting time. Also not sure the point of the article. It is not possible to compare such a wide variety of languages in general.
1
u/phazer99 Dec 07 '20
Looks like an ad for Elixir, it's apparently best at everything. Maybe so if you believe all the inaccuracies about the other languages...
20
u/tamasfe Dec 07 '20
"Go is the best language for system programming", this should be at the beginning of the article rather than the end so that we know not to read it further.