Knitting as programming
infotrope.net
infotrope.net
It was one of the first programmable things of any kind, and its punch card approach inspired Babbage (who was a contemporary - yes this was programming, industrial style in 1815)
Similar differentiation apply to cooking and other disciplines which require discrete, well-defined steps to arrive at a precise result, the number of dishes in any given cousine are tiny compared to the menus of recent innovative chefs.
This I think is a great analogy for programming, there are programmers who learn their trade from copying code, reading guides, etc. and these guys can churn out useful code. However, unless you think about what you are doing, formalize it, reify it, and search for ways to improve it you won't invent anything new.
Also you know appear to know little about real world cooking outside of a recent, highly-distorted, and publishing industry-driven world view. Recipes may list precise ingredient measurements (though most don't), but they're rarely intended to be used as-is and there's huge variation in detail. Even more so, almost all cuisines are more a collection of common techniques and ingredients than a set of well-defined dishes, with much regional variation, and huge historical change. Most European-descended Americans and much of Europe use a _tiny_ subset of the ingredients our ancestors did and have completely dropped entire genres of food. Just take a look at the actual variety of citrus fruits versus what we use and the huge range of uses they were put to.
It's like someone decided Java was the only programming language, the standard library was the only library allowed, and btw we needed to get rid of half the syntax! In that metaphor you're lionizing a couple of programmers for making the jump to Objective-C or C# while somehow overlooking the vast majority of programmers using everything from for decades Perl to ML and mixing things up left and right. Yeah, a lot of chefs & professional cooks (these are terms of art, not just a fame thing) try new things... and no, they're not even close to the only people doing so. In fact it's mostly a recent thing that chefs are innovators, for a very long time they were the ones working precisely to recipe. Consider the formalization of French haute cuisine by Antonin Carême & Georges Escoffier and the subsequent rigid adherence even now.
Try learning cooking from a cook - not a book - experimenting for yourself, and reading one of the many books like "Cookwise" that actually get into what happens and how to change it. It's the antithesis of hacking to assume there's nothing to learn and no room for experimenting!
http://en.wikipedia.org/wiki/Core_rope_memory
"Software written by MIT programmers was woven into core rope memory by female workers in factories. Some programmers nicknamed the finished product LOL memory, for Little Old Lady memory"
But knitting is not the only programming language for string-based objects. There’s weaving, crochet, lace, macramé, and more—ostensibly you could make all the same things with these techniques as you can with knitting, but you will go about many things differently, and different languages are suited to different kinds of problems.
But this shouldn’t be surprising: programming is a craft, and all crafts have parallels.
To a first approximation a lot of them are - simple geometric/topological rules applied in a loop, a small number of branches, occasionally recursion. There's a huge amount of technique and no small amount of technical knowledge in making them work with a relatively high friction material with variable tensile strength & stretch. Execution on this stuff often involves keeping more mental state than most of the programming I do so clearly it's not always as simple an automata as it might seem, but there's a kinship.
Knitting markup language: http://www.knitml.com
Knitting is an acceptable LISP: http://wetpixels.blogspot.co.uk/2009/02/knitting-is-acceptab...
But then again, documenting any algorithmic process could count as programming by those standards, say, baking a cake.