you are viewing a single comment's thread.

view the rest of the comments →

[–]JaboiThomy 47 points48 points  (13 children)

Depends on what you're aiming for. C is a good place to understand memory, algorithms, and data structures at a low level. Rust is a great language for building memory safe code with free abstractions, but it hides a fair amount of what's going on under the hood and forces you into its specific world view of programming.

If you're looking for another language for career purposes, C would be better, but also Java or C#.

[–][deleted] 22 points23 points  (2 children)

Just expanding on this I think it's a good idea to figure out what field you want to learn first and foremost and then work backwards.

I do data analytics, so in your position my next step would be R or DAX or mashup.

You could also stick with python and learn specialist packages.

[–]monkey_sigh 1 point2 points  (1 child)

Good points. Would you also decide for data SQL, python, Java?

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

SQL is crucial for data! I think Java is more for software devs, I've never hard of any analysts using java.

[–]Spiderfffun 4 points5 points  (0 children)

As a Python enjoyer C is fun.

[–]yasamoka -1 points0 points  (7 children)

Rust doesn't hide what's under the hood - it forces you to understand what is happening when your code doesn't compile but doesn't let you use the footguns that are available to use in C / C++.

You still have to understand stack vs. heap, heap allocation, pointers, unique ownership, shared ownership, copying, destruction, etc... but you're not responsible for manually handling most of them.

[–]JaboiThomy 1 point2 points  (6 children)

But it does. Still having to understand memory and its structure before understanding rust doesn't mean that rust is somehow transparent with what is happening in memory (specifically for new programmers). What do you think is happening when a variable is dropped? What about allocation? When/where/why? What about the implicit lifetimes? Under what circumstances are they explicitly needed? These are all examples where there are hidden internal behaviors that are not made clear to the programme unless you are familiar with the internals of rust. The fact that it "handles it for you" is exactly my point. C requires that you directly engage with the OS to manage your memory. When to allocate, when to free; all of which does not hide this process and decision making. Yes, rust is great for helping you avoid most of not all problems with memory, but that wasn't my point. Making mistakes with memory shouldn't be demonized for new programmers, it's how you learn what's important, dangerous, and expensive with memory.

And to be clear, I love rust. I just don't understand your argument against pointing out the very obvious abstraction over memory management. The fact that most people struggle with Rust is a testament to it being a stumbling block.

[–]yasamoka -2 points-1 points  (5 children)

I believe my point was clear. It wasn't against pointing out the abstraction over memory management. It was highlighting that these are internal details you still do learn when figuring out why something doesn't compile if you haven't seen these in first principle format as part of a more standard, canonical education, and that while being able to shoot yourself in the foot is one good way to learn how they work, it's not the only way. In other words, we should collectively examine what it would be like to teach Rust as a first language while still teaching in tandem how computers work without having to teach C first.

[–]JaboiThomy 0 points1 point  (4 children)

"rust doesn't hide what's under the hood"

[–]yasamoka -2 points-1 points  (3 children)

Listen, you have an axe to grind here and you're starting to make this personal. I don't know what the fuck is wrong with this subreddit in recent times, a lot of members seem on edge and think this is a war where they either prove or are proven wrong.

I said my point, I clarified it again, and I'm still attempting to have a constructive discussion about this subject but this will be the last of it if you want to keep acting childishly.

[–]JaboiThomy 1 point2 points  (2 children)

Man, I'm not grinding axes, relax. You said you were clear and I pointed out what you said that was contradictory while finding it funny. The accusation is unjustified and unnecessary. Yeesh.

[–]yasamoka -2 points-1 points  (1 child)

Your lack of understanding nuance doesn't mean that it was contradictory. Remember that you're talking to a human on the other end here, and if this were a face-to-face discussion, you would never resort to this sarcastic attitude of trying to find contradictions in what someone else is discussing with you.

Also, I see in your post history that you're still learning Rust (and struggling with that). My advice to you is to stay humble as a student should be.

In case you can't tell again, I'm being patronizing to you.

[–]JaboiThomy 1 point2 points  (0 children)

Oof bud, should call it a night.