39

diagram showing ASM to binary compilationThe C Programming Language was originally developed by Dennis Ritchie who also co-designed the Unix operating system with which development of the language was closely intertwined.

Is there a specific individual or research group credited with developing the assembler and assembly language syntax that we are now familiar with?

0

4 Answers 4

82

According to Wikipedia, the first assembly language, "Contracted Notation", was developed in 1947 by the late Kathleen Booth (née Britten). The language doesn’t look anything like “modern” assembly though (see the end of this paper); it’s more a mathematical representation of computer operations.

The first mnemonic-based assembler was developed by Maurice Wilkes and David Wheeler for the EDSAC, with single-letter mnemonics; see Assemblers and Loaders, page 7.

The first symbolic assembler is credited to Nathaniel Rochester, who developed an assembler for the IBM 701 in 1954. I can’t find an example of the mnemonics and syntax used then (in any case, mnemonics tended to be assembler-specific rather than machine-specific).

The first modern-looking assembler was the GAS (Generalized Assembly System) for the IBM 7090, developed by a number of people (including Douglas McIlroy, later of UNIX fame, and George Mealy) in the early sixties.

26
  • 29
    Since the gender discrepancy in the title was brought up, I feel compelled to mention that the first compiler was also created by a woman (Grace Hopper), as was the first computer program (Ada Lovelace). In fact, back when "computer" was a job title, most computers were women too. The male-dominated industry we have today is a very recent development.
    – T.E.D.
    Commented Apr 26, 2018 at 14:05
  • 4
    @T.E.D. that was not the first compiler, and COBOL was not de novo but was based on several other languages.
    – JDługosz
    Commented Apr 26, 2018 at 17:23
  • 10
    @JDługosz regardless of whether A-0 is considered as a full compiler or not, and whether or not Autocode beat it to be the first compiler, Grace Hopper’s work on the topic was ground-breaking (so much so that no one believed her at first...). Commented Apr 26, 2018 at 17:52
  • 10
    @StephenKitt her implementation was unique not in being a translator but in using English-like words rather than math notation. When I studied IBM 360 assembly language, I thought writing a program to turn simple calculator-like expressions into code was an obvious thing to do; that would be a proto-FORTRAN. In fact the term "compiler" comes from these simple helper systems, well before full-blown language translators.
    – JDługosz
    Commented Apr 26, 2018 at 19:30
  • 18
    @forest - re Ada Lovelace, yes you're obviously right that the first programs were written by Babbage himself. OTOH to relegate Lovelace's role to "assistant" does do her a disservice; she did write many programs herself, and independently invented a number of concepts, including the first realisation that while Babbage's plans for the analytical engine operated entirely on numbers, those numbers could be used as stand-ins for abstract entities. So she was the first to imagine new applications of computers beyond their designer's original purposes, which is the true calling of a programmer.
    – Jules
    Commented Apr 27, 2018 at 7:09
29

As an addition to Stephen's extensive list, Zuse's 'Planfertigungsteil' (a modern translation might be Program Manufacturing Device) as implemented in 1942-1945 for the Z4 computer might be worth mentioning. While not a program, but a hardware device, it allowed the use of abstract operation names as well as symbolic addresses. There was even functionality to check a program for valid operations during entry.

Of course this 'assembler' was quite different from today's notation, but so was the machine.

The Z4 became fully operational for the first time in April 1945, just days before the war ended (in Europe).

So if we include hardware based assemblers, Konrad Zuse is another candidate.

3
  • 2
    I actually always found it ironic I had to find Zuse by change due to it not being mentioned in school. It is said the Z3 was already an advanced machine. Commented Apr 29, 2018 at 8:32
  • 5
    @RuiFRibeiro The Z3 is an amazing piece of hardware. It's basically an FPU, but it already works with normalized floating point numbers, has infinities and error signalling for invalid operations and supports five operations (the usual four plus square roots). And all that at a time where the rest of the world considered real numbers to be infeasible for computers.
    – fuz
    Commented Apr 29, 2018 at 12:11
  • 1
    @RuiFRibeiro I'm right nowl istening to a speech of Horst Zuse at the VCFe in Munich.
    – Raffzahn
    Commented Apr 29, 2018 at 13:11
6

You might find it interesting to read Don Knuth and Luis Trabb Pardo's paper 'The Early Development of Programming Languages' which lists a good number of early coding and programming systems. Precisely what you count as an 'assembly language' will influence which of these you take to be the first, but you should find a good candidate here.

2
  • 1
    That is indeed an interesting paper, but it skips the opcode-mnemonic stage in language development which to me corresponds the most closely to “modern” assembly language. It is very useful though to understand the mathematical representation styles used in very early languages. I’d say the language closest to assembly language in the paper is the first AUTOCODE, but even that is one step up from assembly language. Commented Apr 26, 2018 at 14:22
  • 1
    @StephenKitt Except, the 'opcode-mnemonic' stage is in itself rather fuzzy concept, as it's not (always) a simple one-on-one relation. Just think Z80 or 8086 where one mnemonic can have various opcodes depending on the arguments used, while others (like /360) got a strict 1:1.
    – Raffzahn
    Commented Jun 14, 2018 at 22:59
-4

While not actually built (at least not in its perfect, theoretical form), I'd propose the Turing Machine (1936) as the precursor of assembly languages. A machine with a given set of states and their transitions is controlled by the inputs received in the tape, which can move forward or backward. As for the actually implemented assembly languages, I think it's all said in the other answers.

7
  • 10
    You're saying that the state transition table is the assembly language of the TM? Isn't it more analogous to the machine language?
    – Barmar
    Commented Apr 25, 2018 at 23:55
  • 4
    Erm, the Question was about an Assembler, a way to translate human input in symbolic form into code needed to operate the machine to run it.
    – Raffzahn
    Commented Apr 26, 2018 at 7:13
  • 1
    I misinterpreted the question. My bad. I understand the "father of" something is not the first something individual, but its generator (in other words, the father of the first assembly language isn't the first assembly language itself). But reading the question again, realized that it's about the author herself. Commented Apr 26, 2018 at 8:16
  • 1
    The fact that assembly language is human-readable is a huge difference from machine code.
    – pipe
    Commented Apr 26, 2018 at 8:28
  • 3
    Assembly and machine code is not a one on one relation - usually. For example a LDA mnemonic on a 6502 can result in 6 different machinecodes,depending on the data/addressing used.
    – Raffzahn
    Commented Apr 26, 2018 at 21:10

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .