On my desk I have a book, The Little Schemer. The book teaches about recursion. It is a computer programming book and uses a specific language, Scheme, a dialect of LISP (in fact, the prior editions were called The Little LISPer). It is not, however, a book about Scheme or LISP programming per se.
It is a book about recursion.
Recursion is one of the most, if not the most difficult topics in computer science. It is also a concept in mathematics, but then all of computer science is a subset of mathematics (computer engineering is not). The only concept I find as difficult is the idea of pointers, or computer memory in general.
The forward to The Little Schemer is by Gerald J. Sussman. He is one of three authors of another book on the shelves next to my desk, The Structure and Interpretation of Computer Programs and was the introduction to computer science text at MIT. The lectures, given for a group inside HP, are available online.
These will be among the last of the computer books I give up as I transition from a career writing computer software to one writing fiction over the next half decade. I’m not purging many computer books just yet in case my plans change, either the time line or the actual direction. I will keep them after I stop programming for pay.
Of late I am more inclined to purchase books about writing fiction when buying technical books. Yesterday I purchased Voice by James Scott Bell. In Bell’s book Just Write he includes a writer’s self-test. He breaks fiction into several components such as voice, dialog, and character. He then invites the reader to test himself on a scale of 1–10, order the list, and then read two books on the lowest one. For the next few works, he suggests you focus on that component, engage in focused practice on that area, then move on to the next lowest.
I rank nothing in my writing above 4, and that mostly to not have everything at the same level. I tested yesterday. Voice was the only 1. For three months I’m going to study and engage in focused practice on voice.
In other words, I’ve picked a fundamental to work.
Recursion is fundamental for a computer programmer.
Sadly, fundamentals are something we are getting further and further away from in so many fields. Even my beloved Structure and Interpretation of Computer Programs is dying off. MIT has replaced the class that used it with a Python class.
I have nothing against Python per se. However, as a garbage collected language, you can’t teach pointers. It lacks true closures, making it a less than idea language for teaching advanced computer science. It is not a bad first language. Eric Raymond has recommended it as a first language for years. While I disagree, it isn’t indefensible. For non-programmers in numeric fields who will only learn one language, it is probably the best choice. A good deal of effort made it the language for computation.
What is more concerning is a reason given by Dr. Sussman for the change. He thinks it is not essential for an introduction to the subject to create understanding of fundamental principles. In a general class on computing this is a defensible idea. People learning to write in order to communicate while pursuing other fields don’t worry about voice. They worry about clarity.
But a working programmer who doesn’t master the fundamentals of the field will never advance to the highest level. The longer you delay requiring learning the fundamentals, the more bad habits and mistaken models the learner will need to unlearn. In the worst case, the more likely someone will have invested a great deal of time and energy in a field only to learn they cannot master it.
This is not some second tier state school sustained by our replacement of the high school diploma with the bachelor’s degree. Not understanding fundamentals is not fundamental at MIT anymore.
It worries me that a lesson I first encountered in a young adult novel, Taran Wanderer escapes professors at one of the nation’s top technical school. Passion will at some point fail if there isn’t a basic level of ability. The sooner the teacher reveals to the student this lack, if it exists, the better for the student.
Then again, fundamentals such as “don’t play in the street” and “don’t burn down other people’s neighborhoods” are not being learned by college students.
That is why I’m working on craft more than on getting items up and for sale. The Visions of Cireb is up. Putting it up was a huge milestone in terms of committing to the field, but now it is time to learn my craft, to learn my fundamentals.
I’d rather learn well now and be slow in starting my career than get started only to find I can’t learn bad habits enough to never go pro.