John Backus, Computer Science pioneer

Just read an unexpected article by Garrison Keillor (American author and humorist) that pays tribute to the accomplishments of scientists, inventors, nerds in general, and in particular, to John W. Backus, Computer Science pioneer, who died in 2007 at the age of 82.

Backus directed the team that invented Fortran, the first widely used high-level programming language. Fortran was the second programming language I learned (after Pascal).  In the following semester I learned an assembly language (TOPS10).  Learning assembler certainly gave you an appreciation for the magic performed by a high level language like Fortran.  While the original Fortran language was crude by today’s standards, it was a real breakthrough of early Computer Science.  As expert assembly language programmers, the engineers on the development team put all of their skills and favorite tricks, into the first Fortran compiler.  When examining the resulting assembly language output generated by their first Fortran programs, they would often be surprised at the novel code that would emerge when the compiler unexpectedly combined two or more techniques from different practitioners.

Backus also co-invented the Backus-Naur Form (BNF) meta-syntax. This notation provides a precise and elegant method for defining the lexical and syntactic rules of a formal language such as programming language or data structure syntax.  My introduction to BNF in a Sophomore level programming class was another a-ha! moment for me as a developing programmer.  Learning BNF was relatively easy, you can learn it in an hour or two.  But by methodically applying a simple set of rules, it was possible to design the syntax of a complex formal language and specify it precisely using BNF.  From there it was then fairly straightforward to mechanically translate that BNF specification by hand into a program that could automatically parse and recognize the syntax you designed.

After our introduction to BNF, our assignment was to use BNF as an aid in the design and creation of a program that would correctly translate a number (such as 2.387) into proper English (Two thousand, three hundred, eighty seven). The program was to be written in Algol (my first exposure to that language) and after exorcising the compile time errors, it was the first non-trivial computer program I had ever written that had no logic errors on its first execution. At the time, without the road-map provided by the BNF, I would have been at a loss as to how to even begin to solve the problem in any programming language, let alone one that I had just been exposed to the week before. This was powerful stuff!

One Response to “John Backus, Computer Science pioneer”

  1. ken mikelinich says:

    In my industrial telecom days we utilized ASN.1 or Abstract Syntax Notation. ASN.1 is a standard way to describe a message (a unit of application data) that can be sent or received in a network. ASN.1 tends to be very grammar efficient. Tie this in with BER or PER (Basic Encoding Rules or Packed Encoding Rules) and you have the foundation for many telecom protocols out in the Internet and PSTN today. One my early projects entailed writing encoders/decoders for GR303 and V5x protocols. These were the North American and European replacements for the older SLC96 systems.

    Basically these protocols handled the information exchange between the Central Office’s (CO) digital switch and the remote terminal (RT). RT’s are the funny looking stacks of green boxes one sees in neighborhoods. These boxes tie in the last mile of copper from your house, from there your voice call is multiplexed and backhauled on a T1 (or E1) circuit back to the digital switch. The GR303 and V5x protocols not only enabled channel muxing, but would indicate on-hook, off-hook, caller ID and other states.

Leave a Reply

Panorama theme by Themocracy