Re[17]: Поругайте TypeScript/node.js
От: · Великобритания  
Дата: 27.06.22 13:19
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>Ну ты про ковариантность и контрвариантность читал? https://docs.microsoft.com/ru-ru/dotnet/csharp/programming-guide/concepts/covariance-contravariance/variance-in-generic-interfaces

S>IList не является ковариативным, но IEnumerable является.
Ок, значит тоже умеет. Значит Pauel ошибся, заявив "Аналогичный фокус есть и в дотнете".
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[16]: Поругайте TypeScript/node.js
От: Pauel Беларусь http://blogs.rsdn.org/ikemefula
Дата: 27.06.22 13:32
Оценка:
Здравствуйте, ·, Вы писали:

P>>>>То есть, эта самая дырка есть почти что во всех мейнстримных языках, а в Си/Си++ это вообще норма жизни. И ничего, живут люди.

P>>·>const_cast же требуется.
P>>Совсем необязательно. Зависит от многих вещей, особенно в Си.
·>Так в Си и нет коллекций и вообще с типами плохо. И плюсы ты тоже не знаешь... A vector<derived *> isn't convertible to a vector<base *> https://stackoverflow.com/questions/9365318/c-can-i-cast-a-vector-derived-class-to-a-vector-base-class-during-a-funct

Ога. Читай свою же ссылку — там тебе и ответ дали, как именно это все сломать, без особых трудов.

Итого — и в джаве, и в дотнете, и в Си, с плюсами или без, есть ровно такая же хрень, только выглядит иначе. А тебя, почему то, пугает дыра только в TS
Re[17]: Поругайте TypeScript/node.js
От: · Великобритания  
Дата: 27.06.22 13:53
Оценка:
Здравствуйте, Pauel, Вы писали:

P>>>Совсем необязательно. Зависит от многих вещей, особенно в Си.

P>·>Так в Си и нет коллекций и вообще с типами плохо. И плюсы ты тоже не знаешь... A vector<derived *> isn't convertible to a vector<base *> https://stackoverflow.com/questions/9365318/c-can-i-cast-a-vector-derived-class-to-a-vector-base-class-during-a-funct
P>Ога. Читай свою же ссылку — там тебе и ответ дали, как именно это все сломать, без особых трудов.
Прочитай внимательно. Если "however, you start with a vector<derived *>, it's up to you to copy those pointers into a vector<base *> before passing it to the function" это "без особых трудов", то я пас.

P>Итого — и в джаве, и в дотнете, и в Си, с плюсами или без, есть ровно такая же хрень, только выглядит иначе. А тебя, почему то, пугает дыра только в TS

Потому что эти дыры легко закрываются везде, кроме как в ts.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[18]: Поругайте TypeScript/node.js
От: Pauel Беларусь http://blogs.rsdn.org/ikemefula
Дата: 27.06.22 14:31
Оценка:
Здравствуйте, ·, Вы писали:

S>>IList не является ковариативным, но IEnumerable является.

·>Ок, значит тоже умеет. Значит Pauel ошибся, заявив "Аналогичный фокус есть и в дотнете".

Нисколько не ошибся Все это это есть везде, встречается с разной частотой. Вот, скажем, на Тайпскрипте это с начала времён, и как то я ни разу не напоролся на это, ни в своём коде, ни в чужом. Вот же незадача
Re[5]: Поругайте TypeScript/node.js
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 27.06.22 14:36
Оценка: 1 (1)
Здравствуйте, bnk, Вы писали:

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


S>>>>Blazor!!

S>>>>https://www.telerik.com/blogs/whats-coming-blazor-dotnet-7

D>>>Минус за то что постоянно пихаешь линки без собственных мыслей

S>> Ну там же все написано! Надо же читать. Блазор развивается при этом и с в качестве десктоп и мобилок MAUI.

bnk>Да они его уже несколько лет пихать пытаются, а воз и ныне там — не нужен (ни одного упоминания).

Нужен. 5%
и солнце б утром не вставало, когда бы не было меня
Re[6]: Поругайте TypeScript/node.js
От: bnk СССР http://unmanagedvisio.com/
Дата: 27.06.22 14:41
Оценка:
Здравствуйте, Serginio1, Вы писали:

bnk>>Да они его уже несколько лет пихать пытаются, а воз и ныне там — не нужен (ни одного упоминания).


S>Нужен. 5%


Согласен, не по глазам было
Re[7]: Поругайте TypeScript/node.js
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 27.06.22 15:16
Оценка:
Здравствуйте, bnk, Вы писали:

bnk>>>Да они его уже несколько лет пихать пытаются, а воз и ныне там — не нужен (ни одного упоминания).


S>>Нужен. 5%


bnk>Согласен, не по глазам было

Ну это новый за 22 год!
и солнце б утром не вставало, когда бы не было меня
Отредактировано 27.06.2022 16:03 Serginio1 . Предыдущая версия .
Re[19]: Поругайте TypeScript/node.js
От: · Великобритания  
Дата: 27.06.22 15:32
Оценка:
Здравствуйте, Pauel, Вы писали:

S>>>IList не является ковариативным, но IEnumerable является.

P>·>Ок, значит тоже умеет. Значит Pauel ошибся, заявив "Аналогичный фокус есть и в дотнете".
P>Нисколько не ошибся Все это это есть везде, встречается с разной частотой. Вот, скажем, на Тайпскрипте это с начала времён, и как то я ни разу не напоролся на это, ни в своём коде, ни в чужом. Вот же незадача
Потому что система типов дырявая с начала времён. В языке с продуманной системой типов из кода можно точно знать что произойдёт, а что произойти не может. В ts же может произойти что угодно, и ты типам ts не доверяешь изначально. Ты понимаешь, что никаких гарантий нет, и что бы ни было написано в коде, в итоге оно работать может как угодно. Вот и дебажишь. Но это не норма для обещанной статической типизации.
Ясен пень, что в любой системе всё можно поломать и отключить проверку типизации, но это должны исключения, имеющие явный грязный подход, типа "дёрнуть приватный метод через рефлексию", а не "ой, случайно поменяли readonly значение".
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Отредактировано 27.06.2022 16:05 · . Предыдущая версия . Еще …
Отредактировано 27.06.2022 15:33 · . Предыдущая версия .
Re[9]: Поругайте TypeScript/node.js
От: Vermicious Knid  
Дата: 28.06.22 01:47
Оценка:
Здравствуйте, Pauel, Вы писали:

Б>>Неубедительно. Хочется примеров

P>http://rsdn.org/forum/philosophy/7967480.1
Автор: Ikemefula
Дата: 09.03.21

P>http://rsdn.org/forum/philosophy/7835882.1
Автор: Ikemefula
Дата: 22.09.20


Вот такие примеры — это как раз эталонный образец того, почему нужно держаться подальше от Typescript и тех затейников, которые такое на нем пишут/используют.

Кратко объясню почему — есть шанс даже небольшой проект превратить в нечто, что будет компилироваться до скончания вселенной. Так как compile-time код исполняется мягко говоря неэффективно.
Отредактировано 28.06.2022 1:53 Vermicious Knid . Предыдущая версия .
Re[20]: Поругайте TypeScript/node.js
От: Pauel Беларусь http://blogs.rsdn.org/ikemefula
Дата: 28.06.22 09:20
Оценка:
Здравствуйте, ·, Вы писали:

P>>·>Ок, значит тоже умеет. Значит Pauel ошибся, заявив "Аналогичный фокус есть и в дотнете".

P>>Нисколько не ошибся Все это это есть везде, встречается с разной частотой. Вот, скажем, на Тайпскрипте это с начала времён, и как то я ни разу не напоролся на это, ни в своём коде, ни в чужом. Вот же незадача
·>Потому что система типов дырявая с начала времён. В языке с продуманной системой типов из кода можно точно знать что произойдёт,

Нет, не потому. Баг заведен еще в 17м году, 5 лет назад. Большого интереса к нему нет, можешь сам убедиться.

Собственно, подход в тайпскрипте это не про защиту всего подряд, т.е. исправление жээса, а наоброт, подбор под конкретные задачи. Нету задачи "отгородиться от всего разом".

Ты же пробуешь джавовский подход сунуть в тайпскрит, при этом тебя не смущает что аналогичная проблема есть в самой джаве.
Отредактировано 28.06.2022 10:04 Pauel . Предыдущая версия .
Re[10]: Поругайте TypeScript/node.js
От: Pauel Беларусь http://blogs.rsdn.org/ikemefula
Дата: 28.06.22 09:21
Оценка:
Здравствуйте, Vermicious Knid, Вы писали:

VK>Кратко объясню почему — есть шанс даже небольшой проект превратить в нечто, что будет компилироваться до скончания вселенной. Так как compile-time код исполняется мягко говоря неэффективно.


Стоит таки попробовать, прежде чем писать такое. У меня примерно 2мб кода на тс, компиляция идет смешное количество времени.
Re[21]: Поругайте TypeScript/node.js
От: · Великобритания  
Дата: 28.06.22 09:43
Оценка:
Здравствуйте, Pauel, Вы писали:

P>·>Потому что система типов дырявая с начала времён. В языке с продуманной системой типов из кода можно точно знать что произойдёт,

P>Нет, не потому. Баг заведен еще в 17м году, 5 лет назад. Большого интереса к нему нет, можешь сам убедиться.
Ух ты, вроде месяц назад добавили в v4.7. Ок, ещё лет 5 и язык станет юзабельным сам по себе, а не просто как улучшатель яваскрита, как меньшее зло.

P>Собственно, подхов в тайпскрипте это не про защиту всего подряд, т.е. исправление жээса, а наоброт, подбор под конкретные задачи.

Ну собственно о чём и речь в топике. Как исправлятель js для браузеров оно годится, а тащить такое в бэкенд — так себе.

P>Ты же пробуешь джавовский подход сунуть в тайпскрит.

Это не "джавовский подход", а подход статической типизации. Что, как выяснилось, есть и в джаве, и в плюсах, и в шарпе, и наконец-то добавили в тайпскрипт.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[22]: Поругайте TypeScript/node.js
От: Pauel Беларусь http://blogs.rsdn.org/ikemefula
Дата: 28.06.22 10:10
Оценка:
Здравствуйте, ·, Вы писали:

P>>·>Потому что система типов дырявая с начала времён. В языке с продуманной системой типов из кода можно точно знать что произойдёт,

P>>Нет, не потому. Баг заведен еще в 17м году, 5 лет назад. Большого интереса к нему нет, можешь сам убедиться.
·>Ух ты, вроде месяц назад добавили в v4.7.

И что тебя смущает? В С# такое добавили спустя лет 10. В джаву — все 20. В тс это появилось спустя 10 лет.

>Ок, ещё лет 5 и язык станет юзабельным сам по себе, а не просто как улучшатель яваскрита, как меньшее зло.


Язык никогда не был улучшателем жээса. Улучшатели — это Flow, Coffee и подобные вещи. Ни один из улучшателей не взлетел толком.
Идея Тайпскрипта — типизировать то, что ты пишешь в жээсе.

P>>Собственно, подхов в тайпскрипте это не про защиту всего подряд, т.е. исправление жээса, а наоброт, подбор под конкретные задачи.

·>Ну собственно о чём и речь в топике. Как исправлятель js для браузеров оно годится, а тащить такое в бэкенд — так себе.

Похоже ты не читаешь. ТС ничего не улучшает и не исправляет. Все, что ты делал в жээсе, будет и в тс, 1 в 1.

Именно для бакенда тс подходит лучше, т.к. фронт в силу ряда причин чаще пишут на жээсе. Для бакенда — т.к. там приложения как правило бОльше и сложнее.

P>>Ты же пробуешь джавовский подход сунуть в тайпскрит.

·>Это не "джавовский подход", а подход статической типизации. Что, как выяснилось, есть и в джаве, и в плюсах, и в шарпе, и наконец-то добавили в тайпскрипт.

Джаве понадобилось ажно 20 лет или больше, и то дыры остались. И что?
Отредактировано 28.06.2022 10:14 Pauel . Предыдущая версия .
Re[23]: Поругайте TypeScript/node.js
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 28.06.22 10:29
Оценка:
Здравствуйте, Pauel, Вы писали:

P>Язык никогда не был улучшателем жээса. Улучшатели — это Flow, Coffee и подобные вещи. Ни один из улучшателей не взлетел толком.

P>Идея Тайпскрипта — типизировать то, что ты пишешь в жээсе.

Не совсем. Тот же async/await был в TS еще до появления в JS. Там компилировалось в state machine Compiling async/await to ES3/ES5 in TypeScript
и солнце б утром не вставало, когда бы не было меня
Отредактировано 28.06.2022 10:30 Serginio1 . Предыдущая версия .
Re[24]: Поругайте TypeScript/node.js
От: Pauel Беларусь http://blogs.rsdn.org/ikemefula
Дата: 28.06.22 10:36
Оценка:
Здравствуйте, Serginio1, Вы писали:

P>>Идея Тайпскрипта — типизировать то, что ты пишешь в жээсе.


S>Не совсем. Тот же async/await был в TS еще до появления в JS. Там компилировалось в state machine


Успокойся Тайпскрипт компилируется в разные версии жээса. Там, где конструкция не поддерживается, будет эмуляция. При этом тайпскрипт следует спецификации EcmaScript. Никакой отсебятины в нём нет, в отличие от Flow, Coffee и других улучшайзеров.
Re[25]: Поругайте TypeScript/node.js
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 28.06.22 10:45
Оценка:
Здравствуйте, Pauel, Вы писали:

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


P>>>Идея Тайпскрипта — типизировать то, что ты пишешь в жээсе.


S>>Не совсем. Тот же async/await был в TS еще до появления в JS. Там компилировалось в state machine


P>Успокойся Тайпскрипт компилируется в разные версии жээса. Там, где конструкция не поддерживается, будет эмуляция. При этом тайпскрипт следует спецификации EcmaScript. Никакой отсебятины в нём нет, в отличие от Flow, Coffee и других улучшайзеров.

Да но async/await в TS появился еще до его появления в JS. Другое дело, что разработчики TS тесно сотрудничают с EcmaScript и двигают JS.
Но это говно уже только могила исправит. Но интересно как популярность TS растет. А в том же питоне аннотация практически не используется
и солнце б утром не вставало, когда бы не было меня
Re[26]: Поругайте TypeScript/node.js
От: Pauel Беларусь http://blogs.rsdn.org/ikemefula
Дата: 28.06.22 10:58
Оценка: 2 (1)
Здравствуйте, Serginio1, Вы писали:

P>>Успокойся Тайпскрипт компилируется в разные версии жээса. Там, где конструкция не поддерживается, будет эмуляция. При этом тайпскрипт следует спецификации EcmaScript. Никакой отсебятины в нём нет, в отличие от Flow, Coffee и других улучшайзеров.

S> Да но async/await в TS появился еще до его появления в JS. Другое дело, что разработчики TS тесно сотрудничают с EcmaScript и двигают JS.

"Да но"... async/await появился сначала в EcmaScript. Proposal появился 9 лет назад https://github.com/tc39/proposal-async-await

TS 1.7 вышел в 15м году. Как только выяснили, что пропозал можно довести до деливери.
Re[16]: Поругайте TypeScript/node.js
От: Pauel Беларусь http://blogs.rsdn.org/ikemefula
Дата: 28.06.22 11:03
Оценка:
Здравствуйте, ·, Вы писали:

S>>
S>>object[] array = new String[10];  
S>>// The following statement produces a run-time exception.  
S>>// array[0] = 10; 
S>>

·>Голые массивы в Java так же (думаешь откуда c# списывали?). А коллекции (java.util.Collection) так не позволяют, будет compile-time error.

Еще как позволяют. Привел же пример и ты его видел. Собственно о том и речь — все языки кроме какого Хаскеля позволяют легко проткнуть систему типов, без особых заморочек.
Re[23]: Поругайте TypeScript/node.js
От: · Великобритания  
Дата: 28.06.22 11:03
Оценка:
Здравствуйте, Pauel, Вы писали:

P>·>Ух ты, вроде месяц назад добавили в v4.7.

P>И что тебя смущает?
Ничего не смущает. Новостью поделился.

P>В С# такое добавили спустя лет 10. В джаву — все 20. В тс это появилось спустя 10 лет.

В джаву это добавили с версии 1.5, в 2004г. Яве было 8 лет. Класс Collection появился с 1.2, в 1998г. Откуда ты насчитал 20, неясно.

>>Ок, ещё лет 5 и язык станет юзабельным сам по себе, а не просто как улучшатель яваскрита, как меньшее зло.

P>Язык никогда не был улучшателем жээса. Улучшатели — это Flow, Coffee и подобные вещи. Ни один из улучшателей не взлетел толком.
P>Идея Тайпскрипта — типизировать то, что ты пишешь в жээсе.
Типизация — не цель. Цель писать более строгий код, чтобы по куску кода можно было понять что он может делать, а что не может. С дырявой системой типов эта цель не достигается.

P>>>Собственно, подхов в тайпскрипте это не про защиту всего подряд, т.е. исправление жээса, а наоброт, подбор под конкретные задачи.

P>·>Ну собственно о чём и речь в топике. Как исправлятель js для браузеров оно годится, а тащить такое в бэкенд — так себе.
P>Похоже ты не читаешь. ТС ничего не улучшает и не исправляет. Все, что ты делал в жээсе, будет и в тс, 1 в 1.
Если в тс писать как в жс, то неясно в чём по-твоему выгода-то?

P>Именно для бакенда тс подходит лучше, т.к. фронт в силу ряда причин чаще пишут на жээсе. Для бакенда — т.к. там приложения как правило бОльше и сложнее.

Лучше, чем js — согласен. Но хуже чем десяток других яп.

P>>>Ты же пробуешь джавовский подход сунуть в тайпскрит.

P>·>Это не "джавовский подход", а подход статической типизации. Что, как выяснилось, есть и в джаве, и в плюсах, и в шарпе, и наконец-то добавили в тайпскрипт.
P>Джаве понадобилось ажно 20 лет или больше, и то дыры остались. И что?
Что у тебя с арифметикой плохо. Ну и причём тут "джавовский подход" всё равно неясно.

Более того, разговор начался с того, что ts втихую readonly у поля теряет. Ты почему-то на обсуждение гереников и коллекций переключился.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[17]: Поругайте TypeScript/node.js
От: · Великобритания  
Дата: 28.06.22 11:10
Оценка:
Здравствуйте, Pauel, Вы писали:

P>·>Голые массивы в Java так же (думаешь откуда c# списывали?). А коллекции (java.util.Collection) так не позволяют, будет compile-time error.

P>Еще как позволяют. Привел же пример и ты его видел.
В твоём примере ты нарочно отключил проверку типов, и компилятор тебе об этом сообщит. Вот ведь действительно удивительно, что если отключить проверку типов, то проверка типов отключается! Кто бы мог подумать!

P> Собственно о том и речь — все языки кроме какого Хаскеля позволяют легко проткнуть систему типов, без особых заморочек.

И хаскель ты не знаешь: https://hackage.haskell.org/package/base-4.8.0.0/docs/Unsafe-Coerce.html

Суть ты всё ещё не понял что-ли? Суть не в том, что систему типов можно проткнуть, а в том, что если её не протыкать специальным явным образом, то она не должна быть дырявой.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.