Yer a Developer, Harry – Programming Is Magic
spin.atomicobject.com
spin.atomicobject.com
His mentor's response was "Wait what? Are you sure you said skölir, and not sköliro?"
Turns out while he had meant to say "May luck and happiness follow you and may you be shielded from misfortune", he instead said "May luck and happiness follow you and may you be a shield from misfortune". Because of this, the girl grew up prescient, supernaturally aware of when other people were in danger or about to be harmed, and compelled to do anything in her power to protect them from it.
I'm pretty sure I've seen problems that are almost as bad in some of the codebases that I've worked with.
Why didn't he just bless the kid with "May you be a killer of Galbatorix, and may no one else die in the process."
But, I like the connection to semantic errors.
People like magic narratives because magic acts as a force multiplier for a single person. The force multiplier in real life is the ability to organize a bunch of other people to do stuff for you. The real Merlin is Steve Jobs or Obama. Just like magic, the ability to do this is generally an inborn talent (theoretically it could be learned, but you can't do anything to change whether it's the kind of thing you like to do, just like you can't do anything to make yourself like golf enough to make yourself practice as much as Tiger Woods).
There are weaknesses to this comparison, of course. In real life when you are using social engineering to further your goals, you become beholden to the network of interests that support you (e.g. politicians, customers). Also, in real life the ability to gain positions of influence is not distributed in any egalitarian manner.
One of the reasons magic is appealing to programmer types, is because they tend to be weaker in these areas, and they wish that they could have access to the same sort of power, but based on the things they are good at (studying tomes, complex incantations) rather than the things they aren't good at (networking, salesmanship). If magic were real, I would definitely be dedicating a lot of time to mastering that, but even knowing the power of politics I am not particularly interested in becoming a politician.
"We are about to study the idea of a computational process. Computational processes are abstract beings that inhabit computers. As they evolve, processes manipulate other abstract things called data. The evolution of a process is directed by a pattern of rules called a program. People create programs to direct processes. In effect, we conjure the spirits of the computer with our spells."
"A computational process is indeed much like a sorcerer's idea of a spirit. It cannot be seen or touched. It is not composed of matter at all. However, it is very real. It can perform intellectual work. It can answer questions. It can affect the world by disbursing money at a bank or by controlling a robot arm in a factory. The programs we use to conjure processes are like a sorcerer's spells. They are carefully composed from symbolic expressions in arcane and esoteric programming languages that prescribe the tasks we want our processes to perform."
The only other force multipliers I am aware of that have the same property are language and math.
SICP source if anyone wants to read the whole thing. http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-9.html#...
what makes magic magic is that the forces you manipulate and control come for "free" - not in the sense that you don't have to do any work to access them, but in the sense that any output over and above your input is drawn from some more fundamental reservoir of universal energy.
"The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds castles in the air, from air, creating by exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures.
Yet the program construct, unlike the poet’s words, is real in the sense that it moves and works, producing visible outputs separate from the construct itself. It prints results, draws pictures, produces sounds, moves arms."
Maybe see yourself as a modern magician instead: you have to work hard, you have to do the tough job, you have to know every tiny part that can go wrong during the show. Only then your work will appear to the audience as a great piece of wizardry.
Never fool yourself!
I absolutely agree. My intent wasn't to describe programming as magic in the sense that it's easy or as simple/nonsensical as waving a wand around. It's very much a discipline. I was drawing the parallel to magic in that it's an ethereal exercise—you describe what you want to happen, and then the letter of your description comes to pass. Getting this description to accurately model a moving system is a huge part of what makes the field so challenging.
dyeje was on the mark with their fantastic quote further up the thread:
"The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds castles in the air, from air, creating by exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures. Yet the program construct, unlike the poet’s words, is real in the sense that it moves and works, producing visible outputs separate from the construct itself. It prints results, draws pictures, produces sounds, moves arms."