Обновить
66
0.9
Вадим 老陆 Румянцев@vadimr

Разработчик аппаратно-программных комплексов

Отправить сообщение

И как не крути, а этот самый "параметрический полиморфизм" намного проще сделать на языках со статической типизацией, а особенно на сях, всего лишь объявив пару перегрузок.

Для этого надо заранее знать, из какого в какой тип придётся преобразовывать. В результате, например, функция printf в C написана грязным хаком, в Паскале write вообще не является настоящей функцией, а в C++ не нашли ничего лучше, чем плодить цепочки <<.

Корявые входные данные, особенно подготовленные человеками в виде файлов - это ни разу не маловероятный частный случай.

Маловероятный частный случай – что эти корявые данные будут отличаться от некорявых типом.

Да даже банальная операция удаления свойства из структуры

На мой взгляд, это не банальная операция, а антипаттерн проектирования. Не надо так делать вообще никогда.

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

Ага, пока не возникает метод с 10^4 сочетаний пограничных случаев. Реальный случай, кстати.

Это плоховато сочетается с концентрацией ответственности, но в общем-то даже и так перебрать всё в цикле обычно не составит труда.

Многочисленные различные эмуляторы 6502 уже содержатся в обучающей выборке LLM, поэтому тут удивляться надо тому, что не заработало с первого раза.

Поисковый сервер google с той же задачей справляется гораздо лучше.

А кто вас заставляет умножать строку, получив её? 

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

С какой стати статической типизации-то? Я вот лично здесь пришёл бы к необходимости параметрического полиморфизма.

В JS вполне себе будет NaN, без всяких ошибок. А потом этот NaN пойдет по цепочке, если не обвязывать его тонной бойлерплейта. И все из-за отсутствия статической типизации, которая четко говорит: принимаю только числа, пошел нафиг, с новым годом.

Я не являюсь адептом JS, многое в этом языке сделано криво. Это не значит, однако, что динамическая типизация плоха, потому что JS крив.

И это прекрасно, что падает. Только не говорите, что никогда в жизни не делали опечатки. 

Делал. Например, могу случайно написать 6000 вместо 8000. И как вам тут поможет ваша статическая типизация? Проблему-то надо решать в принципе, а не в маловероятном частном случае.

Мы же с вами, вроде, оба взрослые люди, и не какую-то абстрактную науку обсуждаем, а вполне практически наблюдаемые вещи. У меня большой опыт использования как статически, так и динамически типизированных языков (в основном даже статически), и я не припоминаю, чтобы статическая типизация уровня Алгола/Паскаля/C++ мне реально особо помогала бороться с ошибками, вопреки провозглашаемым лозунгам. Да, иногда ошибки живут до первого теста, а не первой компиляции. Но если у вас в программе существуют участки путей исполнения, не покрытые тестами (хотя бы синтетическими), то это косяк, который никакая статическая типизация не исправит.

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

Это в любом государстве выгоднее хотя бы по той причине, что оптом дешевле. Не говоря о гарантии целевого расходования средств.

Изначально в смолтоке объекту можно было посылать любое сообщение, не заботясь о том, понимает он его или нет. В C++ и происходящих от него языках вызов несуществующего метода не скомпилируется.

Ага, чему там будет равно 8000 * "С новым годом, Малыш"

А кто вас заставляет умножать строку, получив её? Число 8000 не станет умножать себя на строку. Результатом будет вызов doesNotUnderstand или что там в конкретном языке.

У вас летит Карлсон, а ему вместо процента оборотов пропеллера прилетела строка "С новым годом, Малыш". Повлияет ли это на работоспособность программы полета к банке варенья?

Ну это вообще нормальная жизненная ситуация. Летит Карлсон над городом, а ему кричат всякую фигню, которая не имеет для него значения. Повлияет ли это на работоспособность Карлсона? Нет, он просто не обратит внимания на эти крики.

Я считаю, это вообще была самая полезная идея ООП (утраченная в C++ и его производных).

Потому что для обработки этой ошибки нужно криво-косо, но прикрутить ту самую типизацию, которой из коробки нет.

Статическую? Совсем нет. Более того, Карлсон в ходе своей жизни или даже своего полёта может научиться отвечать на поздравления с новым годом. Вчера не умел, сегодня научился. Перекомпилировать для этого Малышей не нужно.

Я примерно такими вещами как раз и занимаюсь.

А потом приходят Малыши и собирают своих Карлсонов v. X.Y.Z.B, постоянно наступая на одни и те же грабли, не зная какой тип принимает ваш метод управления пропеллером.

Да любой тип обычно принимает.

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

Будет, конечно, сыпаться мусор, если вам подсовывают не то, что вы ожидаете, но это не должно влиять на работоспособность программы.

Ну я и спам на второй телефонный номер получать не хочу. Плюс заряд, как вы верно заметили. Это у меня холодный резерв.

Случаи разные бывают. Основная масса, как я понимаю, всё-таки летит из-за границы в ближайшие к ней цели. Другое дело – насколько разумно политику безопасности для этого случая обобщать на удалённые от границы регионы. Условно говоря, в Белгороде угрозы с технической точки зрения одни, а в Красноярске – другие.

Ну у меня, допустим, вторая симка отключена в настройках телефона. На ней платный трафик, зачем за него платить, когда второй оператор не нужен? Понимаю, конечно, что тут мои интересы расходятся с интересами оператора.

Мосты PCI прозрачны для обычного обмена и никакого влияния на драйверы не оказывают.

Насколько я помню, поиск устройства драйвером на шине PCI происходит на её конкретном участке размером 4 слота, потому что там адресуются именно 4 слота. Мост – это переход к следующей шине по цепочке. И далеко не всякий драйвер (включая BIOS) способен вообще работать с устройствами дальше 4 слота.

Но только драйверы многих устройств PCI через несколько мостов не будут работать. Именно поэтому материнские платы более чем с 4 слотами являются большой экзотикой, и там зачастую даже вместо второго моста использовалась PCI Bufurcation, требующая настройки вручную вместо обещанного PnP.

Кроме того, PCI – несимметричная шина в том смысле, что хост туда не воткнёшь (как было со вторым процессором Z80 в Apple II).

По поводу Unibus и прочих не спорю – я вовсе не имел в виду, что Возняк первым изобрёл универсальную шину. Но как там было всё организовано программно, мне неизвестно.

25 устройств, конечно, воткнуть в Apple II невозможно (да это никакому персональному компьютеру и не нужно, и во всяком случае в шину Apple II можно было воткнуть больше, чем в стандартный PCI), но что касается существования в природе – тут вы сильно неправы. На то время это был персональный компьютер с самым развитым набором периферии. К нему и роботов подключали, и второй процессор, и бог знает что ещё. Именно благодаря прозрачной шинной архитектуре.

Так если там ресурсы уже в силу архитектуры были заранее распределены между слотами, зачем их ещё раз распределять?

P&P, по определению – это возможность подключить устройство, чтобы при этом оно сразу работало, без необходимости что-то конфигурировать руками в аппаратных или программных настройках. И это на Apple II выполнялось.

P&P по существу был уже на Apple II. Там драйвер устройства находился в ПЗУ платы расширения, а операционная система просто инициализировала его переходом в начало адресного пространства устройства.

Я к тому, что в 256 байтах особо не разгуляешься даже на 8-разрядной машине.

Да, ещё лет 10-15 назад были в такси решётки между водителем и пассажирами. Сейчас ничего такого нет.

Что-то я не помню, чтобы в советское время педалировалась тема, что диктатура - это плохо. Тогда в основном оценивали, какой класс у власти,а не форму правления.

Информация

В рейтинге
1 940-й
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Менеджер проекта, Архитектор программного обеспечения
Ведущий