Gm #Nostr

I am a Python boi and try to stay close to major developments in the language and ecosystem (e.g. asyncio, Pandas 2.0, Pydantic 2.0).

I would like to learn a strongly typed language but the Rust learning curve is scary… and the recent Rust Foundation drama is a huge turn off.

What should I learn, even if I stick to writing mostly Python? Go? Zig? OCaml/Haskell/Elixir? Just learn Rust?

I do mostly ETL pipelines and other data processing, but also interested in systems, networking, general backend stuff.

#Programming #Languages

Reply to this note

Please Login to reply.

Discussion

Just learn Rust

One option would be TypeScript. It has a number of compiler options that allow you to increase the type strictness incrementally.

Also, Python now has type hinting. Not sure how you enable it, but you can require function arguments to have types specified.

Thanks, but not interested in getting involved with any form of JavaScript lol.

Modern Python with something like Pydantic gets you better run time type safety than TypeScript, but it’s still not built into the language itself. I use Python type hinting in all my code now, just because my linter yells at me otherwise 😂

> Thanks, but not interested in getting involved with any form of JavaScript lol.

LOL

I’ve done a bit of JS and HTML, definitely not for me. I’m mostly just a data wrangler, but looking to learn other areas of “backend”

Fortran... just for fun

Have you been following mojo? It’s a bit of a gamble since it’s just now in development, but is probably worth a look.

I’m learning rust right now and it’s definitely challenging - hoping one day mojo/python will be widely used.

Definitely following Mojo, yes. Should be easy to pick up as a Python dev, if it ever truly ships and catches on.

I’m sort of interested in trying something completely different, if only to learn how to think about problems differently.

I am liking that about rust. Having to think about strict typing and data ownership/lifetime and how to efficiently organize code around that is hopefully going to make me a better programmer. Lots of bad habits I picked up learning python through the ease of Jupyter notebooks.

I love Jupyter - use it all the time for prototyping and ad hoc data stuff. But in the last ~2 years, I’d like to think I learned how to write actual robust codebases in Python as well.

I think I am leaning towards Go, Rust, or Zig in that order. Go mainly because I gather it’s extremely fast to learn compared to Rust. Zig is obviously more obscure, but I really like what I’ve seen.

I have a week off from work coming up and will start on one of these!

I'd say depends on what you want. To learn generally about programming, I'd go C/C++ - something without garbage collection. If you're looking to be effective quickly, and have lots of existing libraries and support, I'd choose something like Java.

Rust is too new for my liking and I don't trust all the fanboi proclamations about it - although will be happily proven wrong. I prefer the tried and tested.

Hmm, interesting perspective.

From what I’ve seen, modern languages have SO MUCH to offer over C++ and Java.

All the experienced devs I know who know 3+ languages prefer Rust, Go, or something more obscure, over those older languages.

I’m also not working in a situation that requires me to learn 10+ year old code bases. I’d rather learn something modern.

I think we cannot currently determine which modern languages offers real extra value. I think there is a bias to exclude things where the flaws are known for things where the flaws are unknown.

My more general thesis is programming is in its infancy and nobody knows what they're doing. Bloodletting was used frequently and unnecessarily in medicine for 2000 years. I wouldn't be surprised if we do something similar with programming. We need the programming equivalent of double-blind studies.

If I'm right and nobody has a clue, maybe it doesn't really matter what language, so just choose whatever you feel like, flip a coin, or whatever. I always try to remind myself that code is just a tool to deliver value, not an end in itself - I'm really not experienced enough to be giving out this kind of advice, but, hey, it's the internet 😛

I love Go! The syntax is not too difficult to learn, there is an active community, Goroutines are nice, documentation is good, lots of libraries to build with, plenty of Bitcoin/LN and Nostr tools built in Go, etc.

+1 - Go was the most effective and enjoyable language I've used professionally. I wish I could share that I was a primary author for a fairly good piece of OSS used within Big Tech.

Sweet, thanks for the feedback everyone. I think I will start with Go, I know other Python devs who have picked it up quickly.

Maybe I’ll feel more confident in tackling Rust after Go 😂

Good call. I also started as a Python dev. So I’m sure you will do well. 💪🏼

Rust is great for embedded systems, but I think the server ecosystem still has a way to go. Not good for clients/UIs at the moment, either.

Yep. Rust seems like overkill for a lot of projects. And performance gains are negligible if any compared to Go.