Вопрос такой.
Многие динамические языки позволяют неявно объявлять переменные (некоторые даже и вовсе не имеют синтаксиса для явного объявления, но это другой вопрос).
При этом в ряде случае такое объявление не рекомендуется.
Возьмем всем известный ДжаваСкрипт. Там объявление переменной без var считается моветоном, хотя бы потому что его семантика кардинально отличается от объявления с var (однако по коду это совершенно неочевидно):
function Foo()
{
var x = 1; //переменная в скопе Foo
y = 2; //А вот уже переменная в глобальном скопе
}
Если рассматривать проблему с т.з. ДжаваСкрипта, то там и вовсе становится непонятно, зачем нужна возможность неявного объявления. Я, к примеру, так не пишу никогда.
Но с другой стороны вышеуказанный пример и:
var obj = {};
...
obj.y = 2;
Вещи в принципе родственные.
Собственно, мой вопрос, как вы считаете — если в языке есть синтаксис для явного объявления переменных, насколько необходима поддержка неявного объявления? Если эту возможность убрать (т.е. в примере выше была бы ошибка) потеряет ли язык в выразительности?