Или статическая типизация всегда была правильной парадигмой?

Статическая типизация победила! Просто проверьте Quora или Stack Overflow, и вы увидите, что в большинстве ответов предпочтение отдается статической типизации.

JavaScript находится на TypeScript. Python и PHP имеют типизированные подсказки. А популярность Java, Go и Rust только что отчеканена!

И если вы бросите вызов статус-кво, как это сделал DHH, вы рискуете быть отмененным.

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

Статическая типизация — это образ мышления, прежде чем стать термином CS

Чтобы уточнить, что я имел в виду под «мышлением», позвольте мне кратко объяснить следующие термины информатики:

Статическая и динамическая проверка типов: в языке со статической типизацией типы переменных известны во время компиляции и не меняются после установки. Пример: если x — целое число, оно останется таковым.

Строгая и слабая типизация: строгая типизация обеспечивает соблюдение строгих правил типов, предотвращая неявные преобразования. Пример: если x является целым числом, вы не можете объединить его со строкой.

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

Сочетание характеристик правого верхнего квадранта дает нам следующие особенности:

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

Первые три слова этого предложения уже дают вам представление о том, что я имею в виду под статическим типом мышления: «Мы можем решить».

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

«Хорошая новость о компьютерах заключается в том, что они делают то, что вы им говорите». — Тед Нельсон