Catch up on stories from the past week (and beyond) at the Slashdot story archive

 



Forgot your password?
typodupeerror
×
Programming

Computing Pioneer Who Invented the First Assembly Language Dies at Age 100 (msn.com) 42

"Kathleen Booth, who has died aged 100, co-designed of one of the world's first operational computers and wrote two of the earliest books on computer design and programming," the Telegraph wrote this week.

"She was also credited with the invention of the first assembly language, a programming language designed to be readable by users." In 1946 she joined a team of mathematicians under Andrew Booth at Birkbeck College undertaking calculations for the scientists working on the X-ray crystallography images which contributed to the discovery of the double helix shape of DNA....

To help the number-crunching involved Booth had embarked on building a computing machine called the Automatic Relay Calculator or ARC, and in 1947 Kathleen accompanied him on a six-month visit to Princeton University, where they consulted John von Neumann, who had developed the idea of storing programs in a computer. On their return to England they co-wrote General Considerations in the Design of an All Purpose Electronic Digital Computer, and went on to make modifications to the original ARC to incorporate the lessons learnt.

Kathleen devised the ARC assembly language for the computer and designed the assembler.

In 1950 Kathleen took a PhD in applied mathematics and the same year she and Andrew Booth were married. In 1953 they cowrote Automatic Digital Calculators, which included the general principles involved in the new "Planning and Coding"programming style.

The Booths remained at Birkbeck until 1962 working on other computer designs including the All Purpose Electronic (X) Computer (Apexc, the forerunner of the ICT 1200 computer which became a bestseller in the 1960s), for which Kathleen published the seminal Programming for an Automatic Digital Calculator in 1958. The previous year she and her husband had co-founded the School of Computer Science and Information Systems at Birkbeck.

"The APE(X)C design was commercialized and sold as the HEC by the British Tabulating Machine Co Ltd, which eventually became ICL," remembers the Register, sharing a 2010 video about the machine (along with several links for "Further Reading.")
This discussion has been archived. No new comments can be posted.

Computing Pioneer Who Invented the First Assembly Language Dies at Age 100

Comments Filter:
  • by JeremyWH ( 1354361 ) on Saturday October 29, 2022 @08:39PM (#63009411)
    Computing Pioneer Who Invented the First Assembly Language Dies at Age 1100100
  • Aw (Score:5, Insightful)

    by BrendaEM ( 871664 ) on Saturday October 29, 2022 @08:44PM (#63009415) Homepage
    No jokes, just respect.
  • by michaelmalak ( 91262 ) <michael@michaelmalak.com> on Saturday October 29, 2022 @08:50PM (#63009419) Homepage
    Assembly language was such a large step up from machine coding (and toggling bit switches) that it was called [researchgate.net] "automatic programming". That abstract refers to the 1956 SOAP assembler [bitsavers.org].
    • by sjames ( 1099 ) on Saturday October 29, 2022 @09:13PM (#63009439) Homepage Journal

      I have actually done some programming directly in machine code (very little). Assembly is a huge step up and represents an even bigger shift from directing a machine's actions to a fine grained expression of program logic.

      • by v1 ( 525388 )

        it's just assigning pneumonics to numbers. I don't see how this is really all that different than just the substitution of abbreviations for operations.
        machine: A9
        assy: LDA
        description: Load Accumulator
        It's just finding a middle ground between description and machine code, something that's shorter but still easily recognized. Like a nickname.

        And yes I've coded in assembly, and machine, and microcode. (all self-taught) The only slightly off thing is that (in the example above) "LDA" can represent several o

        • by sjames ( 1099 )

          Leaving it to the assembler to choose the correct variant as well as having labels represents a shift towards semantic programming. Perhaps not huge in the overall scheme of things but huge from the standpoint that it was the first step. It also represented a particular and useful more abstract view of the processor and it's instructions.

          I'm not so sure any potential for bugs arising from a single mnemonic representing multiple opcodes outweighed the programmer choosing the wrong opcode variant himself.

        • by K. S. Kyosuke ( 729550 ) on Sunday October 30, 2022 @12:37AM (#63009603)

          The best part about assembly vs machine code: labels! Insert or remove code and the assembler recalculates the (relative and absolute) jumps for you.

          Maybe that is why in some languages, assembly language is called "symbolic address language". People who named it that way did recognize the major advantage of that.

          • by dsgrntlxmply ( 610492 ) on Sunday October 30, 2022 @04:53AM (#63009785)

            Symbolic addressing: alpha names or small-space number codes for branch/jump destinations, is the greatest payback for stepwise development. Memory constraints were severe and assembler capabilities grew as memory sizes and machine cost targets increased enough to permit more complexity in the assembler. My background was IBM 1401, and the Wiki article on 1401 SPS is informative.

            Early examples of those machines were essentially precision wood chippers with a restaurant refrigerator sized cabinet of electronics over a small memory space of magnetic cores, and a potentially larger memory space of dead trees. An early assembler might take your source deck of punched cards, punch an "intermediate deck" of partially translated instructions, then take the intermediate deck back in to resolve marked addresses against a "label table" of branch destinations and data fields, punching a final object deck. This in turn required a small loader program of a few cards to be placed at the front, with the first card being written under constraints of the hardware card program loader function.

        • Assemblers - e.g. your mentioned Merlin - also got very early Macros and some of them, e.g. the Assembler coming with the UCSD Pascal environment had even stuff close to procedures.

        • In Greek: pneumos lung, breathe. Mnemos memory. Mnemonics are keywords to remember the codes behind. And yes, I've programmed in machine code too.
        • by narcc ( 412956 ) on Sunday October 30, 2022 @04:32AM (#63009771) Journal

          I don't see how this is really all that different than just the substitution of abbreviations for operations.

          There isn't exactly a 1:1 substitution here. But beyond that, there is a degree of abstraction from the raw operation of the machine. Remember that you're looking back at things from a modern context. While I don't know about those old machines specifically, I do know that op codes were what they were because each bit had some function in directing the operation of the machine. Giving names to those bit patterns is an abstraction that isn't necessary obvious.

          The PDP-8 might be a good example here, specifically the OPR instruction. At first, programmers needed to carefully construct operations by setting individual bits. It wasn't until later that we assessed each possible combination, grouped, and named them. It's a nice analog to the invention of assembly.

          The only slightly off thing is that (in the example above) "LDA" can represent several opcode variants

          It's actually really common for the same mnemonic to refer to multiple opcodes. This might not seem like a big deal to you when it's just a few variations, but it gets pretty wild with some processors. In the CP1610, for example, some mnemonics refer to as many as 64 opcodes. MIPS is even crazier with its 32-bit wide instructions; the advantages of an assembler there becomes obvious very quickly. Some assemblers even include mnemonics which translate to multiple machine instructions. This is common with RISC, as you might imagine.

          If anything, I found it more likely to cause b bugs due to the similar interpretations.

          You must not have done much work in it then. Using assembly is absolutely going to reduce errors over using machine code. If you think LDA #$00 look similar enough to LDA $00 to cause problems, things aren't going to be any better when you see A500 instead of A900.

          That's the 6502, which is nice and easy compared to a lot of other processors. x86 has an absolutely absurd number of instructions. If you think working directly in machine language there is going to cause fewer bugs, you're out of your mind.

          Anyhow, sjames is absolutely right about this. Assembly languages are a big step ahead of machine code.

          • The 6502 family, the 8080/Z80 family, the 6800 family, and now ARM and RISC-V families have lots of DNA in the agar of her work.

            And while SmallTalk as an environment shaped the movement from human interface to thinking in UI, the evolution of it all has been stunning. None of this would have evolved had not a few bright people (Von Neumann, Booth, K&R, etc) kept adding DNA to what we use without thinking today.

        • by Joce640k ( 829181 ) on Sunday October 30, 2022 @05:07AM (#63009803) Homepage

          it's just assigning pneumonics to numbers. I don't see how this is really all that different than just the substitution of abbreviations for operations.

          Simple:

          a) Assemblers calculate the jump offsets for you, you don't have to sit and count how many bytes away it is.

          b) It's a lot easier to insert a few instructions in the middle of an assembly language function than it is in a big block of hexadecimal. In hexadecimal you often end up patching a jump instruction in the middle of the function then do thigns and jump back again.

          I've written a lot of Hexadecimal. I remember aligning my functions to 16-byte boundaries to leave little bits of space everywhere in case they need patching later.

          (it also makes it easy to see the start of functions, the extra padding makes the functions look like paragraphs in a book when you view them in hex)

        • by clovis ( 4684 )

          The other thing that assembler did for us was not just for the creation of the program, but for me it was that I could read someone else's program and figure out what the heck they were trying to do, in a fraction of the time.

        • Pneumonics... Whoosh!

          (Mnemonics)

      • I've done machine code and bit switching (followed by WRITE, INCREASE and more bit switching) and finally some assembler. From that point on almost every high-level language felt like a more or less sophisticated collection of assembler macros to me. Funny thing was that this didn't become obvious to me before I did a little Fortrash IV for a fun project with punch cards. Fortran isn't that far from assembler in many ways - on the other hand it's not too far from C. Anyway, obsolete languages can give you a
  • Death by overflow? (Score:3, Insightful)

    by quenda ( 644621 ) on Saturday October 29, 2022 @09:10PM (#63009431)

    She should have allowed 3 digits for the age field.

    > No jokes, just respect.

    Come on she was 100. Can't we do both?
    And while we are at it respect for her more famous husband, Andrew Booth, who probably did not get a slashdot post for his obituary.

    • Oh, and why was this modded troll? A troll mod? Or a slip?

      Anyway, this begs the question (pun intended) who was the mind behind Andrew Booth?

  • "She was also credited with the invention of the first assembly language, a programming language designed to be readable by users."

    That explain it for me.

    John von Neumann, who had developed the idea of storing programs in a computer.

    Slowdown with the technical language /s
  • Last I wrote assembly was in college. Macros were incredibly useful in assembler. I'm curious if the early assemblers could do macros or was it just mnemonic instructions with symbolic addresses?
    • Back then I'm sure it was just mnemonics, the assembler was vastly simpler than it was now, and most of this was done by hand. Macros get complicated fast and you need some memory, whereas these machines had very little memory.

  • by SuperKendall ( 25149 ) on Saturday October 29, 2022 @10:38PM (#63009521)

    Kind of surprising that with all of the press in recent years that people like Ada Lovelace and Grace Hopper got, that Kathleen Booth is not mentioned more often... maybe because developing an assembly language is just too esoteric?

    Makes me think I really need to hunt down better and more comprehensive computer programming history books and read through them sometime.

  • is she 0xDEADBEEF (sorry ;-p)
  • ... to rule them all.
  • My most recent foray in to assembly was porting some legacy embedded software to a more modern development environment, from Sun Programmer's Workbench on Solaris (yikes!) to gcc and make on Linux. Since the code ran on the bare metal there were some pieces I needed to code in assembly, translating the original assembly to something gas understood. All the while making sure my code was compatible with the compiled code it linked against.

    This started as one of those Friday afternoon playing around sessions

    • I have always been fascinated by applications written with Assembler, unfortunately now it is rarely used. When I was reading scientific articles about the first space mission at school, I became interested in Assembler because the equipment was programmed with it. Further, using the writing service https://papersowl.com/research-papers [papersowl.com], I found various other projects from the scientific community that were implemented using Assembler, but unfortunately I could not learn it well and therefore I use C++. But
  • Yet most people have never heard that name, and maybe never will. Wouldn't know who that is if they did :-(

Technology is dominated by those who manage what they do not understand.

Working...