What lead to the discovery?

Why did the second programmer succeed and the first fail?

The simple answer is that the FORTRAN program is O(N*N), while the APL program is O(N Log N). As we know from data structures, the difference in asympototic execution time will make a major difference when N becomes large. But to simply say this misses an important point.

It was true what they said about APL and FORTRAN. APL is interpreted, and is generally slower than FORTRAN. But the difference was that the two languages naturally led the programmer to view the world in a different way.

The FORTRAN culture values loops, arrays, and simple and direct programs that can be efficiently compiled.

APL is a language designed for manipulating matricies of two or more dimensions. Operations such as sorting are built into the language, are in fact represented by a single one-character symbol. Because they are such an intrinsic part of the language, and APL community values finding novel uses for matrix operations.

Thus, the APL culture natrually led the programmer to find a solution that in this case happened to be much faster than the solution that naturally occurred to the FORTRAN programmer.

The important point to observe is that the FORTRAN language did not preclude a solution like that found by the APL programmer, simply that it would not be natural. The same is true of languages and paradigms in general. We will explore this in the next slide.

[audio] [real] Text to accompany slide08, in Chapter 1 of An Introduction to Object-Oriented Programming