I want to learn a new language this year and am considering a couple of choices: Go, Rust or Python. My selection is based largely on them being more or less opposites of my native c#/.Net/Microsoft knowledge base, and their ability to create elegant and performant applications.
I'd like to get input on
- what others would choose as a hobby language to learn
- if not one of my choices, your selection criteria
Top comments (12)
As a hobby language, I'd pick the one that is has the most interesting features or is somehow badass.
I think this excludes go. I just don't see how it's interesting. It's just a stripped down and lighter version of stuff we already had. Similarly Python's main point seems to be easy for beginners.
Rust on the other hand introduces some really new concepts so out of those three that's what I'd go with.
However, continuing in the line of languages that really offer something different:
Fair warning: I haven't used even half of these. Most are cool but not practical for any of the problems I have at hand.
I'd choose Rust (though it's the only one of the three I don't know yet).
Some or Go's interesting aspects are: goroutines, "duck typing" interfaces, easy cross compilation with small self contained binaries and speed
Python is a great general purpose language but I wouldn't call it innovative in 2019...
Rust seems the most interesting among the three to pickup from scratch. No garbage collection, memory safe allowing fearless concurrency, small binaries with the possibility of cross compilation and it's a systems language, so you might be exposed to some concepts that are a bit abstracted by the higher level platforms you're using right now.
As a hobby, I would pick the most "challenging".
Python is a very practical language to learn, and while I would say that anyone should be familiar with it, it's not what I would call a "hobby language".
Go and Rust are both interesting languages. If you really want to dive into learning more computer science concepts like compilers, algorithms, data structures, etc, I would pick one of those up. I myself taught myself most of those concepts using Go.
I would consider Go a more practical choice than Rust. You can currently get hired as a Go developer, whereas I have not seen Rust very many times in job postings. Not that it isn't there, it's just not nearly as prevalent as Go at this time.
I've pretty much committed to python for a few reasons partly because I have started with Raspberry Pi and the fact that it is now supported directly in SQL2017, which gives me ample opportunity to work with it professionally as well.
As for getting a job, I've been a MS stack dev for the better part of 25 years. Not really interested in changing. Plus I'm at what I hope is my last job til I keel over lol.
I find Go pretty boring and lacking, the only new concept there is the green threads. Python is very practical but also boring. I recommend Rust, as it has new interesting concepts not found elsewhere. Considering your background, I'd also recommend F#. It's fun, interesting and offers new insights for a developer coming out of procedural or OOP. The added benefit: you would be able to add it to your toolbox as a .NET developer.
I considered f#, but never really got enthused about it. If I were to go the functional route I'd probably do elixer or erlang. It sounds weird but I find the syntax intriguing
I have also been a .net developer for a while now and I began to see the need to branch out and learn a new language. This was because I was having a hard time getting customers who would like systems built using C#; Azure hosting is kinda expensive. I needed a language that would be easy to work with and also easy to host; I came down to two languages; Go and Python. The reason I choose both is because in my country(Kenya) Go hasn't really caught on, so many companies use; PHP, Python and Ruby. So the python option was to ensure I secure my future.
I choose Go, because of its simplicity and ease of learning. Go, offers all the attributes of a language I was looking for. Moving from C# to Go was easy thanks to its awesome community and good documentation.
I would love to do 2 but not enough free time to do a decent job of it
I will strongly recommend Golang, easy to learn, powerful and uprising.
Rust followed by go
I started learning Golang this year and I am pretty much amazed by the language.