Re[9]: Ещё насчёт выбора языка посоветуйте
От: · Великобритания  
Дата: 13.01.20 18:40
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>·>На каком основании компилятор будет принимать решение, что некая функция с неким именем calculateHash может или не может писать в файлы?

FDS>Просмотрит все вызываемые функции. Они не вызывают функции, которые пишут в файл или в поток ввода-вывода, не вызывают прерываний и не пишут в порты ввода-вывода.
Нет. Ты вопрос не понял. На каком основании компилятор будет решать, что "calculateHash" не должна писать в файл (и если кто-то случайно или намеренно там в файл пишет, то выдать ошибку компиляции), а "writeHash" может писать в файл?

>>Так в итоге в сколько-либо сложном проекте у тебя дойдёт до того, что программист будет говорить что все функции могут всё.

FDS>Не дойдёт. А если дойдёт, значит проект должен выбрасываться и переписываться заново. Когда все функции могут всё — это как раз не то, что нужно.
А если не все, а только 95% функций? А если 5%? Где границу-то ставить?

FDS>·>Так практически любой ЯП это уже умеет. Если в файле не написано "import java.io.*" то io никакого в данном файле быть не может. Немного сложнее, но элементарно делается. Динамическую подгрузку кода не считаем, её можно явно оключить, как правило.

FDS>Может быть вызов через рефлекшн и непосредственно в коде с полной квалификацией (в C#, по крайней мере).
FDS>Ну, опять же, в Java может и не получится. В других языках это не так просто.
В java это контролируется. Чтобы загрузить класс, тебе нужно сделать classLoader.forName("someClass") — а этот сам classLoader контролируется и может выдавать ClassNotFound. Т.е. коду просто не будет доступа к классам которые ему не дают.

FDS>Ну и потом, там могут быть алиасы какие-нибудь и т.п.

Нет никаких альясов. Есть только имена классов.

FDS>>>либо специализированная система выделения памяти.

FDS>·>Тут проблема не в выделении, а в освобождении. Т.к. именно при освобождении надо занулять.
FDS>Систем освобождения памяти не бывает Только выделения.
Вот и я о том.

FDS>·>Ну тогда просто — при завершении процесса занулить всю память.

FDS>не, это слишком долго.
Это гарантированно быстрее, чем делать много раз при удалении каждого объекта в программе.

FDS>Вдруг процесс, всё же, упадёт?

Ты уж определись...

>> Интуиция подсказывает, что такое API должно предоставляться операционкой. А то утечёт что-нибудь в своп-файл, сработает какая-нибудь дефрагментация и нифига не занулится.

FDS>О таким API мне неизвестно. И в файл подкачки вполне утекает всё.
FDS>Чтобы не утекало, есть функция VirtualLock в WinAPI
Судя по спеке эта функция ничего не обещает по поводу того, что она не будет ничего никуда копировать.
И уже не говоря про всякие железные уязвимости типа row hammer.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.