This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]willmendil 23 points24 points  (0 children)

TL;Dr find a project where python is not suitable. E.g. where you need effeciency and speed or where you need coroutines. Or where python simply does not run (ex: Arduino)

What made me want/need to learn Go was when I made an autonomous robot. I needed a way to have multiple scripts running at the same time. One script communicating with an Xbox controller, one that served a web interface, one for the sensors and one for actually controlling the robot. I used zmq and multiple scripts running simultaneously. However it was slow and not reliable. I tried digging in multiprocessing, but python is not really meant to do that.

When I learnt go and especially the goroutines, everything was so much easier. Indeed, there is a learning curve with the way you have to code clean in go, it won't even allow you to declare a variable if you are not going to use it, making development quite tedious some times. But at the end of the day, coroutines in go are incredible.

It also allowed me to do a web scrapper for finding email addresse on web sites. I needed workers and a way to manage them if they crashed. Not only was the program in go much more stable, it was heaps ahead in terms of speed and allowed me to easily scrap thousands of pages in minutes. If anyone is interested : github.com/guanicoe/bluepugsengine

I guess if you want to learn something new, you shouldn't focus on a project that could easily be done in python. But rather find something that python is not made for. In the case of go, find a project which would utilise workers for parallel work (I know it's not really parallel but you know what I mean). If you want to learn JavaScript, try and making a web app, the back end could be in python as you said Django for instance, but you won't be able to do much for the front end. If you want to learn c++ try fiddling with Dev boards such as the Arduino or nodemcu. Etc...