Базовый CS с нуля
Значения и типы: тест с выбором
Шесть вопросов, проходящих сквозь весь юнит. Ни один не требует пересказать определение. Каждый просит применить единственную идею юнита — биты ничего не значат, пока type не скажет, как их читать — к конкретной ситуации.
Убедись, что можешь связать все нити юнита: value — это сырые биты, type — правило их интерпретации, одни и те же биты декодируются по-разному под разными правилами, а система типов существует, чтобы не дать применить неверное правило.
Ячейка памяти хранит 8-битный паттерн 01000001. Две программы читают её: одна печатает 65, другая — букву 'A'. Какое утверждение верно?
Нужно сохранить value и позже корректно прочитать его обратно. Одного стартового адреса недостаточно. Что ещё должен знать читатель?
В JavaScript и 42, и 36.6 дают typeof === 'number'. Почему нет отдельного целочисленного типа?
Коллега пишет: 'null и undefined — одно и то же, оба значат пусто.' Какова точная поправка?
Какую единственную глубинную проблему создана ловить любая система типов — статическая или динамическая?
Один и тот же баг несоответствия типов можно поймать на этапе компиляции или во время выполнения. В чём практическая разница между статической (TypeScript) и динамической (JavaScript) проверкой?
Хребет юнита в одной цепочке решений: value — фиксированный паттерн битов без встроенного смысла; type даёт две недостающие части — размер и интерпретацию — превращающие биты в значение; одни и те же биты декодируются в разные значения под разными правилами; JS открывает небольшой набор примитивов (number как единый 64-битный IEEE 754 double, string, boolean и два различных отсутствия null и undefined); а система типов существует, чтобы не дать применить неверное правило — статически до выполнения или динамически в момент исполнения.