Reflections on Computing
I enjoy programming computers. I have been programming since 1971 on a wide variety of machines ranging from massively parallel mainframes to tiny embedded microcontrollers. Through this experience I have developed a number of likes and dislikes in programming language design and machine architecture. I have used most of the major languages except COBOL, and have done really serious programming in Fortran, assembly language, LISP, POP-2, Prolog, C, Objective-C, and Java. I have also used many experimental and special-purpose languages such as TRAC. My worst experience was spending three months to debug somebody else's 50,000 lines of C++ into a working program, and even now I am reluctant to have anything more to do with C++.
I now program almost exclusively in Java. It is a good general purpose programming language. Automatic storage allocation brings the flexibility needed in non-numerical programming. Using the ample API avoids the need to reinvent lots of basic building blocks. The threading model can use SMP-aware architectures transparently.
My favourite operating system is OS X. No other operating system, neither in history nor in the foreseeable future, can outclass OS X for ease of use and stability. I want the operating system to help me without my noticing it, not get in my way. I began using Unix when it first appeared in the middle 1970s, and moved to NeXTStep in the early 1990s when it combined Unix with an excellent graphics user interface. OS X, the successor of NeXTStep, is the ideal combination of a solid Unix foundation with a high quality and consistent graphical user interface. I have no connection with the supplier of OS X, but I do prefer to use its products.