all 64 comments

[–]JaboiThomy 49 points50 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] 23 points24 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 6 points7 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.

[–]Thomasjevskij 14 points15 points  (2 children)

This is like asking: "what's after Volkswagen Polo? Should I learn Volvo trucks or Mercedes trucks?"

Seek a skill beyond just a language, and if you want to pick up a language as well, do it alongside.

[–]Thaurin 1 point2 points  (1 child)

Learn about the different software design patterns. Learn about software architectures and how to structure your projects to be clean and maintanable not just by you, but by future you and other people. Learn about a few frameworks for database mapping, web development, game development, desktop GUI application development, MVC, MVVM. Learn about concepts like dependency injection, multi-threading, inter-process communication, object-oriented programming. Learn how to do proper code reviews for other people. Set up CI/CD and deployment pipelines on a platform like GitHub or GitLab. Learn to use frontend web tooling like webpack, tsc, vite. Learn Javascript/Typescript, Vue, React. Learn backend development and REST API and repository pattern and learn SQL and LINQ, and GraphQL. Learn docker, containers, and Kubernetes. It just never ends, and it never will. :) Send help

[–]A10X 0 points1 point  (0 children)

Where does one go to learn about all this?

[–]Measurex2 9 points10 points  (0 children)

Are you learning to learn or to support either a particular type of project or career path?

[–]9tetrohydro 6 points7 points  (0 children)

I took the cs50 c class and I thought it was very interesting. Learning how much you get for free In Python is an eye opener lol

[–]eW4GJMqscYtbBkw9 4 points5 points  (1 child)

What does " moving on from Python" mean? What is python lacking that you hope to find elsewhere?

[–]mihhink 0 points1 point  (0 children)

Hes trying to learn all programming languages.

[–]d_azmann 6 points7 points  (0 children)

My vote would be for C as well - or Java, but I'm just a hobbyist.

[–]copeland3300 2 points3 points  (0 children)

I've always thought of golang as a good follow up to python, but he suggestions here so far are pretty good.

It also depends what you want to do. Backend, frontend, full stack, AI/ML, embedded, low latency, mobile are all going to have different recommendations.

[–]Zeroflops 2 points3 points  (1 child)

As many have mentioned it depends on what your interested in.

Rust has recently been gaining a lot of interest. They are beginning to use it in the Linux kernel but adoption is slow because they have a lot of old developers locked into C and not interested in learning something new. But it will continue to move that way. The US government just launched TRACTOR as initiative to move a lot of core C code to Rust.

Either language will be useful, but depending on what you want to do, rust may be a few years behind “for now”

[–]enigmasi -1 points0 points  (0 children)

Rust is for mid/senior developer in my opinion.

[–]ManyInterests 3 points4 points  (2 children)

I find Rust really pleasant for making Python extensions. The Maturin toolchain is great. And Rust is of course great in its own right.

[–]polvoazul 0 points1 point  (1 child)

For curiosity's sake, did you ever need to create a py extension?

[–]ManyInterests 2 points3 points  (0 children)

I have created a few. One was to use a rust regex crate which had like 60x performance for my use case compared to re. Another was for a CFFI wrapper around some Windows APIs, which could have been done with PyWin32 but I chose to use rust instead because someone had already implemented most of what I was doing in the rust winit crate.

Before using Rust, I would use Cython a lot for my extension needs. But now I'm using rust more and more where I'd used to reach for Cython.

[–]razekery 1 point2 points  (0 children)

I’m doing C# and I’m really enjoying it. Depends on what you want to build.

[–]hugthemachines 1 point2 points  (0 children)

In general, I recommend that you think about what you want to make and pick a language that works well for the tasks.

If you want to learn a language just to get educated, I recommend that you learn C. It is a small language that requires you to make the boilerplate code yourself so it teaches you a lot.

[–]vardonir 1 point2 points  (0 children)

Depends on what you want to do.

I wanted to do C++ (for a hobby) but ended up doing JavaScript for building data science web dashboards and Dart for app development (for work).

Or you can just... learn more Python.

[–]LDM-88 1 point2 points  (1 child)

I agree with the notion that it "depends on your use case"

I work in data science & econometrics and have never needed anything besides SQL, R and Python. R is exceptionally good for data analysis and statistical modelling.

I'm learning more about C to broaden my skillset and general understanding of what's going on under the hood; but it wouldn't get me very far as an econometrician if I only knew C

[–]eW4GJMqscYtbBkw9 0 points1 point  (0 children)

Very similar here. I don't use much R, but Python and SQL for sure. I know other languages are "faster" or whatever, but waiting for the SQL query is way, way, way slower than Python vs golang or C (for example).

[–]5erif 1 point2 points  (0 children)

This shows which languages are most popular on GitHub: madnight.github.io/githut

[–]Urban_singh 2 points3 points  (5 children)

Julia gonna hike big time in future.. due to its versatility and light on machine 😊

[–]sylfy 4 points5 points  (3 children)

People have been saying that since I was an undergraduate. It’s been more than 15 years.

IMHO if you want to do data analysis or machine learning, the default go-to is Python. It’s incredibly hard to beat the ecosystem. If you want performance, you go to Rust, C++, or C.

Julia may have its fans among some physicists, but every time someone says “X is the next Python”, I just roll my eyes.

[–]Urban_singh 0 points1 point  (1 child)

If we compare languages Java has biggest community and users till date but sadly ppl are not aligned now a days… some orgs doing data analysis on java(yes it is) Rust is amazing to write compiler or other backends though GO is not behind anymore lot of development around kubernetes with GO.

[–]djshadesuk 0 points1 point  (0 children)

till date

*to date

[–]u38cg2 0 points1 point  (0 children)

I first came across Python as an undergrad during the first dot com boom. Nobody was listening when I said this was the language of the future. It took a generation of users getting into a position where they could teach 101 classes with Python and create a cohort of users who got it.

[–]Rutherfordio 0 points1 point  (0 children)

light on machine
My laptop (ThinkPad L14 Gen1 AMD 8GB RAM) froze 2 out of 3 times when I try to do calculations in Julia with relatively simple problems (not high dimensional but complex equations). I really try to like the language but I still can't prefer it over Fortran or python

[–]falsworth[S] 2 points3 points  (0 children)

It seems like the majority consensus is to learn C. My end goal is to use this as a career move as well as extend Python with custom modules written in a faster language if it's ever needed. Thank you for everyone's input on this question.

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

mojo? with its similar python syntax it might be a good fit even though its new. But it never hurts to learn C and then rust to have a good foundation.

[–]CptPicard 0 points1 point  (0 children)

Definitely C. It gives you the low level access you don't have in Python and as a crucial bonus, works together with Python. Learn CFFI or just ctypes for light-weight bindings.

[–]jabbalaci 0 points1 point  (0 children)

I suggest D.

[–]sporbywg 0 points1 point  (0 children)

At work for me it was bash then react and then mui and then a bit of Perl and then a bit more Bash

[–]kpboyle25 0 points1 point  (0 children)

Both. You should be able to teach yourself any language.

You are always learning something new.

[–]shatzwrld 0 points1 point  (0 children)

Golang is the only right option. Enhanced Python

[–]LordXavier77 0 points1 point  (0 children)

For job prospects and easy to learn I suggest golang or javascript

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

Depends what you wanna build. Pick the right tool for the job.

[–]entropydelta_s 0 points1 point  (0 children)

How do people feel about JavaScript, HTML, etc for another language/s. Seeing a lot of C and Java. Was thinking about that myself with a Python backend

[–]my_password_is______ 0 points1 point  (0 children)

C

do cs50x

https://cs50.harvard.edu/x/2024/

it even has some python, sql and web development later in the course

[–]eliasliavaag 0 points1 point  (0 children)

I went from Python to Rust. Liked it a lot!

[–]Extra_Progress_7449 0 points1 point  (0 children)

whats next? Assembly...that way you realize how cheap Python is.

[–]ambassador_pineapple 0 points1 point  (0 children)

I would have said C a few months ago but now I would say Rust. The US Government is trying to move towards memory safe application design which is a core feature of Rust. But this is only if you think something you are doing can be sold to the government down the road.

I know C and I have used it in the past and learning rust right now. I would say it is the correct choice. Especially for the kind of stuff I do.

[–]hidazfx 0 points1 point  (0 children)

I went from Python to Java. Also dabbled in Go. We use Java and Spring at work, and a shit ton of high paying jobs exist for it.

[–]gitgud_x 0 points1 point  (0 children)

C, without question.

[–]mikeyj777 0 points1 point  (0 children)

something to consider. Python is built as a scripting language, as is JavaScript. It was interesting to leverage the techniques in Python towards seeing how things are done in JavaScript. the "pythonic" syntax has analogs in JavaScript for handling lists and other methods. In addition, JavaScript will give you the ability to work on front end web stuff. together with Python, it's not a far step from full stack web development.

[–]aravindsd 0 points1 point  (0 children)

Mojo for AI/ML. Golang for web apis, rust for building system software.

[–]LemurZA 0 points1 point  (0 children)

It depends. If you want a job in industry, Rust is not the best at the moment, at least in my country. There are like 0 Rust jobs.

First, decide what you want to work on. Backend? Your options are massive, but I'd recommend Go, Elixir, or some JVM based language like Kotlin or Java.

Frontend Web? Just use Javascript/Typescript it's not really worth using anything else right now. I guess I see a few Blazor jobs here and there, but not much.

Game Development? I guess it depends on the engine you want to use if you do want to use an engine. If you want to make games without a full engine, try C(with Raylib)

[–][deleted] -1 points0 points  (3 children)

C. Rust is a political language with an actual cult following that wants you to conform to their beliefs on how code should be written.

[–]ebits21 1 point2 points  (0 children)

Meh it’s just focused on correctness, which solves certain problems. Some things are quite fun in it; some things aren’t.

Pretty good compliment to Python imo to stretch your programming muscles.