Пример программной машины — стековая машина

Эта распечатка программы на языке Ада относится только к абстрактной машине, причем все, что относится к ресурсам, полностью скрыто от программиста. Ресурсы памяти — забота компилятора, а не программиста. Однако аспекты ресурсов становятся явными, если задачу сформулировать следующим образом: программная машина должна обеспечивать управление несколькими стеками; программная машина не должна делать каких-либо предположений относительно структуры элементов, помещаемых в стек. Вышеприведенный модуль на языке Ада пригоден только для одной схемы элемента. С помощью конструкции CASE она легко могла бы быть обобщена для конечного числа заранее определенных схем. Однако для всех схем, которые когда-либо должны храниться в стеке, связь с пакетом во время программирования необходимо обеспечить включением в него их описаний. Следовательно, Ада не может обеспечить простого решения поставленной задачи; ресурс (пространство памяти), выделенный каждому стеку, должен быть ограничен. Одна из целей такого ограничения — избежать переполнения памяти и неконтролируемых программных ошибок в случае некорректного использования операций (например, операций PUSH во внешнем цикле). Если ограничения слишком жесткие, то машина должна быть в состоянии запросить помощь; должна быть обеспечена возможность сохранения стеков целиком и последующего восстановления их. До того как предпринять более детальную разработку «стековой машины», чтобы легче можно было сравнить чисто функциональную программу с окончательным вариантом программного пакета, перепишем приведенный выше модуль на языке ПЛ/1:

Releated Post

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.