Рубрика «стек»

Довольно давно я хотел сделать свою вытесняющую ОС для микроконтроллера, но не нашел стоящего мануала, или плохо искал, хз. В результате разобрался что к чему, что для этого нужно и решил написать пост об этом, вдруг кому-то пригодится.

Короче говоря, надеюсь это будет полезно, или хотя бы интересно, для людей, ищущих ответы на вопросы на форумах и статьях на Pikabu Хабре, а не в патентах, документации и прочих унылых источниках, где нет вставок с мемами.

Читать полностью »

Cheney on the M.T.A.: компилятор, в котором стек служит заодно и кучей - 1 

Did he ever return? No, he never returned,
And his fate is still unlearned,
He may ride forever ‘neath the streets of Boston,
He’s the man who never returned.

“Charlie on the M.T.A.”, 1949

1. Замыкания

Одна из удобных возможностей современных языков программирования – вложенные функции:

def bubble(arr, comp):

    def swap(i, j):
        temp = arr[i]
        arr[i] = arr[j]
        arr[j] = temp

    flag = True
    while flag:
        flag = False
        for i in range(len(arr) - 1):
            if comp(arr[i], arr[i+1]) > 0:
                swap(i, i+1)
                flag = True

Сама эта возможность не нова: она была уже в Алголе (1958) и многим знакома из Паскаля (1970). В компиляции вложенных функций нет ничего сложного: например, в стековом кадре внутренней функции может храниться указатель на стековый кадр внешней функции, чтобы внутренняя функция могла обращаться к параметрам и локальным переменным внешней. Кто-то может вспомнить, что инструкции enter и leave, появившиеся в 80186 (1982), реализуют именно такую поддержку вложенных функций (хотя я не встречал ни один компилятор, который бы её задействовал).

Сложности начинаются, если язык позволяет передать внутреннюю функцию наружу внешней:

def by_field(name):

    def comp(x, y):
        return x[name] – y[name]

    return comp

bubble(my_records, by_field("year"))

Как внутренняя функция сможет обращаться к параметрам и локальным переменным внешней после того, как возврат из внешней функции уничтожил её стековый кадр? Каким-то образом внутренняя функция должна «захватить» используемые переменные вместе с собой; функция вместе с захваченными извне переменными называется «замыканием». Паскаль такое уже не поддерживает; Читать полностью »

Всем привет. На связи Омельницкий Сергей. Не так давно я вел стрим по реактивному программированию, где рассказывал про асинхронность в JavaScript. Сегодня я бы хотел законспектировать этот материал.

Асинхронное программирование в JavaScript (Callback, Promise, RxJs ) - 1

Но перед тем как начать основной материал нам нужно сделать вводную. Итак, давайте начнем с определений: что такое стек и очередь?

Стек — это коллекция, элементы которой получают по принципу «последний вошел, первый вышел» LIFO

Очередь — это коллекция, элементы которой получают по принципу («первый вошел, первый вышел» FIFO

Окей, продолжим.

Асинхронное программирование в JavaScript (Callback, Promise, RxJs ) - 2

JavaScript — это однопоточный язык программирования. Это значит, что он имеется только один поток выполнения и один стек, в который помещаются функции в очередь на выполнение. Следовательно в один момент времени JavaScript может выполнить только одну операцию, другие операции при этом будут ждать своей очереди в стеке, пока их не вызовут.

Читать полностью »

В данной теме я хочу поделиться моим опытом разработки высокоскоростных схем.
Имея успешный практический опыт (более 15 лет) разработки схем устройства, печатных плат, со скоростью передачи данных до нескольких гигагерц (по меди), опыт взаимодействия с конструкторами, разводчиками печатных плат, изучив большой объем литературы по теме сохранения целостности сигналов, мне удалось выработать ряд простых для понимания и повторения практических решений, которые хочу предложить Вашему вниманию.

Я понял, что без знания основ схемотехники, радиотехники, электроники — инженеры — конструкторы печатных плат часто не осознают важности тех или иных правил разводки, не могут правильно расставить приоритеты и делают досадные ошибки, приводящие к необходимости повторной разводки плат. Если повезет. Если причина сбоев в канале связи, причина искажений сигналов будет найдена верно.

Согласитесь, без понимания терминов стек, волновое сопротивление, опорный слой, дребезг земли, целостность сигналов и т.п. — сложно понять, о чем идет речь в той или иной главе, когда пытаетесь самостоятельно освоить P-CAD, Altium или другой пакет проектирования по очень хорошим книгам замечательных авторов. Ведь изначально авторы предполагают, что вы имеете достаточный запас знаний, для правильного понимания написанного.

Возможно вы тоже сталкивались с фразой, что в диапазоне СВЧ для разводки трасс высокоскоростных сигналов трассы должны быть выполнены как линии передачи. А что такое линии передачи — никто конструкторам не объяснил.

Важно знать необходимые понятия, начиная от емкостей, индуктивностей, резонансов, и заканчивая правилами группирования сигналов в классы и рекомендациями по правильной трассировке цепей каждого из них, а также критериями расстановки приоритетов. Думаю, что поняв основы сохранения целостности электрических сигналов (Signal Integrity), кратко представленные в данной теме, вы не будете допускать грубых неосмысленных ошибок в вашей работе.
Читать полностью »

Все чаще замечаю, что современным самоучкам очень не хватает матчасти. Все знают языки, но мало основы, такие как типы данных или алгоритмы. Немного про типы данных.

Еще в далеком 1976 швейцарский ученый Никлаус Вирт написал книгу Алгоритмы + структуры данных = программы.

40+ лет спустя это уравнение все еще верно. И если вы самоучка и надолго в программировании пробегитесь по статье, можно по диагонали. Можно код кофе.

Основные структуры данных. Матчасть. Азы - 1
Читать полностью »

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

Есть ли стекирование в коммутаторах Cisco Nexus? - 1

Когда речь заходит о коммутаторах Cisco Nexus, один из первых вопросов, который мне задают: поддерживается ли на них стекирование? Услышав отрицательней ответ, следует логичное «Почему?». Читать полностью »

image
Про предмет статьи ходит много домыслов — от «русский Барроуз» до «не имеющий аналогов». Вызвано это в немалой степени отсутствием (доступной) полноценной документации, немногочисленным кругом лиц, имевших с ними дело да и немалым временем, прошедшим с тех пор. «Эльбрус» превратился в один из мифов ушедшей эпохи.

С другой стороны, вычислительный комплекс несомненно существовал и показывал отличные для своего времени результаты. Возможно, благодаря скудости элементной базы, которая принуждала разработчиков к выдумыванию разного рода архитектурных трюков. Многие из этих трюков сейчас выглядят архаично, а некоторые достаточно актуальны.

Так что автор из свойственной ему любознательности попытался разобраться с доступной документацией и составить более — менее цельную картину. Если читателю это интересно — добро пожаловать под кат.
Читать полностью »

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

В данной статье я хотел бы рассказать о такой структуре данных как стек. Стек представляет собой одну из базовых структур данных и работает по системе LIFO (Last In First Out). Представить стек можно в виде стакана или стопки книг. Таким образом книга, положенная последней, будет взята первой и наоборот, первая положенная книга будет взята в самом конце.
Читать полностью »

Будучи дилетантом в области разработки приложений, я испытал сложности с пониманием алгоритма работы обратной польской нотации, а если быть точнее — алгоритма подготовки стека. Делу так же мало помогли статьи в «интернетах».

Все началось с того, что я затеял создание несложного интерпретатора для собственного проекта. Для решения сложных выражений на выбор было два алгоритма: рекурсивный спуск и обратная польская запись. Очевидная простота и подход к решению задачи (а может и само название) позволили последнему стать предметом для изучения.

Делу помогли две статьи. Одна из них на википедии, а вторая была написана замечательным пользователем хабра, GORKOFF, который объяснил все буквально «на пальцах».

Однако до конца я так и не понял тот важный вопрос: как же построить стек?
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js