~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 242BD7B99964AB162072D4811F9CC6E7__1717707420 ✰
Заголовок документа оригинал.:
✰ Macro (computer science) - Wikipedia ✰
Заголовок документа перевод.:
✰ Макро (информатика) — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Macro_(computer_science) ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/24/e7/242bd7b99964ab162072d4811f9cc6e7.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/24/e7/242bd7b99964ab162072d4811f9cc6e7__translat.html ✰
Дата и время сохранения документа:
✰ 09.06.2024 08:47:20 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 6 June 2024, at 23:57 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Макро (информатика) — Википедия Jump to content

Макро (информатика)

Из Википедии, бесплатной энциклопедии
jEdit редактор макросов

В компьютерном программировании макрос (сокращение от « макроинструкция »; от греческого μακρο «длинный, большой»). [1] ) — это правило или шаблон , определяющий, как определенные входные данные должны быть сопоставлены с заменяющими выходными данными. Применение макроса к входным данным называется расширением макроса . Входные и выходные данные могут быть последовательностью лексических токенов или символов или синтаксическим деревом . Символьные макросы поддерживаются в программных приложениях , что упрощает вызов общих команд последовательностей . Макросы токенов и деревьев поддерживаются в некоторых языках программирования , что позволяет повторно использовать код или расширять язык, иногда для языков, специфичных для предметной области .

Макросы используются для того, чтобы сделать последовательность вычислительных инструкций доступной программисту в виде одного оператора программы , что делает задачу программирования менее утомительной и менее подверженной ошибкам. [2] [3] Поэтому их называют «макросами», потому что «большой» блок кода можно расширить из «маленькой» последовательности символов. Макросы часто допускают позиционные или ключевые параметры, которые определяют, что генерирует программа условного ассемблера , и используются для создания целых программ или наборов программ в соответствии с такими переменными, как операционная система , платформа или другие факторы. Этот термин происходит от «макроинструкции», и такие расширения первоначально использовались при создании кода на языке ассемблера .

Макросы клавиатуры и мыши [ править ]

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

В 1980-е годы макропрограммы — первоначально SmartKey , затем SuperKey, KeyWorks, Prokey — были очень популярны, сначала как средство автоматического форматирования сценариев , а затем для выполнения различных задач пользовательского ввода. Эти программы были основаны на резидентном режиме работы и применялись ко всему вводу с клавиатуры, независимо от того, в каком контексте он происходил. Они в некоторой степени устарели после появления пользовательских интерфейсов, управляемых мышью, и доступности макросов клавиатуры и мыши в таких приложениях, как текстовые процессоры и электронные таблицы , что позволило создавать макросы клавиатуры, чувствительные к приложению.

Макросы клавиатуры можно использовать в многопользовательских ролевых онлайн-играх (MMORPG) для выполнения повторяющихся, но прибыльных задач, накапливая таким образом ресурсы. Поскольку это делается без участия человека, это может исказить экономику игры. По этой причине использование макросов является нарушением TOS или EULA большинства MMORPG, и их администраторы тратят значительные усилия на их подавление. [4]

Макросы приложений и сценарии [ править ]

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

Текстовый редактор программистов Emacs (сокращение от «редактирование макросов») доводит эту идею до конца. По сути, большая часть редактора состоит из макросов. Emacs изначально был разработан как набор макросов на языке редактирования TECO ; позже он был портирован на диалекты Лиспа .

Другой текстовый редактор программистов, Vim (потомок vi ), также имеет реализацию клавиатурных макросов. Он может записывать в регистр (макрос) то, что человек набирает на клавиатуре, и его можно воспроизводить или редактировать так же, как макросы VBA для Microsoft Office. В Vim также есть язык сценариев Vimscript. [5] для создания макросов.

Visual Basic для приложений (VBA) — это язык программирования, включенный в Microsoft Office начиная с Office 97 до Office 2019 (хотя он был доступен в некоторых компонентах Office до Office 97). Однако его функция развилась и заменила макроязыки, которые изначально были включены в некоторые из этих приложений.

XEDIT , работающий на компоненте Conversational Monitor System (CMS) VM , поддерживает макросы, написанные на EXEC , EXEC2 и REXX , а некоторые команды CMS фактически были обертками вокруг макросов XEDIT. Редактор Hessling (THE), частичный клон XEDIT, поддерживает макросы Rexx с использованием Retina и Open Object REXX (oorexx). Многие распространенные приложения, в том числе и на ПК, используют Rexx в качестве языка сценариев.

Макровирус [ править ]

VBA имеет доступ к большинству системных вызовов Microsoft Windows и выполняется при открытии документов. Это позволяет относительно легко писать компьютерные вирусы на VBA, широко известные как макровирусы . В середине-конце 1990-х годов этот тип компьютерных вирусов стал одним из наиболее распространенных. Однако с конца 1990-х годов и по настоящее время Microsoft исправляет и обновляет свои программы. [ нужна цитата ] Кроме того, современные антивирусные программы моментально противодействуют таким атакам.

Параметризованный и безпараметрический макрос [ править ]

Параметризованный макрос это макрос, который может вставлять заданные объекты в свое расширение. Это дает макросу некоторую мощь функции .

В качестве простого примера на языке программирования C это типичный макрос, который не является параметризованным макросом, т. е. макросом без параметров :

 #define  PI 3.14159
 

Это вызывает PI всегда заменяться на 3.14159где бы это ни происходило. С другой стороны, пример параметризованного макроса:

 #define  pred(x) ((x)-1)
 

То, во что расширяется этот макрос, зависит от того, какой аргумент x ему передается. Вот некоторые возможные расширения:

до(2) → ((2) -1)
  до(y+2) → ((y+2) -1)
  до(f(5)) → ((f(5))-1)
 

Параметризованные макросы — полезный механизм на уровне исходного кода для выполнения встроенного расширения , но в таких языках, как C , где они используют простую текстовую замену, они имеют ряд серьезных недостатков по сравнению с другими механизмами выполнения встроенного расширения, такими как встроенные функции. .

параметризованные макросы, используемые в таких языках, как Lisp , PL/I и Scheme С другой стороны, , гораздо более мощные и способны принимать решения о том, какой код создавать на основе своих аргументов; таким образом, их можно эффективно использовать для генерации кода во время выполнения .

Макросы замены текста [ править ]

Такие языки, как C и некоторые ассемблерные языки, имеют рудиментарные макросистемы, реализованные как препроцессоры для компилятора или ассемблера. Макросы препроцессора C работают путем простой текстовой замены на уровне токена , а не на уровне символов. Однако макросы более сложных ассемблеров, например, IBM High Level Assembler (HLASM), не могут быть реализованы с помощью препроцессора; код сборки инструкций и данных перемежается кодом сборки вызовов макросов.

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

MacroML — это экспериментальная система, которая стремится согласовать статическую типизацию и макросистемы. В Nemerle есть типизированные синтаксические макросы, и один из продуктивных способов представить эти синтаксические макросы — это многоэтапные вычисления .

Другие примеры:

Некоторые основные приложения написаны в виде текстовых макросов, вызываемых другими приложениями, например XEDIT в CMS.

Встраиваемые языки [ править ]

Некоторые языки, такие как PHP , могут быть встроены в текст свободного формата или исходный код других языков. Механизм распознавания фрагментов кода (например, заключение в скобки <?php и ?>) похож на текстовый макроязык, но они гораздо более мощные и полнофункциональные языки.

Процедурные макросы [ править ]

Макросы на языке PL/I написаны на подмножестве самого PL/I: компилятор выполняет « операторы препроцессора » во время компиляции, и результат этого выполнения образует часть компилируемого кода. Возможность использовать знакомый процедурный язык в качестве языка макросов дает гораздо большую мощность, чем у макросов замены текста, за счет более крупного и медленного компилятора. Макросы в PL/I, как и во многих ассемблерах, могут иметь побочные эффекты , например, устанавливать переменные, к которым могут получить доступ другие макросы.

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

Большинство языков ассемблера имеют менее мощные процедурные макросы, например, позволяющие повторять блок кода N раз для развертывания цикла ; но они имеют совершенно другой синтаксис, чем настоящий язык ассемблера.

Синтаксические макросы [ править ]

Макросистемы, такие как препроцессор C, описанный ранее, которые работают на уровне лексических токенов, не могут надежно сохранять лексическую структуру. Вместо этого синтаксические макросистемы работают на уровне абстрактных синтаксических деревьев и сохраняют лексическую структуру исходной программы. Наиболее широко используемые реализации синтаксических макросистем встречаются в Lisp -подобных языках. Эти языки особенно подходят для макросов такого типа благодаря единообразному синтаксису в скобках (известному как S-выражения ). В частности, единый синтаксис упрощает определение вызовов макросов. Макросы Lisp преобразуют саму структуру программы, используя полный язык для выражения таких преобразований. Хотя синтаксические макросы часто встречаются в Lisp-подобных языках, они также доступны и в других языках, таких как Prolog . [6] Эрланг , [7] Дилан , [8] Скала , [9] Немерль , [10] Ржавчина , [11] Эликсир , [12] Nim , [13] Хасэ , [14] и Джулия . [15] Они также доступны как сторонние расширения JavaScript. [16] и С# . [17]

Ранние макросы Lisp [ править ]

До того, как в Лиспе появились макросы, в нем были так называемые FEXPR , операторы, подобные функциям, входные данные которых были не значениями, вычисленными аргументами, а скорее синтаксическими формами аргументов, а выходные данные были значениями, которые использовались в вычислениях. Другими словами, FEXPR были реализованы на том же уровне, что и EVAL, и предоставили окно на уровень метаоценки. В целом выяснилось, что эту модель сложно эффективно рассуждать. [18]

В 1963 году Тимоти Харт предложил добавить макросы в Lisp 1.5 в AI Memo 57: Определения макросов для LISP. [19]

Анафорические макросы [ править ]

Анафорический макрос — это тип программного макроса, который намеренно фиксирует некоторую форму, предоставленную макросу, на которую можно ссылаться с помощью анафоры (выражения, ссылающегося на другое). Анафорические макросы впервые появились в книге Пола Грэма «О Лиспе», и их название является отсылкой к лингвистической анафоре — использованию слов вместо предыдущих слов.

Гигиенические макросы [ править ]

В середине восьмидесятых годов появился ряд статей. [20] [21] ввел понятие гигиенического макрорасширения ( syntax-rules), система, основанная на шаблонах, в которой синтаксическая среда определения макроса и использования макроса различна, что позволяет определяющим макросы и пользователям не беспокоиться о непреднамеренном захвате переменных (см. ссылочную прозрачность ). Гигиенические макросы стандартизированы для Scheme в стандартах R5RS , R6RS и R7RS . Существует ряд конкурирующих реализаций гигиенических макросов, таких как syntax-rules, syntax-case, явное переименование и синтаксические замыкания. Оба syntax-rules и syntax-case были стандартизированы в стандартах Схемы.

Недавно Racket объединил понятия гигиенических макросов с « башней оценщиков », так что время синтаксического расширения одной макросистемы равно обычному времени выполнения другого блока кода, [22] и показал, как применять чередующееся расширение и синтаксический анализ на языке без скобок. [23]

Ряд языков, кроме Scheme, либо реализуют гигиенические макросы, либо реализуют частично гигиенические системы. Примеры включают Scala , Rust , Elixir , Julia , Dylan , Nim и Nemerle .

Приложения [ править ]

Порядок оценки
Макросистемы имеют множество применений. Возможность выбирать порядок вычислений (см. ленивые вычисления и нестрогие функции ) позволяет создавать новые синтаксические конструкции (например, управляющие структуры ), неотличимые от встроенных в язык. Например, в диалекте Лиспа, который имеет cond но не хватает if, то последнее можно определить через первое с помощью макросов. Например, в Scheme есть как продолжения , так и гигиенические макросы, что позволяет программисту разрабатывать свои собственные абстракции управления, такие как циклы и конструкции раннего выхода, без необходимости встраивать их в язык.
Подъязыки данных и языки, специфичные для предметной области
Далее, макросы позволяют определять языки данных, которые немедленно компилируются в код, а это означает, что такие конструкции, как конечные автоматы, могут быть реализованы естественным и эффективным способом. [24]
Связывающие конструкции
Макросы также можно использовать для введения новых конструкций привязки. Самый известный пример – трансформация let в применении функции к набору аргументов.

Феляйзена Гипотезы [25] что эти три категории составляют основные законные способы использования макросов в такой системе. Другие предложили альтернативное использование макросов, например, анафорические макросы в макросистемах, которые негигиеничны или допускают выборочную негигиеническую трансформацию.

Взаимодействие макросов и других особенностей языка было продуктивной областью исследований. Например, компоненты и модули полезны для крупномасштабного программирования, но для их совместного использования необходимо определить взаимодействие макросов и других конструкций. Для Scheme и других языков с макросами были предложены модули и системы компонентов, которые могут взаимодействовать с макросами. Например, язык Racket расширяет понятие макросистемы до синтаксической башни, где макросы могут быть написаны на языках, включая макросы, используя гигиену, чтобы гарантировать, что синтаксические уровни различимы, и позволяя модулям экспортировать макросы в другие модули.

Макросы для машинно-независимого программного обеспечения [ править ]

Макросы обычно используются для сопоставления короткой строки (вызова макроса) с более длинной последовательностью инструкций. Другой, менее распространенный вариант использования макросов — обратное: сопоставление последовательности инструкций со строкой макроса. Именно такой подход был использован в системе мобильного программирования STAGE2 , которая использовала элементарный компилятор макросов (называемый SIMCMP) для отображения конкретного набора команд данного компьютера в машинно-независимые макросы. Приложения (особенно компиляторы), написанные с использованием этих машинно-независимых макросов, затем можно запускать без изменений на любом компьютере, оснащенном элементарным компилятором макросов. Первое приложение, запускаемое в таком контексте, представляет собой более сложный и мощный компилятор макросов, написанный на машинно-независимом языке макросов. Этот макрокомпилятор применяется к самому себе в режиме начальной загрузки для создания скомпилированной и гораздо более эффективной версии самого себя. Преимущество этого подхода состоит в том, что сложные приложения можно переносить с одного компьютера на другой компьютер с минимальными усилиями (для каждой целевой архитектуры достаточно просто написать элементарный макрокомпилятор). [26] [27] Появление современных языков программирования, особенно C , компиляторы которого имеются практически на всех компьютерах, сделало такой подход излишним. Однако это был один из первых (если не первый) случаев начальной загрузки компилятора .

Язык ассемблера [ править ]

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

  • периферийный доступ с помощью методов доступа (включая такие макросы, как OPEN, CLOSE, READ и WRITE)
  • функции операционной системы, такие как ATTACH, WAIT и POST для создания и синхронизации подзадач. [28] Обычно такие макросы расширяются до исполняемого кода, например, для макроинструкции EXIT.
  • список инструкций определения констант , например, для макроса DCB — DTF (Define The File) для DOS. [29] — или сочетание кода и констант, детали расширения которых зависят от параметров макрокоманды (например, ссылка на файл и область данных для инструкции READ);
  • исполняемый код часто завершался либо инструкцией регистра ветвления и связи для вызова подпрограммы, либо инструкцией вызова супервизора для прямого вызова функции операционной системы.
  • Создание потока заданий этапа 2 для генерации системы , например, в OS/360 . В отличие от типичных макросов, макросы sysgen stage 1 не генерируют данные или код для загрузки в хранилище, а используют оператор PUNCH для вывода JCL и связанных данных.

В старых операционных системах, таких как те, которые использовались на мэйнфреймах IBM, полная функциональность операционной системы была доступна только для программ на языке ассемблера, но не для программ на языке высокого уровня (если, конечно, не использовались подпрограммы языка ассемблера), поскольку стандартные макрокоманды не всегда выполнялись. иметь аналоги в процедурах, доступных в языках высокого уровня.

История [ править ]

В середине 1950-х годов, когда программирование на языке ассемблера широко использовалось для написания программ для цифровых компьютеров , использование макроинструкций было инициировано для двух основных целей: уменьшить объем программного кода, который необходимо было написать, путем создания нескольких операторов языка ассемблера. из одной макрокоманды и для обеспечения соблюдения стандартов написания программ, например, стандартного определения команд ввода/вывода. [30] Инструкции макросов фактически были промежуточным этапом между программированием на языке ассемблера и языками программирования высокого уровня последующими , такими как FORTRAN и COBOL . Две из первых программных установок для разработки «макроязыков» для компьютера IBM 705 находились в Dow Chemical Corp. в Делавэре и в Управлении авиационных материалов Управления логистики баллистических ракет в Калифорнии. Макроинструкция, написанная в формате целевого языка ассемблера, обрабатывалась макрокомпилятором, который был препроцессором ассемблера, для генерации одной или нескольких инструкций ассемблера, которые затем обрабатывались программой ассемблера, которая транслировала бы инструкции языка ассемблера в инструкции машинного языка . [31]

К концу 1950-х годов за макроязыком последовали макроассемблеры . Это была комбинация того и другого, где одна программа выполняла обе функции: макропрепроцессора и ассемблера в одном пакете. [31] [ не удалось пройти проверку ]

В 1959 году Дуглас Э. Иствуд и Дуглас Макилрой из Bell Labs ввели условные и рекурсивные макросы в популярный SAP . ассемблер [32] создание так называемого Macro SAP. [33] Статья Макилроя 1960 года стала плодотворной в области расширения любых (включая языки высокого уровня языков программирования ) с помощью макропроцессоров . [34] [32]

Макросемблеры позволяли программистам на языке ассемблера реализовывать свои собственные макроязыки и обеспечивали ограниченную переносимость кода между двумя машинами с одним и тем же процессором, но с разными операционными системами, например, ранними версиями MS-DOS и CP/M-86 . Библиотека макросов должна быть написана для каждой целевой машины, а не для всей программы на языке ассемблера. Обратите внимание, что более мощные ассемблеры макросов позволяли использовать конструкции условной сборки в макроинструкциях, которые могли генерировать разный код на разных машинах или в разных операционных системах, что уменьшало потребность в нескольких библиотеках. [ нужна цитата ]

В 1980-х и начале 1990-х годов настольные ПК работали на частоте всего несколько МГц, а программы на языке ассемблера обычно использовались для ускорения программ, написанных на C, Fortran, Pascal и других языках. В то время в этих языках использовались разные соглашения о вызовах. Макросы можно использовать для взаимодействия подпрограмм, написанных на языке ассемблера, с интерфейсом приложений, написанных практически на любом языке. Опять же, базовый код ассемблера остался прежним, только нужно было написать библиотеки макросов для каждого целевого языка. [ нужна цитата ]

В современных операционных системах, таких как Unix и ее производных, доступ к операционной системе осуществляется через подпрограммы, обычно предоставляемые динамическими библиотеками. Языки высокого уровня, такие как C, предлагают полный доступ к функциям операционной системы, устраняя необходимость в программах на языке ассемблера для реализации такой функциональности. [ нужна цитата ]

Более того, стандартные библиотеки нескольких новых языков программирования, таких как Go , активно препятствуют использованию системных вызовов в пользу платформо-независимых библиотек, а также, если в этом нет необходимости, для улучшения переносимости и безопасности. [35]

См. также [ править ]

Ссылки [ править ]

  1. ^ Оксфордский словарь английского языка , sv macro , макроинструкция и макро-
  2. ^ Гринвальд, Ирвин Д.; Морин Кейн (апрель 1959 г.). «Система Share 709: программирование и модификация» . Журнал АКМ . 6 (2). Нью-Йорк, штат Нью-Йорк, США: ACM: 128–133. дои : 10.1145/320964.320967 . S2CID   27424222 . Одним из важных применений программных макросов является экономия времени и ошибок канцелярского типа при написании последовательности инструкций, которые часто повторяются в ходе программы.
  3. ^ Стрейчи, Кристофер (октябрь 1965 г.). «Макрогенератор общего назначения» . Компьютерный журнал . 8 (3): 225–241. дои : 10.1093/comjnl/8.3.225 .
  4. ^ «Runescape: масштабная приключенческая онлайн-игра от Jagex Ltd» . Проверено 3 апреля 2008 г.
  5. ^ «скрипты: vim онлайн» . www.vim.org .
  6. ^ «Макросы Пролога» . www.metalevel.at . Проверено 5 апреля 2021 г.
  7. ^ «Эрланг — Препроцессор» . erlang.org . Проверено 24 мая 2021 г.
  8. ^ «Макросистема Дилана — Открытый Дилан» . opendylan.org . Проверено 5 апреля 2021 г.
  9. ^ «Макросы определения» . Документация Скала . Проверено 5 апреля 2021 г.
  10. ^ «О программе — Официальный сайт языка программирования Nemerle» . nemerle.org . Проверено 5 апреля 2021 г.
  11. ^ «Макросы — язык программирования Rust» . doc.rust-lang.org . Проверено 5 апреля 2021 г.
  12. ^ «Макросы» . эликсир-lang.github.com . Проверено 5 апреля 2021 г.
  13. ^ «макросы» . nim-lang.org . Проверено 5 апреля 2021 г.
  14. ^ «Макросы» . Haxe — Кроссплатформенный набор инструментов .
  15. ^ «Метапрограммирование · Язык Джулии» . docs.julialang.org . Проверено 5 апреля 2021 г.
  16. ^ «Sweet.js — гигиенические макросы для JavaScript» . www.sweetjs.org .
  17. ^ «Домашняя страница LeMP · Расширенный C#» . ecsharp.net .
  18. ^ Маршалл, Джо. «электронное письмо без названия» . Проверено 3 мая 2012 г.
  19. ^ Харт, Тимоти П. (октябрь 1963 г.). «Определения МАКРО для LISP». AI-памятки . hdl : 1721.1/6111 . АИМ-057.
  20. ^ Кольбекер, Юджин; Фридман, Дэниел; Феллайзен, Матиас; Дуба, Брюс (1986). «Гигиеническое макрорасширение». LFP '86: Материалы конференции ACM 1986 года по LISP и функциональному программированию . стр. 151–161. дои : 10.1145/319838.319859 . ISBN  0897912004 .
  21. ^ [1] Клингер, Рис. «Макросы, которые работают»
  22. ^ Флэтт, Мэтью. «Компонуемые и компилируемые макросы: когда они вам понадобятся?» (PDF) .
  23. ^ Рафкинд, Джон; Флэтт, Мэтью. «Хону: синтаксическое расширение алгебраической записи посредством облесения» (PDF) .
  24. ^ «Автоматы через макросы» . cs.brown.edu .
  25. ^ [2] , Маттиас Феллейзен, публикация в списке рассылки LL1
  26. ^ Оргасс, Ричард Дж.; Уильям М. Уэйт (сентябрь 1969 г.). «База для мобильной системы программирования» . Коммуникации АКМ . 12 (9). Нью-Йорк, штат Нью-Йорк, США: ACM: 507–510. дои : 10.1145/363219.363226 . S2CID   8164996 .
  27. ^ Уэйт, Уильям М. (июль 1970 г.). «Система мобильного программирования: ЭТАП2». Коммуникации АКМ . 13 (7). Нью-Йорк, штат Нью-Йорк, США: ACM: 415–421. дои : 10.1145/362686.362691 . S2CID   11733598 .
  28. ^ «Университет Северной Флориды» (PDF) .
  29. ^ «ДТФ (ДОС/ВСЕ)» . ИБМ .
  30. ^ «Центр знаний IBM» . Центр знаний IBM . 16 августа 2013 г.
  31. ^ Перейти обратно: а б «Макроинструкции языка ассемблера» . Циско .
  32. ^ Перейти обратно: а б Холбрук, Бернард Д.; Браун, В. Стэнли. «Технический отчет по информатике № 99 - История компьютерных исследований в Bell Laboratories (1937–1975)» . Лаборатории Белла . Архивировано из оригинала 2 сентября 2014 года . Проверено 2 февраля 2020 г.
  33. ^ «Макро SAP – модификация макрокомпилятора SAP» . HOPL: Интернет-историческая энциклопедия языков программирования . Архивировано из оригинала 13 августа 2008 года.
  34. ^ Лейзелл, П. (1985). «История макропроцессоров в расширяемости языков программирования» . Компьютерный журнал . 28 (1): 29–33. дои : 10.1093/comjnl/28.1.29 .
  35. ^ «Пакет системного вызова — системный вызов — Пакеты Go» . pkg.go.dev . Проверено 6 июня 2024 г.

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 242BD7B99964AB162072D4811F9CC6E7__1717707420
URL1:https://en.wikipedia.org/wiki/Macro_(computer_science)
Заголовок, (Title) документа по адресу, URL1:
Macro (computer science) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)