На это уже указывалось несколько исторических причин.
Кроме того, это связано с тем, что в большинстве языков, где ,
служит разделителем, последовательности пробелов в значительной степени игнорируются или, если быть более точными, хотя они могутотдельные токены , они сами не действуют как токены.Это более верно для всех языков, у которых их синтаксис получен из C. Последовательность пробелов во многом похожа на пустое слово, а наличие пустого слова delimit что-нибудь, вероятно, не лучшая идея.
Кроме того, я думаю, что это такяснее и проще для чтения.Почему в качестве действительно значимых разделителей используются пробелы, которые являются невидимыми символами и, по сути, служат только цели форматирования.Это только вносит двусмысленность.Одним из примеров является то, что предоставил Карл.
Секунда будет f(a (b + c))
.Теперь это f(a(b+c))
или f(a, b+c)
?
У создателей JavaScript была очень полезная идея, похожая на вашу, которая приводит к тем же проблемам.Идея заключалась в том, что ENTER мог бы также служить ;
, если утверждение было завершено.Заметьте:
function a() {
return "some really long string or expression or whatsoever";
}
function b() {
return
"some really long string or expression or whatsoever";
}
alert(a());//"some really long string or expression or whatsoever"
alert(b());//"undefined" or "null" or whatever, because 'return;' is a valid statement
На самом деле, я иногда склоняюсь использовать последнее обозначение в языках, которые не имеют этой «особенности».JavaScript заставляет меня отформатировать мой код, потому что у кого-то была классная идея - использовать ENTER вместо ;
.
Я думаю, есть ряд веских причин, почему некоторые языки таковы, как ониявляются.Особенно в динамических языках (таких как PHP), где нет проверки времени компиляции, где компилятор может предупредить вас, что способ разрешения неоднозначности, как указано выше, не соответствует сигнатуре вызова, который вы хотите сделать.У вас будет много странных ошибок во время выполнения и очень тяжелая жизнь.
Существуют языки, которые позволяют это, но есть ряд причин, почему они это делают.Прежде всего, потому что группа очень умных людей села и потратила довольно много времени на разработку языка, а затем обнаружила, что его синтаксис делает ,
устаревшим большую часть времени, и, таким образом, приняла решение об его устранении.