вот поэтому остальное и подзамок |
[Jul. 3rd, 2024|10:27 pm] |
|
|
|
Comments: |
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | August 28th, 2024 - 11:21 pm |
---|
| | | (Link) |
|
вообще, я уже где-то упоминал, но повторю, а то хуй найдёшь.
безопасность — это не про защиту от идиота. потому что идиот — он завсегда найдёт как любую защиту обойти, идиоты очень изобретательны.
безопасность — это защита от непреднамеренных ошибок. программа должна или работать, или с грохотом падать. а вот молча рубать в лапшу память, например — не должна.
вот оберон это и гарантирует: ты не испортишь «чужую» память, если вдруг у тебя где-то вылезет «дикий» указатель (в обероне это вообще невозможно), или если выстрелишь индексом за пределы массива. на этом месте полномочия оберона всё: написать правильный алгоритм — забота программиста.
GC нужен за тем же самым: он гарантирует, что у тебя никогда не будет ситуации «use after free». но и всё: он не гарантирует, например, отсутствие утечек памяти — это опять забота программиста.
технически в оригинальном обероне нет даже зануления локалов (кроме указателей) и проверки на целочисленные переполнения: программа всё равно не сломает того, что ломать не должна. просто выдаст фигню какую-то, но фатально память в лапшу не нарубит, например.
я добавил зануление и проверки переполнений просто потому, что это почти ничего не стоит, и делает код более предсказуемым. | |