Показать сообщение отдельно
  #45  
Старый 03.04.2014, 08:37
Аватар для Freeman
Freeman Freeman вне форума
Местный
 
Регистрация: 05.10.2012
Адрес: Санкт-Петербург
Сообщения: 576
Версия Delphi: 6
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Bargest
new-instance создает непосредственно объект. Далее есть instance-of, проверяющий, является ли объект экземпляром класса или его наследником. Во все invoke-и и getfield/putfield передается строка с именем класса или же экземпляр класса, от которого в случае несущестовования метода/поля будет браться родитель и искаться соответствующий метод/поле.
Дискуссия внезапно оказалась плодотворной для меня. Всё это время пытался найти там подвох, чтобы было чем троллить, но тролль из меня хреновый. Зато ближе познакомился с байт-кодом JVM. Ты в очередной раз на меня положительно влияешь.

У меня уже сложилась в голове структура байт-кода Кантора, и теперь я могу сравнивать ее с другими реализациями. Шутки шутками, но мой байт-код больше всего похож на Бейсик 80-х.

Стало также понятно, почему так быстро удалось создать свой байт-код разработчикам "Фантома": они наверняка слегка изменили правила наследования и поиска методов, а всё остальное оставили как в Java. Это мои предположения, лезть в "Фантом" больше не хочется.

Цитата:
Сообщение от Bargest
Структурная теорема не призывает создавать абстракции от абстракций, притянутые за уши к понятию объекта. Фактически структурное программирование требует строить четкий алгоритм из относительно независимых блоков.
Вот это и есть разница между научным и бизнес-подходом. Структурное программирование было продумано от начала до конца и вписано в компиляторы заподлицо, а goto остался на нижнем уровне. И то, это не всем понравилось, нашлись и ретрограды, писавшие байки вроде "Настоящие мужчины используют Фортран". Они не верили структурным компиляторам.

В случае же ООП полной замены не произошло. ОО-средства были добавлены (прикручены сбоку -- в моей трактовке) в структурные языки, и классы с объектами стали сосуществовать рядом с обычными, необъектными типами. ОО в виде расширений было массовым, и со временем закрепилось в сознании именно в таком виде. Мол, объект -- это "запись с методами", доступная или напрямую, или по указателю. Стали накручивать на это другие слои, вроде интерфейсов, фабрик классов, и пошло-поехало.

На самом же деле, если почитать классические труды по ООП (того же Алана Кея), в них нигде не говорится, что объект -- это именно запись с методами. Даже посылку сообщения можно трактовать как прямой вызов метода, если требуется статическая типизация.

Вот я и поставил перед собой задачу вписать ООП в компилятор заподлицо, чтобы программистам было понятно, что настоящие мужчины используют записи с методами вот он -- новый уровень. Посмотрим, короче. Пока лишь вижу, что разработка у меня получается самобытной сама по себе, мне не нужно что-то специально придумывать, чтобы было как у всех, но свое. Ни на что не похоже получается просто так.
__________________
Не стоит путать форумы с богадельнями. © Bargest
Ответить с цитированием