/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/in...)" curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/maste... | python - brew install pyenv // update shell with pyenv pointer pyenv install 3.9.0 pyenv global 3.9.0 poetry init poetry config virtualenvs.in-project true --local poetry install
For deployment, Docker python3:alpine, install poetry, copy over pyproject.toml and install
Well, for starters, that particular multi-liner:
- installs an entire package manager, which may or may not conflict with system tools or a different package manager,
- assumes pyenv will build Python against the system libraries without additional flags (it won't if you're running Big Sur, you'll need zlib from Homebrew),
- assumes you are on macOS, and does not attempt to work on Windows or Linux, or account for the idea that someone might not want to deploy a program using Docker.
Why do we need virtual env in 2020?
It's one of the worse "modern" language to build, even Java / NodeJS are better.
For me, this is the consequence of a reasonable static type system. Without generics and the current error handling story, it almost feels like Go makes large codebases necessary in the projects I've used it, compared to other statically typed languages such as Kotlin, Java, Rust, and C#.
Go 2 on the other hand looks like it will solve this problem, and I eagerly await its release.
I agree that some form of static typing is critical to scale a codebase, or an ecosystem. Let’s also not forget the importance of a packaging system with robust version management. Go modules and proxy.golang.org are also critical to Go’s success at (code) scale.
How many years of Java experience do have?
- a GC that can has relatively smart defaults without having to tweak a ton of parameters
- don't have to ship a vm
- concurrency baked in from the start
- simpler language
- doesn't try to square everything into the OO paradigm
Depends on the JVM being used
> don't have to ship a vm
You get to ship a runtime instead.
Which Java also allows since around 2000, given how long commercial AOT compilers do exist for Java.
> simpler language
Java 1.0 was also Go simple, and just like Go does nowadays, full of code generation tools to work around that simplicity.
> doesn't try to square everything into the OO paradigm
Interfaces are part of OOP, introduced by Objective-C protocols.
Is picking a jvm not tweaking a parameter?