Здравствуйте, ·, Вы писали:
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
Здравствуйте, 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.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, ·, Вы писали:
S>>IList не является ковариативным, но IEnumerable является. ·>Ок, значит тоже умеет. Значит Pauel ошибся, заявив "Аналогичный фокус есть и в дотнете".
Нисколько не ошибся Все это это есть везде, встречается с разной частотой. Вот, скажем, на Тайпскрипте это с начала времён, и как то я ни разу не напоролся на это, ни в своём коде, ни в чужом. Вот же незадача
Здравствуйте, bnk, Вы писали:
bnk>Здравствуйте, Serginio1, Вы писали:
S>>>>Blazor!! S>>>>https://www.telerik.com/blogs/whats-coming-blazor-dotnet-7
D>>>Минус за то что постоянно пихаешь линки без собственных мыслей S>> Ну там же все написано! Надо же читать. Блазор развивается при этом и с в качестве десктоп и мобилок MAUI.
bnk>Да они его уже несколько лет пихать пытаются, а воз и ныне там — не нужен (ни одного упоминания). Нужен. 5%
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, bnk, Вы писали:
bnk>>>Да они его уже несколько лет пихать пытаются, а воз и ныне там — не нужен (ни одного упоминания).
S>>Нужен. 5%
bnk>Согласен, не по глазам было
Ну это новый за 22 год!
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Pauel, Вы писали:
S>>>IList не является ковариативным, но IEnumerable является. P>·>Ок, значит тоже умеет. Значит Pauel ошибся, заявив "Аналогичный фокус есть и в дотнете". P>Нисколько не ошибся Все это это есть везде, встречается с разной частотой. Вот, скажем, на Тайпскрипте это с начала времён, и как то я ни разу не напоролся на это, ни в своём коде, ни в чужом. Вот же незадача
Потому что система типов дырявая с начала времён. В языке с продуманной системой типов из кода можно точно знать что произойдёт, а что произойти не может. В ts же может произойти что угодно, и ты типам ts не доверяешь изначально. Ты понимаешь, что никаких гарантий нет, и что бы ни было написано в коде, в итоге оно работать может как угодно. Вот и дебажишь. Но это не норма для обещанной статической типизации.
Ясен пень, что в любой системе всё можно поломать и отключить проверку типизации, но это должны исключения, имеющие явный грязный подход, типа "дёрнуть приватный метод через рефлексию", а не "ой, случайно поменяли readonly значение".
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Вот такие примеры — это как раз эталонный образец того, почему нужно держаться подальше от Typescript и тех затейников, которые такое на нем пишут/используют.
Кратко объясню почему — есть шанс даже небольшой проект превратить в нечто, что будет компилироваться до скончания вселенной. Так как compile-time код исполняется мягко говоря неэффективно.
Здравствуйте, ·, Вы писали:
P>>·>Ок, значит тоже умеет. Значит Pauel ошибся, заявив "Аналогичный фокус есть и в дотнете". P>>Нисколько не ошибся Все это это есть везде, встречается с разной частотой. Вот, скажем, на Тайпскрипте это с начала времён, и как то я ни разу не напоролся на это, ни в своём коде, ни в чужом. Вот же незадача ·>Потому что система типов дырявая с начала времён. В языке с продуманной системой типов из кода можно точно знать что произойдёт,
Нет, не потому. Баг заведен еще в 17м году, 5 лет назад. Большого интереса к нему нет, можешь сам убедиться.
Собственно, подход в тайпскрипте это не про защиту всего подряд, т.е. исправление жээса, а наоброт, подбор под конкретные задачи. Нету задачи "отгородиться от всего разом".
Ты же пробуешь джавовский подход сунуть в тайпскрит, при этом тебя не смущает что аналогичная проблема есть в самой джаве.
Здравствуйте, Vermicious Knid, Вы писали:
VK>Кратко объясню почему — есть шанс даже небольшой проект превратить в нечто, что будет компилироваться до скончания вселенной. Так как compile-time код исполняется мягко говоря неэффективно.
Стоит таки попробовать, прежде чем писать такое. У меня примерно 2мб кода на тс, компиляция идет смешное количество времени.
Здравствуйте, Pauel, Вы писали:
P>·>Потому что система типов дырявая с начала времён. В языке с продуманной системой типов из кода можно точно знать что произойдёт, P>Нет, не потому. Баг заведен еще в 17м году, 5 лет назад. Большого интереса к нему нет, можешь сам убедиться.
Ух ты, вроде месяц назад добавили в v4.7. Ок, ещё лет 5 и язык станет юзабельным сам по себе, а не просто как улучшатель яваскрита, как меньшее зло.
P>Собственно, подхов в тайпскрипте это не про защиту всего подряд, т.е. исправление жээса, а наоброт, подбор под конкретные задачи.
Ну собственно о чём и речь в топике. Как исправлятель js для браузеров оно годится, а тащить такое в бэкенд — так себе.
P>Ты же пробуешь джавовский подход сунуть в тайпскрит.
Это не "джавовский подход", а подход статической типизации. Что, как выяснилось, есть и в джаве, и в плюсах, и в шарпе, и наконец-то добавили в тайпскрипт.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, ·, Вы писали:
P>>·>Потому что система типов дырявая с начала времён. В языке с продуманной системой типов из кода можно точно знать что произойдёт, P>>Нет, не потому. Баг заведен еще в 17м году, 5 лет назад. Большого интереса к нему нет, можешь сам убедиться. ·>Ух ты, вроде месяц назад добавили в v4.7.
И что тебя смущает? В С# такое добавили спустя лет 10. В джаву — все 20. В тс это появилось спустя 10 лет.
>Ок, ещё лет 5 и язык станет юзабельным сам по себе, а не просто как улучшатель яваскрита, как меньшее зло.
Язык никогда не был улучшателем жээса. Улучшатели — это Flow, Coffee и подобные вещи. Ни один из улучшателей не взлетел толком.
Идея Тайпскрипта — типизировать то, что ты пишешь в жээсе.
P>>Собственно, подхов в тайпскрипте это не про защиту всего подряд, т.е. исправление жээса, а наоброт, подбор под конкретные задачи. ·>Ну собственно о чём и речь в топике. Как исправлятель js для браузеров оно годится, а тащить такое в бэкенд — так себе.
Похоже ты не читаешь. ТС ничего не улучшает и не исправляет. Все, что ты делал в жээсе, будет и в тс, 1 в 1.
Именно для бакенда тс подходит лучше, т.к. фронт в силу ряда причин чаще пишут на жээсе. Для бакенда — т.к. там приложения как правило бОльше и сложнее.
P>>Ты же пробуешь джавовский подход сунуть в тайпскрит. ·>Это не "джавовский подход", а подход статической типизации. Что, как выяснилось, есть и в джаве, и в плюсах, и в шарпе, и наконец-то добавили в тайпскрипт.
Джаве понадобилось ажно 20 лет или больше, и то дыры остались. И что?
Здравствуйте, Pauel, Вы писали:
P>Язык никогда не был улучшателем жээса. Улучшатели — это Flow, Coffee и подобные вещи. Ни один из улучшателей не взлетел толком. P>Идея Тайпскрипта — типизировать то, что ты пишешь в жээсе.
Здравствуйте, Serginio1, Вы писали:
P>>Идея Тайпскрипта — типизировать то, что ты пишешь в жээсе.
S>Не совсем. Тот же async/await был в TS еще до появления в JS. Там компилировалось в state machine
Успокойся Тайпскрипт компилируется в разные версии жээса. Там, где конструкция не поддерживается, будет эмуляция. При этом тайпскрипт следует спецификации EcmaScript. Никакой отсебятины в нём нет, в отличие от Flow, Coffee и других улучшайзеров.
Здравствуйте, Pauel, Вы писали:
P>Здравствуйте, Serginio1, Вы писали:
P>>>Идея Тайпскрипта — типизировать то, что ты пишешь в жээсе.
S>>Не совсем. Тот же async/await был в TS еще до появления в JS. Там компилировалось в state machine
P>Успокойся Тайпскрипт компилируется в разные версии жээса. Там, где конструкция не поддерживается, будет эмуляция. При этом тайпскрипт следует спецификации EcmaScript. Никакой отсебятины в нём нет, в отличие от Flow, Coffee и других улучшайзеров.
Да но async/await в TS появился еще до его появления в JS. Другое дело, что разработчики TS тесно сотрудничают с EcmaScript и двигают JS.
Но это говно уже только могила исправит. Но интересно как популярность TS растет. А в том же питоне аннотация практически не используется
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
P>>Успокойся Тайпскрипт компилируется в разные версии жээса. Там, где конструкция не поддерживается, будет эмуляция. При этом тайпскрипт следует спецификации EcmaScript. Никакой отсебятины в нём нет, в отличие от Flow, Coffee и других улучшайзеров. S> Да но async/await в TS появился еще до его появления в JS. Другое дело, что разработчики TS тесно сотрудничают с EcmaScript и двигают JS.
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.
Еще как позволяют. Привел же пример и ты его видел. Собственно о том и речь — все языки кроме какого Хаскеля позволяют легко проткнуть систему типов, без особых заморочек.
Здравствуйте, 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 у поля теряет. Ты почему-то на обсуждение гереников и коллекций переключился.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, 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
Суть ты всё ещё не понял что-ли? Суть не в том, что систему типов можно проткнуть, а в том, что если её не протыкать специальным явным образом, то она не должна быть дырявой.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай