Vlad писал(а):
Не, я все равно не понимаю...

Вот в C++ объект можно очень точно положить в нужную ячейку памяти...
И делается это с помощью "new". unit не нужно инициализировать. И язык тут ни причём.
Vlad писал(а):
...в C++ объект можно очень точно положить...
Я имел в виду не то, что объекты не очень точно распологаются в памяти друг относительно друга, а то, что Вы можете скомпилировать такой код (представлен схематично)
Код:
class rec1 {
int i1;
int i2;
int i3;
String s1;
String s2;
String s3;
...
}
или такой код
Код:
class rec1 {
int i1;
String s1;
int i2;
String s2;
int i3;
String s3;
...
}
вместе с классами, которые его используют. Причём, классы не придётся менять, и всё будет работать. То есть, структура класса не обязана соответствовать каким-то аппаратным требованиям. И вообще, переменные в классе могут объявляться хоть после процедур. Это ничего не изменит для класса, потому что это абстракция, и к её данным обращается не процессор, а другая абстракция средствами языка. А транслятор потом...
На нижнем уровне всё, конечно, эмулируется через базовый тип (или типы) процессора, где и про методы уже речи нет.
Кстати, в отличие от объектов, внутри unit нельзя делать перестановок и надеятся на всё тот же результат: методы обработки занесены в процессор и "перекомпилировать" их вместе с новой структурой unit ничего нельзя.
Vlad писал(а):
...и гарантировать, например, что для процессора он будет ничем не отличаться от int'а...
неплохо бы иметь такой процессор : ). Среди всего прочего, уменьшили бы головную боль людям, пишущим кодогенераторы компиляторам. А программисты, наконец-то, могли бы забыть про процессор.
Vlad писал(а):
Откуда берется противопоставление объект vs железо?
Я их не противопоставляю, а различаю. Только из-за того, что объект в общем случае - сущность произвольная, а железо поставляет весьма ограниченный набор фиксированных структур.