Сообщение Re[21]: А что мешает заменить JS? от 18.03.2017 19:33
Изменено 19.03.2017 12:09 Serginio1
Re[21]: А что мешает заменить JS?
Здравствуйте, vdimas, Вы писали:
V>Здравствуйте, Serginio1, Вы писали:
V>>>Байткод дотнета или джавы принципиально НЕ может быть оптимизированным.
S>> Угу при этом .Net Native создается именно из .Net Core
V>Еще раз.
V>В .Net Native оптимизируется конечный нейтивный код из байт-кода дотнетной VM.
V>Но сам этот байт-код не оптимизирован и не может быть оптимизирован.
V>Гугл, напротив, предлагает уже оптимизированный байт-код.
И чем он не оптимизирован. Для примера
roslyn-linq-rewrite
На самом деле есть две возможности оптимизации при компиляции в Il Roslyn и компиляция в натив RyuJIT
S>>Так и TS и C# тоже ооочень похожи.
V>Э, нет.
S>>Отличие только в обявлении типа.
V>В аннотациях типа.
V>Это серьезное отличие синтаксиса, которое тянет за собой много чего.
Так в Darte и этого нет. Ничего это за собой не тянет. Поверь мне. Я то в отличие от тебя пишу на нем.
V>В С-подобных языках указание типа переменной одновременно означает объявление переменной.
V>Т.е. операция два в одном получается.
V>А если не хочется указывать тип (аннотацию), например, если тип переменной может быть выведен, то требуется ключевое слово для объявления переменных. Мы же не хотим пользоваться не объявленными переменными верно?
Так и в Ts тоже самое. Только вместо
имеем
V>А если при этом, таки, требуется указать тип переменной, то получается совсем ж-па, т.к. у нас будет и ключевое слово, и имя переменной и аннотация её типа. Неудобно, как по мне.
ты в чем жопу то увидел.
Для тебя value:string жопа по отношению string value
S>>Плюс автовывод типа в функциях.
V>Так и в Dart автовывод присутствует.
V>И ковариантность полноценная:
V>
V>А в C# полноценная ковариантность поддерживается только на встроенных массивах.
V>Но это же бред, верно?
Почему? в Дженериках и в делегатах
https://msdn.microsoft.com/ru-ru/library/dd469487.aspx
https://msdn.microsoft.com/ru-ru/library/dd469484.aspx
V>Здравствуйте, Serginio1, Вы писали:
V>>>Байткод дотнета или джавы принципиально НЕ может быть оптимизированным.
S>> Угу при этом .Net Native создается именно из .Net Core
V>Еще раз.
V>В .Net Native оптимизируется конечный нейтивный код из байт-кода дотнетной VM.
V>Но сам этот байт-код не оптимизирован и не может быть оптимизирован.
V>Гугл, напротив, предлагает уже оптимизированный байт-код.
И чем он не оптимизирован. Для примера
roslyn-linq-rewrite
На самом деле есть две возможности оптимизации при компиляции в Il Roslyn и компиляция в натив RyuJIT
S>>Так и TS и C# тоже ооочень похожи.
V>Э, нет.
S>>Отличие только в обявлении типа.
V>В аннотациях типа.
V>Это серьезное отличие синтаксиса, которое тянет за собой много чего.
Так в Darte и этого нет. Ничего это за собой не тянет. Поверь мне. Я то в отличие от тебя пишу на нем.
V>В С-подобных языках указание типа переменной одновременно означает объявление переменной.
V>Т.е. операция два в одном получается.
V>А если не хочется указывать тип (аннотацию), например, если тип переменной может быть выведен, то требуется ключевое слово для объявления переменных. Мы же не хотим пользоваться не объявленными переменными верно?
Так и в Ts тоже самое. Только вместо
string valueимеем
value:stringV>А если при этом, таки, требуется указать тип переменной, то получается совсем ж-па, т.к. у нас будет и ключевое слово, и имя переменной и аннотация её типа. Неудобно, как по мне.
ты в чем жопу то увидел.
Для тебя value:string жопа по отношению string value
S>>Плюс автовывод типа в функциях.
V>Так и в Dart автовывод присутствует.
V>И ковариантность полноценная:
V>
V>Mammal peekMammalList(List<Mammal> list) {
V> return list[2];
V>}
Где? Mammal то ты объявил
В TS это так
[cs]
peekMammalList(list:List<Mammal> ) {
return list[2];
}V>А в C# полноценная ковариантность поддерживается только на встроенных массивах.
V>Но это же бред, верно?
Почему? в Дженериках и в делегатах
https://msdn.microsoft.com/ru-ru/library/dd469487.aspx
https://msdn.microsoft.com/ru-ru/library/dd469484.aspx
// Covariant interface.
interface ICovariant<out R> { }
// Extending covariant interface.
interface IExtCovariant<out R> : ICovariant<R> { }
// Implementing covariant interface.
class Sample<R> : ICovariant<R> { }
class Program
{
static void Test()
{
ICovariant<Object> iobj = new Sample<Object>();
ICovariant<String> istr = new Sample<String>();
// You can assign istr to iobj because
// the ICovariant interface is covariant.
iobj = istr;
}
}Re[21]: А что мешает заменить JS?
Здравствуйте, vdimas, Вы писали:
V>Здравствуйте, Serginio1, Вы писали:
V>>>Байткод дотнета или джавы принципиально НЕ может быть оптимизированным.
S>> Угу при этом .Net Native создается именно из .Net Core
V>Еще раз.
V>В .Net Native оптимизируется конечный нейтивный код из байт-кода дотнетной VM.
V>Но сам этот байт-код не оптимизирован и не может быть оптимизирован.
V>Гугл, напротив, предлагает уже оптимизированный байт-код.
И чем он не оптимизирован. Для примера
roslyn-linq-rewrite
На самом деле есть две возможности оптимизации при компиляции в Il Roslyn и компиляция в натив RyuJIT
S>>Так и TS и C# тоже ооочень похожи.
V>Э, нет.
S>>Отличие только в обявлении типа.
V>В аннотациях типа.
V>Это серьезное отличие синтаксиса, которое тянет за собой много чего.
Так в Darte и этого нет. Ничего это за собой не тянет. Поверь мне. Я то в отличие от тебя пишу на нем.
V>В С-подобных языках указание типа переменной одновременно означает объявление переменной.
V>Т.е. операция два в одном получается.
V>А если не хочется указывать тип (аннотацию), например, если тип переменной может быть выведен, то требуется ключевое слово для объявления переменных. Мы же не хотим пользоваться не объявленными переменными верно?
Так и в Ts тоже самое. Только вместо
имеем
V>А если при этом, таки, требуется указать тип переменной, то получается совсем ж-па, т.к. у нас будет и ключевое слово, и имя переменной и аннотация её типа. Неудобно, как по мне.
ты в чем жопу то увидел.
Для тебя value:string жопа по отношению string value
S>>Плюс автовывод типа в функциях.
V>Так и в Dart автовывод присутствует.
V>И ковариантность полноценная:
V>
Где? Mammal то ты объявил
В TS это так
V>А в C# полноценная ковариантность поддерживается только на встроенных массивах.
V>Но это же бред, верно?
Почему? в Дженериках и в делегатах
https://msdn.microsoft.com/ru-ru/library/dd469487.aspx
https://msdn.microsoft.com/ru-ru/library/dd469484.aspx
V>Здравствуйте, Serginio1, Вы писали:
V>>>Байткод дотнета или джавы принципиально НЕ может быть оптимизированным.
S>> Угу при этом .Net Native создается именно из .Net Core
V>Еще раз.
V>В .Net Native оптимизируется конечный нейтивный код из байт-кода дотнетной VM.
V>Но сам этот байт-код не оптимизирован и не может быть оптимизирован.
V>Гугл, напротив, предлагает уже оптимизированный байт-код.
И чем он не оптимизирован. Для примера
roslyn-linq-rewrite
На самом деле есть две возможности оптимизации при компиляции в Il Roslyn и компиляция в натив RyuJIT
S>>Так и TS и C# тоже ооочень похожи.
V>Э, нет.
S>>Отличие только в обявлении типа.
V>В аннотациях типа.
V>Это серьезное отличие синтаксиса, которое тянет за собой много чего.
Так в Darte и этого нет. Ничего это за собой не тянет. Поверь мне. Я то в отличие от тебя пишу на нем.
V>В С-подобных языках указание типа переменной одновременно означает объявление переменной.
V>Т.е. операция два в одном получается.
V>А если не хочется указывать тип (аннотацию), например, если тип переменной может быть выведен, то требуется ключевое слово для объявления переменных. Мы же не хотим пользоваться не объявленными переменными верно?
Так и в Ts тоже самое. Только вместо
string valueимеем
value:stringV>А если при этом, таки, требуется указать тип переменной, то получается совсем ж-па, т.к. у нас будет и ключевое слово, и имя переменной и аннотация её типа. Неудобно, как по мне.
ты в чем жопу то увидел.
Для тебя value:string жопа по отношению string value
S>>Плюс автовывод типа в функциях.
V>Так и в Dart автовывод присутствует.
V>И ковариантность полноценная:
V>
V>Mammal peekMammalList(List<Mammal> list) {
V> return list[2];
V>}Где? Mammal то ты объявил
В TS это так
peekMammalList(list:List<Mammal> ) {
return list[2];
}V>А в C# полноценная ковариантность поддерживается только на встроенных массивах.
V>Но это же бред, верно?
Почему? в Дженериках и в делегатах
https://msdn.microsoft.com/ru-ru/library/dd469487.aspx
https://msdn.microsoft.com/ru-ru/library/dd469484.aspx
// Covariant interface.
interface ICovariant<out R> { }
// Extending covariant interface.
interface IExtCovariant<out R> : ICovariant<R> { }
// Implementing covariant interface.
class Sample<R> : ICovariant<R> { }
class Program
{
static void Test()
{
ICovariant<Object> iobj = new Sample<Object>();
ICovariant<String> istr = new Sample<String>();
// You can assign istr to iobj because
// the ICovariant interface is covariant.
iobj = istr;
}
}