49

The prefix macro- is normally used for large things like macroeconomics and macroscopic. How did it come to be used to describe text macros in the programming world?

2
  • 4
    Note that makros normally means "long" in Greek. Jul 29, 2011 at 5:40
  • I have just experienced a revelation. I thought macro == micro. Doh. Nov 16, 2011 at 5:26

3 Answers 3

53

In computing, "macro" was first used with assemblers, which are utilities that perform simple translation of readable mnemonics into machine instructions. Normally a single line in an input to a basic assembler produces a single machine instruction output; the line is commonly referred to as an instruction. Productivity was increased when the use of what were termed macro-instructions were invented. Macro- is of course a standard prefix from the Greek meaning large, and a macroinstruction was a new kind of input line which would generate several machine instructions.

The OED shows a revealing quote from 1959:

The built-in system macro instructions in SCAT presently consist of (1) two macros for generating the‥standard entry and exit from subroutines, (2) a set of debugging macros.

This shows use of both the full form, macro instruction, and the abbreviated form, macro. (Quote is from Greenwald & Kane, "The Share 709 System: Programming and Modification", Journal of the ACM 6:133. SCAT ("Symbolic Coder And Translator") was an early macro-assembler.)

2
  • 3
    +1. This SCAT is "SHARE Compiler, Assembler, Translator", not "Symbolic Coder And Translator". And I've found some 1958 references.
    – Hugo
    Nov 2, 2011 at 17:08
  • So basically it came from Greek meaning "big" or "a lot" and in reference to computers refers to a programming instruction which results in more than one line of machine code which is "a lot" for a computer to do: handle more than one line of machine code? Or put another way a line of programming code which results in more than one machine instruction is a macroinstruction because it it bigger in that it results in more machine instructions? This idea then evolved into any single instruction which performs multiple actions such as a keyboard macro or excel macro?
    – user49620
    Aug 12, 2013 at 20:43
17

From the Computing Dictionary:

The term "macro" originated in early assemblers, which encouraged the use of macros as a structuring and information-hiding device. During the early 1970s, macro assemblers became ubiquitous, and sometimes quite as powerful and expensive as HLLs, only to fall from favour as improving compiler technology marginalised assembly language programming (see languages of choice). Nowadays the term is most often used in connection with the C preprocessor, Lisp, or one of several special-purpose languages built around a macro-expansion facility (such as TeX or Unix's troff suite). Indeed, the meaning has drifted enough that the collective "macros" is now sometimes used for code in any special-purpose application control language (whether or not the language is actually translated by text expansion), and for macro-like entities such as the "keyboard macros" supported in some text editors (and PC TSRs or Macintosh INIT/CDEV keyboard enhancers).

Another explanation is that it is a shortening of "macroinstruction" which means:

a single computer instruction that initiates a set of instructions to perform a specific task

0
10

To follow on from mgkrebbs' fine answer, the SCAT in question is a SHARE 709 assembly program: "SHARE Compiler, Assembler, Translator". Both SCAT and macro are mentioned in papers presented to the Association for Computing Machinery and IIT Research Institute in 1958.

The earliest, ACM's Preprints of summaries of papers presented at the national meeting, tells us "The compiler expands each macro into one or more words of machine code ..." (1958 confirmation):

The compiler expands each macro into one or more words of machine code

The next, IITRI's Computer Applications: Proceedings, shows we might have called them pseudos:

pseudo- or macro-instructions

Finally, macroinstruction is found in 1956's Proceedings of the Western Joint Computer Conference:

The macroinstruction is like an open-ended subroutine in that it calls forth from a library...

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.