Kevin's logo.

Blog

The Art of Computer Programming

The endless guidebook of a bottomless discipline.

Rays of Enlightenment

After completing my coding bootcamp, I felt like I had stepped into a global subculture of highly competent self-starters. A world in which the vocational standards were calibrated to at least one standard deviation above anything yet asked of me. And to an extent, my feeling was correct: the work is intellectually demanding and would never dumb itself down on my behalf. It requires everyone involved to spend the rest of their careers fording a river of emerging technologies just to stay conversant, to say nothing of remaining useful. Moreover, anyone wishing to rise high on the currents of trending tech also needs to understand computer programming’s historic milestones.

Like any good geometer knows, finding a ray’s direction requires nothing more than two points and a straightedge. Technological trends are no different: study the wares and writings of yesteryear, familiarize yourself with those of today, and then cast an informed gaze into the future. Of course, the true trajectory of innovation is unknowable until observed, so prediction is at best generalized in the observed direction with only the occasional bullseye. Or, keeping with the geometric metaphor, though the inverse-square law may pull your imprecise ray of prediction away from the ray of true events as time extends into the future, the knowledge of what was and what is will set your straightedge close to what will be.

Genesis

Computer science is a conglomeration of a number of disciplines, each with their own progenitors. The force that any one of those disciplines exerted upon the development of computer science has waxed and waned with the decades and would only muddy the waters if treated as a decisive genesis. Even treating the point at which all disciplines converged to make computing possible is still too primordial for my current professional needs. That the Countess of Lovelace may have written the first computational algorithm in the nineteenth century has no bearing on the use of recursion in functional programming in the twenty-first. Instead, I will begin with a work that reveals computer science to be a semi-autonomous, self-actualizing field whose influence on the disciplines of its forefathers is now symbiotic and developmentally contemporaneous.

Image of The Art of Computer Programming book collection.
The Art of Computer Programming, volumes 1-4A

Donald Knuth, pronounced “ka-NOOTH” (“Knuth: Frequently Asked Questions”), began working on his magnum opus, The Art of Computer Programming, sixty years ago. “I started out in 1962 to write a single book with this sequence of chapters, but I soon found that it was more important to treat the subjects in depth rather than to skim over them lightly” (Knuth vii). Long story, short: he has yet to complete it. Such meticulosity is both a blessing and a curse for programmers. It produces superior code with minimal bugs, but projects without hard deadlines become behemoths of perpetual growth. It propels individuals to heights worthy of the ACM Turing Award, but leaves anxious acolytes without a completed canon.

The End of Knowledge

A curious scholar such as Dr. Knuth will suss out ever more useful curiosities from the computational frontier and record them for posterity so long as there is life in his mind and are curiosities to be sussed. There is no end to what can be known about the unbounded abstractions seeded by the Boolean constraints of 0 and 1. The breadth is such that I have to remind myself that I will never be a coder of single-digit ranking, let alone a preeminent computer scientist; but my diminutive aptitude makes the binary playground appear orders-of-magnitude larger and, as such, a more resilient repository of mystery and wonder. The value of most things is proportional to the work expended to acquire them; so the knowledge I glean will never cause a well-meaning, though condescending, contemporary to pat me on the back to remind me, “easy come, easy go.”

With respect to the relative microcosm of Dr. Knuth’s treatise, the 1997 manuscript in and of itself has more content than a coding catechumen such as myself could ever hope to consume. I have begun to work through the first set of exercises and wrote a solution to the Euclidean Algorithm assignment. The number of solutions to Euclid’s algorithm is finite but simultaneously uncountable. No matter where on the exponential scale of problem-solving one may find oneself, there is always a beautiful, variegated view of infinitesimally-receding patterns of logical possibility below and one infinitely-expanding above.

Epilogue

There is a comfort in knowing that the canon continues. It gives the extant volumes an energy particular to life yet growing — that old knowledge is directly flowering new. So, like a watchful gardener, I wait with bated palate.


Works Cited

“Knuth: Frequently Asked Questions.” Cs.stanford.edu, cs.stanford.edu/~knuth/faq.html. Accessed 8 July 2021.

Knuth, Donald E. The Art of Computer Programming. Vol. 1. Addison-Wesley, 1997.