What's up, программач.
Структура данных - Stack(LIFO), и Stack в Java - это ведь разные вещи совсем.
В общем, объясните доступным языком, что такое stack и heap при программировании?
Я на столько запутался, что не могу вопрос адекватно сформулировать.
Есть некоторая путаница. Во многих языках программирования есть call stack и memory heap. Они имеют достаточно косвенное отношение к одноименным структурам данных. И если call stack по устройству действительно похож на LIFO, то memory heap имеет мало общего с FIFO структурой данных.
Я не могут понять.Stack и heap - это Структуры данных, которые я могу вызвать так же, как и любую другую коллекцию, если мне нужно будет их свойство, или stack и heap - это какие-то низкоуровневые части оперативной памяти, т.е ее организация, которая тоже каким-то образом реализована(LIFO)?
Вообще, структуры данных нужны для того, что бы хранить эти самые данные в памяти оперативной, я правильно понимаю?
Т.е, получается, что мы программируем уже не для процессора, а для оперативки, так что ли?Она же вроде примитивная, как для нее что-то можно программировать.Я вот этих деталей не понимаю, вот и путаюсь.
recursi0n: Одним и тем же словом называют разные вещи.
>Cтруктуры данных, которые я могу вызвать так же, как и любую другую коллекцию
Да, есть такие docs.oracle.com/javase/7/docs/api/java/util/Stack.html.
>низкоуровневые части оперативной памяти
В частности call stack, который вы можете видеть в отладчике тоже называют стек.
>Т.е, получается, что мы программируем уже не для процессора, а для оперативки
Программируем мы над некоторой абстракцией для памяти, процессора, диска. Реальное железо достаточно сложное, а высокоуровневые языки стараются скрыть эту сложность.
Я не могут понять.Stack и heap - это Структуры данных, которые я могу вызвать так же, как и любую другую колекцию, если мне нужно будет их свойствО, или stack и heap - это какие-то низкоуровневые части оперативной памяти, т.е ее организация, которая тоже каким-то образом организована(LIFO)?
Я не могут понять.Stack и heap - это Структуры данных, которые я могу вызвать так же, как и любую другую колекцию, если мне нужно будет их свойствО, или stack и heap - это какие-то низкоуровневые части оперативной памяти, т.е ее организация, которая тоже каким-то образом организована(LIFO)?
recursi0n: это структура данных. Она есть в програмном виде (те структурки которые вы можете достать из стандартной библиотеки), есть в програмном виде на системном уровне (менеджер памяти операционной системы содержит heap), есть в железном варианте (процессоры частенько иеют стэковый регистр или что-то в этом духе, есть так же реализация чисто стэковой машины, например по этому принципу реализована Java Virtual Machine)