You know, I've recently started thikning - why do we even need explicit imports? Isn't the compiler/etc smart enough to figure out the right import 99% of the time?
Every file in a large project starts with dozens of redundant import lines. Why don't we have imports go the way of the inferred type?
What if foo() is present in two different libraries? (is this the 1% you're talking about?)
What if tomorrow I add another library which implement his own foo()? (this is trickier)
When I read the code, what is foo()? (here the IDE may be smart and show me the right documentation).
All that said, I feel that the pythonic "Explicit is better than implicit" is better.
It's also true that when I see a file whose first 30 lines are used for including dependencies it doesn't sound right.
The problem lies with the fact that we use text to store structured data. If we were to save source code as binaries we could have the source code in a "file|object|item" and the dependencies in another item, linked to the source code (I'm not advocating this, source code in text files has many advantages, but also his drawbacks).
We give each name a unique id under the hood. At edit time the user chooses which one they want from a list. The actual AST only ever refers to ids and the names are effectively just documentation.
This has the neat side-effect that ids are globally unique so you can figure out what libraries you need to pull down just by looking up ids in your package repository.
Depends on what you're looking for. The issue isn't really "importing" the code references as much as it is a scoping issue. That is, imports are largely used to define scope for the file and mostly for the programmers benefit (so you're typing, say, Button.DoSomething instead of System.Windows.Controls.Interactive.Button.DoSomething).
That and the odd namespace clash that a compiler can't really resolve, but that is more due to implementation and system issues, not programming proper.
That's true for pulling functions from other installed namespaces, but to my knowledge you can't install a library in the same way (eg search for 'parse html', drag a result into the editor, get Beautiful Soup added to your virtualenv and imported into the repl).
If I select a function from autocomplete, its dependencies should be automatically added to the project without any fuss.
For the point, that that post makes, this one is at least available if you use IntelliJ with Java or Scala.