Те, як я на це дивлюсь, якщо ви можете працювати природним чином у мові, що набирається статичним способом, то статичне введення тексту - це шлях. Загалом, мета типової системи - запобігти виконанню операцій із невизначеною семантикою - як (string) "hello" + (bool) true
. Наявність додаткового рівня безпеки, що заважає вам виконувати ці операції, може бути хорошим способом запобігання помилок у вашому коді, навіть без обширних тестових одиниць. Тобто безпека типу забезпечує ще один рівень впевненості в семантичній правильності вашого коду.
Але типові системи дуже важко виправити. Я не вірю, що в нашому часі написання цієї системи є досконалою системою. (Під «ідеальною системою типів» я маю на увазі систему суворого типу, яка не потребує багатослівних анотацій коду, яка не генерує помилково-позитивних помилок типу і помилки типу яких програмісту легко зрозуміти.) Далі, вона може бути важко зрозуміти дійсно хороші системи типів, які існують. Коли я вивчав Haskell, я не можу сказати вам кількість незрозумілих помилок типу, які я отримав під час спроби написати те, що виглядало (на мене) як правильний код. Зазвичай код був насправді невірним (що вказує на користь типової системи), але це зайняло багатороботи, щоб зрозуміти повідомлення про помилки компілятора, щоб я міг виправити основні проблеми. У мовах ОО, ви, зрештою, можете подумати, що "цей аргумент повинен бути протилежним типу введення, а не коваріанту!", Або (що більше ймовірно) повертається до набірних машин, щоб вийти з меж системи типів. Системи типів можуть бути набагато складнішими, ніж ви думаєте.
Оскільки це варте, я розумію, що складність у створенні систем гарного типу є частиною того, що мотивувало Gilad Bracha включити підтримку підключуючої системи типу в Newspeak.