7

A friend and I were debating on the origin of the word "compiler". A quick google search led me to discover that Grace Hopper coined the term. But I'm not sure how or on what basis did she coin the term, which is what I was wondering.

As far as I know, a "compiler" would sound like something that brings or put things together. But that's not a very accurate description of what a compiler does, which translates one computer language into another. So one would think that the term "translator" is more suited than "compiler". Despite that, the compiler term was coined, and I would like to understand why.

  • I'll be interested to know the answer too, because I agree, translator does sound better. "Compiler" would seem to apply more to what is traditionally called a "linker". – Fraser Orr Dec 8 '14 at 15:45
  • 2
    @FraserOrr: From WP: "The first compiler was written by Grace Hopper, in 1952, for the A-0 programming language. The A-0 functioned more as a loader or linker than the modern notion of a compiler." – Dan Bron Dec 8 '14 at 15:47
  • 2
    You need to understand that "compiling" a program, at that time, involved running stacks of punch cards through a card reader (sometimes twice). Often one would select components of a program as individual decks of cards that you would then stack together. The computer would read the cards, spit out more cards, then you would read those in. – Hot Licks Dec 8 '14 at 17:12
  • So the term seems to be referring to the fact that you're compiling different cards together into one program. – Jez Dec 8 '14 at 18:28
  • @Jez - That's probably about as close as you will get. – Hot Licks Dec 8 '14 at 18:49
3

Wikipedia gives the evolution of the term:

Towards the end of the 1950s, machine-independent programming languages were first proposed. Subsequently several experimental compilers were developed. The first compiler was written by Grace Hopper, in 1952, for the A-0 programming language.The A-0 functioned more as a loader or linker than the modern notion of a compiler. The first autocode and its compiler were developed by Alick Glennie in 1952 for the Mark 1 computer at the University of Manchester and is considered by some to be the first compiled programming language. The FORTRAN team led by John Backus at IBM is generally credited as having introduced the first complete compiler in 1957. COBOL was an early language to be compiled on multiple architectures, in 1960.

http://en.wikipedia.org/wiki/Compiler#History

The earliest recorded use in the OED is from 1953:

1953 Computers & Automation May 3 If a compiling routine or compiler is used, when a word is examined, the required subroutine is transcribed..into a running program.

More specifically, it's from an article called "Compiling Routines" by Grace Hopper. For more info and an extract of exactly what Hopper meant by compiling -- copying subroutines around and adjusting memory locations -- see http://longstreet.typepad.com/thesciencebookstore/2014/09/jf-grace-hopper-1953-grace-murray-hopper-compiling-routines-incomputers-and-automation-volume-2-no4-may-1953-11.html

  • If Hopper was trying to describe a program that acts similar to a modern linker, where different routines are gathered together, then the word "compiler" is very suitable. According to the comment by Dan Bron, this is the case. I guess the word compiler changed into its modern definition over time, and the word "linker" was assigned to what used to be called the compiler. At least this is from what I understood from these answers and the comments. – 9a3eedi Dec 9 '14 at 4:56
1

A programming language compiler is at one end of a spectrum of translating programs;
at the other end is the programming language interpreter.
Both may exist for a given language.

A compiler produces a machine code file from a written program, but does not execute it.
Typically compiled languages include FORTRAN, C, and Pascal.

An interpreter executes commands in a written program, but does not produce a code file.
Typically intepreted languages include Java, awk, and Python.

The meaning of compile is nicely summed up in this dictionary definition:

• produce (something, esp. a list, report, or book) by assembling information collected from other sources : the local authority must compile a list of taxpayers.
• collect (information) in order to produce something :
the figures were compiled from a survey of 2,000 schoolchildren.
• accumulate (a specified score) : the 49ers have compiled a league-leading 14–2 record.

The machine code generated by a compiler is a different "language", hence "from other sources".
It is collected together in order to produce something (results of running the program).
It is accumulated over several readings of the program to produce a final product.

As for the etymology of compile, it comes from Latin compilare ‘plunder or plagiarize.’
Make of that what you will.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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