Ассоциативное программирование, совокупность способов решения информационно-логических задач, основанных на программной реализации ассоциативных связей между данными, хранящимися в запоминающих устройствах (ЗУ) цифровых вычислительных машин (ЦВМ); раздел программирования для ЦВМ в иностранной литературе известен под названием: списковая обработка данных, узловой способ организации данных, способ цепной адресации, метод управляющих слов. А. п. применяют при логической обработке информации о различных объектах, состав и количество которых меняются в процессе решения, когда заранее невозможно определить объёмы данных различных видов и произвести точное распределение объёма ЗУ машины.
Для задач, решаемых с помощью А. п., характерно большое число данных и частое применение процедур поиска или классификации объектов по их признакам, включения и исключения объектов из различных групп (списков) обрабатываемой информации.
Списками в А. п. называются любые группы данных, объединённых по каким-либо признакам. В ЗУ ЦВМ организуются либо последовательные списки — путём расположения данных в ячейках с последовательно возрастающими адресами, либо цепные списки — объединением данных при помощи адресатов связи. Адрес связи хранится совместно с членом списка и указывает расположение последующего члена данного списка. При этом члены списков могут располагаться произвольно в ЗУ, а некоторые из них могут указывать ответвления к т. н. подспискам. Совокупность списка с ответвляющимися подсписками называется списковой структурой.
Основные средства А. п.: использование адресов связи для построения списков различных видов, объединяющих объекты с общими признаками; использование списковых структур для представления иерархических систем организации данных; использование т. н. продвигаемых списков для временного запоминания данных в определённом порядке и восстановления их в обратном порядке; организация памяти в виде цепного списка ячеек, обеспечивающая гибкость и полноту использования всего объёма памяти и исключающая необходимость в её детальном предварительном распределении.
Идея цепной адресации списков принадлежит американским учёным Ньюэллу, Саймону и Шоу, ими же подробно разработана методика построения и преобразования цепных списков. Обычно при обработке данных о некоторой совокупности объектов эти данные распределяются между различными списками, причём данные об одном и том же объекте могут находиться одновременно в нескольких списках. Для того чтобы многократно не повторять в разных списках всю информацию о каком-либо объекте, в ЗУ машины выделяется определённая область, в которой последовательными участками, т. н. записями, размещается вся информация об объектах, причём каждому объекту соответствует отдельная позиция (одна запись) со своим адресом. При построении каждого цепного списка программистом заранее выделяется одна ячейка, называется фиксатором списка и содержащая адрес первого члена в списке, число членов в списке и другие данные о списке. Достоинство цепного способа организации списков — удобство включения новых и исключения ненужных членов в любом месте списка без перемещения всех остальных членов. Модификациями цепного способа построения списков являются гнездовой и узловой способы.
При гнездовом способе члены одного списка располагаются подряд в последовательных ячейках ЗУ. При этом в списковых словах указываются только адреса записей объектов, являющихся членами данного списка, и некоторые дополнит. признаки. Так как состав списков переменный, данный вариант реализуется не в виде сплошных последовательностей ячеек, относящихся к одному списку, а в виде гнёзд членов одного списка. Внутри гнезда члены размещаются подряд, а связь между гнёздами осуществляется адресами связи.
Узловой способ построения списков служит для образования многосписковых структур. В узловых списках от каждого члена списка могут быть сделаны переходы не только к одному следующему члену, но и ко многим другим членам, т. е. каждый член — узел пересечения многих списков. При этом все списковые слова, представляющие один и тот же объект в разных списках, располагаются в ЗУ машины подряд.
При А. п. удобно пользоваться некоторыми специальными алгоритмическими языками (например, LISP-1,5, IPL-V) либо специальными разделами универсальных алгоритмических языков (таких, как PL-1, АЛГЭМ, АЛГОЛ-КОБОЛ). Иногда А. п. осуществляют в коде конкретной машины, пользуясь некоторыми специальными приёмами.
Применение А. п. позволяет значительно ускорить поиск и обработку данных в больших массивах и обеспечивает удобное и компактное представление сложных алгоритмов решения информационно-логических задач — таких, как планирование производства и материально-технического снабжения, поиск научно-технической информации, поиск справочных данных о различных машинах, приборах и т. п.
Лит.: Китов А. И., Программирование информационно-логических задач, М., 1967; Newell A., Tonge F.M., An introduction to Information Processing Language V., «Association for computing machinery communications», 1960, v. 3, №4: McCar-t_h у J., Recursive functions of symbolic expressions and their computation by machine, pt I, там же; Воbrow D. G., Raphael B., A comparison of listprocessing computer languages, там же, 1964, v. 7, № 4.
А. И. Китов.