Re[4]: html5
От: Евгений Акиньшин grapholite.com
Дата: 11.07.11 09:09
Оценка:
Здравствуйте, nbaksalyar, Вы писали:

N>За время программирования на JS лично мне такой проверки не понадобилось почти ни разу.


а какого размера проекты писали? Просто у меня даже задачи средней сложности это хотя бы человек 5-ть над кодом в течении хотя бы лет 5-ти работали и это команда хотя бы разок полностью поменялась. В типизированных языках новым людям приходится работать с контрактами


пока проект маленькийи работаешь один и все с памяти держишь — на динамике оно может и быстрее пишется


ЕА>> не забудь написать юнит тест на КАЖДОЕ использование этого метода — мы же не хотим чтобы о неправильном количестве переданных параметров узнал конечный пользователь вместо программиста, не забываем затраты на поддержание этого зоопарка в актуальном состоянии (сравни количество действий при добавлении параметра с типизацией и без: в первом случае надо только добавить параметр и пройти по ошибкам компилятора, во втором еще исправить проверки и в ручную найти все обращения)


N>Не вижу причин присобачивать к динамическому языку костыли в виде системы проверки типов. Тут всего лишь другой подход — у него есть свои плюсы и минусы — так же как и у статически типизированных языков. Если смотреть с точки зрения C#/Java-программиста — то да, без проверки типов жить невозможно. А вот мне с точки зрения любителя функциональных и динамических языков непонятно, как можно жить без возможности pattern matching'а и добавления методов в рантайме.


ЕА>>ну и выполнятся эти проверки будут в рантайме, что еще сильнее просадет производительность


N>Да, на проверке типов теряется примерно 20-30% скорости при вызове метода.

N>В абсолютном значении для нетяжелых вычислений разница небольшая — 2-4 мс.

30%(!) — и это только проверки, а еще оверхед для поиска метода по имени итд. итп. Надо совсем никуда не спешить чтобы с этим мириться.

N>Пожалуйста:


N>
N>var Foo = new atom.Class({
N>  bar : atom.Class.protectedMethod(function(msg) {
N>    console.log(msg);
N>  }),
N>  foo : function(msg) {
N>        this.bar(msg);
N>  }
N>});

N>var Bar = new atom.Class({
N>  Extends : Foo,
N>  bar : atom.Class.protectedMethod(function(msg) {
N>    console.log('Hello, ' + msg + '!');
N>  })
N>});

N>var a = new Foo();
N>var b = new Bar();

N>a.bar('world'); // Error: The method «bar» is protected.
N>b.bar('world'); // -/ /-

N>a.foo('world'); // Hello
N>b.foo('world'); // Hello, world!
N>


что protected вижу, а где internal override?
ну опять же единственный способ убедиться, что везде вызвается коректно, написать тесты с 100% покрытием

N>Теперь у меня встречный вопрос — как средствами самого языка в Java добавить mixin'ы?


никак, типизированным языкам тоже есть куда расти
Не шалю, никого не трогаю, починяю примус Diagrams Designer for iPad and Windows 10
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.