EnglishРусский Map
Type System Axes

Терминология систем типов

title
Терминология систем типов
type
summary
summary
Заметка Lewis Campbell об ортогональных осях систем типов и о том, почему "строгая типизация" - дилетантский термин
tags
programming-languages, type-systems
created
2026-04-25
updated
2026-04-25
lang
ru
source_updated
2026-04-25
translated
2026-09-01
translator
lllm/antigravity/gemini-3.7-flash-medium

Короткая заметка lewis-campbell, в которой он утверждает, что в сетевых дискуссиях о программировании часто путают терминологию систем типов - из-за чего такие обсуждения либо сложно понять, либо они откровенно вводят в заблуждение. Решение простое: чётко разделять две оси - статическая/динамическая и сильная/слабая.

Две оси

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

Сильная или слабая - вопрос о том, сколько неявных приведений типов выполняет язык. C - слабый: арифметика указателей без проблем переинтерпретирует байты. Python - сильный: вызов метода, ожидающего один тип, с аргументом другого типа приведёт к ошибке, а не к неявному преобразованию.

Обе оси ортогональны. Campbell намеренно берёт C и Python в качестве наглядных примеров: у C статическая слабая типизация, у Python - динамическая сильная. Ни одна из этих пар не идёт "в комплекте" как неделимый пакет. См. матрицу из четырёх квадрантов на странице type-system-axes.

В чём люди ошибаются

Динамическая ≠ бестиповая. В динамически типизированных языках типы есть - это прямо следует из названия. "Бестиповая" означает, что проверки не происходят вовсе, ни статически, ни динамически. Это принципиально разные категории.

Сильная ≠ статическая, слабая ≠ динамическая. В этом и заключается суть примера с C и Python. Смешение этих осей порождает фразы, которые звучат осмысленно, но не имеют конкретного содержания.

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

Почему это важно

Заметка короткая, но затронутая проблема универсальна. Когда словарь сводит два независимых измерения к одному ползунку, участники дискуссии не могут прийти к согласию: они спорят о совершенно разных вещах, используя одно и то же слово. Только разделение осей делает осмысленный разговор возможным.