John Cocke (1925 - 2002)
John Cocke was born in Charlotte, North Carolina, on 30 May 1925.
His father, Norman Cocke, was the president of Duke Power Company and faculty member at Duke University. From a very early age, John was a very curious child. At the age of 6 years, he was given his first bike, and the first thing he did was to strip it down piece by piece, much to his mother’s horror. This restlessness and his active mind stayed with him for life. A colleague from IBM described his behaviour thus: “Suddenly, John came up with an idea. He would go looking for the person in the department that he thought knew most about this topic and told him all about it. As he was speaking, suddenly, John had an idea…”
In 1956, after receiving his PhD in Mathematics from Duke University, he started to work at IBM’s research laboratories, where he was to remain until his retirement
In the early days of computer architecture, there was a tendency to complicate machine microprogramming languages and to simplify the processor as much as possible. In 1975, John Cocke worked on the development of the IBM 801. It was suggested that the large number of software instructions and their complexity made no sense, as the computer, albeit simpler, had to deal with many heterogeneous instructions, which slowed it down. Cocke considered the opposite viewpoint, that is, implementing a more complex processor that was, however, able to execute as many instructions as possible. In order to simplify the processor design (which would result in a higher speed), the microinstruction set had to be very small and as homogeneous as possible. The programmer workload would be greater, but the completed program would run faster. This design method is known in computer architecture as RISC (reduced instruction set computing) as opposed to the classic CISC (complex instruction set computing).
This design philosophy was revived and popularized in the early 1980s by Berkeley and Stanford researchers Hennessy and Patterson. Nowadays, it is widespread in mainframe computers and, for example, in Apple desktop computers.
During his long career as a researcher, Cocke also played a crucial role in compiler development. He discovered and systematized many fundamental transformations now in routine use, such as operator strength reduction, common subexpression elimination, register allocation, constant propagation and dead code removal.
The awards that he received include having been made IBM fellow and having received the ACM Turing Award in 1987. In 1991 he was awarded the United States National Medal of Technology. He finally retired in 1992.
John Cocke died on 16 July 2002 in Valhalla.