Стек - коллекция объектов, из которой вынимается первым последний добавленный объект. Очередь - коллекция объектов, когда первым извлекается тот объект, который первым в неё и был добавлен.
Эти слова очень часто встречается в документации, прилагаемой к различным программным продуктам. Однако людям, далёким от программирования и имеющим гуманитарный склад ума, довольно сложно порой самостоятельно дойти до ответа на вопрос, что же скрывается за этими названиями. Техническим писателям, конечно, стоило бы объяснять подробнее подобные термины, но, увы, они себя редко этим утруждают. "Компьютерные вести" со своей традиционной рубрикой "F.A.Q." спешат, как всегда, на помощь.
Начнём издалека - так, на мой взгляд, будет понятнее. В программировании очень часто приходится оперировать с коллекциями каких-либо объектов - фактически, почти всегда, когда объектов больше одного. Эти объекты могут иметь самую разную природу - ими могут быть файлы, записи в базе данных или даже отдельные буквы. В зависимости от того, как происходит добавление и извлечение элементов для этой коллекции, выделяют разные типы коллекций. Стеком называется такая коллекция объектов, из которой вынимается в первую очередь последний добавленный объект. Очередь же - это коллекция объектов, в которой, напротив, первыми извлекаются объекты, первыми в неё и добавленными.
Для обозначения очереди в программистском жаргоне есть специальный "умный" термин - FIFO. Это аббревиатура от английской фразы "first in, first out", т.е. "первый вошёл - первый вышел". Для обозначения стека используют другую аббревиатуру - LIFO, то есть, "last in, first out", или "последний вошёл - первый вышел". Простейший пример очереди в реальной жизни, в общем-то, найти несложно - это и есть очередь в кассу магазина. Пример стека - это стопка бумаги, в которой обязательно первым берётся именно тот лист, который был положен в неё последним.
Стоит отметить, что очень часто термин "стек" употребляется не только применительно к какой-то абстрактной коллекции объектов, организованной описанным выше образом, а к временному хранилищу содержимого регистра процессоров. Впрочем, в литературе и документации для конечных пользователей большинства программных продуктов вы вряд ли встретите это слово именно с таким значением.
Вадим СТАНКЕВИЧ,
dreamdrusch@tut.by
Комментарии
И ещё раз ошибся. Надо бы "суть $уйнуть". Различие между стеком и очередью простое. И стек, и очередь - упорядоченные динамические коллекции. Но стек содержит объекты (или элементы, кому как нравится), используемые ДЛЯ обслуживания, а очередь - ОБСЛУЖИВАЕМЫЕ.
Что-то глючит мой любимый автор, видимо работы прорва...
Для меня все просто: стек - магазин от автомата, очередь - очередь за пивом.
И, значицца, из стека да по очереди :-)))
ибо всякие несознательные "технические писатели" эти буквы используют, но умалчивают о их назначении.