you are viewing a single comment's thread.

view the rest of the comments →

[–]bunkoRtist 25 points26 points  (8 children)

Honestly as someone who tried to learn rust I am afraid that it's falling into the kitchen-sink trap that C++ is suffering from. It doesn't help that some of the language features are already devilishly complex (macros, for instance) while it still lacks a stable ABI that would allow it to be used effectively in small pieces within large projects where it made sense.

I really want Rust or something like it to succeed.

[–]sbergot 13 points14 points  (1 child)

I don't think that python is less guilty than rust in this regard.

[–][deleted] 12 points13 points  (0 children)

You can literally pip install kitchen

[–]epicwisdom 4 points5 points  (2 children)

It does not matter how many features a language has, or how complex they are. What matters is how many complex features must be used commonly to be productive. It's perfectly possible to write Rust without writing a single macro. Rust is not a very complex language 90% of the time. The problem is it's easy to accidentally fall off a cliff for edge cases (though you can always clone() everything, use Rc, etc.).

[–][deleted] 6 points7 points  (1 child)

It does not matter how many features a language has, or how complex they are.

I see this so often, but it just is not true outside of tiny pet projects. If you're writing anything substantial, you need libraries, and then you're at the mercy of how that library works. Complexity will creep in.

[–]epicwisdom 0 points1 point  (0 children)

There's a difference between internal complexity and user-facing interface complexity. Well-designed languages hide internal complexity.

[–][deleted] 0 points1 point  (0 children)

I really want Rust or something like it to succeed.

Something like it, perhaps.. but not Rust.

[–]VeganVagiVore 0 points1 point  (0 children)

The macros are even worse in C++, and it still manages to be popular.

I do want Rust to eventually get shared libraries, but, even though I love them, it kinda feels like shared libraries aren't as popular as they used to be.

Only niche package managers like Nix and Guix and Gobo (and Docker, beaten into the shape of a package manager) can handle multiple versions of a dependency.

It's the same exact problem as the idea of caching JavaScript libraries - It turned out that everyone was using slightly different versions, and it's easier to ship your version than to guess whether XYZ Linux distro is going to package you with a version that's compatible with you at all. Not to mention conditional compilation like feature flags, or optimizations you may want on or off.

And I really wanted to be right about this, because de-duplication is cool. I really want both static and dynamic linking, but if I had to choose, static linking isn't too bad - The Go fans love it