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

Листинг программы в информатике

Листинг программы — текст исходного кода компьютерной программы, выводимый на печать или отображаемый на экране в виде, пригодном для чтения человеком. Термин происходит от англ. listing (перечисление, список) и закрепился в русскоязычной вычислительной практике с 1960-х годов, когда исходный код распечатывался на перфокартах и лентах для отладки и документирования.

Историческая справка

В ранний период программирования (1950–1970-е годы) исходный код хранился на перфокартах или бумажных лентах. Листинг был основной формой существования программы: программист получал распечатку кода, правил её от руки и вносил исправления обратно в перфокарты. В СССР листинги печатались на алфавитно-цифровых печатающих устройствах и служили обязательным приложением к технической документации.

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

Виды листингов

По назначению и способу получения различают:

  • Полный листинг — вывод всего исходного кода модуля или программы с нумерацией строк.
  • Дифференциальный листинг — вывод только изменённых фрагментов кода, например при сравнении версий.
  • Списочный листинг — перечень символов, меток и адресов, сгенерированный ассемблером или компилятором.

Структура листинга компилятора

Компиляторы и ассемблеры могут формировать листинг, содержащий помимо исходного текста служебную информацию: адреса в памяти, машинные коды, номера строк, результаты трассировки. Такой листинг используется при отладке на уровне отдельных инструкций.

Примерная структура строки листинга ассемблера:

`` Адрес Исходный код Машинный код Комментарий 0100 MOV AX, 0005 B8 05 00 ; загрузка значения 0103 ADD AX, BX 03 C3 ; сложение ``

Листинг в современной практике

В современном программировании листинг как физическая распечатка утратил прежнее значение, однако понятие сохранилось в нескольких смежных значениях:

  • Вывод исходного кода в отчётах — генерация листинга как приложения к технической документации, особенно в системах с формальной верификацией.
  • Ревью кода — построчное рассмотрение листинга при код-ревью, когда изменения в системе контроля версий выводятся в виде diff-листинга.
  • Отладочные листинги — вывод трассировки исполнения программы с указанием номеров строк и значений переменных.
  • Печатные листинги учебных программ — распространены в учебных курсах программирования, где листинг служит иллюстрацией алгоритма.

Листинг и системы контроля версий

Системы контроля версий (Git, Subversion и другие) генерируют листинги изменений автоматически. Команда git diff выводит дифференциальный листинг, показывающий добавленные и удалённые строки. git blame показывает, какой автор и в каком коммите внёс каждую строку файла. Эти инструменты фактически выполняют функцию традиционного листинга, адаптированную к распределённой разработке.

Листинг в стандартах документирования

ГОСТ 19.401—78 «Единая система программной документации. Текст программы. Требования к содержанию и оформлению» устанавливает требования к оформлению листинга как вида программной документации. Листинг должен содержать заголовок с наименованием программы, автором, датой, объёмом, а также нумерацию строк и пометки об изменениях.

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

  • В 1972 году в США был опубликован листинг игры Spacewar!, что позволило распространить её на десятки лабораторий.
  • В 1980-е годы в СССР листинги популярных игр для ЭВМ «Электроника» и «Агат» копировались от руки и передавались между программистами, что породило самиздат-культуру программирования.
  • Листинг программы Cray-1 занимал несколько сотен страниц и был опубликован в журнале Datamation в 1979 году.

Источники

  • ГОСТ 19.401—78. Единая система программной документации. Текст программы.
  • Дональд Кнут. «Искусство программирования».
  • Энциклопедия кибернетики (под ред. В. М. Глушкова).
  • IEEE Standard for Information Technology — System Documentation.
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru