Здравствуйте, Pzz, Вы писали:
S>>Чем они строгие? Любой в v может записать все, что захочет.
Pzz>Мы от чего защищаемся, от случайных ошибок, или от целенаправленного взлома?
От случайных. В сишном варианте у вас все манипуляции будут именно с var.v. И никто не защитит вас от того, что вы в var_distance.v по ошибке засунете var_weight.v.
Pzz>А, ну да, у вас в команде нет индусов. Будут, это вопрос времени.
Нет проблем, можно привести историю и из своего опыта. Когда-то давно в большой (для проектной команды) кодовой базе величины таймаутов было решено задавать просто в миллисекундах и хранить это все просто в unsigned-ах. Соответственно, со временем полезли ошибки связанные с тем, что где-то из конфига величины считывались в секундах или минутах, а потом без должных преобразований или с неправильными преобразованиями это все уходило на вход функциям, где ожидались просто unsigned-ы.
С учетом этого прошлого опыта теперь для таких вещей используются std::chrono::duration. И подобных проблем нет от слова совсем. При том, что все осталось в рамках того же языка.
S>>Это в Pascal-е было за 30 лет до появления Go.
Pzz>Ну во-первых, паскале не было.
С Виртовским Паскалем не работал, а в Turbo Pascal из середины 1980-х было.
Pzz>А в третьих, какая разница, где что и было?
Такая же, как и вмешивание Go в разговор про преимущества C++ перед C (или наоборот).