Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Что такое стек? о_0 Посоветуйте что почитать.  (Прочитано 941 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн bacbka87

  • Автор темы
  • Любитель
  • *
  • Сообщений: 94
    • Просмотр профиля
Здравствуйте.
В последние время пытаюсь изучить програмирование и Linux.
В основном изучал Python и немножко Bash. Так же имею немножко представлении о C. Но в моем представлении это только вершина айсберга.
В понимании устройтсва ядра linux эти знания ничего не дают.
Книги Таненбауна об архитектуре компьютера и устройтве опперационных систем и книга Тонхейма "Основы цифровой электроники", тумана так же не развеяли.
Разум не может дойти до основ: что такое стек и как реально происходит распределение оперативной памяти при выполнении каких либо процедур, пусть даже без наличия операционной системы.
Надеюсь правильно сформулировал свой вопрос.

Посоветуйте хоть в каком направлении искать информацию для понимания этих процессов (желательно чтобы можно быпо попратиковаться).


Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4073
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
bacbka87, на текущем твоём уровне знаний большинство ответов покажутся слишком непонятными.
https://habrahabr.ru/company/nixsolutions/blog/277759/
стек позволяет добавлять в себя объекты и извлекать. Ты не можешь указать какой объект извлечь. Извлекается последний добавленный, за ним предпоследний.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 4312
  • Все по палатам!
    • Просмотр профиля
bacbka87, а какое у вас образование, если книга "Основы..." ничем не помогла?
Извините, я все еще учусь

Оффлайн bacbka87

  • Автор темы
  • Любитель
  • *
  • Сообщений: 94
    • Просмотр профиля
alsoijw, Спасибо!
Отличная статья. Прям в точку.

Пользователь добавил сообщение 03 Июнь 2016, 22:52:39:
SergeyIT, В данной книги такие процессы не описываются. Специально указал автора, чтобы было понятно.
У меня радиотехническое образование. Я конечно не отличник в университете был, но кое-какие понятия имею.


Пользователь добавил сообщение 03 Июнь 2016, 22:54:43:
Может быть подскажите еще что нужно освоить?
« Последнее редактирование: 03 Июнь 2016, 22:54:43 от bacbka87 »

Оффлайн virusoft

  • Активист
  • *
  • Сообщений: 317
    • Просмотр профиля
    • Virusoft
Может быть подскажите еще что нужно освоить?
Ассемблер. Только в этом языке можно получить доступ к стеку напрямую. Ну это как мне известно.
Остальные языки программирования используют стек, но доступ к нему обеспечивает исключительно ассемблер.
По этому языки программирования высокого уровня позволяют использовать ассемблерные вставки в своих программах.
Если работает - не трогай. Linux - гибкая система, но один раз прогнувшись может обратным ходом распрямиться и ударить по самому (…) месту. Думай о будущем и все будет хорошо.

Оффлайн bacbka87

  • Автор темы
  • Любитель
  • *
  • Сообщений: 94
    • Просмотр профиля
virusoft, Спасибо большое.

Может быть Вам известно, что нужно для освоения ассемблера в Ubuntu (программы и тд.) + литература.

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4073
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Ассемблер. Только в этом языке можно получить доступ к стеку напрямую. Ну это как мне известно.
Остальные языки программирования используют стек, но доступ к нему обеспечивает исключительно ассемблер.
По этому языки программирования высокого уровня позволяют использовать ассемблерные вставки в своих программах.
Стек это стек. Ни больше, ни меньше. Стек можно использовать хоть в питоне, хоть в яваскрипте. Про что ты сейчас говоришь?
ЗЫ имхо рановато ему братся за ассемблер.
bacbka87, тебе нужно понять указатели. На что они могут быть и как работают. Для начала. Потом самому реализовать строки, умные указатели, векторы, бинарные деревья, очереди.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн bacbka87

  • Автор темы
  • Любитель
  • *
  • Сообщений: 94
    • Просмотр профиля

bacbka87, тебе нужно понять указатели. На что они могут быть и как работают. Для начала. Потом самому реализовать строки, умные указатели, векторы, бинарные деревья, очереди.

Отлично. Теперь есть слова, которые можно забивать в поисковик.
А как эта тематика вобщем называется?

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 4312
  • Все по палатам!
    • Просмотр профиля
имхо рановато ему братся за ассемблер.
С его образованием можно и асм, только сначала понять как в кодах процессор работает (сам это проходил, но с PDP-11, правда книгу "Основы..." не читал, все это в радиотехническом техникуме вложили).
И в языке Си все на свои места встанет - он же от асма произошел... и указатели оттуда же
Извините, я все еще учусь

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4073
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
bacbka87, слова для поиска: указатели. Указатели на указатели. Указатели на функцию. Выделение памяти. Ошибка сегментации.
Ко всем этим определениям, кроме последнего добавляешь (c|c++). Учти что это разные языки, хоть и выглядят похоже.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 4312
  • Все по палатам!
    • Просмотр профиля
Указатели говорите... Так это все из понятия
адресация памяти
В книжках по асму это объясняется.
Извините, я все еще учусь

Оффлайн wolfser2701

  • Участник
  • *
  • Сообщений: 180
    • Просмотр профиля
Стек проще всего сравнивается с обоймой пистолета, патрон вставленный последним - выстрелит первым.   :)
А для особого извращения подойдёт язык Forth , он вообще круглый стек ( или обратная польская запись).    ;D
« Последнее редактирование: 04 Июнь 2016, 04:38:40 от wolfser2701 »

Оффлайн virusoft

  • Активист
  • *
  • Сообщений: 317
    • Просмотр профиля
    • Virusoft
virusoft, Спасибо большое.
Может быть Вам известно, что нужно для освоения ассемблера в Ubuntu (программы и тд.) + литература.
Ассемблер к операционной системе не привязан никак. Хоть для винды, хоть для Ubuntu, да хоть под MS-DOS команды пишутся и выполняются одинаково. Я сейчас вообще на ассемблере свою операционку типа MS-DOS пишу. Знаний достаточно, но все равно чего-то не хватает.
Выше уже было сказано, что и как требуется изучать и про что читать. В любом случае, прочитав пару книг специалистом высокого уровня не станешь ни в каком языке программирования. А уж тем более в прикладном программировании.
Цитировать
А как эта тематика вобщем называется?
Она называется работа на компьютере. :-)


Пользователь добавил сообщение 04 Июнь 2016, 14:31:02:
Стек проще всего сравнивается с обоймой пистолета, патрон вставленный последним - выстрелит первым.   :)
А для особого извращения подойдёт язык Forth , он вообще круглый стек ( или обратная польская запись).    ;D
Устройство для преобразования стека в очередь - автомат Калашникова.
Стек можно сделать программный почти на любом языке программирования, а вот команды работы на аппаратном уровне есть только в ассемблере.
« Последнее редактирование: 04 Июнь 2016, 14:31:02 от virusoft »
Если работает - не трогай. Linux - гибкая система, но один раз прогнувшись может обратным ходом распрямиться и ударить по самому (…) месту. Думай о будущем и все будет хорошо.

Оффлайн peregrine

  • FSM
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7083
  • Gentoo x64 Ubuntu 16.04.1 x64
    • Просмотр профиля
bacbka87, стек - очень простая штука - такая конструкция (структура хранения данных), которая позволяет помещать элементы в себя и извлекать их начиная с конца (последнего помещенного элемента). Да, гуглить начинай по словам: структуры данных (предполагаю, что про адресацию памяти и принципы работы ЭВМ ты знаешь). Также пойми, что такое вычислительная сложность, это важно, кто не понял - не сможет адекватно писать код. Загугли также про многопоточность и мультизадачность, выясни, что такое конвейер в процессоре и что даёт многоядерный процессор (а ничего особенного - незначительный (не кратный) прирост производительности и большую отзывчивость). Если будут вопросы - спрашивай.

Пользователь добавил сообщение 04 Июнь 2016, 14:43:16:
SergeyIT, лучше ему не с книжек по ассемблеру начать, а, скажем, с книжек по дискретной математике (иначе совсем её не зная будет много непонятных вещей, вроде множеств, мощности множества и т.д.).
« Последнее редактирование: 04 Июнь 2016, 14:43:16 от peregrine »

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4073
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Я сейчас вообще на ассемблере свою операционку типа MS-DOS пишу.
Если цель не написание на ассемблере, то ассемблера должен быть минимум.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

 

Страница сгенерирована за 0.061 секунд. Запросов: 24.