gudleifr писал(а):
Реализация тут не при чем. Метод работает независимо от способности к генерации маш.кода.
Метод-то работает. Но скорость работы будет зависеть от реализации.
Если реалтайм компиляция+работа требует больше времени, чем проход с условиями по структурам данных, либо на перекомпиляцию будет тратиться ограниченный ресурс системы (количество перезаписей флеш) - то это существенные отличия. Поэтому я и предлагаю их разделить. Перекомпиляция - это одно, а использование структур данных для хранения алгоритма - это другое.
Хотя, если закодировать интерпретатор виртуальной машины, то да, потом все может быть компиляцией. Но все те же задачи будут на новом уровне вложенности, теперь не на компьютере, а уже на виртуальной машине. То есть мы или компилируем алгоритм, или интерпретируем структуры данных, содержащие информацию об алгоритме.
Во втором случае есть еще разделение - это может быть шитый код для традиционного (вложенного(?)) адресного интерпретатора, списки/массивы/стеки для упрощенного адресного интерпретатора или вообще хранение алгоритма в стеках системы.
Хищник писал(а):
Так что с гарвардской архитектурой не так?
Дополнительный(нарушающий единообразность) способ доступа к коду программы. Необходимость иметь дополнительный набор слов (
, --
[c], и аналогично). Но вроде это цена за "безопасность". Или дополнительный контроль за правильностью работы аппаратуры.
Тут тоже разделение - чисто программные решения и программно-аппаратные. Во втором случае контроль важен. Если аппаратура работает неправильно, программы, скорее всего, тоже не смогут работать правильно(хотя некоторые дефекты и можно исправить программно).
А вот в первом случае возможно перекладывание недостаточной квалификации разработчика (недостаточно развитых средств разработки) с программной части на аппаратную. Типизация - один из примеров. Мур+Броуди не поддерживают идеи типизации - арифметические операции с логическими значениями - свидетельство.
Т.е. гарвардская архитектура (разделение команд и данных) - это некоторое снижение гибкости. Но и некоторое повышение надежности. И если она встретилась в целевой системе - ее особенности надо обязательно учитывать.