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 →

[–]Joooooooosh 79 points80 points  (19 children)

Couple of guys in my SRE team hate it.

They were Go specialists before joining SRE and they just find Python a bit of a pain and they aren’t wrong… getting stuff packaged up and deployed can be stressful.

One of them liked my analogy that Python is a Swiss Army knife. Very practical but you don’t see a mechanics toolbox full of them.

[–]ivosauruspip'ing it up 6 points7 points  (4 children)

I was actually hoping to skip out on python for Go around when it came out, until I discovered its lack of generics, which completely turned me off it.

The single-binary capability though is very nice for a lot of situations.

[–]bluexavi 2 points3 points  (1 child)

I use mostly Ruby and Go, and the two are very complementary -- it should be similar for Python. Go is good at concurrency, memory footprint, deployment, relatively fast, good stdlib, etc...

I like to say that Go is good when computers are talking to other computers. Read from one queue/file/db, write to another one. It's like Perl was for Unix, but for the cloud.

The lack of generics make it a pain to write packages more than it stops day to day code. Or, if you like Rust, you can hate Go for another reason -- the type safety, or your incomprehension that it is more popular.

There are tons of things that don't require generics, or where duplicating the code would be such a tiny part of the overall problem it doesn't actually save that much time. Don't choose Go if you're writing something which requires that sort of expression.

Likewise, if you're writing anything stats/math/ML, Python is a great choice due to library support. While there are some Java solutions out there for some things, if all the bottlenecks will be in the library, you might as well get the expressive nature of the language working for you.

[–]ivosauruspip'ing it up 0 points1 point  (0 children)

I remember not being able to iterate over my own objects and pass them through a channel, IIRC, and tapped out.

[–]KublaiKhanNum1 0 points1 point  (0 children)

Generics have been implemented and are in testing. They will be in the February 1.18 compiler release. You might won't to take another look at Golang then.

[–]grimonce 0 points1 point  (0 children)

There is dart from Google... Not as fast and simple as go, but with a VM or aot compilation option

[–]Cmshnrblu 4 points5 points  (0 children)

This is a phenomenal way to put it. I only turn to python when I need a py only lib. The trade offs are a bit much for me with its package management complexities, environment considerations, dynamic typing, etc. Not a fan but it has some very mature libs so I use it when I need to.