http:^^dri.cornell.edu^pub^davis^history.html

来自「This data set contains WWW-pages collect」· HTML 代码 · 共 257 行

HTML
257
字号
MIME-Version: 1.0
Server: CERN/3.0pre6
Date: Sunday, 24-Nov-96 23:12:42 GMT
Content-Type: text/html
Content-Length: 13824
Last-Modified: Friday, 24-May-96 22:41:07 GMT

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN//2.0"><HTML><HEAD><TITLE>my life at the keyboard</TITLE></HEAD><BODY>Computers have been part of my culture all my life.  My father workedfor IBM.  Every so often we'd visit him at work, and see the hugecomputer rooms.  Sometimes he'd bring home pieces of computers for usto see. But I had no idea what these things really did.  They werejust cool looking.  Sometime when I was 16 or 17 my father broughthome some IBM documentation on programming languages and flowcharting.I tried to read them, but they did not make any sense to me - but thisis not surprising, since IBM isn't exactly famous for clearly writtendocumentation. <P> In 1973, I came to MIT.  During the first few weeks, I went on atour of the MIT Artificial Intelligence Laboratory, which in thosedays included the Logo Lab.  I don't remember why I went on the tour,but I remember that I was with several other freshmen with whom Ilived at my fraternity - but I can't recall if we were all together atthe AI Lab because we were together as new members of the frat, orwhether I came to join that frat because of liking the people I met atthe AI Lab.  The former seems more likely, especially since the househad a strong representation at the AI Lab.  In any event, we wereplaying with Logo and were left pretty much alone - we had to figureit out by ourselves.  We had a lot of fun with it. <P> So as an undergraduate I would sometimes come to the AI Lab toplay (or "hack") with Logo, and I began to learn to program.  I don'tremember anyone teaching me - I think we must have taught each other.Sometimes I would try to use Lisp on the PDP-10 but it was toomysterious for me to figure out.  That summer, I worked for IBM as anoperator - a low-level position calling for about as much skill as anespresso maker.  But in my spare time at work I was allowed to use thecomputer language APL, and this time I found a textbook for thelanguage so I was able to learn some of it.  I still had no idea howlanguages actually worked.  I just used them. <P> In my sophomore year, I took the course 6.031 (which is theancestor of the course now known as 6.001).  This course explained howa computer language could be designed using a simpler language asbuilding blocks.  It also tried to give us some sense of the ideas ofmodularity and top down design, and most crucially, the idea ofabstraction - that one can make a program which represents someconcept or set of agreements, and thereafter use it without needing toknow how the concept was implemented.  The program becomes a "blackbox" whose internal details are irrelevant.  <P>Later that year I took a second course which explained how the simplest sorts ofcomputer languages (machine language) could be implemented by hardware circuits.I was now able to understand computer programming down to the level ofindividual "logic gates", if I wanted to.  This reinforced my sense of the valueof keeping different levels separate in order to build large, complex structure. Later, though, I would learn that one of the hardest problems is deciding whereto draw the modularity lines, and that putting one's borders in the wrong placemakes a system slow and difficult to use. <P> The next major step in learning programming was a student job atthe Architecture Machine Group (which is an ancestor of the MediaLaboratory).  In those days, a group of students at the ArcMac weredeveloping a new operating system for use around the lab.  Theoperating system, being new, was full of bugs, and these in turndemanded that there be constructed many software tools for examiningthe structures used by the program.  I had the opportunity to lookover the shoulders of those who were more experienced, and even to usethe tools a bit to poke around.  It was while using one of these toolsthat I suddenly understood that there is no actual meaning in thepatterns of binary ones and zeros in machine, and no significantdifference between the information on a disk and in themachine's memory.  A given region of memory can be an instruction, ora number, or a letter, or a picture.  The difference is solely amatter of interpretation.  This was perhaps the biggest "aha" in mylife, and I was happy that other people were aroundwho could understand it and why it mattered. <P>It was while working at this same job that I began to think not just about howto make a program do something but how to make it easy for someone else to use.This was also a step towards being a professional programmer, a worker who makesartifacts for others to use, not just for his/her own delight in making it.  Itwas also during this time that I also began to be good enough a designer thatother people started taking my ideas for design and function seriously. <P> After I graduated, I began to work in the real world as aprogrammer.  My first job was at Imlac in Needham MA.  The Imlac was aminicomputer (what you'd call a workstation now) that was sort of anexpanded PDP-8 with a built in vector display processor.  It wasprogrammed in assembly language.  Imlac's big product was aphototypsetting system, CES, which took advantage of the rastergraphics to offer a kind of WYSIWYG interface for the typesetting.This was before laser printers.<P> I kept this first job only a year, and then moved to a new jobwith the (Honeywell) <AHREF="http://www.best.com/~thvv/multics.html">Multics</A>Multics is an operating system of great historical importance.  It wasfirst developed as a partnership by MIT and General Electric as anexperiment in a practical, very large time-sharing system.  At thetime, it was the very cutting edge of the state of the art in computerscience.  By the time I joined the Multics group, those days werepast, but the group retained some measure of pride, and still had veryhigh standards, even though time had passed them by.  I learnedseveral important ideas from working with the Multics people.  First,my understanding of "interface" (the relation between a program and auser) expanded to include the idea that the user might be anotherprogrammer.  It was important to make programs as building blocks byprogrammers whose needs you could not expect to easily anticipate.  Asecond idea was that programs were meant to be read by people as wellas machines.  The Multics group had developed a <AHREF="http://www.best.com/~thvv/mspp.html">programmingprocess</A> which required that all modification to the system bedescribed and justified to a group of senior programmers before beingwritten, and be read by some person other than the author before beinginstalled.  This was necessary because Multics was far too large forany single person to understand it.  The coordination that this reviewboard provided kept Multics stable and consistent as it grew andchanged for more than 15 years.  Though Multics is now nearlyforgotten, it set a mark for software quality never equalled.  Workingwith Multics taught me to be careful in my designs, to always to allowroom for unanticipated future changes, and to expect people to read myprograms. <P> In my work at Multics I came to know many people, but one ofparticular note was Bernie Greenberg.  Bernie was one of the mostbrilliant programmers I have ever met.  In addition, he was a verytalented musician, playing both rock guitar and baroque harpsichordwith equal ease, and he spoke several languages.  Bernie alsore-introduced me to Lisp.  At that time, the MIT ArtificialIntelligence Laboratory was developing the first Lisp Machines andBernie was friends with several of the key workers on this project.  Ilearned Lisp from Bernie not long before he left Multics to join a newstartup company to commercialize the Lisp Machine.  I soon left aswell, to join Logo Computer Systems, a new firm which intended toimplement a version of Logo for the Apple II home computer. <P> Logo Computer Systems was the first time I was ever with astartup firm.  Instead of the formal regulations of Multics, I waswith an adhoc group which included several close friends and lovers,as well as some bizarre personalities.  At LCSI we worked very, veryhard, because we knew that money was in short supply.  We would oftenwork for 16 to 20 hours in a row.  We did almost all our work in Lisp,on Lisp Machines, and I gradually became an expert with this language.In the end, we managed to produce our product on time, but then mostof us left the company as a result of political battles with thehigher management. <P>This turned out to be a blessing though, because Alan Kay had just gone toAtari, which was then quite rich, and Alan was setting up research labs inCalifornia and Cambridge.  Almost the entire Boston staff of LCSI came to formthe Atari Cambridge Research Center.  Atari gave us money to design the bestwork environment we could think of, and freedom to work on problems thatinterested us.  Not only was I able to work on music, I was able to hire one ofmy friends, Tom Trobaugh, to work with me.  At Atari I knew the happiness ofworking with a partner on problems we really cared about using the most powerfulcomputers available.  Alas, Atari began to lose money, and one day it closed thelab.<P> After Atari went under I enrolled in the MIT's Media Lab, as oneof the first contingent of doctoral students.<H3>The Media Lab</H3>The Media Lab encourages students to set their own directions, in factit insists on it.  This has both pros and cons.  The advantage is thatyou learn to be independent, to think outside the common assumptionsof the field.  The drawback is that you don't always have thecompanionship of others while learning.  In my own case, I becameinterested in the linguistic phenomenon called "paraverbals", thoseinarticulate noises like "uh huh" and "hmmm" that help makeconversation run smoothly.  There's a pretty large literature on thesubject, but I had to discover it on my own, and I'm sure it wouldhave gone faster with a guide.  On the other hand, with an experiencedauthority controlling my learning, I wouldn't have done what I did. <P>The other important thing about the Media Lab is the constant focus ondemonstrating one's work.  Some people complain about it, but it'svery important.  To do a good demo, you have to be able to explainwhat you're doing and why it matters to a smart but uninformed personwith just a few short sentences.  You have to learn to be clear, andyou have to learn to express your idea for the benefit of the learner,not the teacher.  And you have to learn grace under pressure.I wish everyone learned these skills. <P>One of the first projects I worked on was the "phonetic dictionary".Remember when you were a kid, and you asked a grown-up for the meaningof a word, and they told you to look it up in the dictionary?  That'sa fine idea, except it's hard to do when you've only heard the word,and so don't know how it's spelled.  This is especially true forEnglish, with its bizarre spelling rules.  The phonetic dictionaryallows you to look up a word by spelling it according to how itsounds, not how it's spelled.  You write some approximation of thesound of the word, and the system consults a dictionary that'sorganized by pronunciation.  The key to the thing was being able toaccept a wide range of "phonetic" spellings.  For example, for theword "headache" you might write "hedayk" or "hedake".  I was pleasedto see this project mentioned on the very first page of StewartBrand's book about the Lab. <P>My supervisor was Chris Schmandt, known to all by his login name"geek". I could write at length about his knowledge, but there arelots of smart people in the world.  He has two qualities that are morerare.  First, he's no autocrat.  You can argue with him.  There's noway to put on an air of superiority when you call yourself "geek".Second, and even more valuable, he kept his perspective.  Inparticular, he was always taking off for a week or two at a time tobring his (then) baby daughter out into the wilderness.I learned from him that a computer will happily sit idle for a week,while a week lost from fathering is gone for ever. <P>My major project was the "Back Seat Driver", which was a car thatcould give you driving instructions in the city of Boston.  It had astreet map (so it knew the roads), a navigation system (so it knewwhere it was), and a speech synthesizer (so it could talk to you.).To actually make this work, I needed a car, and not just any car.  Thenavigation system was supplied by our sponsor, a Japanese electronicsfirm, and was designed to work with only one type of car, a top of theline luxury sedan.  I also needed not one but two cellular phones inthe car for the communications.   The Media Lab bought me what Ineeded and I kept the keys.  I was surely the only graduate student inthe USA with such lab equipment. <P>  One day I was demonstrating the Back SeatDriver to a group from General Motors.  When I took them out for aride, they had a great time shooting pictures of each another gettinginto a Japanese car.  Off we went driving.  As usually happened, atone point the driver missed a turn.  Normally, the consequence wasthat the BSD would calmly inform the driver of the fact and plan a newroute, only in this case, the driver was a former race car driver, andhe quickly made an (illegal) U Turn without even slowing down, amaneouver even seasoned Boston drivers never attempted.  This causedthe program to crash, but I guess that's better than crashing the car. <P> I'll have to add something here about the demise of Lisp Machinesand the rise of Unix, and about becoming obsolete.</BODY></HTML>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?