Posts tagged: BNF

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!

Panorama theme by Themocracy