Возникла необходимость поизучать 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>Удобно — хорошо. Мне бы это было неудобно.
Ты ошибаешься. Тебе бы это было тоже удобно.
Здравствуйте, Vamp, Вы писали:
L>>Ты ошибаешься. Тебе бы это было тоже удобно. V>Спасибо, но я знаю, что мне удобно, а что мне неудобно. Еще раз спасибо.
Не за что. Если бы знали, не стали бы голословно говорить, что это удобно, а привели бы пример, когда вариант с иным оператором склеивания строк в чем-то лучше. Пока такого варианта нет, я склонен считать, что вы просто "умничаете". Право, не стоит.
L>Тебе дествительно когда-либо мешала не-коммутаивность строк на практике, или ты споришь чисто из иделогогических соображение?
Некоммутативность строк мне не мешает, это свойство строк. А вот к тому, что + — коммутативен, я привык. И в тех языках, которыми я пользуюсь, операция сложения строки с числом не определена.
Здравствуйте, Vamp, Вы писали:
L>>Тебе дествительно когда-либо мешала не-коммутаивность строк на практике, или ты споришь чисто из иделогогических соображение? V>Некоммутативность строк мне не мешает, это свойство строк. А вот к тому, что + — коммутативен, я привык.
Здравствуйте, ora, Вы писали:
ora>function myFunc() ora> { a = 2; ora> alert('Result='+a+a); ora> alert('Result='+(a+a)); ora> }
ora>Что мешает разработчикам добавить типизацию, сохранив для совместимости старый стиль? Это ведь позволит увеличить скорость, избежать многих багов. Что они уперлись, постоянно что-то добавляют, а типизацию ни-ни, странно как то...
Например то, что ты начианешь давать советы, касающиеся дизайна языка, не ознакомившись с ним. Например переменная "a" является глобальной.
Здравствуйте, ora, Вы писали:
ora>>>Что мешает разработчикам добавить типизацию A>>JavaScript — типизированный язык. ora>Может я терминологию путаю, но разве в JS можно задать тип данных для переменной и он не будет меняться все время жизни этой переменной?
Такое поведение называется динамической типизацией, но она не означает, что типов нет.
Здравствуйте, Lloyd, Вы писали:
L>P.S. Я правильно вас понял, что для double-ов вы тоже предпочли бы ввести отдельный оператор, так же как и для float-ов, decimal-ов, long-ов, TimeSpan-ов и т.д.?
В OCaml так и сделано сначала плюешся, потом привыкаешь и практически не замечаешь.
Здравствуйте, FR, Вы писали:
L>>P.S. Я правильно вас понял, что для double-ов вы тоже предпочли бы ввести отдельный оператор, так же как и для float-ов, decimal-ов, long-ов, TimeSpan-ов и т.д.?
FR>В OCaml так и сделано сначала плюешся, потом привыкаешь и практически не замечаешь.
Ну привыкнуть-то можно ко всему, вопрос чего ради.
Здравствуйте, ora, Вы писали:
ora>Возникла необходимость поизучать JavaScript, ранее сталкивался с другими динамическими языкам, вот что меня просто бесит:
ora>function myFunc() ora> { a = 2; ora> alert('Result='+a+a); ora> alert('Result='+(a+a)); ora> }
ora>Что мешает разработчикам добавить типизацию, сохранив для совместимости старый стиль? Это ведь позволит увеличить скорость, избежать многих багов. Что они уперлись, постоянно что-то добавляют, а типизацию ни-ни, странно как то...
Вы конечно извините, но у вас типизация головного мозга.