В том то и дело что нет. Эти детали определяют контракты самого ЯП.
Думаешь почему в Java Double не типобезопасный тип, а Object - типобезопасный?
Ровно по причине, что объект всегда спрятан за указателем, размер которого соответствует битности системы. А Double всегда занимает 64 бита и на 32-битных системах это просто нельзя сделать атомарно без блокировок.
Или, другой пример. Я не могу передать null в Java там, где ожидается, например число.
Почему? Да потому что null - это объект и также является указателем. А число будет занимать размер согласно своему типу.
И так в каждом ЯП! Эти нюансы определяют дизайн.
И в Rust нет понятия объекта. Не потому что "какая то философия", а потому что реально нет такого типа, как и связанных с ним контрактов.
Но есть многие черты ОО языка. И получается, что "физически" объектов нет, но многие черты - есть.
Поэтому я и отнес его к ПостООП.
В Julia/Go тоже нет объектов, и эти языки сильно отличаются друг от друга, но там также есть черты от ООП.
Именно это я и разбираю.
Думаешь почему в Java Double не типобезопасный тип, а Object - типобезопасный?
Ровно по причине, что объект всегда спрятан за указателем, размер которого соответствует битности системы. А Double всегда занимает 64 бита и на 32-битных системах это просто нельзя сделать атомарно без блокировок.
Или, другой пример. Я не могу передать null в Java там, где ожидается, например число.
Почему? Да потому что null - это объект и также является указателем. А число будет занимать размер согласно своему типу.
И так в каждом ЯП! Эти нюансы определяют дизайн.
И в Rust нет понятия объекта. Не потому что "какая то философия", а потому что реально нет такого типа, как и связанных с ним контрактов.
Но есть многие черты ОО языка. И получается, что "физически" объектов нет, но многие черты - есть.
Поэтому я и отнес его к ПостООП.
В Julia/Go тоже нет объектов, и эти языки сильно отличаются друг от друга, но там также есть черты от ООП.
Именно это я и разбираю.