Здравствуйте, Serginio1, Вы писали:
V>>Байткод дотнета или джавы принципиально НЕ может быть оптимизированным.
S> Угу при этом .Net Native создается именно из .Net Core
Еще раз.
В .Net Native оптимизируется конечный нейтивный код из байт-кода дотнетной VM.
Но сам этот байт-код не оптимизирован и не может быть оптимизирован.
Гугл, напротив, предлагает уже оптимизированный байт-код.
S>Так и TS и C# тоже ооочень похожи.
Э, нет.
S>Отличие только в обявлении типа.
В аннотациях типа.
Это серьезное отличие синтаксиса, которое тянет за собой много чего.
В С-подобных языках указание типа переменной одновременно означает объявление переменной.
Т.е. операция два в одном получается.
А если не хочется указывать тип (аннотацию), например, если тип переменной может быть выведен, то требуется ключевое слово для объявления переменных. Мы же не хотим пользоваться не объявленными переменными верно?
А если при этом, таки, требуется указать тип переменной, то получается совсем ж-па, т.к. у нас будет и ключевое слово, и имя переменной и аннотация её типа. Неудобно, как по мне.
S>Плюс автовывод типа в функциях.
Так и в Dart автовывод присутствует.
И ковариантность полноценная:
Mammal peekMammalList(List<Mammal> list) {
return list[2];
}
main() {
List<Cow> cowList = new List<Cow>(4);
peekMammalList(cowList);
// Covariant use:
// * static type checking OK
// * dynamic type checking OK
// * runs happily
}
А в C# полноценная ковариантность поддерживается только на встроенных массивах.
Но это же бред, верно?