Информация об изменениях

Сообщение Re[33]: А что мешает заменить JS? от 22.03.2017 18:41

Изменено 22.03.2017 18:57 Serginio1

Re[33]: А что мешает заменить JS?
Здравствуйте, vdimas, Вы писали:


S>>Ну дык и C# с динамиками тоже опциональна.


V>Не опционально, надо явно указывать, что это dynamic. Никакого автоматического fallback до object или dynamic в случае автовывода типов не будет, будет ошибка компиляции.


И в чем разница? Опять же настраивай компилятор и посыпятся ошибки.

S>>Да и Object тоже.


V>Но ты не можешь вызывать никакие методы целевого объекта через Object, в этом смысл.

V>Сначала приведи к нужному типу, потом вызывай, если такое приведение было успешным.
V>Подобных ср-в в TS нет и быть не может.

А с dynamic могу

V>Даже от reflection, считай, уже отказываются.

V>К примеру в .Net Netive.
Нет не отказались. Просто нужно указать к каким типам применяется рефлексия, так как нет динамической компиляции.
https://msdn.microsoft.com/ru-ru/library/dn600638(v=vs.110).aspx

S>>По твоей логике C# и Java не нужны.


V>Это тебе захотелось так допилить мою логику.


Ну как же тебя понять если ты за строгую типизацию. А Java и C# таковыми не являются иобо приведение типа может вызывать исключения.
V>>>Ты с кем тут споришь? Сам с собой? Оставить тебя наедине? ))
S>>Ну ты же говоришь, что TS не нужен ибо типизация опциональна.

V>Верно, но ты не хочешь обсуждать последствия опциональности типизации. Тебе хочется перескочить этот момент и сразу перейти к тому месту, где тебе нравится показывать преимущества TS над JS. И я уже порядком устал, если честно, напоминать тебе, что я НЕ спорю с тем, что TS лучше JS. Я лишь утверждаю, что оба негодны.


У меня включена опция определения типа. Так что у меня типизация присутствует и я где тип неопределен пишу any.

V>>>Ладно бы взять TS для продолжения уже имеющегося проекта, тут вопрос "одно лучше другого" при сохранении обратной совместимости прокатывает, ОК.

V>>>Но когда кто-то говорит о НОВЫХ больших проектах на TS — сорри, это уже клиника.
S>> А на чем предлагаешь делать?
S>>То есть куча Web программистов использующих Angular 2 это больные люди?

V>Есть Angular 2 для Dart, что мешает?

V>Ты только вдумайся, если сейчас начинается некий проект, он несколько месяцев-год делается, а потом должен еще хотя бы лет 5-7 прожить. Это чудовищная ошибка сейчас закладывать в проект мину, основанную в базе на всё том же JS.

И чем Dart лучше TypeScript? И используют именно TS а не Dart ибо у TS больше премуществ. А на голом JS пишут только те, кто хочет стрелять себе в ногу.
Рассматривай JS как ассемблер для TS и Dart

V>Ведь не проблема была бы в некоем TS сделать нормальную типизацию. Это, как раз, не сложно. Фишка ведь в том, что имеющийся убогий JS-код должен быть валидным TS-кодом. Т.е., программист имеет принципиальную возможность продолжать писать убогие JS-конструкции в исходнике TS, это будет ОК с т.з. компилятора. А всё вместе это будет ж-па.

Это зависит от программиста. Еще раз TS позволяет писать строго типизированные приложения с автоматическим выводом типа для результата функций и тд.
И ничем он не хуже того же C#.
Например никто же на C# не использует динамики напрополую. Только там где это необходимо. Так же и в TS.
Re[33]: А что мешает заменить JS?
Здравствуйте, vdimas, Вы писали:


S>>Ну дык и C# с динамиками тоже опциональна.


V>Не опционально, надо явно указывать, что это dynamic. Никакого автоматического fallback до object или dynamic в случае автовывода типов не будет, будет ошибка компиляции.


И в чем разница? Опять же настраивай компилятор и посыпятся ошибки.

S>>Да и Object тоже.


V>Но ты не можешь вызывать никакие методы целевого объекта через Object, в этом смысл.

V>Сначала приведи к нужному типу, потом вызывай, если такое приведение было успешным.
V>Подобных ср-в в TS нет и быть не может.

А с dynamic могу

V>Даже от reflection, считай, уже отказываются.

V>К примеру в .Net Netive.
Нет не отказались. Просто нужно указать к каким типам применяется рефлексия, так как нет динамической компиляции.
https://msdn.microsoft.com/ru-ru/library/dn600638(v=vs.110).aspx

S>>По твоей логике C# и Java не нужны.


V>Это тебе захотелось так допилить мою логику.


Ну как же тебя понять если ты за строгую типизацию. А Java и C# таковыми не являются иобо приведение типа может вызывать исключения.
V>>>Ты с кем тут споришь? Сам с собой? Оставить тебя наедине? ))
S>>Ну ты же говоришь, что TS не нужен ибо типизация опциональна.

V>Верно, но ты не хочешь обсуждать последствия опциональности типизации. Тебе хочется перескочить этот момент и сразу перейти к тому месту, где тебе нравится показывать преимущества TS над JS. И я уже порядком устал, если честно, напоминать тебе, что я НЕ спорю с тем, что TS лучше JS. Я лишь утверждаю, что оба негодны.


У меня включена опция определения типа. Так что у меня типизация присутствует и я где тип неопределен пишу any.

V>>>Ладно бы взять TS для продолжения уже имеющегося проекта, тут вопрос "одно лучше другого" при сохранении обратной совместимости прокатывает, ОК.

V>>>Но когда кто-то говорит о НОВЫХ больших проектах на TS — сорри, это уже клиника.
S>> А на чем предлагаешь делать?
S>>То есть куча Web программистов использующих Angular 2 это больные люди?

V>Есть Angular 2 для Dart, что мешает?

V>Ты только вдумайся, если сейчас начинается некий проект, он несколько месяцев-год делается, а потом должен еще хотя бы лет 5-7 прожить. Это чудовищная ошибка сейчас закладывать в проект мину, основанную в базе на всё том же JS.

И чем Dart лучше TypeScript? И используют именно TS а не Dart ибо у TS больше премуществ. А на голом JS пишут только те, кто хочет стрелять себе в ногу.
Рассматривай JS как ассемблер для TS и Dart

Кстати в том же dart есть о Object и dynamic
https://www.dartlang.org/articles/language/optional-types
Object lookup(String key) { /* ... */ } // a lookup method in a heterogenous table
String s = lookup('Frankenstein');



[/q]
Of course, if you don’t use types at all, checked mode won’t get in your way.
[/q]
my_add(s1, s2) {
  return s1 + s2;
}

my_add(3, 4); // 7
my_add(new Point(3, 3), new Point(4, 4)); // Point(7, 7)


В дарте тоже типизация опциональна.

If we are correct in our assumption that the lookup returns a string, checked mode will execute smoothly. If we’re wrong, it will catch our mistake for us. In production mode, the code will run without complaint. Assume the lookup actually returns an object that isn’t a string, say an instance of class Frankenstein. The variable s will contain that instance. In no case will Dart do a magical coercion into a string. If it did, that would mean the type annotation was modifying the behavior of our program, and types would not be optional anymore.

V>Ведь не проблема была бы в некоем TS сделать нормальную типизацию. Это, как раз, не сложно. Фишка ведь в том, что имеющийся убогий JS-код должен быть валидным TS-кодом. Т.е., программист имеет принципиальную возможность продолжать писать убогие JS-конструкции в исходнике TS, это будет ОК с т.з. компилятора. А всё вместе это будет ж-па.
Это зависит от программиста. Еще раз TS позволяет писать строго типизированные приложения с автоматическим выводом типа для результата функций и тд.
И ничем он не хуже того же C#.
Например никто же на C# не использует динамики напрополую. Только там где это необходимо. Так же и в TS.