The term originated with macro-assemblers, where the idea is to make available to the programmer a sequence of computing instructions as a single program statement, making the programming task less tedious and less error-prone.
During the 1980s, macro programs -- originally SmartKey, then SuperKey, KeyWorks, Prokey -- were very popular, first as a means to automatically format screenplays, then for a variety of user input tasks. These programs were based on the TSR (Terminate and stay resident) mode of operation and applied to all keyboard input, no matter in which context it occurred. They have to some extent fallen into obsolescence following the advent of mouse-driven user interface and the availability of keyboard and mouse macros in applications, such as word processors and spreadsheets, which makes it possible to create application-sensitive keyboard macros.
Keyboard macros have in more recent times come to life as a method of exploiting the economy of massively multiplayer online role-playing game (MMORPG)s. By tirelessly performing a boring, repetitive, but low risk action, a player running a macro can earn a large amount of the game's currency. This effect is even larger when a macro-using player operates multiple accounts simultaneously, or operates the accounts for a large amount of time each day. As this money is generated without human intervention, it can dramatically upset the economy of the game by causing runaway inflation. For this reason, use of macros is a violation of the TOS or EULA of most MMORPGs, and administrators of MMORPGs fight a continual war to identify and punish macro users.
The programmers' text editor Emacs (short for "editing macros") follows this idea to a conclusion. In effect, most of the editor is made of macros. Emacs was originally devised as a set of macros in the editing language TECO; it was later ported to dialects of Lisp.
Visual Basic for Applications (VBA) is a programming language included in Microsoft Office and some other applications. However, its function has evolved from and replaced the macro languages which were originally included in some of these applications.
Frame Technology's frame macros have their own command syntax but can also contain text in any language. Each frame is both a generic component in a hierarchy of nested subassemblies, and a procedure for integrating itself with its subassembly frames (a recursive process that resolves integration conflicts in favor of higher level subassemblies). The outputs are custom documents, typically compileable source modules. Frame Technology can avoid the proliferation of similar but subtly different components, an issue that has plagued software development since the invention of macros and subroutines.
Most assembly languages have less powerful procedural macro facilities, for example allowing a block of code to be repeated N times for loop unrolling; but these have a completely different syntax from the actual assembly language.
Being able to choose the order of evaluation (see lazy evaluation and non-strict functions) enables the creation of new syntactic constructs (e.g. control structures) indistinguishable from those built into the language. For instance, in a Lisp dialect that has
cond but lacks
if, it is possible to define the latter in terms of the former using macros.
Macros also make it possible to define data languages which are immediately compiled into code, which means that constructs such as state machines can be implemented in a way that is both natural and efficient.
Topinka Launches BrightStart - Illinois' New College Savings Program: Statement from IL State Treasurer Judy Baar Topinka
Apr 27, 2000; Chicago Citizen 04-27-2000 Topinka Launches BrightStart - Illinois' New College Savings Program:Statement from IL State Treasurer...
AGENCY FOR INTERNATIONAL DEVELOPMENT ISSUES NOTICE ABOUT EMERGENCY FOOD ASSISTANCE ANNUAL PROGRAM STATEMENT
Apr 27, 2011; WASHINGTON, April 27 -- Agency For International Development has issued a notice called: FY 2011 Emergency Food Assistance Annual...
AGENCY FOR INTERNATIONAL DEVELOPMENT ISSUES GRANTS NOTICE ON "FY2012 GLOBAL DEVELOPMENT ALLIANCE (GDA) ANNUAL PROGRAM STATEMENT (APS)"
Mar 09, 2012; WASHINGTON, March 6 -- Agency for International Development issues grants notice to increase the sustainable impact of our...
BUREAU OF SOUTH AND CENTRAL ASIAN AFFAIRS ISSUES GRANTS NOTICE ON "U.S. EMBASSY KABUL PAS ANNUAL PROGRAM STATEMENT"
Nov 16, 2011; WASHINGTON, Nov. 14 -- Bureau of South and Central Asian Affairs issues grants notice for U. S. Embassy Kabul PAS Annual Program...