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

N>Здравствуйте, ankf, Вы писали:


A>>2) Javascript это конечно хорошо, на нем конечно можно делать достаточно сложные вещи, вопрос цены.

A>>Отсутствие в этом языке строгой типизации и наличие прочих динамических фишек, например нет контроля за количеством передаваемых параметров, все это приводит в результате к увеличению трудозатрат на отладку.

N>Лично я не вижу никаких проблем с JavaScript'ом. Скорость работы интерпретируемых движком V8 скриптов уже неумолимо приближается к скорости программ, скомпилированных gcc.

N>Удобство разработки же — дело привычки. Насколько я понимаю, вам более привычны .NET/Java — я же их терпеть не могу, и предпочту им динамические JavaScript или Ruby. К тому же, насколько могу судить, флэшевский ActionScript не сильно отличается от JS.

N>Касаемо контроля за количеством передаваемых параметров — так он делается элементарно:


N>
N>function foo(a, b) {
N>  if (arguments.length < foo.length) {
N>    throw new Error('Too few arguments.');
N>  }
N>  console.log(a, b);
N>}

N>foo('foo', 'bar'); // foo bar
N>foo('foo'); // Error: Too few arguments
N>


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

ну и выполнятся эти проверки будут в рантайме, что еще сильнее просадет производительность, в нарушение всех законов физики, неумолимо приближающуюся к gcc


A>>По сути объекты в javascript все имеют один тип Dictionary<string,object> , который заполняется именем поля и значением. Это в целом существенно ухудшает читабельность кода что достаточно существенно замедляет и поддержку и разработку.

A>>Таким образом разработка на Javascript обойдется очень дорого.

N>Очень субъективные утверждения. У подхода "любой объект = хэш-таблица" и у прототипного наследования есть много преимуществ — методы в объекты и классы можно добавлять динамически (в том числе и в объекты вроде String, Number, Array, и т.д.). Прототипное наследование же, к примеру, позволяет запросто построить "классическую" модель ООП, включая приватные, защищенные, и абстрактные методы, примеси (которые mixin), и многое другое.


A>>3) Преимущества ради чего кто-то кинется писать GUI проекты под html5 это кроссплатформенность [...] Что опять сводится к разработке некой общей части с использованием стандартных объектно-ориентированных приемов, тот же полиморфизм, которые в javascript будут очень плохо укладываться.


N>С чего бы они будут плохо укладываться?

N>JS — объектно-ориентированный язык — не побоюсь сказать, даже более объектно-ориентированный, чем та же Java.
N>И все возможности по инкапсуляции, полиморфизму, и наследованию там присутствуют — просто в непривычном виде.

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