Вадим 老陆 Румянцев@vadimr
Разработчик аппаратно-программных комплексов
Информация
- В рейтинге
- 1 940-й
- Откуда
- Санкт-Петербург, Санкт-Петербург и область, Россия
- Дата рождения
- Зарегистрирован
- Активность
Специализация
Менеджер проекта, Архитектор программного обеспечения
Ведущий
Для этого надо заранее знать, из какого в какой тип придётся преобразовывать. В результате, например, функция
printfв C написана грязным хаком, в Паскале write вообще не является настоящей функцией, а в C++ не нашли ничего лучше, чем плодить цепочки<<.Маловероятный частный случай – что эти корявые данные будут отличаться от некорявых типом.
На мой взгляд, это не банальная операция, а антипаттерн проектирования. Не надо так делать вообще никогда.
Но замечу, что в реальной жизни, у вас, скорее всего, будут в структуре предметной области не статически расписанные структуры с полями, а какие-нибудь списки свойств ключ-значение, и статическая типизация с этим не поможет никак.
Это плоховато сочетается с концентрацией ответственности, но в общем-то даже и так перебрать всё в цикле обычно не составит труда.
Многочисленные различные эмуляторы 6502 уже содержатся в обучающей выборке LLM, поэтому тут удивляться надо тому, что не заработало с первого раза.
Поисковый сервер google с той же задачей справляется гораздо лучше.
С какой стати статической типизации-то? Я вот лично здесь пришёл бы к необходимости параметрического полиморфизма.
Я не являюсь адептом JS, многое в этом языке сделано криво. Это не значит, однако, что динамическая типизация плоха, потому что JS крив.
Делал. Например, могу случайно написать 6000 вместо 8000. И как вам тут поможет ваша статическая типизация? Проблему-то надо решать в принципе, а не в маловероятном частном случае.
Мы же с вами, вроде, оба взрослые люди, и не какую-то абстрактную науку обсуждаем, а вполне практически наблюдаемые вещи. У меня большой опыт использования как статически, так и динамически типизированных языков (в основном даже статически), и я не припоминаю, чтобы статическая типизация уровня Алгола/Паскаля/C++ мне реально особо помогала бороться с ошибками, вопреки провозглашаемым лозунгам. Да, иногда ошибки живут до первого теста, а не первой компиляции. Но если у вас в программе существуют участки путей исполнения, не покрытые тестами (хотя бы синтетическими), то это косяк, который никакая статическая типизация не исправит.
Кстати, я какое-то время провёл, программируя на статически типизированном языке PL/I, в котором нет никаких проблем передать строку на место числового параметра или умножить их (получив ошибку в рантайме). Тут дело не в статике, а в силе типизации.
Это в любом государстве выгоднее хотя бы по той причине, что оптом дешевле. Не говоря о гарантии целевого расходования средств.
Изначально в смолтоке объекту можно было посылать любое сообщение, не заботясь о том, понимает он его или нет. В C++ и происходящих от него языках вызов несуществующего метода не скомпилируется.
А кто вас заставляет умножать строку, получив её? Число 8000 не станет умножать себя на строку. Результатом будет вызов doesNotUnderstand или что там в конкретном языке.
Ну это вообще нормальная жизненная ситуация. Летит Карлсон над городом, а ему кричат всякую фигню, которая не имеет для него значения. Повлияет ли это на работоспособность Карлсона? Нет, он просто не обратит внимания на эти крики.
Я считаю, это вообще была самая полезная идея ООП (утраченная в C++ и его производных).
Статическую? Совсем нет. Более того, Карлсон в ходе своей жизни или даже своего полёта может научиться отвечать на поздравления с новым годом. Вчера не умел, сегодня научился. Перекомпилировать для этого Малышей не нужно.
Я примерно такими вещами как раз и занимаюсь.
Да любой тип обычно принимает.
С динамическими типами можно просто поправить шаблон в рантайме, и это вообще не проблема, которая требовала бы участия программиста.
Будет, конечно, сыпаться мусор, если вам подсовывают не то, что вы ожидаете, но это не должно влиять на работоспособность программы.
Ну я и спам на второй телефонный номер получать не хочу. Плюс заряд, как вы верно заметили. Это у меня холодный резерв.
Случаи разные бывают. Основная масса, как я понимаю, всё-таки летит из-за границы в ближайшие к ней цели. Другое дело – насколько разумно политику безопасности для этого случая обобщать на удалённые от границы регионы. Условно говоря, в Белгороде угрозы с технической точки зрения одни, а в Красноярске – другие.
Ну у меня, допустим, вторая симка отключена в настройках телефона. На ней платный трафик, зачем за него платить, когда второй оператор не нужен? Понимаю, конечно, что тут мои интересы расходятся с интересами оператора.
Если он не запущен из-за границы.
Возможно, проблемы из-за включённого VPN?
Насколько я помню, поиск устройства драйвером на шине 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 назад были в такси решётки между водителем и пассажирами. Сейчас ничего такого нет.
Что-то я не помню, чтобы в советское время педалировалась тема, что диктатура - это плохо. Тогда в основном оценивали, какой класс у власти,а не форму правления.