the importance of declaration for readability's sake.
I should have said in my original post why implicit variable declaration is such an incredibly bad idea -- it's not an issue of readability, it's much more fundamental and important.
Surely there must be a witty concise design principle term that covers this issue, but i can't recall what it might be so i'll just try to describe it as best as i can:
When writing code, there are a huge number of ways to make mistakes. No one writes perfect code all the time every time.
When an error in your code triggers a syntax error, or a fatal runtime error or exception -- the problem is often trivial to identify and correct.
The bugs that keep you awake all night (or all week or all month in some nightmare scenarios) are those that do NOT cause a program-halting error, but whose effects are only seen indirectly, and happen silently, in some mystery location in your code, far away from the source of the problem.
The reason that requiring explicit variable declaration (keep in mind we aren't talking about static typing now, i.e. saying what kind of data the variable holds; we are just talking about declaring that you are going to be using a variable named xyz) is so important, is that it is an immense safeguard and aid in locating a particularly common and hard to otherwise identify bugs.
Forcing the programmer to explicitly declare variable names that are going to be used is important because it allows the language to flag as errors any occasion where the programmer misspells a variable (or uses a variable name outside of its lifetime scope, etc.).
This happens frequently. And without a requirement for explicit variable declaration, instead what happens is that the program often marches on using invalid data without any sign that something is wrong -- leaving the programmer to try to figure out why the values being computed are not correct.