Возникла необходимость поизучать JavaScript, ранее сталкивался с другими динамическими языкам, вот что меня просто бесит:
function myFunc()
{ a = 2;
alert('Result='+a+a);
alert('Result='+(a+a));
}
Что мешает разработчикам добавить типизацию, сохранив для совместимости старый стиль? Это ведь позволит увеличить скорость, избежать многих багов. Что они уперлись, постоянно что-то добавляют, а типизацию ни-ни, странно как то...
Здравствуйте, Lloyd, Вы писали:
ora>>function myFunc() ora>> { a = 2; ora>> alert('Result='+a+a); ora>> alert('Result='+(a+a)); ora>> }
L>Ты не поверишь, во вполне типизированном C#-е результат будет ровно таким же. ;)
А разве там можно писать "Result = " + 2? Или "2" + "2" там равняется "4"?
Здравствуйте, Roman Odaisky, Вы писали:
L>>Ты не поверишь, во вполне типизированном C#-е результат будет ровно таким же.
RO>А разве там можно писать "Result = " + 2?
Зло не в типизации, а в том, что конкатенация строк обозначена тем же символом, что и сложение. Непонятно, чем думали разработчики языка, это совершенно бредовая идея. Не бывает на практике ситуаций, когда мы пишем "x+y", при этом для числовых типов должна получиться сумма, для строк — конкатенация, причем заранее мы не знаем, что из двух должно получиться. Такой полиморфизм нафиг не нужен.
Здравствуйте, Панда, Вы писали:
П>Зло не в типизации, а в том, что конкатенация строк обозначена тем же символом, что и сложение. Непонятно, чем думали разработчики языка, это совершенно бредовая идея. Не бывает на практике ситуаций, когда мы пишем "x+y", при этом для числовых типов должна получиться сумма, для строк — конкатенация, причем заранее мы не знаем, что из двух должно получиться. Такой полиморфизм нафиг не нужен.
Почему?
P.S. Я правильно вас понял, что для double-ов вы тоже предпочли бы ввести отдельный оператор, так же как и для float-ов, decimal-ов, long-ов, TimeSpan-ов и т.д.?
Здравствуйте, Lloyd, Вы писали:
L>P.S. Я правильно вас понял, что для double-ов вы тоже предпочли бы ввести отдельный оператор, так же как и для float-ов, decimal-ов, long-ов, TimeSpan-ов и т.д.?
Здравствуйте, Панда, Вы писали:
L>>P.S. Я правильно вас понял, что для double-ов вы тоже предпочли бы ввести отдельный оператор, так же как и для float-ов, decimal-ов, long-ов, TimeSpan-ов и т.д.?
П>Нет, неправильно.
Здравствуйте, Lloyd, Вы писали:
L>>>P.S. Я правильно вас понял, что для double-ов вы тоже предпочли бы ввести отдельный оператор, так же как и для float-ов, decimal-ов, long-ов, TimeSpan-ов и т.д.? П>>Нет, неправильно. L>В чем принципиальное отличие?
L>Ну так ошибка состоит в приписывании коммутативности операции сложения строк, а не в том, что используется "+".
Ну вот и получается, что у тебя коммутативность + зависит от контекста.
Здравствуйте, Vamp, Вы писали:
L>>Ну так ошибка состоит в приписывании коммутативности операции сложения строк, а не в том, что используется "+". V>Ну вот и получается, что у тебя коммутативность + зависит от контекста.
Не, я не ассоциирую с "+" никакую коммутативность. Зачем она?
Здравствуйте, Vamp, Вы писали:
L>>Я не знаю, что такое хорошо, зато знаю, что такое удобно. V>Удобно — хорошо. Мне бы это было неудобно.
Ты ошибаешься. Тебе бы это было тоже удобно.