Да, учитывая систему типов, которая является выразительной и достаточно мощной, это действительно возможно.
Ur / Web , например, это фреймворк веб-приложения, написанный на языке программирования Ur, в котором система типов гарантирует несколько интересных свойств:
- не может быть неработающих ссылок (в приложении)
- невозможно сгенерировать неверный HTML
- невозможно проводить XSS-атаки
- SQL-инъекция невозможна
- поля формы всегда имеют соответствующий обработчик на стороне сервера
- AJAX-вызовы всегда имеют соответствующий серверный обработчик
- типы полей формы на стороне клиента, серверных обработчиков и таблиц базы данных совпадают
- ... намного больше ...
Адам Члипала, автор Ur и Ur / Web, рассказал об этом в лагере Emerging Languages 2010 .
Есть также некоторые веб-фреймворки в Haskell, OCaml и Scala, которые (пытаются) это сделать (некоторые из них). Их системы типов достаточно мощные, чтобы гарантировать хотя бы некоторые из этих свойств. Есть, например, безопасное встраивание SQL в Haskell или язык шаблонов HTML в OCaml, который не позволяет пользователю генерировать недопустимый HTML.