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

Сообщение Re[23]: А что мешает заменить JS? от 19.03.2017 13:23

Изменено 19.03.2017 16:34 Serginio1

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

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


V>>>Гугл, напротив, предлагает уже оптимизированный байт-код.

S>> И чем он не оптимизирован. Для примера
S>>roslyn-linq-rewrite

V>Ты уже давал эту ссылку.

V>Переписывание исходника — это еще не тот уровень оптимизаций.

Запишем. Шаблоны не являются уровнем оптимизации.

S>>На самом деле есть две возможности оптимизации при компиляции в Il Roslyn и компиляция в натив RyuJIT


V>Да, речь идёт о чем-то вроде .Net Native, где одним из target будет webasm.


Ну и? Есть оптимизация на уровне компиляции в il и .Net Native
По поводу Webasm, то по сути то как я понял это аналог

CEF, ES6, Angular 2, TypeScript использование классов .Net Core. Создание кроссплатформенного GUI для .Net с помощью CEF

Со всеми проблемами.

V>>>В аннотациях типа.

V>>>Это серьезное отличие синтаксиса, которое тянет за собой много чего.
S>>Так в Darte и этого нет. Ничего это за собой не тянет. Поверь мне. Я то в отличие от тебя пишу на нем.

V>Чего нет? Аннотаций типов?

Чем в Darte типы отличаются от типов в TS если они все так же компилируются в JS.
Если будет отличная система от JS, то и в TS буде компилироваться в эту систему. Хоть в .Net

V>>>А если при этом, таки, требуется указать тип переменной, то получается совсем ж-па, т.к. у нас будет и ключевое слово, и имя переменной и аннотация её типа. Неудобно, как по мне.

S>>ты в чем жопу то увидел.

V>Если ты её не увидел, то это минус тебе.

V>Перечитай выделенное внимательней.


S>>Для тебя value:string жопа по отношению string value


V>Вот это ошибка на TS:

V>
V>abs: string = xyz();
V>


V>Надо так:

V>
V>let abs: string = xyz();
V>


Правильно. Проблема в том, что в JS есть еще и var. Кроме того не будет ошибки если abs это поле класса.

Да и есть автовывод типа

abs = xyz();

V>Итого, имеем лишнее ключевое слово let.
Это для тебя оно лишнее. Еслть глобальные переменные.

V>Аналогично для объявления ф-ий тоже требуется некое ключевое слово.

V>В Дарте никаких лишних ключевых слов не требуется.
Какое???? Изучи предмет

V>>>Так и в Dart автовывод присутствует.

V>>>И ковариантность полноценная:
S>>В TS это так
S>>
S>>peekMammalList(list:List<Mammal> ) {
S>> return list[2];
S>>}
S>>


V>Суть была в том, что peekMammalList ожидает аргумент List<Mammal>, а ему подают на вход List<Cow>.


Ели ему подадут List<Cow> то будет ошибка.
Где лишнии ключевые слова? Еще раз разберись с предметом.


V>>>А в C# полноценная ковариантность поддерживается только на встроенных массивах.

S>> Почему? в Дженериках и в делегатах
S>> interface ICovariant<out R> { }

V>Ну так какие проблемы?

V>Покажешь мне условный пример с MyList<T>?

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

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


V>>>Гугл, напротив, предлагает уже оптимизированный байт-код.

S>> И чем он не оптимизирован. Для примера
S>>roslyn-linq-rewrite

V>Ты уже давал эту ссылку.

V>Переписывание исходника — это еще не тот уровень оптимизаций.

Запишем. Шаблоны не являются уровнем оптимизации.

S>>На самом деле есть две возможности оптимизации при компиляции в Il Roslyn и компиляция в натив RyuJIT


V>Да, речь идёт о чем-то вроде .Net Native, где одним из target будет webasm.


Ну и? Есть оптимизация на уровне компиляции в il и .Net Native
По поводу Webasm, то по сути то как я понял это аналог

CEF, ES6, Angular 2, TypeScript использование классов .Net Core. Создание кроссплатформенного GUI для .Net с помощью CEF

Со всеми проблемами.

V>>>В аннотациях типа.

V>>>Это серьезное отличие синтаксиса, которое тянет за собой много чего.
S>>Так в Darte и этого нет. Ничего это за собой не тянет. Поверь мне. Я то в отличие от тебя пишу на нем.

V>Чего нет? Аннотаций типов?

Чем в Darte типы отличаются от типов в TS если они все так же компилируются в JS.
Если будет отличная система от JS, то и в TS буде компилироваться в эту систему. Хоть в .Net

V>>>А если при этом, таки, требуется указать тип переменной, то получается совсем ж-па, т.к. у нас будет и ключевое слово, и имя переменной и аннотация её типа. Неудобно, как по мне.

S>>ты в чем жопу то увидел.

V>Если ты её не увидел, то это минус тебе.

V>Перечитай выделенное внимательней.


S>>Для тебя value:string жопа по отношению string value


V>Вот это ошибка на TS:

V>
V>abs: string = xyz();
V>


V>Надо так:

V>
V>let abs: string = xyz();
V>


Правильно. Проблема в том, что в JS есть еще и var. Кроме того не будет ошибки если abs это поле класса.

Да и есть автовывод типа

abs = xyz();

V>Итого, имеем лишнее ключевое слово let.
Это для тебя оно лишнее. Есть глобальные переменные.
https://metanit.com/web/typescript/4.1.php

V>Аналогично для объявления ф-ий тоже требуется некое ключевое слово.

V>В Дарте никаких лишних ключевых слов не требуется.
Какое????

V>>>Так и в Dart автовывод присутствует.

V>>>И ковариантность полноценная:
S>>В TS это так
S>>
S>>peekMammalList(list:List<Mammal> ) {
S>> return list[2];
S>>}
S>>


V>Суть была в том, что peekMammalList ожидает аргумент List<Mammal>, а ему подают на вход List<Cow>.


Ели ему подадут List<Cow> то будет ошибка.
Где лишние ключевые слова?

V>>>А в C# полноценная ковариантность поддерживается только на встроенных массивах.

S>> Почему? в Дженериках и в делегатах
S>> interface ICovariant<out R> { }

V>Ну так какие проблемы?

V>Покажешь мне условный пример с MyList<T>?

Я тебе показал примеры.