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

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

Изменено 21.03.2017 13:12 Serginio1

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

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


S>> Еще раз TS может прекрасно компилироваться и в .Net IL.


V>Этого мало, надо уметь оперировать возможностями платформы.

V>Сможешь ли ты вызвать .Net Interop из TS?


S>>Кстати и C# компилируют в JS.

S>>Он тоже стал синтаксическим сахаром?

V>Я уже отвечал на это:

V>

V>Я че-то проблематики не улавливаю при переводе из более сильной системы типов в более слабую.
V>А в бинарник нейтива как программы переводятся? Там же вообще типы затираются.


Ну дык с каких пор ассемблер стал типизированным? В данном случае JS это ассемблер.

S>>JS тоже умеет вызывать нативный код.


V>Не умеет.

V>Посмотри исходники либ для ноды — что там делается, чтобы этот код стало возможным вызывать из JS.

Пофиксил. Я не только могу вызвать натив но и манагед код. Тот же WebAssembly.
Ты почему то проигнорировал.

S>> По поводу перегрузки функций, то она есть

S>>https://metanit.com/web/typescript/2.2.php

V>Это не перегрузка, это динамика.



S>>Но из за того, что JS не поддерживат перегрузку приходится делать так

S>>Или так
V>...

V>Во-во.

V>Сам же всё видишь, но споришь ради спора, что ле?

Я не спорю, а привожу то что есть в TS. Там есть перегрузка, но с ограничениями.

S>>Насчет динамиков. Динамики нужны там, где заранее не известен тип.


V>Я и на это уже отвечал:

V>

V>Эти dynamic нужны исключительно для вызова некоего нетипизированного скриптового АПИ.
V>Дай типизированное АПИ для скрипта+правила автоматического маршаллинга, и никакие dynamic будут не нужны.


V>Потому что не может быть "неизвестен тип" в нормальном АПИ.

V>Вот весь тот пост, там развёрнуто:
V>http://www.rsdn.org/forum/flame.comp/6731499.1


S>>Но к нему можно сделать прокси.

S>>Например вызов объектов и типов .Net Core из натива и JS через натив, вызов удаленных объектов по TCP/IP?
S>>разбор часто меняющихся структур JSON, XML

V>"Частоменяющиеся" — не при чем, у тебя в любом случае код должен уметь работать с той версией, про которую знает. Так вот, эти "знания" вполне себе поддаются типизации.


Надеюсь ты знаешь, что такое утинная типизация? Кроме нужных полей и методов, может быть куча других, а динамики позволяют забить на бинарную совместимость.
Мне всегда нравится как C++ работают с той же 1С через COM IDispatch

V>Про вызов удалённых процедур — аналогично. Первые два десятилетия существования подобных технологий как таковых сами удалённые процедуры вызывались строго типизированным образом через предварительно описанный IDL.


Угу специально делаем типизированные обертки, которые внутри делают то же самое.
Еще раз напомню про IDispatch. Можно сделать универсальную обертку и использовать её. Можно кстати применять аннотацию типа, жалко, что нет аналога в C#. Либо для каждого возможного типа делать свою обертку.
Я так понимаю, ты выбираешь второе.
Re[25]: А что мешает заменить JS?
Здравствуйте, vdimas, Вы писали:

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


S>> Еще раз TS может прекрасно компилироваться и в .Net IL.


V>Этого мало, надо уметь оперировать возможностями платформы.

V>Сможешь ли ты вызвать .Net Interop из TS?


S>>Кстати и C# компилируют в JS.

S>>Он тоже стал синтаксическим сахаром?

V>Я уже отвечал на это:

V>

V>Я че-то проблематики не улавливаю при переводе из более сильной системы типов в более слабую.
V>А в бинарник нейтива как программы переводятся? Там же вообще типы затираются.


Ну дык с каких пор ассемблер стал типизированным? В данном случае JS это ассемблер.

S>>JS тоже умеет вызывать нативный код.


V>Не умеет.

V>Посмотри исходники либ для ноды — что там делается, чтобы этот код стало возможным вызывать из JS.

Я не только могу вызвать натив но и манагед код я же на них тебе давал ссылки. Тот же PNacl, WebAssembly.
Ты почему то проигнорировал.

S>> По поводу перегрузки функций, то она есть

S>>https://metanit.com/web/typescript/2.2.php

V>Это не перегрузка, это динамика.



S>>Но из за того, что JS не поддерживат перегрузку приходится делать так

S>>Или так
V>...

V>Во-во.

V>Сам же всё видишь, но споришь ради спора, что ле?

Я не спорю, а привожу то что есть в TS. Там есть перегрузка, но с ограничениями.
Возможно в следующих версиях сделают как в asнnc кодогенерацию.

S>>Насчет динамиков. Динамики нужны там, где заранее не известен тип.


V>Я и на это уже отвечал:

V>

V>Эти dynamic нужны исключительно для вызова некоего нетипизированного скриптового АПИ.
V>Дай типизированное АПИ для скрипта+правила автоматического маршаллинга, и никакие dynamic будут не нужны.


V>Потому что не может быть "неизвестен тип" в нормальном АПИ.

V>Вот весь тот пост, там развёрнуто:
V>http://www.rsdn.org/forum/flame.comp/6731499.1


S>>Но к нему можно сделать прокси.

S>>Например вызов объектов и типов .Net Core из натива и JS через натив, вызов удаленных объектов по TCP/IP?
S>>разбор часто меняющихся структур JSON, XML

V>"Частоменяющиеся" — не при чем, у тебя в любом случае код должен уметь работать с той версией, про которую знает. Так вот, эти "знания" вполне себе поддаются типизации.


Надеюсь ты знаешь, что такое утинная типизация? Кроме нужных полей и методов, может быть куча других, а динамики позволяют забить на бинарную совместимость.
Мне всегда нравится как C++ работают с той же 1С через COM IDispatch

V>Про вызов удалённых процедур — аналогично. Первые два десятилетия существования подобных технологий как таковых сами удалённые процедуры вызывались строго типизированным образом через предварительно описанный IDL.


Угу специально делаем типизированные обертки, которые внутри делают то же самое.
Еще раз напомню про IDispatch. Можно сделать универсальную обертку и использовать её. Можно кстати применять аннотацию типа, жалко, что нет аналога в C#. Либо для каждого возможного типа делать свою обертку.
Я так понимаю, ты выбираешь второе.