В своих предыдущих статьях я утверждал, что ИИ меняет роль ограничений в разработке программного обеспечения. Долгое время мы относились к ограничениям как к трению. Статические типы казались медленнее, чем динамический код. Схемы казались ограничительными по сравнению с обычными...
В своих предыдущих статьях я утверждал, что ИИ меняет роль ограничений в разработке программного обеспечения.
Долгое время мы относились к ограничениям как к трению. Статические типы казались медленнее, чем динамический код. Схемы кажутся ограничительными по сравнению с гибкими данными. Явные рабочие процессы казались более громоздкими, чем предоставление приложению возможности решать, что делать во время выполнения.
Но ИИ меняет экономику.
Написание кода становится дешевле. Понимания того, что должен делать код, нет. И проверка того, что сгенерированный код действительно выполняет то, что мы задумали, становится одной из наиболее важных частей разработки программного обеспечения.
Это приводит к простому принципу:
Чем важнее предположение, тем ценнее сделать это предположение явным.
Это особенно важно для TypeScript. TypeScript уже делает некоторые вещи явными, но система типов не может выразить все. Он не может сказать нам, что происходит в случае сбоя HTTP-запроса, проверить JSON, полученный от внешней службы, сообщить нам, какие состояния приложения являются допустимыми, описать отношения с базой данных, обеспечить соблюдение границ модуля или определить, как распределенный рабочий процесс должен вести себя после сбоя процесса.
Эти вещи часто остаются подразумеваемыми.