Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2021 September 05

И

Иван in NodeUA - JavaScript and Node.js in Ukraine
Ну чо, толково сказали
источник
2021 September 06

АП

Алексей Попов... in NodeUA - JavaScript and Node.js in Ukraine
Вот в этом полностью согласен, весьма странно было. Мне показалось что ваши примеры фактически сводились к отсутствию требования инициализации. Я не согласен что здесь "тс лучше". Он был бы лучше если бы его нельзя было обмануть добавлением нескольких символов
Но если для вас это важно, то вам на тс писать удобнее, не буду с этим спорить. Причины по которым мне удобнее было бы писать на шарпе я озвучивал, и про то, зачем мне типы в рантайме, тоже писал. Ну и думаю что пример с аоп наглядно показывает достоинства Шарпа в плане упрощения написания кода (один из способов - для декорирования метода любой функциональностью достаточно прописать атрибуты, и реализовать эту функциональность, для примера можете посмотреть как это делает postsharp, по-моему это как раз то, что вы назвали "пушка" :). Но люди разные, с разным бэкграундом и разными симпатиями. Вон 🦈 говорит что не пишет ООП код, естественно ему Шарп будет казаться убогим языком, не позволяющим выразить мысль. И иметь такое разнообразие мнений и подходов нормально
Ненормально идти в крестовый поход против других мнений. Хотя и тут бывают исключения: иногда вбросы и провокации порождают весьма интересные дискуссии
источник

EK

Evgen K in NodeUA - JavaScript and Node.js in Ukraine
Я не иду крестовым походом, а говорю о наболевшим. Изначально мы говорили про невыразительность системы типов в шарпе, что я и показал, но вы пытаетесь мне доказать что есть обходы и альтернативные решения, конечно есть иначе бы никто не писал на нем. По поводу озвученных проблем "инициализаций" не понимаю почему Вы тут принижаете значимость этого, это же огромнейшая проблема, которая выстреливает в ноги дотнетчикам регулярно на постоянной основе, я даже не задумывался какой это был ад, когда не попробовал что-то по строже типа ts, reasonml, F#. Я сравнивал ts и c# только в контексте типизации, потому что ts это только про типы, все что касается рантайма это уже js. В C# нету алгебраических типов данных, нет null safe, нету строковых литералов в типах, нету conditional types, нету аналога utility types как в ts, нет soundness(кстати и тот всеми любимый прикол про вариантность массива, так же выстреливает ноги и в шарпе), в с# так же можно игнорироовать типы и парой символов ломать всю типизацию (привет касты и боксинги и анбоксинги, а так же рефлексии). Почти все кто мало знаком с C# и ts утверждают, что лучше типизация в шарпе, чуть ли не самая лучшая - вот где реально сработал на ура маркетинг майкрософта, а не с ts как писалось выше. Я надеюсь я привел достаточное количество доводов, но как Вы будете пользоваться этим - решать Вам.
источник

АП

Алексей Попов... in NodeUA - JavaScript and Node.js in Ukraine
Вы думаете, что приводите доводы, а на самом деле перечисляете особенности ТС, которым нет аналогов (или вы думаете что их нет) в шарпе. По-моему это странный способ сравнения, и я не вижу в нём смысла - на языках надо писать по-разному, и они дают для этого разные возможности. Я, например, совсем не понимаю зачем нужны conditional types, но мне нравится наличие индексаторов в языке. А с озвученной вами "огромнейшей" проблемой из-за инициализации я даже не помню сталкивался ли когда-нибудь (думаю что в шарпе никогда)
Видимо вы пишете код так, что на ТС его писать проще, а на шарпе сложнее. Но не стоит обобщать свой опыт
источник

EK

Evgen K in NodeUA - JavaScript and Node.js in Ukraine
Почитайте тогда статьи на тему "null pointer references the billion dollar mistake" если же Вам мои доводы не кажутся убедительными почему неинициализированные данные это зло. Я изначально в js пришел после C#, поэтому делать поправку, что я умею писать только удобно на тс - немного некорректно, я знаю как писать удобно на шарпе и как на тс и на основе этого делаю свои выводы. У многих языков есть свои уникальные фичи которые не повторимы в других - это и делает их хорошими и упоминания этого не может быть плохой аргументацией.
источник

АП

Алексей Попов... in NodeUA - JavaScript and Node.js in Ukraine
Я не отрицаю что это плохо. Мои слова были другие - я написал что не сталкивался с этой проблемой. Человек может забыть проинициализировать поле класса, ок., согласен Но есть ревью, есть тесты, есть ворнинги компилятора. Если последовательно забить на это всё - да, проблемы весьма вероятны. Поэтому не стоит забивать :)
И не стоит забывать что тс не обладает магией, позволяющей однозначно избавиться от этой проблемы. Есть попытки минимизировать, но от уже упомянутых as и Partial язык же не избавился, и вряд ли когда избавится
источник

EK

Evgen K in NodeUA - JavaScript and Node.js in Ukraine
as это зло - сто процентов, как в C# так и в ts. Могли бы вы поделится какие у Вас возникли трудности с Partial?
источник

И

Иван in NodeUA - JavaScript and Node.js in Ukraine
Получается, что если писать херово, то получится херово вне зависимости от языка?
источник

АП

Алексей Попов... in NodeUA - JavaScript and Node.js in Ukraine
Звучит так, но я не могу ручаться, вдруг на хаскеле или там каком-нибудь idris не получится написать код херово 😁
источник

IK

Illya Klymov in NodeUA - JavaScript and Node.js in Ukraine
прекрасный пойнт между прочим. Для меня качество языка/фреймворка и так далее прежде всего определяется тем насколько он СОПРОТИВЛЯЕТСЯ тому, чтобы писать на нем хреново
источник

IK

Illya Klymov in NodeUA - JavaScript and Node.js in Ukraine
To fall into the pit of success
источник

IK

Illya Klymov in NodeUA - JavaScript and Node.js in Ukraine
the default settings should be those that just work, rather than relying on an expert user to change and tweak the initial settings to make sure the system works properly.
источник

IK

Illya Klymov in NodeUA - JavaScript and Node.js in Ukraine
(c)
источник

VS

Vlad Sobenko in NodeUA - JavaScript and Node.js in Ukraine
js насколько хорош по этому критерию?)
источник

IK

Illya Klymov in NodeUA - JavaScript and Node.js in Ukraine
очень так себе
источник

VS

Vlad Sobenko in NodeUA - JavaScript and Node.js in Ukraine
Ну все интерпретируемые ЯП будут "так себе" думаю
источник

IK

Illya Klymov in NodeUA - JavaScript and Node.js in Ukraine
нет, хороший пример - python
источник

VS

Vlad Sobenko in NodeUA - JavaScript and Node.js in Ukraine
Нужно сверху ставить стат анализаторы разные
источник

IK

Illya Klymov in NodeUA - JavaScript and Node.js in Ukraine
где это почти возведено в абсолют
источник

IK

Illya Klymov in NodeUA - JavaScript and Node.js in Ukraine
речь не о системе типов, а более широко
источник