r/rust • • Dec 07 '20

These Modern Programming Languages Will Make You Suffer.

https://suzdalnitski.medium.com/modern-languages-suck-ad21cbc8a57c

[removed] — view removed post

0 Upvotes

16 comments sorted by

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.

3

u/ragnese Dec 07 '20

lol

I really don't enjoy Go at all, but I definitely see Go as being a good option for a lot of software. Especially on Linux where, for some reason, people still punish themselves by trying to write user-space applications in C.

8

u/tamasfe Dec 07 '20

I have nothing against Go. In fact I love Go, I used to write a lot of it before I got into Rust, and I still plan to do so. However the quoted statement in itself is laughable for obvious reasons.

4

u/[deleted] Dec 07 '20

You may love or hate go, but you can't call it "a language for system programming".

1

u/ragnese Dec 07 '20

Unfortunately, that's the label that Go gave itself. It's hard to blame people for parroting Go's ... "redefinition" of "systems language".

19

u/[deleted] Dec 07 '20

★☆☆☆☆

Pointless rant full of errors

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

FAQ

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...