Изменить стиль страницы

I didn’t feel comfortable

hacking up the code of a Real Programmer.12

Geek Sublime: The Beauty of Code, the Code of Beauty i_001.jpg

Despite the allusion above to “the *macho* side of programming,” the non-geek may not fully grasp that within the culture of programmers, Mel es muy macho. The Real Programmer squints his eyes, does his work, and rides into the horizon to the whistling notes of Ennio Morricone. To you, Steve Wozniak may be that cuddly penguin who was on a few episodes of Dancing with the Stars, and by all accounts, he really is the good, generous man one sees in interviews. But within the imaginations of programmers, Woz is also a hard man, an Original Gangsta: he wired together his television set and a keyboard and a bunch of chips on a circuit board and so created the Apple I computer. Then he realized he needed a programming language for the microprocessor he’d used, and none existed, so Woz — who had never taken a language-design class — read a couple of books, wrote a compiler, and then wrote a programming language called Integer BASIC in machine code. And when we say “wrote” this programming language we mean that he wrote the assembly code in a paper notebook on the right side of the pages, and then transcribed it into machine code on the left.13 And he did all this while holding down a full-time job at Hewlett-Packard: “I designed two computers and cassette tape interfaces and printer interfaces and serial ports and I wrote a Basic and all this application software, I wrote demos, and I did all this moonlighting, all in a year.”14

That second computer was the Apple II, the machine that defined personal computing, that is on every list of the greatest computers ever made. Woz designed all the hardware and all the circuit boards and all the software that went into the Apple II, while the other Steve spewed marketing talk at potential investors and customers on the phone. Every piece and bit and byte of that computer was done by Woz, and not one bug has ever been found, “not one bug in the hardware, not one bug in the software.”15 The circuit design of the Apple II is widely considered to be astonishingly beautiful, as close to perfection as one can get in engineering.

Woz did both hardware and software. Woz created a programming language in machine code. Woz is hardcore.

Geek Sublime: The Beauty of Code, the Code of Beauty i_001.jpg

Working in machine code is very hard, so assembly code was created by adding some mnemonics to machine code. Working in assembly code is still hard; doing anything complex — like making games — in it is insanely hard. On programmers.stackexchange.com, a user going by the nom de guerre “DFectuoso” asked, “Are there any famous one-man-army programmers?”16 During the ensuing discussion about lone coders, one of the participants mentioned Chris Sawyer, who wrote the hugely successful 1999 game, RollerCoaster Tycoon: “He had a little help with music and graphics, but otherwise RollerCoaster Tycoon was all him. Amazing, especially given the physics engine. Last but not least, the entire game was written in assembly language.” And another commenter responded, “He wrote that in assembly?! Jesus Christ. I think I need to go boil my brain now.”

Sawyer’s achievements are indeed brain-boilingly immense, but why and how does a lone Scottish geek toiling obsessively over his virtual roller coasters become a “one-man-army”? Why do the Einsteins of programming affect — in their online personas and sometimes in person — a blustery True Grit swagger? Therein lies one of the tales that Nathan Ensmenger tells in his illuminating social history of computing, The Computer Boys Take Over: Computers, Programmers, and the Politics of Technical Expertise. Ensmenger does for computing in North America what historians of science have done for other disciplines: locate the development of knowledge and technology firmly within a messy matrix of human agency and politics; there is no orderly teleological progress from triumph to triumph, only competing interests that struggle over authority, access, and power. The computer boys of Ensmenger’s title are the early software-builders, the pioneers; the irony, as Ensmenger shows, is that many of them were women. In fact, the earliest programmers were all women: the “ENIAC girls” were women recruited by the (male) engineers and managers of the Electronic Numerical Integrator and Computer. The creators of the ENIAC had a clear division of labor in mind: the male scientist or “planner” would do the hard intellectual work of creating the mathematical algorithms and structures necessary to solve a problem; the female “coder” would then carry out the “static” manual labor of entering this plan into the machine by manipulating plugboard wiring and thousands of switches. Numerous wires had to be plugged and switches flipped for each machine instruction; each problem required thousands of instructions, so wiring — which was the programming — would take several days, and checking the wiring would take another few.17

Geek Sublime: The Beauty of Code, the Code of Beauty i_026.jpg

This division of tasks of course echoed the hierarchies already present; men did the thinking and inventing, women were clerks. “The telephone switchboard-like appearance of the ENIAC programming cable-and-plug panels,” Ensmenger writes, “reinforced the notion that programmers were mere machine operators, that programming was more handicraft than science, more feminine than masculine, more mechanical than intellectual.”18 The planners considered the coding process so transparently simple that they couldn’t imagine that once in the machines, their algorithms might fault and hang, might need to be stopped. One of the ENIAC programmers, Betty Holberton, had to work very hard to convince John von Neumann that programs were complex and therefore fragile:

Geek Sublime: The Beauty of Code, the Code of Beauty i_027.jpg

But to my astonishment, [Dr von Neumann] never mentioned a stop instruction. So I did coyly say, “Don’t we need a stop instruction in this machine?” He said, “No we don’t need a stop instruction. We have all these empty sockets here that just let it go to bed.” And I went back home and I was really alarmed. After all, we had debugged the machine day and night for months just trying to get jobs on it.

So the next week when I came up with some alterations in the code, I approached him again with the same question. He gave me the same answer. Well I really got red in the face. I was so excited and I really wanted to tell him off. And I said, “But Dr. von Neumann, we are programmers and we sometimes make mistakes.” He nodded his head and the stop order went in.19

Once von Neumann and everyone else involved with computers understood this hitherto unimaginable fact — that programming, translating algorithms into the language of machines, was very difficult — programmers became valuable commodities. A 1959 Price Waterhouse report warned that “high quality individuals are the key to top grade programming. Why? Purely and simply because much of the work involved is exacting and difficult enough to require real intellectual ability and above average personal characteristics.”20 Such individuals weren’t easy to find, and as corporations looked for competitive advantage by computerizing their business processes, a shortage resulted. Corporations set up training programmes, fly-by-night vocational schools sprang up guaranteeing jobs: “There’s room for everyone. The industry needs people. You’ve got what it takes.”21

In 1967, Cosmopolitan magazine carried an article titled “The Computer Girls” that emphasized that programming was a field in which there was “no sex discrimination in hiring”—“every company that makes or uses computers hires women to program them … If a girl is qualified, she’s got the job.” Admiral Grace Hopper, programming pioneer, assured the Cosmo readers that programming was “just like planning a dinner … You have to plan ahead and schedule everything so it’s ready when you need it. Programming requires patience and the ability to handle detail. Women are ‘naturals’ at computer programming.”22