Обновить
25
0
ApeCoder@ApeCoder

Разработчик

Отправить сообщение
Нет. Вот если бы машинный код его рантайма генерировался кодом на C#, вплоть до выходных бинарников — это было бы правда.

Почему вы так считаете? C# преобразуется в IL, IL преобразуется в машинный код, машинный код интерпретируется процессором переводя его в микрокод.


Почему "C# написан на С#" должно обозначать что-то кроме первой фазы?


см, кстати, статейку про то, какие усилия идут в этом направлении, но это не будет "C# на C#", это будет "IL на C#".

Я бы описывал иерархически — сначала структурную схему типа вот этой:
image

потом детализироовал каждый блок.

Интересно если Яндекс скоординирует свои сервисы он сможет захватить власть в стране? Например, слегка менять приоритеты в выдаче нужным людям. Блокировать подступы к нужным местам при помощи манипуляции Яндекс навигатором и Яндекс такси. Меняяи тональность разговора Алисы на паническую, и подсыпая психоактивные вещества в Яндекс еду? В час Ч показать нужную погоду в Яндекс погоде чтобы все вышли на улицы.

Никакой необходимости нет, есть полезность. Я думаю динамические и статические языки сходятся — в статических все больше вывода типов — уже не надо их декларировать, а в динамических появляется возможность их декларировать и статические анализаторы.

Уровень языка позволяет большому количеству производителей и потребителей инструментов договориться об описании типов, наверное.
Заснул тебе иглу — засосывают чуть поглубже
Руль должен содержать иглы, берущие анализ крови время от времени
Поддержку языка абстрагировали в langserver.org. Vim поддерживает lsp, судя по сайту. Есть реализация lsp для C# под названием omnisharp.

github.com/OmniSharp/Omnisharp-vim
> один тип строку, число и булево значение — всё это данные.

Все это объекты. Да, есть типы есть подтипы.
> олько зачем тогда вообще типы нужны, если мы их все приводим к одному супертипу?

Там где мы приводим, мы не используем их особенности, а там где не приводим используем. В результате мы знаем какой код полагается на какие фичи и это контроллируется автоматически.
И сколько они проходят? Просто контроль типов обычно делается фоном в процессе набора

Я думаю, когда вы его вызываете, вы расчитываете на то, что он поддерживает какой-то протокол. Все равно внутри себя вы думаете о типах или похожих вещах.

Ну чисто в теории есть разница, наверное, в пользу выявления ошибок при компиляции, но на практике ошибки рантайма куда более информативны. По крайней мере JS vs TS

Какое тестовое покрытие у вашего кода?

Меня смущает такое выборочное цитирование. Cмысл сообщения в том, что IDE и так хорошо справляются (без указания типов), но если им немного помочь (явно указать типы), то будут справляться лучше. У меня ощущение что вы просто не прочитали или не поняли большую часть того, на что отвечаете.
То есть пишем функцию «MakeBest()», в ней пишем вызов «MakeGood()», и только потом создаем эту самую MakeGood(), прописывая что именно она должна сделать.

В современных IDE так можно вполне себе и со статической типизацией. Они умеют создавать методы по примеру использования.

Именно так работает когнитивное искажение предвзятость подтверждения.

Я процитировал ту фразу на которую отвечал. Она относится не к самой статической типизации, а к тому, что именно говорят ее сторонники. Вы не полностью выразили их доводы вот и все.


В реальном мире — это там, где код начинает взаимодействовать с чем-то, что находится за его пределами.

Тогда у меня большинство ошибок происходит не в "реальном мире", а в коде, который неправильно взаимодействует с другим кодом (библиотек, чужих и собственных, операционной системы и т.д.).

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

Этот демагогический прием называется "чтение в сердцах". Если вы откроете поисковик и напишете "why static typing" вы легко найдете другие доводы за. И почему это может быть не эмоция, а расчет?


«Компилятор меня проверил, я все сделал правильно»

А так же "IDE мне подсказывает" — уже не только про ошибки.


Тем, кто в разработке давно, очевидно — компилятор не спасает от ошибок, которые встречаются в реальном мире, и не делает код делает код лучше структурированным.

"Аргументация демагога начинается с выражений типа «каждому известно, что…», «очевидно…», «наука давно доказала…», «все успешные бизнесмены знают, что…» и так далее. При этом эксплуатируется ложная гордость слушателя (если что-то подаётся как «общеизвестное», то ему бывает сложно признаться даже себе, что он об этом никогда не слышал) либо приводятся мнимые авторитеты, согласные с высказыванием, что действует на людей, склонных доверять авторитетам."


Когда вы говорите "не спасает от ошибок" вы имеете ввиду не спасает от всех ошибок или нет вообще никаких ошибок, от которых он спасает?


И в дело вступает любимая психологическая защита

И опять "чтение в сердцах"

Допустим, вам надо отправить сообщение юзеру, для этого нужно получить канал отправки по id юзера, а потом отправить это сообщение по каналу. У вас есть функция, которая принимает на вход user_id, на выходе отдает один из нескольких типов данных: или экземпляр класса SMS, или экземпляр класса Email, или экземпляр класса Websocket, или вообще null.

То есть вы думаете что результат является каналом отправки, и SMS, Email и Websocket являются каналами. Это похоже на описание типов

Информация

В рейтинге
7 080-й
Откуда
Россия
Дата рождения
Зарегистрирован
Активность