Я пытаюсь понять, что означает, что язык будет безопасным по типу. В динамически типизированных языках, проверка типа производится во время выполнения, так, например, если я запускаю следующий PHP код:Нужно ли статически вводить тип безопасного языка?
<?php
class MyClass
{
}
// Create a MyClass instance
$mc = new MyClass();
// Create an int variable
$i = 1234;
// Add $mc and $i
$result = $mc + $i;
?>
Я получаю сообщение об ошибке, потому что + operator
не поддерживает тип MyClass
данных. Поэтому в основном проверка типов выполнялась во время выполнения.
Имеет ли тип безопасность означает, что проверка типа выполняется независимо от того, выполняется ли она во время компиляции или во время выполнения, или это означает, что проверка типа должна выполняться только во время компиляции, и поэтому каждой переменной должен быть задан тип данных явно (например, C, Pascal, Java и т. д.).
Для этой конкретной ситуации существует определенная безопасность типа, но нет, если вы скажете 'function x() {$ i = 0; if (true) {$ i = "bla"; } return $ i; } '... –
кстати. ваш exmaple приведет к 1235, так что там нет безопасности –
@Royal Bg Если язык выполняет проверку типов во время выполнения и останавливает программу, если обнаружена ошибка типа, такой язык называется безопасным языком типа? –