Live data from Hacker News

Learning Go as a Python Developer: The Good and the Bad

new.pythonforengineers.com

241–250 of 269 posts

Re: Learning Go as a Python Developer: The Good and the Bad

#241

Earlier quoted context omitted.

And unless things have gotten a lot better in the 2 years since I last did `pip install numpy` on ARM, prepare for a very long wait because you'll be building it from source.

There's a precompiled package for ARM these days.

Does it come with GPU support?

Re: Learning Go as a Python Developer: The Good and the Bad

#242

Earlier quoted context omitted.

This comment section itself clearly shows how crazy dependency and environment management is in Python. In this thread alone, we've received instructions to... - poetry - "Just pin the dependencies and use Docker" - pip freeze - Vendoring in dependency code - pipreqs - virtualenv This is simply a mess and it's handled much better in other languages. I manage a small agency team and there are some weeks where I feel l…

This has indeed been eye opening. We got bit by a dependency problem in which TensorFlow started pulling in an incompatible version of protobuf. After reading these comments, I don't think that pip freeze is quite what we want, but poetry sounds promising. We have a relatively small set of core dependencies, and a bunch of transitive dependencies that just need to work, and which we sometimes need to update for secur…

Why do you think that `pip freeze` wouldn't be what you want? (I once had the exact same issue with TF and protobuf and specifying the exact protobuf version I wanted solved it.)

Re: Learning Go as a Python Developer: The Good and the Bad

#243

Earlier quoted context omitted.

When I tried learning Python, this mess is what turned me off so badly. Python is the first language I ever came across where I felt like Docker was necessary just to keep the mess in a sandbox. Coming to that from hearing stories that there was supposed to be one way to do everything disenchanted me quickly.

python has had virtual environments forever now. what was it missing?

Every article I found suggested different versions of Python, like Anaconda. They all suggested different virtual environments too. Rarely was an explanation given. At the time, the mix of Python 2 vs Python 3 was a mess.

The code itself was okay, but everything around it was a train wreck compared to every other language I’d been using (Go, Java, Ruby, Elixir, even Perl).

I attempted to get into it based on good things I’d heard online, but in the end it just wasn’t my cup of tea.

Re: Learning Go as a Python Developer: The Good and the Bad

#244
post #238

Earlier quoted context omitted.

Then use pip compile.

Sure. Or poetry, or pipenv, or whatever third party packaging system you enjoy. The whole point of GP is that python lacks a native sane packaging system, which I agree.

Python has several. It’s overall a good thing. It’s the reason you can package both one-file scripts and huge C++ / Fortran packages, which is the reason it has become a huge language in HPC / ML / AI / astronomy / data science / …

I agree that it makes life more confusing for newbies, though.

Re: Learning Go as a Python Developer: The Good and the Bad

#245
post #218

Earlier quoted context omitted.

> Your comment hints that you are feeling personally attacked when Python is criticized. I am not feeling personally attacked (I am not married to Python), I am mostly just tired of reading the same unproductive type of complaints over and over again. This attitude is not unique to Python's situation, but actually is typical to our industry. It makes me want to find a different job, on some days. The community is try…

I can agree with your comment. What's missing is the possibility to, you know, just jump ship. You might not be married to Python but it sure looks that way for many others. I switched main languages no less than 4 times in my career and each time it was an objective improvement. The thing that kind of makes me look down on other programmers is them refusing to move on.

For nuance and to address your point, I have worked with PHP for about six years, .NET for five, C++ for two, and Python for seven.

I still dabble in all of them. Who knows when I will move on to the next. Rust looks nice. I tried go.

But they do not yet provide any of the tools/libraries I need for my work. That's how I've always selected my programming language.

So I would first need to invent the universe before I can create valuable things. Instead I will just wait until their ecosystems mature a little more.

I will end the discussion here though. Thanks for the response!

Re: Learning Go as a Python Developer: The Good and the Bad

#246
post #245

Earlier quoted context omitted.

I can agree with your comment. What's missing is the possibility to, you know, just jump ship. You might not be married to Python but it sure looks that way for many others. I switched main languages no less than 4 times in my career and each time it was an objective improvement. The thing that kind of makes me look down on other programmers is them refusing to move on.

For nuance and to address your point, I have worked with PHP for about six years, .NET for five, C++ for two, and Python for seven. I still dabble in all of them. Who knows when I will move on to the next. Rust looks nice. I tried go. But they do not yet provide any of the tools/libraries I need for my work. That's how I've always selected my programming language. So I would first need to invent the universe before I…

That's a valid reason to hold on. Thanks for indulging the discussion!

Re: Learning Go as a Python Developer: The Good and the Bad

#247

I don't think Python packaging is as bad as people make out (if packages only stick to the basic features of Python!) A far bigger issue I see is despite Python supposedly being 'cross-platform': the language introduces so many small, backwards-compatibility breaking changes that you really need to use the most up to date interpreter you can. For instance: there is now a really cool operator that lets you do expressi…

Python 3.8 and its walrus operator is 2.5 years old, it's not bleeding edge, at least not anymore. That being said, I'm worried about the language in that complexity increases through the introduction of new language features without much benefit at all.

Re: Learning Go as a Python Developer: The Good and the Bad

#248

> The libraries for Go aren't as good as for Python– certainly, the documentation is lacking Huh, Go has some of the best autodoc features of any language. Also the library assertion is insane to me. I switch back and forth from Go to Python all day and generally Go has more stable better maintained libs

Autodoc is great when you want to know "how do I use this function" but I find that projects that rely on it inevitable fail to answer "why do I use this function" which is usually the harder question.

Re: Learning Go as a Python Developer: The Good and the Bad

#249

Earlier quoted context omitted.

Sadly I agree with the author on the general feel of Go libraries. I can feel the language design itself and non-written philosophical identity of Go strongly affects what APIs people write in it. Most often, they suck. They feel monolithic, unforgiving, and impossible to extend. I don't belive we can only blame the lack of generics for that, it runs deeper. On documentation, I've never seen a language community that…

The bare bones godoc is generally fine because the language is so easy. Python needs the examples because most of the libraries have no types so you would have no idea whats happening without examples

> The bare bones godoc is generally fine because the language is so easy.

No, it's not.

> Python needs the examples because most of the libraries have no types so you would have no idea whats happening without examples

That’s not the main reason examples and narrative explanations in documentation are useful, but if the false belief that it is has helpe to fuel the Python documentation culture, I’m not going to complain too much.

Re: Learning Go as a Python Developer: The Good and the Bad

#250
post #118

Earlier quoted context omitted.

- Poetry is a 3rd party package manager, I'm sure it's great but it's not widely used (yet) - Pip freeze just pins all dependencies at once to requirements.txt - I don't know what "vendoring in dependency code" means - I've never used pipreqs in my life (and 80% of my work has been in Python) - Virtualenvs are just a convenient way to keep project runtimes separated And for 90% of Python projects in existence the fol…

Sounds like someone has never been asked to clone and run software targeting Python 3.x when their system-installed Python is 3.y and the two are incompatible.

Sounds like someone is making assumptions on the way I work :) As a matter of fact I have and the solution is pyenv. Node has a similar utility called n.
Post reply on HN