Использование макроязыка и макропроцессора

Обоснована эффективность использования макросредств, сформулированы методы построения и обработки макроязыка. Показано, что определяя макрокоманды, можно вводить в прикладное программное обеспечение новые структуры более высокого уровня, что позволяет достичь краткости и простоты управления программ...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Datum:2005
Hauptverfasser: Зинченко, В.П., Зинченко, Н.П.
Format: Artikel
Sprache:Russisch
Veröffentlicht: Інститут кібернетики ім. В.М. Глушкова НАН України 2005
Online Zugang:https://nasplib.isofts.kiev.ua/handle/123456789/6426
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
Назва журналу:Digital Library of Periodicals of National Academy of Sciences of Ukraine
Zitieren:Использование макроязыка и макропроцессора / В.П. Зинченко, Н.П. Зинченко // Комп’ютерні засоби, мережі та системи. — 2005. — № 4. — С.26-34. — Бібліогр.: 6 назв. — рос.

Institution

Digital Library of Periodicals of National Academy of Sciences of Ukraine
_version_ 1860261058424340480
author Зинченко, В.П.
Зинченко, Н.П.
author_facet Зинченко, В.П.
Зинченко, Н.П.
citation_txt Использование макроязыка и макропроцессора / В.П. Зинченко, Н.П. Зинченко // Комп’ютерні засоби, мережі та системи. — 2005. — № 4. — С.26-34. — Бібліогр.: 6 назв. — рос.
collection DSpace DC
description Обоснована эффективность использования макросредств, сформулированы методы построения и обработки макроязыка. Показано, что определяя макрокоманды, можно вводить в прикладное программное обеспечение новые структуры более высокого уровня, что позволяет достичь краткости и простоты управления программной системой. Макрооперации упрощают подготовку, отладку и модификацию прикладных программ, обеспечивают стандартизацию и позволяют автоматизировать инсталляцию прикладных программных систем.
first_indexed 2025-12-07T18:55:20Z
format Article
fulltext Комп’ютерні засоби, мережі та системи. 2005, № 4 26 Обоснована эффективность ис- пользования макросредств, сфор- мулированы методы построения и обработки макроязыка. Показа- но, что определяя макрокоманды, можно вводить в прикладное программное обеспечение новые структуры более высокого уров- ня, что позволяет достичь крат- кости и простоты управления программной системой. Макро- операции упрощают подготов- ку, отладку и модификацию при- кладных программ, обеспечивают стандартизацию и позволяют автоматизировать инсталляцию прикладных программных систем.  В.П. Зинченко, Н.П. Зинченко, 2005 УДК 681.3 В.П. ЗИНЧЕНКО, Н.П. ЗИНЧЕНКО ИСПОЛЬЗОВАНИЕ МАКРОЯЗЫКА И МАКРОПРОЦЕССОРА Введение. В прикладном программном обес- печении (ПО) часто необходимо повторять некоторые последовательности действий. В таких случаях можно воспользоваться аппа- ратом макрокоманд (макро / макрос), кото- рые являются однострочными сокращениями для группы команд. Макрокоманда по су- ществу определяет одну “команду” для пред- ставления некоторой последовательности ко- манд в прикладных программах (ПП). Определяя макрокоманды, можно вводить в прикладное ПО новые структуры более вы- сокого уровня, что позволяет достичь кратко- сти и простоты управления программной си- стемой. Макрооперации упрощают подгото- вку, отладку и модификацию ПП, обеспечи- вают стандартизацию и позволяют автомати- зировать инсталляцию прикладного ПО. Постановка задачи. Обосновать эффекти- вность использования макросредств и сфор- мулировать методы построения и обработки макроязыка. Метод решения поставленной задачи ос- новывается на использовании макроязыка и макропроцессора. Макрокоманды в своей простой форме представляют собой обозначения последо- вательности операций. Например, на рис. 1 дважды используется последовательность команд (а). Аппарат макрокоманд IDE Bor- land C++ [1, 2] позволяет присвоить (а) имя и использовать его вместо (а). Более того, мож- но определить некоторый макроязык и испо- льзовать его вместо (а). Можно определить некоторый макроязык и использовать его при разработке ПП. Обрабатывается такой макроязык макропроцессором, который ИСПОЛЬЗОВАНИЕ МАКРОЯЗЫКА И МАКРОПРОЦЕССОРА Комп’ютерні засоби, мережі та системи. 2005, № 4 27 представляет собой отдельный языковой процессор со своим собственным языком. Форматы макроопределе- ний в различных программных системах различные, но в случае IDE Borland C++ формат определения макро- команды такой: MACRO <macro name> <тело макроопределения> END; Директива MACRO определяет следующий за ней идентификатор как имя макрокоманды. Далее распо- лагается последовательность команд (“тело макрооп- ределения”), которая заканчивается директивой END. Если макрокоманда определена, то использование ее имени в ПП (макровызов) эквивалентно использованию соответствующей по- следовательности команд. Если по- следовательности (а) дать имя “MacP”, то программа (рис. 1) бу- дет иметь вид, показанный на рис. 2 (слева  исходный текст, справа  расширение) В этом слу- чае макропроцессор заменит каж- дую макрокоманду командами (а). Такой процесс замены называется расширением макрокоманды. Операторы макрокоманд. Ме- ханизм макрокоманд позволяет подставлять последовательности команд вместо макровызовов, где все обращения к макроопределе- нию заменяются идентичными по- следовательностями команд. Од- нако такой подход недостаточно гибок, так как в макровызове нет средств модификации кода, который его заменяет. Существенное расширение возможностей макро- средств достигается добавлением операндов (па- раметров) макрокоманд. На рис. 3 показаны похо- жие, но не идентичные последовательности ко- манд: в (б) используется операнд “1”, а в (в)  опе- ранд “2”. Можно считать, что они выполняют одну и ту же операцию с переменным параметром (опе- ранд макрокоманды / формальный параметр), ко- торый объявляется в той же строке, что и имя мак- SetPrevPos; FixScreenPos; PageScreenUp; FixCursorPos; . . . SetPrevPos; FixScreenPos; PageScreenUp; FixCursorPos; . . . (a) (a) РИС. 1 MACRO MacP SetPrevPos; FixScreenPos; PageScreenUp; FixCursorPos; END; . . . MacP . . . MacP . . . . . . SetPrevPos; FixScreenPos; PageScreenUp; FixCursorPos; . . . SetPrevPos; FixScreenPos; PageScreenUp; FixCursorPos; . . . РИС. 2 . . . SetPrevPos; MoveToMark(1); CenterFixScreenPos; . . . SetPrevPos; MoveToMark(2); CenterFixScreenPos; . . . (б) (в) РИС. 3 В.П. ЗИНЧЕНКО, Н.П. ЗИНЧЕНКО Комп’ютерні засоби, мережі та системи. 2005, № 4 28 роса. В языке макроассемблера он помечается символом &, что отличает его как символ макроязыка от символов ассемблера. В IDE Borland не пре- дусмотрена работа с макрооперан- дами, но можно предположить, что если бы это было так, то формат макроопределения мог быть таким (<paramlist>  перечисленные через запятую все операнды макроса): MACRO<macroname>(<paramlist>) <тело макроопределения> END; В таком случае ПП (см. рис. 3) можно переписать так, как показано на рис. 4. Отметим, что макрокоманда может иметь более одного операн- да. Каждый операнд при этом дол- жен соответствовать формальному параметру в строке определения имени мак- роса. На рис. 5 показана последовательность, в которой операнды и команды различны. Их можно переписать так, как показано на рис. 6. Отметим, что существует два основных способа задания операндов  позиционный (рис. 6) и ключевой (позволяет обращаться к формальным операторам как по именам, так и по позиции).Ссылка на фор- мальные операторы в оп- ределении MacM может быть такой: MacM (c = = ScrollScreenUp, l = 1). Условное макрорасши- рение используется для изменения порядка команд макрорасширения внутри макроса. Например, ПП . . . SetPrevPos; MoveToMark(1); CenterFixScreenPos; . . . SetPrevPos; MoveToMark(2); CenterFixScreenPos; . . . (б) (в) РИС.3 MACRO MacG(lab) SetPrevPos; MoveToMark(lab); CenterFixScreenPos; END; . . . MacG(1) . . . MacG(2) . . . . . . SetPrevPos; MoveToMark(1); CenterFixScreenPos; . . . SetPrevPos; MoveToMark(2); CenterFixScreenPos; . . . РИС. 4 . . . ScrollScreenDown; ScrollScreenLeft(0); FixCursorPos; . . . ScrollScreenUp; ScrollScreenLeft(1); FixCursorPos; . . . РИС. 5 MACRO MacM(c,l) c; ScrollScreenLeft(l); FixCursorPos; END; . . . MacM(ScrollScreenDown,0) . . . MacM(ScrollScreenUp,1) ScrollScreenDown; ScrollScreenLeft(0); FixCursorPos; . . . ScrollScreenUp; ScrollScreenLeft(1); FixCursorPos; . . .. РИС. 6 ИСПОЛЬЗОВАНИЕ МАКРОЯЗЫКА И МАКРОПРОЦЕССОРА Комп’ютерні засоби, мережі та системи. 2005, № 4 29 (рис. 7), в которой не только параметры, но и количе- ство команд  переменная величина. Эту ПП можно переписать так, как показано на рис. 8. Комбинация IF...THEN...ELSE  это макромет- ки / символы следования, которые не включаются в выходной текст макропроцессора. В макроязыке так- же могут использоваться директивы условного и без- условного перехода на псевдометку, с которой макро- процессор продолжит обработку ПП. Такие операто- ры переходов служат для указания выполнения опе- раторов ПП. Макровызовы внутри макрооп- ределения. Так как макроопределе- ния, по сути, являются “сокращени- ями” последовательности команд, то полезным свойством была бы возможность выполнять такие “со- кращения” внутри самих макрооп- ределений. На рис. 9 показано мак- роопределение M2, где дважды происходит ссылка на макроопре- деление M1. Это позволило умень- шить длину макроопределения M2 и сделать его более понятным. Та- кое использование макросредств приводит к макрорасширениям с несколькими уровнями вложенно- сти (рис. 10). Например, команда M2 могла быть выполнена внутри другого макроопределения. Фактически, макропереходы дают возможность лю- бое число раз обращаться к любому макроопределению и даже к самому себе (рекурсивные вызовы). Макроопределения в макроопределениях. В теле мак- роопределения можно использовать любые допустимые синтаксисом предложения, в том числе и другие макро- определения. Отметим, что внутреннее макроопределе- ние не будет определено до тех пор, пока не произойдет вызов внешнего макроса. Например, пусть необходимо определить группу макроопределений для обращения к подпрограммам с помощью какой-то определенной по- . . . ScrollScreenLeft(1); LiteralChar('-'); . . . ScrollScreenDown; ScrollScreenLeft(2); LiteralChar('*'); . . . РИС. 7 MACRO M1(p,l,ch) IF p==1 THEN ScrollScreen- Down; ENDIF ScrollScreenLeft(2); LiteralChar('*'); END . . . M1(1,2,’-’) . . . M1(0,1,’*’) . . .. . . . ScrollScreenLeft(1); LiteralChar('-'); . . . ScrollScreenDown; ScrollScreenLeft(2); LiteralChar('*'); . . . РИС. 8 MACRO M1 SetPrevPos; CursorCharRight; END . . . MACRO M2 M1 M1 END . . . РИС. 9 В.П. ЗИНЧЕНКО, Н.П. ЗИНЧЕНКО Комп’ютерні засоби, мережі та системи. 2005, № 4 30 следовательности, так как показано на рис. 11, где определена макрокоманда DEF, которая при указа- нии в качестве ее опе- ранда имени подпро- граммы определяет со- ответствующий этому имени макрос. Рассмотрим метод ре- ализации макроязыка на примере языка макроас- семблера [3, 4]. Задачу сформулируем как раз- работку макропроцессо- ра, который должен рас- познавать и обрабаты- вать макроопределения и макрокоманды. Распознавать мак- роопределения. Макро- процессор должен распознавать макроопределения, вы- деляемые директивами MACRO и ENDM. Эта задача усложняется тем, что макроопределения могут быть вложенными. Когда это так, то макропроцессор должен правильно распознавать вложения и сопоставлять нача- ло и конец макроса. Весь вложенный текст, в том числе и другие макроопределения, определяет отдельную мак- рокоманду. Запоминать макроопределения. Процессор должен запомнить определения макрокоманд, которые впоследствии будут использо- ваться для расширения макровызовов. Распознавать вызовы. Необходимо распознавать макровызовы, представ- ленные в виде мнемонического кода операции. При этом имена макрокоманд должны обрабатываться так, как обрабатываются коды операций. Выполнять расширение макрокоманд и подстановку фактических пара- метров. Вместо формальных параметров макроопределения макропроцессор должен подставить соответствующие операнды макрокоманды. Этот текст, в свою очередь, может содержать как макрокоманды, так и макроопределения. По формальным параметрам необходимо определить  могут ли они встре- чаться в качестве кода операции и синтаксиса допустимых параметров. В разных макроязыках встречаются разные варианты реализации подобных ситуаций. По- этому рассмотрим некоторые варианты возможных реализаций. Формальные параметры могут встречаться в макроопределении как в ко- манде, так и в коде операции. Для того, чтобы обеспечить возможность конка- тенации формальных параметров макроопределения с фиксированными сим- MACRO M1 SetPrevPos; CursorChar- Right; END MACRO M2 M1 M1 END . . . M2 . . . MACRO M2 SetPrevPos; CursorChar- Right; SetPrevPos; CursorCharRight; END M2 . . . SetPrevPos; CursorCharRight; SetPrevPos; CursorCharRight; . . .. РИС. 10 МАСRO DEF sub MACRO sub(par) . . . sub(par) . . . END END РИС. 11 ИСПОЛЬЗОВАНИЕ МАКРОЯЗЫКА И МАКРОПРОЦЕССОРА Комп’ютерні засоби, мережі та системи. 2005, № 4 31 вольными строками, необходимо определить разделительный символ, обеспе- чивающий конкатенацию формальных параметров и заданных символьных по- следовательностей. Гораздо сложнее случай, когда необходимо подставлять зна- чение параметра внутри символьной строки. В таком случае, можно применить конкатенацию по умолчанию двух последовательно друг за другом идущих сим- вольных строк или преобразование формального параметра, заключенного в скобки. Для выполнения функций условных переходов необходимо вычислять некоторые арифметические выражения (например, счетчик), при этом используя псевдопеременные времени компиляции внутри макросов. Двухпроходный алгоритм. Предположим, что разрабатываемый макропро- цессор функционально независим от основного компилятора и его текст должен передаваться этому компилятору. Сначала не разрешим макровызовы и макро- определения внутри макроопределений. Макропроцессор, как и язык ассемблера, просматривает и обрабатывает строки текста. Если рассматривать макроопределение как единый объект, то можно сделать вывод о том, что строки такого макроопределения не так сильно взаимосвязаны, и макроопределения не могут ссылаться на объекты вне этого макроопределения. Предположим, что в макроопределении есть строка INC X, и перед этой ко- мандой параметр Х получил значение 1. Макропроцессор не осуществляет син- таксический анализ, а выполняет текстовую подстановку (вместо “Х” подстав- ляется “1”). Алгоритм будет выполнять 2 просмотра входного текста. В первом проходе будут детерминированы все макроопределения, а во втором  открыты все ссылки на макросы. Во время первого прохода проверяется каждый код опера- ции, макроопределения запоминаются в таблице макроопределений, а копия ис- ходного текста без макроопределений запоминается в памяти, для использова- ния ее на втором проходе. Также во время первого прохода строится таблица имен, которая на втором проходе используется для выделения макроопераций и расширения их до текста макроопределения. Данные для алгоритма просмотра текста: ВТ  входной текст; ВХТ1, ВХТ2  выходная копия текста после первого и второго проходов соответст- венно; МДТ  таблица макроопределений, в которой хранятся тела макроопре- делений; МНТ  таблица хранения имен макрокоманд, определенных в МНТ; МДТС, МНТС  счетчик для таблицы МДТ и для таблицы МНТ соответственно; АЛА  массив списка параметров для подстановки индексных маркеров вместо формальных параметров перед запоминанием определения. Алгоритмы обработки макроопределений. Обработка макроопределений двухпроходным способом состоит из алгоритмов первого и второго построчного просмотров входного текста. Алгоритм первого просмотра (макроопределения) проверяет каждую строку входного текста (рис. 12). Если она представляет собой директиву MACRO, то все следующие за ней строки запоминаются в свободных ячейках МДТ. Первая В.П. ЗИНЧЕНКО, Н.П. ЗИНЧЕНКО Комп’ютерні засоби, мережі та системи. 2005, № 4 32 строка макроопределения  это имя самого макроса, которое за- носится в таблицу имен МНТ с индексом этой строки в МДТ. При этом происходит также под- становка номеров формальных параметров, вместо их имен. Если при просмотре встречается ко- манда END, то это означает, что весь текст обработан, и управле- ние можно передавать второму просмотру для обработки макро- команд. Алгоритм второго просмотра (расширение макрокоманд) про- веряет мнемонический код каж- дого предложения (рис. 13). Если это имя содержится в МНТ, то происходит обработка макро- предложения. Из таблицы МНТ берется указатель на начало мак- роса в МДТ. Макропроцессор го- товит массив списка АЛА, кото- рый содержит таблицу индексов формальных параметров и соот- ветствующих операндов макро- команды. Выполняется чтение из МДТ строки и в нее подставляют- ся необходимые параметры. По- лученная таким образом строка записывается в ВХТ2. Когда встречается дирек- тива END, текст полученного кода передается для компиляции ассемблеру. Однопроходный алгоритм. Предположим, что допускается реализация мак- роопределения внутри макроопределений. Основная проблема в том, что внут- реннее макро определено только после того, как выполнен вызов внешнего. Для обеспечения использования внутреннего макро необходимо повторять как просмотр обработки макроопределений, так и просмотр обработки макро- команд. Однако существует решение, которое позволяет выполнить распозна- вание и расширение в один просмотр. Алгоритм однопроходного макроассемблера (рис. 14) объединяет два вы- шеприведенных алгоритма в один. Он является упрощением алгоритма из [5]. Различие состоит в том, что современные средства программирования дают воз- можность осуществлять вставки и удаления из больших массивов с минималь- ными затратами процессорного времени, что было невозможно ранее. Кроме того, скорость работы современных процессоров позволяет осуществлять пря- Начало МДТС = 0 МНТС = 0 ФЛАГ ВЫХОДА=0 цикл пока (ФЛАГ ВЫХОДА == 0) { чтение следующей строки ВТ если !(операция MACRO) { вывод строки в ВХТ1 если (операция END) ФЛАГ ВЫХО- ДА=1 } иначе { чтение идентификатора запись имени и индекса в МНТ МНТС ++ приготовить массив списка АЛА запись имени в МДТ МДТС ++ цикл { чтение следующей строки ВТ подстановка индекса операторов добавление в МДТ МДТС ++ } пока !(операция ENDM) } } переход ко второму проходу Конец РИС. 12 РИС. 12 ИСПОЛЬЗОВАНИЕ МАКРОЯЗЫКА И МАКРОПРОЦЕССОРА Комп’ютерні засоби, мережі та системи. 2005, № 4 33 мые вставки и удаления в массивах данных до 64 Кбайт в режиме реально- го времени. Таким образом, расширение исход- ного макроса может быть напрямую вставлено в исходный текст и обрабо- тано в расширенном виде. Такая техно- логия позволяет значительно упростить алгоритм обработки макроязыка. Реализация. Разработанный мак- ропроцессор обрабатывает тексты в ре- жиме препроцессора, т. е. он выполняет полный просмотр входного текста, до того, как передать управление ассемблеру. Макропроцессор также может быть реализован внутри первого прохода ассемб- лера, что позволяет исключить промежуточные файлы и достичь на порядок большей интеграции макропроцессора и ассемблера путем объединения сход- ных функций. Например, можно объединить таблицы имен макросов и имен ко- да операции; специальный признак может указывать на то  макро это или встроенная операция. Начало ФЛАГ ВЫХОДА = 0 цикл пока (ФЛАГ ВЫХОДА = = 0) { чтение строки из ВХТ1 НАЙДЕНО = поиск кода в МНТ если !(НАЙДЕНО) { запись в ВХТ2 строки если (операция END) { ФЛАГ ВЫХОДА = 1 } } иначе { УКАЗАТЕЛЬ = индекс из МНТ Заполнение списка параметров АЛА цикл { УКАЗАТЕЛЬ ++ чтение следующей строки из МДТ подстановка параметров вывод в ВХТ2 } пока !(операция ENDM) } } переход к компиляции Конец РИС. 13 Начало МТДС = 0 МНТС = 0 ФЛАГ ВЫХОДА=0 цикл пока !(ФЛАГ ВЫХОДА) { чтение следующей строки ВТ НАЙДЕНО = поиск кода в МНТ если (НАЙДЕНО) { МДИ = 1 УКАЗАТЕЛЬ = индекс из МНТ Заполнение списка параметров АЛА цикл { УКАЗАТЕЛЬ ++ чтение след. строки из МДТ подстановка параметров вставка во ВТ} пока !(операция ENDM) иначе если !(операция MACRO) {вывод строки в ВХТ1 если (операция END) ФЛАГ ВЫ- ХОДА=1} иначе { чтение идентификатора запись имени и индекса в МНТ МНТС ++ приготовить массив списка АЛА запись имени в МДТ МДТС ++ цикл { чтение следующей строки ВТ подстановка индекса операторов добавление в МДТ МДТС ++ } пока !(операция ENDM) } } Конец РИС. 14 В.П. ЗИНЧЕНКО, Н.П. ЗИНЧЕНКО Комп’ютерні засоби, мережі та системи. 2005, № 4 34 Основные преимущества включения макропроцессора в первый просмотр состоят в следующем: большинство функций не надо реализовывать дважды (например, функции ввода-вывода); в процессе обработки нет необходимости создавать промежуточные файлы или массивы данных; можно совмещать сред- ства ассемблера (например, команды EUQ) с макрокомандами. Основные недос- татки такие: ПП требует больше оперативной памяти; реализация подобного ти- па задачи может оказаться на порядок сложнее, чем отдельная реализация ас- семблера и макропроцессора. Выводы. Макроязыки и соответствующие им макропроцессоры представ- ляют собой самостоятельную форму языков программирования. Совместное ис- пользование ассемблера и макропроцессора позволяет определять свой язык “высокого” уровня при разработке прикладных программных систем [6]. Существуют четыре основных задачи, решаемых макропроцессором: рас- познавание макроопределений; хранение макроопределений; распознавание макрокоманд; расширение макрокоманд и подстановка параметров. Макропроцессор в ассемблере может быть реализован как независимый двух- или однопроходный ассемблер, и как процессор, совмещенный с первым проходом двухпроходного ассемблера (например, MASM [3]). 1. Сван Т. Освоение Borland C++4.5. Практический курс. – Киев: Диалектика, 1996. – 544 с. 2. Страуструп Б. Язык программирования С++. – СПб. – М.: Бином, 1999. – 991 с. 3. Абель П. Ассемблер. Язык и программирование для IBM PC: Пер. с англ.  Киев: Век+, М.: ЭНТРОП, Киев: НТИ, 2003. – 736 с. 4. Сван Т. Ассемблер: Освоение Turbo Assembler. – Киев: Диалектика, 1996. – 544 с. 5. Джордан Дж. Системное программирование. – М.: Мир, 1989. – 354 с. 6. Зінченко В.П. Інформаційна технологія проектних досліджень складних технічних об’єк- тів // Наукові вісті НТУУ “КПІ”. – 2000. – № 4. – С. 3242. Получено 01.07.2005
id nasplib_isofts_kiev_ua-123456789-6426
institution Digital Library of Periodicals of National Academy of Sciences of Ukraine
issn 1817-9908
language Russian
last_indexed 2025-12-07T18:55:20Z
publishDate 2005
publisher Інститут кібернетики ім. В.М. Глушкова НАН України
record_format dspace
spelling Зинченко, В.П.
Зинченко, Н.П.
2010-03-02T14:47:52Z
2010-03-02T14:47:52Z
2005
Использование макроязыка и макропроцессора / В.П. Зинченко, Н.П. Зинченко // Комп’ютерні засоби, мережі та системи. — 2005. — № 4. — С.26-34. — Бібліогр.: 6 назв. — рос.
1817-9908
https://nasplib.isofts.kiev.ua/handle/123456789/6426
681.3
Обоснована эффективность использования макросредств, сформулированы методы построения и обработки макроязыка. Показано, что определяя макрокоманды, можно вводить в прикладное программное обеспечение новые структуры более высокого уровня, что позволяет достичь краткости и простоты управления программной системой. Макрооперации упрощают подготовку, отладку и модификацию прикладных программ, обеспечивают стандартизацию и позволяют автоматизировать инсталляцию прикладных программных систем.
ru
Інститут кібернетики ім. В.М. Глушкова НАН України
Использование макроязыка и макропроцессора
Article
published earlier
spellingShingle Использование макроязыка и макропроцессора
Зинченко, В.П.
Зинченко, Н.П.
title Использование макроязыка и макропроцессора
title_full Использование макроязыка и макропроцессора
title_fullStr Использование макроязыка и макропроцессора
title_full_unstemmed Использование макроязыка и макропроцессора
title_short Использование макроязыка и макропроцессора
title_sort использование макроязыка и макропроцессора
url https://nasplib.isofts.kiev.ua/handle/123456789/6426
work_keys_str_mv AT zinčenkovp ispolʹzovaniemakroâzykaimakroprocessora
AT zinčenkonp ispolʹzovaniemakroâzykaimakroprocessora