34

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?

  • Comments are not for extended discussion; this conversation has been moved to chat. – Chenmunka Apr 26 '18 at 17:39
  • 1
    @jwzumwalt Please stop rolling this back. If you want to change the title to the (gendered) original, at least keep the image alt-text. – wizzwizz4 Apr 27 '18 at 15:33
  • 1
    This is the wrong forum for "grammatical bleeding heart sexism political opinions". Within reason, the OP has the say on Stack Exchange as to the wording expressing their thought. I am not opposed to grammatical correction - just sexism political viewpoints. The title and explanation expresses in the fewest words the thought I wished to convey and is grammatically correct. – jwzumwalt Apr 27 '18 at 16:43
  • 3
    No, the orignal poster doesn't have the final say, especially when they chose to use sexist inflammatory language over a simpler title using plain and clear language. meta.stackexchange.com/questions/291153/… meta.stackexchange.com/questions/77901/… – Ross Ridge Apr 27 '18 at 17:36
  • This is being discussed on meta here. – wizzwizz4 May 1 '18 at 15:44
71

According to Wikipedia, the first assembly language was developed in 1947 by 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.

  • 23
    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. Apr 26 '18 at 14:05
  • 3
    @T.E.D. that was not the first compiler, and COBOL was not de novo but was based on several other languages. – JDługosz Apr 26 '18 at 17:23
  • 4
    @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...). – Stephen Kitt Apr 26 '18 at 17:52
  • 5
    @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 Apr 26 '18 at 19:30
  • 8
    @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 Apr 27 '18 at 7:09
23

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.

  • 1
    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. – Rui F Ribeiro Apr 29 '18 at 8:32
  • 1
    @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 Apr 29 '18 at 12:11
  • 1
    @RuiFRibeiro I'm right nowl istening to a speech of Horst Zuse at the VCFe in Munich. – Raffzahn Apr 29 '18 at 13:11
5

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.

  • 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. – Stephen Kitt Apr 26 '18 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 Jun 14 '18 at 22:59
-2

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.

  • 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 Apr 25 '18 at 23:55
  • 3
    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 Apr 26 '18 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. – Jesus Alonso Abad Apr 26 '18 at 8:16
  • 1
    The fact that assembly language is human-readable is a huge difference from machine code. – pipe Apr 26 '18 at 8:28
  • 2
    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 Apr 26 '18 at 21:10

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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