Література щодо цього не зрозуміла. Я думаю, що сильно набране - це не так / ні, є різний ступінь сильного набору тексту.
Мова програмування має специфікацію того, як вона виконує програми. Іноді незрозуміло, як виконувати певні програми. Наприклад, програми, які намагаються відняти рядок із числа. Або програми, які діляться на нуль. Є кілька способів впоратися з цими станами. Деякі мови мають правила щодо усунення цих помилок (наприклад, вони створюють виняток). Інші мови просто не мають правил для вирішення цих ситуацій. Ці мови, як правило, мають системи типів для запобігання компіляції програм, що призводять до неуточненої поведінки. А також існують мови, які мають невизначену поведінку і не мають системи типу, щоб запобігти цим помилкам під час компіляції (якщо ви пишете програму, яка вражає невизначену поведінку, це може запустити ракети).
Тому:
Мови, які визначають, що відбувається під час виконання в кожному випадку (наприклад, додавання числа до рядка), називаються динамічно набраними. Мови, що перешкоджають виконанню програм з помилками під час компіляції, набираються статично. Мови, які не визначають, що відбувається, а також не мають системи типів для запобігання помилкам, називаються слабко набраними.
Тож Java статично набрана? Так, оскільки система його типів забороняє віднімати рядок із числа. Ні, тому що це дозволяє ділити на нуль. Ви можете запобігти діленню на нуль під час компіляції за допомогою системи типів. Наприклад, створивши тип числа, який не може бути нульовим (наприклад, NonZeroInt), і дозволяє ділити лише на числа, що мають цей тип.
Отже, C сильно набрано чи слабо набрано? C сильно набирається, оскільки система типів забороняє деякі помилки типу. Але він слабо вводиться в інших випадках, коли не визначено, що відбувається (а система типу не захищає вас).