I'm switching to Python and actually liking it
Python’s renewed popularity is being driven by AI, data science, and vastly improved tooling such as uv, ruff, and modern type checking, leading some developers from Java, JavaScript, R and others to “switch to Python and actually like it.” Commenters praise the language’s readability and rich ecosystem but remain sharply divided over long‑standing pain points like packaging and dependency management, virtual environments, dunder syntax, and async performance. Many see uv and related tools as finally taming “dependency hell,” while others argue that Python’s dynamic nature and ecosystem still make it fragile compared to newer, strongly typed languages like Rust, Go, or TypeScript.
Python on Unix/macOS by Default
- Several comments challenge the claim that “Python is natively integrated in all Unix distros.”
- Many Linux distros ship Python by default; BSDs often don’t.
- macOS used to bundle Python 2.7; it was removed (mid‑Monterey), leaving only a shim that prompts to install developer tools.
- Some see removal as good (avoid outdated system interpreters, reduce security/maintenance burden); others found the mid-cycle removal of Python 2 disruptive and poorly managed.
Dunder Methods and Syntax Debates
- Big subthread on
__init__,__new__, and dunder naming. - Critics: visually noisy, “underscore madness,” non-keyword special names feel like a hack compared to
constructor/operator+. - Defenders:
- Double underscores clearly mark “magic” methods and keep them out of normal APIs.
- They’re only seen in definitions; users call normal syntax (
obj + x,MyClass(...)). - Other languages (PHP, Lua, JS symbols, C/C++ macros) do similar things.
- Related: explanation of Python’s four name styles (
foo,_foo,__foo,__foo__) and name-mangling behavior.
Packaging, Virtual Environments, and uv
- Strong consensus that historical Python packaging/env management has been painful, especially with native extensions (NumPy, SciPy, BLAS/LAPACK).
- Complaints: broken
pipworkflows, version conflicts, fragile old projects, need for Docker or Conda to get repeatability. - Counterpoints:
- For pure-Python libs,
venv + pipcan be fine; many large production systems run reliably. - Problems often stem from C/Fortran deps and ecosystem inconsistency, not the language itself.
- For pure-Python libs,
- uv is widely praised as a step‑change: fast, unifies env creation, dependency resolution, tool installation (
uvx/uv tool), and can abstract away manual venv activation. Speculation that uv may become the de facto standard.
Python’s Role, Popularity, and History
- Several timelines: from sysadmin “Swiss army knife,” to early web frameworks (Zope, Django, CherryPy), to scientific computing (Numeric → NumPy, SciPy, Pandas, Matplotlib, scikit‑learn), to data science/ML and now LLM tooling.
- Debate on whether Python’s success is driven mainly by entry-level courses vs. earlier industrial and scientific adoption.
- Many describe Python as “second best language for any job” or “closest to executable pseudocode,” favored for glue code, data processing, and ML, with other languages (Java, Go, Rust, TypeScript, C#) preferred for large, strongly-typed systems.
Language Preferences and Pain Points
- Enthusiasts: enjoy readability, huge ecosystem, batteries-included stdlib, and modern tooling (uv, ruff, pydantic, FastAPI, Jupyter).
- Skeptics:
- Dynamic typing and late errors; large Python codebases feel fragile vs. Rust/Go/TS.
- Async/
asyncioergonomics, GIL, and debugging across Python/C++ boundaries. - Significant whitespace and scoping quirks (loop variables leaking, exception-variable behavior).
- Some report switching away from Python (to JS/TS, Rust, Go) for better typing, tooling, or concurrency; others are moving to Python because of AI/ML libraries and LLM-centric tooling.
Tooling, Project Structure, and Monorepos
- Common “modern Python stack” echoed:
- uv for envs/deps, ruff for lint/format, sometimes ty for typing checks, pydantic or dataclasses for data models.
- FastAPI or similar for web APIs; Make or
justas task runners.
- Some favor monorepos (especially for small teams or personal projects); others report monorepo dependency tangles and prefer service‑ or area‑based repos.
- Cookiecutter, Copier, and similar templating tools are recommended for bootstrapping consistent project layouts.