> в rust константой по времени, например? А для криптографии это важно
> - зарубает целый класс атак, делающих выводы по разному времени выполнения.
> Такие вещи могут быть абсолютно фатальны. Скажем достаточно необдуманно сравнивать пароль
> чем-то типа memcmp и далее можно просто глядя на дельту по
> времени угадывать его по отдельным буквам. Тут Rust не лучше и не хуже C. И в C рантайм не копеечный, и в Rust не жирный, и оба позволяют работать без рантайма.
> Guns don't kill people. Языки прогрмамирования не делают ошибок, ошибки делают люди.
Тем не менее, количество инцидентов с оружием больше там, где к нему свободный доступ.
> Ты чего хочешь? Заменить дорогих элитных сишников, понимающих что они делают
> на хипстерских обезьянок дешевле?
Чтобы их заменить, они должны быть в достаточном количестве. Их банально не хватает. Если есть высококлассный специалист, лучшее, что можно сделать - это позволить ему работать на том, на чём он хочет и знает.
> Чудес не бывает, обезьянки не будут понимать
> как это работает, сложный рантайм все усугубит.
Далеко не все языки, являющиеся более ошибкоустойчивыми чем C, требуют жирного рантайма. Та же Modula-2.
Тут сама постановка вопроса удивляет, что если программист профессионал, то ему не нужна подстраховка. Вот Дреппер же профессионал? А сколько уязвимостей нашли в glibc?
> В этих php, python, ruby и прочих вообще нет работы
> с указателями. Но это не мешает хакерам взламывать большинство серверов через
> дырявую вебню.
Вы назвали ужасные, с моей точки зрения, языки. Точнее, как скриптовые они может быть и неплохи, то есть для такого кода, который не надо никому показывать, но для построения крупных проектов динамическая типизация - это болото. Поэтому в ФСБуке и делают свой транслятор для PHP-образноко языка со статической типизацией.
> Люди применяют для задач инструменты которые работают. Си используется в критичных
> задачах десятилетиями и работает это получше других инструментов.
Лучше языка Ada, массово применяемого в авиастроении? Очень критичная область, надо сказать.
> Системное программирование
> вообще к надежности требвательно выше среднего. В ядре системы одна ошибка
> - и ты идешь перезагружать систему. Хороший стимул не лажать в коде.
Тут, как раз, архитектура и язык могут решать. QNX характерна устойчивостью к падению за счёт микроядерной архитектуры. В архаичной Oberon вся ОС вместе с программами выполнялась в едином адресном пространстве, но за счёт языка с герметичными типами была устойчива, хотя при желании и можно было запороть память псевдомодулем SYSTEM.
> Но все-равно иногда пролезают ошибки. Кода много, не все взаимодействия между
> разными частями - тривиальные. И никакой ЯП не спасет тебя от
> этого сам по себе.
> А еще можно верить в серебряные пули, нанимать долбоклюев ничего не смыслящих
> в безопасности и при этом в силу глупости надеяться что врожденный
> кретинизм програмера лечится заменой ЯП, а не заменой програмера. Только как
> там в басне говорится: вы друзья, как ни садитесь...
Речь идёт лишь о том, чтобы исключить проблемы, решаемые языком. О серебряной пуле никто не мечтает, но упрощение жизни - возможно. Не нужно кидаться крайностями, и представлять людей глупцами из-за их желания воспользоваться плодами прогресса.