4 ms·
Using fully qualified imports is a Python tradition. Python doesn't have a notion of public/private symbols (no, "__" prefix does absolutely nothing). It also
by archargelod 1y ago
Using fully qualified imports is a Python tradition.
Python doesn't have a notion of public/private symbols (no, "__" prefix does absolutely nothing). It also doesn't have a good type system, so it can't have function overloading.
This is why you're required to qualify almost all imports in Python, to avoid name clashes.
Nim doesn't have this problem and also "fixes" a lot of other shortcomings[1] of Python.[2]
[1] - https://github.com/yugr/python-hate https://github.com/yugr/python-hate
[2] - https://github.com/nim-lang/Nim/wiki/Nim-for-Python-Programmers https://github.com/nim-lang/Nim/wiki/Nim-for-Python-Programm...
- maleldil 1y agoIt's not only a Python thing. Many modern languages require this as well. Go, Gleam, Rust, etc. When you're reading Nim code and you see a symbol you don't know, how can you tell where it comes from? In Rust, it's either qualified or you have to explicitly import it. What do you do in Nim?
- archargelod 1y agoThis is solved by tooling. LSP will get you to symbol definition in a single key press. That's a lot faster then looking it up manually. In my experience, it's even faster to git clone, open a project in neovim and navigate with LSP than browsing code with some online interface.
- archargelod 1y ago> Many modern languages require this as well. Go, Gleam, Rust All the languages you listed do not support function overloading. Qualified imports and namespaces exist to avoid name clashes first, dependency tracking is just a bonus (and a chore).