Открыть сервис

FIFO

FIFO (акроним от англ. First In, First Out — «первым пришёл — первым ушёл») — это метод организации и манипулирования данными, при котором первый поступивший элемент обрабатывается или обслуживается в первую очередь. FIFO является базовым принципом построения очередей (queue) — одной из фундаментальных структур данных в информатике и теории массового обслуживания. В более широком смысле термин применяется в бухгалтерском учёте для обозначения метода списания товарно-материальных ценностей, а также в логистике и управлении запасами.

История и происхождение

Принцип «первым пришёл — первым обслужен» является одним из древнейших организационных правил человеческого общества. В неформальном виде он существовал задолго до появления термина: в очередях за товарами, в порядке приёма пациентов, в работе конвейерных линий. Формализация FIFO как алгоритма произошла в середине XX века с развитием теории очередей (А. К. Эрланг, 1909—1917) и компьютерных наук. В 1940—1950-х годах, при создании первых электронных вычислительных машин (например, EDVAC и UNIVAC), возникла необходимость в структурах данных для временного хранения последовательно поступающих команд и данных. Именно тогда очередь FIFO стала стандартной абстракцией.

В бухгалтерском учёте метод FIFO был впервые кодифицирован в США в 1930-х годах как один из допустимых способов оценки запасов, а впоследствии закреплён в международных стандартах финансовой отчётности (МСФО) и российских ПБУ.

FIFO в информатике

Определение и структура

В программировании FIFO — это абстрактный тип данных (АТД) «очередь», поддерживающий две основные операции:

Дополнительно часто реализуются операции peek (просмотр первого элемента без удаления) и isEmpty (проверка пустоты очереди). В отличие от стека (LIFO), где последний добавленный элемент удаляется первым, в очереди FIFO порядок выхода строго соответствует порядку входа.

Реализации

Очередь FIFO может быть реализована несколькими способами:

Примеры использования

Ограничения

FIFO не учитывает приоритеты задач. Если в системе есть срочные и несрочные процессы, строгий FIFO может привести к тому, что важная задача будет ждать завершения длительной, но неважной. Для решения этой проблемы применяются очереди с приоритетами (priority queue) или многоуровневые очереди обратной связи (MLFQ).

FIFO в бухгалтерском учёте

Метод FIFO (ФИФО) — способ оценки себестоимости материально-производственных запасов (МПЗ) при их выбытии (продаже, передаче в производство). Согласно этому методу, запасы, поступившие первыми, списываются первыми. Оценка остатка на конец периода производится по стоимости последних по времени приобретений.

Принцип расчёта

Предположим, компания купила три партии товара:

При продаже 25 единиц по методу FIFO сначала спишутся 10 единиц из первой партии (по 100 руб.) и 15 единиц из второй (по 110 руб.). Себестоимость продажи составит: 10×100 + 15×110 = 2650 руб. Остаток: 5 единиц из второй партии (по 110 руб.) и 15 единиц из третьей (по 120 руб.) — итого 20 единиц на сумму 2350 руб.

Преимущества и недостатки

В российском бухгалтерском учёте метод FIFO применяется в соответствии с ПБУ 5/01 «Учёт материально-производственных запасов» и ФСБУ 5/2019. В международной практике (МСФО (IAS) 2) FIFO является одним из двух разрешённых методов (наряду со средневзвешенной стоимостью).

FIFO в логистике и управлении запасами

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

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

FIFO в электронике и телекоммуникациях

В цифровой схемотехнике FIFO — это специализированная микросхема или блок (hardware FIFO), реализующий очередь на аппаратном уровне. Такие устройства используются для согласования скорости передачи данных между двумя системами (буферизация). Например, в UART-контроллерах FIFO глубиной 16 байт позволяет процессору обрабатывать данные блоками, а не каждый байт по отдельности, снижая нагрузку на прерывания.

В сетях передачи данных FIFO применяется в коммутаторах и маршрутизаторах для временного хранения пакетов. Однако в современных сетях часто используются более сложные алгоритмы (например, WFQ — Weighted Fair Queuing), чтобы избежать проблем с задержками для чувствительного трафика (VoIP, видеоконференции).

Критика и альтернативы

Основной недостаток FIFO — отсутствие приоритизации. В операционных системах это решается введением приоритетов (приоритетная очередь) или алгоритмов, учитывающих время ожидания (например, Round Robin). В бухгалтерском учёте критика FIFO связана с тем, что в период высокой инфляции он завышает прибыль, что может вводить в заблуждение инвесторов. Альтернативой является метод средневзвешенной стоимости, который сглаживает колебания цен.

В логистике для товаров с длительным сроком хранения или без срока годности (например, металл, строительные материалы) FIFO может быть необязательным, и применяется метод LIFO или FEFO (First Expiry, First Out — «первым истекает срок — первым уходит»).

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →