Forth
http://fforum.winglion.ru/

что же такое стек?
http://fforum.winglion.ru/viewtopic.php?f=36&t=2239
Страница 1 из 4

Автор:  mOleg [ Пн авг 17, 2009 05:31 ]
Заголовок сообщения:  что же такое стек?

Итак, требуется определение того, что же есть стек. Если посмотреть на википедию (английску), то можно прочитать, что:
Цитата:
In computer science, a stack is a last in, first out(LIFO) abstract data type and data structure. A stack can have any abstract data type as an element, but is characterized by only two fundamental operations, the push and the pop. The push operation adds to the top of the list, hiding any items already on the stack, or initializing the stack if it is empty.

То есть, стек это структура данных, умеющая делать всего две операции:
- заглатывать данные
- отрыгивать данные 8)
то есть речь даже о чтении последнего сохраненного значения не идет!!!
вобщем необходима формулировка того, что такое стек (можно взять и определение из википедии)

Да, сразу скажу, что принятый в Форте взгляд на стек, где доступны часто верхние 3 элемента стека, а бывает и больше в данном случае не интересны.

Автор:  вопрос [ Пн авг 17, 2009 06:25 ]
Заголовок сообщения: 

зачем вдруг определение? :D

Автор:  mOleg [ Пн авг 17, 2009 06:29 ]
Заголовок сообщения: 

вопрос писал(а):
зачем вдруг определение?

чтобы говорить о возвышенном, для начала надо определиться в мелочах, то есть в базисе.

А то один говорит о стеке и думает об одном, другой говоря о стеке думает о другом и получается очень милый сердцу флуд 8(

Автор:  mOleg [ Пн авг 17, 2009 06:29 ]
Заголовок сообщения: 

вобщем, если хотите, это информация для FAQ

Автор:  WingLion [ Пн авг 17, 2009 06:32 ]
Заголовок сообщения: 

вот, что значит, на википедию полагаться в жизненно важных вопросах.

Стек - это буфер для хранения данных,
организованный по принципу Last In First Out (LIFO).

Автор:  mOleg [ Пн авг 17, 2009 06:34 ]
Заголовок сообщения: 

WingLion писал(а):
вот, что значит, на википедию полагаться в жизненно важных вопросах.

8) дело не в википедии.

Вопрос не отвечен, какие операции могут быть произведены над стеком (проще говоря, возможны ли операции чтения и записи над вершиной стека без изменений глубины стека) По-моему, вопрос принципиальный.

Автор:  WingLion [ Пн авг 17, 2009 06:38 ]
Заголовок сообщения: 

mOleg писал(а):
Вопрос не отвечен, какие операции могут быть произведены над стеком (проще говоря, возможны ли операции чтения и записи над вершиной стека без изменений глубины стека) По-моему, вопрос принципиальный.

хм... прямо как вопрос - "можно ли стрелять из автомата с пустым магазином?"
Имхо, ответ однозначный - НЕЛЬЗЯ!

Автор:  mOleg [ Пн авг 17, 2009 06:40 ]
Заголовок сообщения: 

WingLion писал(а):
хм... прямо как вопрос - "можно ли стрелять из автомата с пустым магазином?"
Имхо, ответ однозначный - НЕЛЬЗЯ!


Иными словами таки при создании "чистого" стека(на HDL к примеру) необходимо реализовать всего две операции: заталкивание и выталкивание данных? Я правильно понимаю?

Автор:  WingLion [ Пн авг 17, 2009 06:43 ]
Заголовок сообщения: 

Однако, и в определение стека подобное ограничение вписывать нельзя, потому что в этом случае и все программные стеки пойдут лесом, и даже обычный стек процессора x86 окажется не стеком

Автор:  WingLion [ Пн авг 17, 2009 06:44 ]
Заголовок сообщения: 

mOleg писал(а):
Иными словами таки при создании "чистого" стека(на HDL к примеру) необходимо реализовать всего две операции: заталкивание и выталкивание данных? Я правильно понимаю?

формально - да.

Автор:  mOleg [ Пн авг 17, 2009 06:46 ]
Заголовок сообщения: 

вот я сейчас ищу точное определение того, что есть стек, то есть исчерпывающую формулировку 8)
а вот что есть формально или реально мне не интересно!

Автор:  mOleg [ Пн авг 17, 2009 06:49 ]
Заголовок сообщения: 

вот я сейчас ищу точное определение того, что есть стек, то есть исчерпывающую формулировку 8)
а вот что есть формально или реально мне не интересно!

Автор:  WingLion [ Пн авг 17, 2009 06:50 ]
Заголовок сообщения: 

mOleg писал(а):
а вот что есть формально или реально мне не интересно!


хм... а что есть "исчерпывающую"? чего оно исчерпывает? Воду в ступе?

Автор:  mOleg [ Пн авг 17, 2009 07:54 ]
Заголовок сообщения: 

короче, у меня пока такое получается:

Стек - это устройство промежуточного хранения данных, поддерживающее две фундаментальные операции над данными: заталкивание в стек, извлечение из стека(не путать с чтением и записью). И заталкивание и извлечение данных ведется с одного конца, таким образом, что при извлечении данных порядок их следования относительно порядка заталкивания реверсируется(данное свойство обычно обозначается термином LIFO - Last In First Out). Графически стек можно представить как ящик с двумя ручками: "возьми" и "отдай" и двунаправленным каналом для передачи данных.
По сути стек - это метод [url=http://ru.wikipedia.org/wiki/Кэширование]кэширования[/url] данных, то есть сохранения копии данных в промежуточном буфере в порядке наиболее вероятного их использования.

Автор:  вопрос [ Пн авг 17, 2009 08:59 ]
Заголовок сообщения: 

ну и неплохо, и что теперь?

Страница 1 из 4 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/