Hey there!
I’m a chemical physicist who has been using python (as well as matlab and R) for a lot of different tasks over the last ~10 years, mostly for data analysis but also to automate certain tasks. I am almost completely self-taught, and though I have gotten help and tips from professors throughout the completion of my degrees, I have never really been educated in best practices when it comes to coding.
I have some friends who work as developers but have a similar academic background as I do, and through them I have become painfully aware of how bad my code is. When I write code, it simply needs to do the thing, conventions be damned. I do try to read up on the “right” way to do things, but the holes in my knowledge become pretty apparent pretty quickly.
For example, I have never written a class and I wouldn’t know why or where to start (something to do with the init method, right?). I mostly just write functions and scripts that perform the tasks that I need, plus some work with jupyter notebooks from time to time. I only recently got started with git and uploading my projects to github, just as a way to try to teach myself the workflow.
So, I would like to learn to be better. Can anyone recommend good resources for learning programming, but perhaps that are aimed at people who already know a language? It’d be nice to find a guide that assumes you already know more than a beginner. Any help would be appreciated.
I’d say go with Go or Rust. Go is like Python (garbage collection) but compiled. Rust is kind of like C++ but not exactly. It does not have garbage collection or manual memory management but something called “ownership and borrowing”. It’s as fast as C++ or even faster and has a modern syntax. Though Rust is harder than Go since it is under the hood a systems programming language. If you want something faster than Python, Go is good. I specifically chose Rust over Go since I wanted performance and just wanted to try how it was. I’m still a beginner in Rust but I wrote a few projects at reasonable scale for my level. And also, Rust’s error messages are extremely nice. It really lives up to the memes.
To learn Rust: https://www.rust-lang.org/learn
To learn Go: https://go.dev/learn/
Why not just stick with Python until there’s a need to learn something else?
Rust syntax is way closer to Python than go. Go’s syntax is awful imo. It’s like objective C
Okay, my bad. Go’s syntax sucks now that I take another look at it compared to Rust’s.
No.
I have written rust for my research (one does not simply calculate 4 million data points in python), but just no.
My main code is still python, because it’s just so much nicer to write and iterate on.