DEV Community

From Python to..

Pierre Bouillon on April 20, 2018

Hi fellows! It's been a while since I wanted to learn a new language and since I love Python (3.x please), I started to investigate on existing/s...
Collapse
 
dmerand profile image
Donald Merand • Edited

Personally I love Ruby the most and use it every day, but which language you should learn next depends on your goals.

Ruby and Python have very similar sweet spots: they are both interpreted, dynamically-typed general-purpose scripting languages. They have similar performance, and similarly mature libraries. The differences between them are essentially philosophical - Python is about doing things the One Right Way, and Ruby is about making developers feel delight by letting them muck about with anything they want.

Go, on the other hand, has a very different sweet spot. It's a compiled, typed language with a focus on server programming and concurrency (which neither Ruby nor Python address very elegantly).

If I were in your shoes, I would learn Go next, because in the long run I would have more options knowing both Python and Go. But if your goal is simply to get more exposure to interesting ideas and approaches, you would be well-served by learning either Ruby or Go.

Collapse
 
pbouillon profile image
Pierre Bouillon • Edited

You're right... It may be better to expands my knowledges... Do you recommend me any good tutorial?

Collapse
 
dmerand profile image
Donald Merand

I wish I could be of better help, but not having learned Go myself, I can't recommend anything first-hand.

It looks like the Go Wiki has a section with links to books + videos that might be of some assistance.

Collapse
 
rpalo profile image
Ryan Palo

The beauty of learning something in your spare time is that no one will judge you if you decide you're not feeling it and bail. I think it's worth it to just pick one (Go if you want to learn a fast, compiled language that's pretty different than the dynamic-ness of Python, and Ruby if you want to explore a really fun-to-write general purpose language that is used for web, systems automation, and scripting mostly). If you decide you're not feeling it after a few/dozen/hundred sessions, just switch!

It's not like you're going to lose any of that practice/experience with whichever one you chose first if you end up switching. Any time you spend learning instead of trying to decide what to learn is valuable time gained, regardless of what language or topic it is.

That being said, try Go if you want to expand your toolset and have a fast language under your belt for if Python is too slow for something. Try Ruby if you want to do similar things to what you already know how to do in Python, but with a very different dialect/mindset that might change the way you think about writing your Python code too! P.S. I started with Python and still love it, but Ruby ended up taking its place as my favorite language to write. :)

I used to stress out that I was not focusing enough on a specialty, and was constantly jumping from thing to thing. Focusing is good to a point, but at a certain point, your free time is your free time and if you want to take a day to mess around with Haskell or something, don't feel bad about it! Some days you are allowed to Treat Yo Self!

Collapse
 
pbouillon profile image
Pierre Bouillon

It's really inspiring, I think, regarding all comments, that I'll give a shot to both and continue with the one I have the most fun :)

Collapse
 
evanoman profile image
Evan Oman

To echo a popular opinion expressed here on dev.to and elsewhere: try to avoid spending resources on something because it might be useful or because it is popular. Try to focus on learning things with a specific objective in mind. Do you want to build a certain type of web app? Do you want to build a ML classifier? Is learning a new language the best use of your limited time or can you build what you want with the tools you know? Decide what is most important for you to do and use that to drive your decision.

Collapse
 
pbouillon profile image
Pierre Bouillon • Edited

I'm trying to learn news things to have more dev culture, to experiment for myself a little without any reason just having fun, have a different point of view of current problem I faced through another language.
Of course if it might be useful later it's only bonuses!

I'm not trying to learn because it might be useful, just because I love it, and if it is a popular language it just means that I surely will find help quickly if I'm stuck :)

Thanks for the article tho, I'm going to read it!

Collapse
 
evanoman profile image
Evan Oman

Those are all wonderful reasons to learn so more power to you for taking the time to learn for fun!

If you really want a new perspective I would recommend something wildly different than Python. Learning about other paradigms like functional or logical programming can be very eye opening albeit academic/mathematical. Whatever floats your boat!

Thread Thread
 
evanoman profile image
Evan Oman

Oh and I am a huge fan of static typing (which you can kind of do in Python 3.6) so a language like Java would provide a very different perspective as well.

Collapse
 
evanoman profile image
Evan Oman

I highly recommend this article, even if you aren't trying to start a side hustle it provides a good framework for making career-related decisions: daedtech.com/turning-tech-hobbies-...

Collapse
 
itsjzt profile image
Saurabh Sharma

If it was in your condition, I would choose Ruby,

  • it's matured, has plenty of libraries.
  • it has rails.
  • odin and similar projects are there to teach you ruby, can't think of any good go course.
Collapse
 
pbouillon profile image
Pierre Bouillon

Wonderful ! Thank you !

Collapse
 
rhymes profile image
rhymes

Although Ruby is indeed great as the other said and its philosophy is different from Python's it's not THAT different to take priority over Go IMHO.

I'm not comparing the two, I'm just saying that if you want to learn something different and learn different ways to develop software (that you might then incorporate in your main language) you ought to learn either Go or Rust or Elixir or something that's fundamentally different from Python's way of doing things.

I hope this makes sense.

By the way, there's no wrong choice here, depends on what you want to learn and why :-)

I started with gobyexample.com/ and gowebexamples.com/

Collapse
 
jorinvo profile image
jorin

I can also recommend you having a look at, both, Go and Elixir! Even if you will end up using Python most of the time, both languages can teach you useful new things – and both different things.

I have written about Go from a Node.js' point of view. A lot of this also applies to coming from Python: dev.to/jorinvo/why-go-for-nodejs-d...

And here is a quick article to get started with Elixir: dev.to/jorinvo/learn-elixir-by-cre...

Surely Rust can each teach you a lot too, but it is mostly useful for other problem domains than what you might be interested in coming from Python.

Collapse
 
pbouillon profile image
Pierre Bouillon

Thank you!
I see your point, I think you're right.
I'll probably start by go and then explore Ruby.
I keep Rust and Elexir in my mind tho

Collapse
 
dmerand profile image
Donald Merand

If Elixir is on the table, that one gets my vote ;) It's very very different from Python. I've found that writing a few apps in Elixir definitely has improved my object-oriented code.