How close to the metal must programmers be?
Recursion predates computers, but computers’ ability to repeat the same task over and over made recursion a common approach to solving complex problems. Factorials might be a classic example of what recursion can do, but recursion enables many more divide-and-conquer approaches, as well as useful approaches to infinite loops.
You may be nodding your head, thinking “sure, but we don’t need to think about that any more.” Or you may be nodding your head, thinking “if only anyone remembered this stuff any more.”
Until a year or so ago I was in the first camp. I knew the basics of recursion, applying it once in a while to calculations and tree-walking, but it didn’t seem central. Loops and queries of various kinds seemed to make recursion a marginal topic. Usually, seeing recursion was a sign for me to move on, marking a story as “more magic than I needed to know about.”
Erlang forced me to learn recursion—well beyond factorials and trees. Single-assignment variables are a stern master, making me rethink most of the logic I’d used for the last thirty years. There were pleasant surprises, too, like the usefulness of infinite loops in Erlang processes. By the end of writing Introducing Erlang, I had my first genuinely fond feelings for recursion.
Now that I think I have a handle on recursion, I’m paying much more attention to it than I used to, and suspecting I’ve crossed a line. It seems like every language has its own dividing line between amateur and expert, but recursion seems to be a line that crosses programming broadly. Languages meant to be approachable go out of their way to make recursion invisible, while languages meant for experts (or those aspiring to be experts) leave recursion in the open.
"Code Simplicity" author Max Kanat-Alexander on the elegance and utility of simple code.
Simple code is born from planning, discipline and grinding work. But as author Max Kanat-Alexander notes in this interview, the benefits of simple code are worth the considerable effort it requires.
A good hacker is hard to find, a cheap data center is hard to get to, and the app store model is hard to ignore
An argument for the value of highly productive programmers, datacenters head for the country to save a few bucks, and the app store model seems to be taking over the industry, and not just for mobile.
Adobe immobilized mobile Flash, Eclipse joins the vanity language fad, and one man asks if brainteasers really find good programmers.
Flash isn't dead, but Adobe is checking into hospice options. Eclipse adds another language to the list of ones almost but not exactly like Java. And how do you find good programmers? Probably not with brainteasers.
Proprietary software has its place.
James Turner says the notion that proprietary software is somehow dirty or a corruption of principles ignores the realities of competition, economics, and context.
A list from O'Reilly's Free to Choose Cyber-Monday promotion offers a fascinating view of what's on the minds of the core audience.
Alan Taylor's side project — Boston.com's Big Picture photo blog — is notable for its simplicity and its residence within a large media organization.