Введение

Парадигма программирования, опирающаяся на модель стек-машины.

Стек-ориентированное программирование — это парадигма программирования, которая использует стек (или несколько стеков) для манипулирования данными и/или передачи параметров. Несколько языков программирования соответствуют этому описанию, в частности Forth, RPL и PostScript. Стек-ориентированные языки программирования работают с одним или несколькими стеками, каждый из которых может выполнять различные функции. Конструкции программирования из других языков необходимо модифицировать для использования в стековой системе. Большинство стековых языков используют постфиксную или обратную польскую нотацию. Любые аргументы или параметры команды указываются перед самой командой. Например, в постфиксной нотации запись будет выглядеть как 2, 3, умножить, а не умножить, 2, 3 (префиксная или польская нотация) или 2 умножить 3 (инфиксная нотация). Языки программирования Forth, Factor, RPL, PostScript, язык описания стиля BibTeX и многие языки ассемблера соответствуют этой парадигме. Алгоритмы, основанные на стеке, обрабатывают данные, используя один элемент данных с вершины стека и возвращая результат обратно на вершину стека. Необходимость в операторах манипулирования стеком позволяет стеку обрабатывать данные. Для наглядности эффекта оператора используется комментарий, показывающий состояние вершины стека до и после выполнения оператора. Это называется диаграммой эффекта стека. В PostScript используются отдельные стеки для различных целей, включая переменные, словари, процедуры, структуру типичных процедур, управление и поток выполнения. Анализ языковой модели позволяет просто и теоретически интерпретировать выражения и программы.

Манипуляция стеком

Поскольку стек является ключевым средством манипулирования данными в языках, ориентированных на стек, такие языки часто предоставляют операторы для работы со стеком. Обычно предоставляются команды дублирования элемента на вершине стека (dup), обмена двух верхних элементов (exch или swap), циклической перестановки элементов в стеке или его части (roll), удаления верхнего элемента (pop или drop – добавление элемента в стек подразумевается как неявная операция), и другие. Эти операторы играют ключевую роль при изучении процедур.

Стеклы PostScript

PostScript и некоторые другие языки стековой организации имеют отдельные стеки для других задач.

Анализ языковой модели

Простая модель, предоставляемая стековым языком, позволяет интерпретировать выражения и программы легко и теоретически оценивать их значительно быстрее, поскольку не требуется синтаксический анализ, а только лексический. Способ написания таких программ облегчает их интерпретацию машинами, поэтому PostScript хорошо подходит для использования в принтерах. Однако несколько искусственный способ записи программ на PostScript может стать первоначальным препятствием для понимания стековых языков, таких как PostScript. Хотя возможность переопределения встроенных и других определений может затруднить отладку программ, а небрежное использование этой функции может привести к непредсказуемому поведению, она может значительно упростить некоторые задачи. Например, в PostScript оператор showpage можно переопределить пользовательским, который применяет определенный стиль к странице, вместо того чтобы определять новый оператор или повторять код для создания этого стиля.