<<

The

Rob Pike [email protected]−labs.com

ABSTRACT

Sam EI =n EnJAH=?JELA mKlJE-BElA JANJ A@EJoH EnJAn@A@ BoH >EJm=F @EIFl=OI. ) JANJK=l ?omm=n@ l=nCK=CA IKFFlAmAnJI JDA moKIA-@HELAn, ?KJ-=n@- F=IJA EnJAHB=?A Jo m=kA ?omFlAN oH HAFAJEJELA A@EJEnC J=IkI A=IO Jo IFA?­ EBO. 6DA l=nCK=CA EI ?D=H=?JAHEzA@ >O JDA ?omFoIEJEon oB HACKl=H ANFHAI­ IEonI Jo @AI?HE>A JDA IJHK?JKHA oB JDA JANJ >AEnC mo@EBEA@. 6DA JHA=JmAnJ oB BElAI =I = @=J=>=IA,MEJD?D=nCAIloCCA@=I=JomE?JH=nI=?JEonI,CKE@AI JDA EmFlAmAnJ=JEon =n@ m=kAI = CAnAH=l ߢKn@oߣ mA?D=nEIm IJH=ECDJBoH­ M=H@. Sam EI EmFlAmAnJA@ =I JMo FHo?AIIAI ?onnA?JA@ >O = loM- >=n@ME@JD IJHA=m, onA FHo?AII D=n@lEnC JDA @EIFl=O =n@ JDA oJDAH JDA A@EJEnC =lCoHEJDmI. 6DAHABoHA EJ ?=n HKn MEJD JDA @EIFl=O FHo?AII En = >EJ­ m=F JAHmEn=l =n@ JDA A@EJoH on = lo?=l DoIJ, MEJD >oJD FHo?AIIAI on = >EJm=F-AGKEFFA@ DoIJ, oH MEJD JDA @EIFl=O FHo?AII En JDA JAHmEn=l =n@ JDA A@EJoH En = HAmoJA DoIJ. *O IKFFHAIIEnC JDA @EIFl=O FHo?AII, EJ ?=n ALAnHKnMEJDoKJ=>EJm=FJAHmEn=l. 6DEI F=FAH EI HAFHEnJA@ BHom 5oBJM=HAߞ2H=?JE?A =n@ -NFAHEAn?A, 8ol %, nKm>AH , FF. & !-&"#, NoLAm>AH '&%. 6DA F=FAH D=I noJ >AAn KF@=JA@ BoH JDA 2l=n ' m=nK=lI. )lJDoKCD Sam D=I noJ ?D=nCA@ mK?D IEn?A JDA F=FAH M=I MHEJJAn, JDA IOIJAm =HoKn@ EJ ?AHJ=EnlO D=I. NonAJDA­ lAII, JDA @AI?HEFJEon DAHA IJEll IJ=n@I =I JDA >AIJ EnJHo@K?JEon Jo JDA A@E­ JoH.

Introduction Sam EI=n EnJAH=?JELA JANJ A@EJoH JD=J ?om>EnAI ?KJ-=n@-F=IJA EnJAH=?JELA A@EJEnC MEJD =n KnKIK=l ?omm=n@ l=nCK=CA >=IA@ on JDA ?omFoIEJEon oB HACKl=H ANFHAIIEonI. 1J EI MHEJ­ JAn =I JMo FHoCH=mI: onA, JDA ߢDoIJ F=HJ,ߣ HKnI on = 7N1: IOIJAm =n@ EmFlAmAnJI JDA ?omm=n@ l=nCK=CA =n@ FHoLE@AI BElA =??AII; JDA oJDAH, JDA ߢJAHmEn=l F=HJ,ߣ HKnI =IOn­ ?DHonoKIlO on = m=?DEnA MEJD = moKIA =n@ >EJm=F @EIFl=O =n@ IKFFoHJI JDA @EIFl=O =n@ EnJAH=?JELA A@EJEnC. 6DA DoIJ F=HJ m=O >A ALAn HKn En EIol=JEon on =n oH@En=HO JAHmEn=l Jo A@EJ JANJ KIEnC JDA ?omm=n@ l=nCK=CA, mK?D lEkA = JH=@EJEon=l lEnA A@EJoH, MEJDoKJ =IIEIJ=n?A BHom = moKIA oH @EIFl=O. MoIJ oBJAn, JDA JAHmEn=l F=HJ HKnI on = *lEJ JAHmE­ n=l =?JK=llO on = 6AlAJOFA ,M, #$ , JDA FHo@K?JEon LAHIEon oB JDA *lEJ, MDoIA DoIJ ?onnA?JEon EI =n oH@En=HO '$ >FI 45 ! lEnk; on JDA 57N ?omFKJAH JDA DoIJ =n@ @EI­ Fl=OFHo?AIIAIHKnon=IEnClAm=?DEnA,?onnA?JA@>O=FEFA. Sam A@EJI KnEnJAHFHAJA@ )5+11 JANJ. 1J D=I no tag">B=?ElEJEAI BoH mKlJEFlA BonJI, CH=FDE?I oH J=>lAI, KnlEkA M=?9HEJA, *H=Lo,! 6EoC=" oH L=H=.# )lIo KnlEkA JDAm, EJ D=I = HE?D ?om­ m=n@ l=nCK=CA. 6DHoKCDoKJ JDEI F=FAH, JDA FDH=IA language HABAHI Jo JANJK=l ?omm=n@I; ?omm=n@I =?JEL=JA@ BHom JDA moKIA BoHm JDA mouse language. Sam @ALAloFA@ =I =n A@EJoH BoH KIA >O FHoCH=mmAHI, =n@ JHEAI Jo joEn JDA IJOlAI oB JDA $,% 7N1: JANJ A@EJoH MEJD JD=J oB EnJAH=?JELA ?KJ-=n@-F=IJA A@EJoHI >O FHoLE@EnC = ­ ­

?omBoHJ=>lA moKIA-@HELAn EnJAHB=?A Jo = FHoCH=m MEJD = IolE@ ?omm=n@ l=nCK=CA @HELAn >O HACKl=H ANFHAIIEonI. 6DA ?omm=n@ l=nCK=CA @ALAloFA@ moHA JD=n JDA moKIA l=nCK=CA, =n@ =?GKEHA@ = noJ=JEon BoH @AI?HE>EnC JDA IJHK?JKHA oB BElAI moHA HE?DlO JD=n =I=IAGKAn?AoBlEnAI,KIEnC=@=J=BloM-lEkAIOnJ=NBoHIFA?EBOEnC?D=nCAI. 6DA EnJAH=?JELA IJOlA M=I EnBlKAn?A@ >O jim, =n A=HlO ?KJ-=n@-F=IJA A@EJoH BoH JDA & *lEJ, =n@ >O mux, JDA *lEJ MEn@oM IOIJAm. Mux mAHCAI JDA oHECEn=l *lEJ MEn@oM IOIJAm, mpx, MEJD ?KJ-=n@-F=IJA A@EJEnC, BoHmEnC IomAJDEnC lEkA = mKlJEFlANA@ LAHIEon oB jim JD=JA@EJIJDAoKJFKJoB=n@EnFKJJo?omm=n@IAIIEonIH=JDAHJD=nBElAI. 6DA BEHIJ F=HJ oB JDEI F=FAH @AI?HE>AI JDA ?omm=n@ l=nCK=CA, JDAn JDA moKIA l=n­ CK=CA, =n@ ANFl=EnI DoM JDAO EnJAH=?J. 6D=J EI BolloMA@ >O = @AI?HEFJEon oB JDA EmFlA­ mAnJ=JEon, BEHIJ oB JDA DoIJ F=HJ, JDAn oB JDA JAHmEn=l F=HJ. ) FHEn?EFlA JD=J EnBlKAn?A@ JDA @AIECn oB sam EI JD=J EJ IDoKl@ D=LA no ANFlE?EJ lEmEJI, IK?D =I KFFAH lEmEJI on BElA IEzA oH lEnA lAnCJD. ) IA?on@=HO ?onIE@AH=JEon EI JD=J EJ >A ABBE?EAnJ. 6o DonoH JDAIA JMo Co=lI JoCAJDAH HAGKEHAI = mAJDo@ BoH ABBE?EAnJlO m=nEFKl=JEnC DKCA IJHEnCI BElAI MEJDoKJ >HA=kEnC JDAm EnJo lEnAI, FAHD=FI MDElA m=kEnC JDoKI=n@I oB ?D=nCAI Kn@AH ?onJHol oB JDA ?omm=n@ l=nCK=CA. SamߣI mAJDo@ EI Jo JHA=J JDA BElA =I = JH=nI=?JEon @=J=>=IA, EmFlAmAnJEnC ?D=nCAI =I =JomE? KF@=JAI. 6DAIA KF@=JAI m=O >A KnMoKn@ A=IElO Jo ߢKn@oߣ ?D=nCAI. -BBE?EAn?O EI =?DEALA@ JDHoKCD = ?ollA?JEon oB ?=?DAI JD=J mEnEmEzAI @EI? JH=BBE? =n@ @=J= moJEon, >oJD MEJDEn JDA JMo F=HJI oB JDA FHoCH=m =n@ >AJMAAn JDAm. 6DA JAHmEn=l F=HJ oB sam EI B=EHlO IJH=ECDJBoHM=H@. MoHA EnJAHAIJEnC EI DoM JDA JMo D=lLAI oB JDA A@EJoH IJ=O IOn?DHonEzA@ MDAn AEJDAH D=lB m=O EnEJE=JA = ?D=nCA. 6DEI EI =?DEALA@ JDHoKCD = @=J= IJHK?JKHA JD=J oHC=nEzAI JDA ?ommKnE?=JEonI =n@ EI m=EnJ=EnA@ EnF=H=llAl>O>oJDD=lLAI. 6DA l=IJ F=HJ oB JDA F=FAH ?DHonE?lAI JDA MHEJEnC oB sam =n@ @EI?KIIAI JDA lAIIonI JD=JMAHAlA=HnA@JDHoKCDEJI@ALAloFmAnJ=n@KIA. 6DA F=FAH EI lonC, >KJ EI ?omFoIA@ l=HCAlO oB JMo F=FAHI oB HA=Ion=>lA lAnCJD: = @AI?HEFJEon oB JDA KIAH EnJAHB=?A oB sam =n@ = @EI?KIIEon oB EJI EmFlAmAnJ=JEon. 6DAO =HA ?om>EnA@ >A?=KIA JDA EmFlAmAnJ=JEon EI IJHonClO EnBlKAn?A@ >O JDA KIAH EnJAHB=?A, =n@LE?ALAHI=.

The Interface Sam EI=JANJA@EJoHBoHmKlJEFlABElAI. .ElAn=mAIm=O>AFHoLE@A@MDAnEJEIEnLokA@: sam file1 file2 ... =n@ JDAHA =HA ?omm=n@I Jo =@@ nAM BElAI =n@ @EI?=H@ KnnAA@A@ onAI. .ElAI =HA noJ HA=@ KnJEl nA?AII=HO Jo ?omFlAJA IomA ?omm=n@. -@EJEnC oFAH=JEonI =FFlO Jo =n EnJAH­ n=l ?oFO m=@A MDAn JDA BElA EI HA=@; JDA 7N1: BElA =IIo?E=JA@ MEJD JDA ?oFO EI ?D=nCA@ onlO >O =n ANFlE?EJ ?omm=n@. 6oIEmFlEBOJDA@EI?KIIEon,JDAEnJAHn=l?oFOEIDAHA?=llA@ = ,MDElAJDA@EI?-HAIE@AnJoHECEn=lEI?=llA@= disc file. Sam EI KIK=llO ?onnA?JA@ Jo = >EJm=F @EIFl=O JD=J FHAIAnJI = ?KJ-=n@-F=IJA A@EJoH @HELAn >O JDA moKIA. 1n JDEI mo@A, JDA ?omm=n@ l=nCK=CA EI IJEll =L=El=>lA: JANJ JOFA@ En = IFA?E=l MEn@oM, ?=llA@ JDA sam , EI EnJAHFHAJA@ =I ?omm=n@I Jo >A ANA?KJA@ En JDA ?KHHAnJ BElA. +KJ-=n@-F=IJA A@EJEnC m=O >A KIA@ En =nO MEn@oM ߞ ALAn En JDA sam MEn@oM Jo ?onIJHK?J ?omm=n@I. 6DA oJDAH mo@A oB oFAH=JEon, EnLokA@ >O IJ=HJEnC sam MEJD JDA oFJEon −d BoH ߢno @oMnlo=@ߣ, @oAI noJ KIA JDA moKIA oH >EJm=F @EIFl=O, >KJ IJEll FAHmEJI A@EJEnC KIEnC JDA JANJK=l ?omm=n@ l=nCK=CA, ALAn on =n oH@En=HO JAH­ mEn=l,EnJAH=?JELAlOoHBHom=I?HEFJ. 6DA BolloMEnC IA?JEonI @AI?HE>A BEHIJ JDA ?omm=n@ l=nCK=CA Kn@AH sam −d =n@ En JDA sam MEn@oM, =n@ JDAn JDA moKIA EnJAHB=?A. 6DAIA JMo l=nCK=CAI =HA nA=HlO En@AFAn@AnJ,>KJ?onnA?JJDHoKCDJDA current text, @AI?HE>A@>AloM. ­!­

The Command Language ) BElA ?onIEIJI oB EJI ?onJAnJI, MDE?D =HA =n =HH=O oB ?D=H=?JAHI JD=J EI, = IJHEnC; JDA name oB JDA =IIo?E=JA@ @EI? BElA; JDA modified bit JD=J IJ=JAI MDAJDAH JDA ?onJAnJI m=J?D JDoIA oB JDA @EI? BElA; =n@ = IK>IJHEnC oB JDA ?onJAnJI, ?=llA@ JDA current text oH IAA .ECKHAI =n@ . 1B JDA ?KHHAnJ JANJ EI = nKll IJHEnC, @oJ B=llI >AJMAAn ?D=H=?JAHI. 6DA value oB @oJ EI JDA lo?=JEon oB JDA ?KHHAnJ JANJ; JDA contents oB @oJ =HA JDA ?D=H=?JAHI EJ ?onJ=EnI. Sam EmF=HJI Jo JDA JANJ no JMo-@EmAnIEon=l EnJAHFHAJ=JEon IK?D =I ?olKmnI oH BEAl@I; JANJ EI =lM=OI onA-@EmAnIEon=l. -LAn JDA E@A= oB = ߢlEnAߣ oB JANJ =I Kn@AHIJoo@ >O moIJ 7N1: FHoCH=mI ߞ = IAGKAn?A oB ?D=H=?JAHI JAHmEn=JA@ >O = nAMlEnA ?D=H=?JAH ߞ EIonlOMA=klOIKFFoHJA@. 6DA current file EI JDA BElA Jo MDE?D A@EJEnC ?omm=n@I HABAH. 6DA ?KHHAnJ JANJ EI JDAHABoHA @oJ En JDA ?KHHAnJ BElA. 1B = ?omm=n@ @oAInߣJ ANFlE?EJlO n=mA = F=HJE?Kl=H BElA oH FEA?A oB JANJ, JDA ?omm=n@ EI =IIKmA@ Jo =FFlO Jo JDA ?KHHAnJ JANJ. .oH JDA momAnJ, ECnoHAJDAFHAIAn?AoBmKlJEFlABElAI=n@?onIE@AHA@EJEnC=IEnClABElA.

Figure 1. A typical sam screen, with the editing menu presented. The sam (command language) window is in the middle, with file windows above and below. (The makes it easy to create these abutting win- dows.) The partially obscured window is a third file window. The uppermost window is that to typing and mouse operations apply, as indicated by its heavy border. Each window has its current text highlighted in reverse video. The sam window’s current text is the null string on the last visible line, indicated by a vertical bar. See also Figure 2.

+omm=n@I D=LA onA-lAJJAH n=mAI. -N?AFJ BoH non-A@EJEnC ?omm=n@I IK?D =I MHEJEnC JDA BElA Jo @EI?, moIJ ?omm=n@I m=kA IomA ?D=nCA Jo JDA JANJ En @oJ =n@ lA=LA @oJ IAJ Jo JDA JANJ HAIKlJEnC BHom JDA ?D=nCA. .oH AN=mFlA, JDA @AlAJA ?omm=n@, d, @AlAJAI JDA JANJ En @oJ, HAFl=?EnC EJ >O JDA nKll IJHEnC =n@ IAJJEnC @oJ Jo JDA HAIKlJ. 6DA ?D=nCA ?omm=n@, , HAFl=?AI @oJ >O JANJ @AlEmEJA@ >O =n =H>EJH=HO FKn?JK=JEon ?D=H=?­ JAH,?onLAnJEon=llO=Il=ID. 6DKI,

c/Peter/ HAFl=?AIJDAJANJEn@oJ>OJDAIJHEnC Peter. 5EmEl=HlO, ­"­

a/Peter/ =FFAn@=@@IJDAIJHEnC=BJAH@oJ,=n@

i/Peter/ EnIAHJEnIAHJI>ABoHA@oJ. )llJDHAAlA=LA@oJIAJJoJDAnAMJANJ, Peter. NAMlEnAI =HA F=HJ oB JDA IOnJ=N oB ?omm=n@I: JDA nAMlEnA ?D=H=?JAH lANE?=llO JAHmE­ n=JAI = ?omm=n@. 9EJDEn JDA EnIAHJA@ JANJ, DoMALAH, nAMlEnAI =HA nALAH EmFlE?EJ. *KJ IEn?A EJ EI oBJAn ?onLAnEAnJ Jo EnIAHJ mKlJEFlA lEnAI oB JANJ, sam D=I = IFA?E=l IOnJ=N BoH JD=J?=IA:

a some lines of text to be inserted in the file, terminated by a period on a line by itself . 1nJDAonA-lEnAIOnJ=N,=nAMlEnA?D=H=?JAHm=O>AIFA?EBEA@>O=+-lEkAAI?=FA,Io

c/\n/ HAFl=?AI@oJ>O=IEnClAnAMlEnA?D=H=?JAH. Sam =lIoD=I=IK>IJEJKJA?omm=n@, s: s/expression/replacement/ IK>IJEJKJAI JDA HAFl=?AmAnJ JANJ BoH JDA BEHIJ m=J?D, En @oJ, oB JDA HACKl=H ANFHAIIEon. 6DKI,EB@oJEIJDAIJHEnC Peter,JDA?omm=n@ s/t/st/ ?D=nCAIEJJo Pester. 1n CAnAH=l, s EI KnnA?AII=HO, >KJ EJ M=I EnDAHEJA@ BHom ed =n@ EJ D=I IomA ?onLAnEAnJ L=HE=JEonI. .oH EnIJ=n?A, JDA HAFl=?AmAnJ JANJ m=O En?lK@A JDA m=J?DA@JANJ,IFA?EBEA@>O &: s/Peter/Oh, &, &, &, &!/ 6DAHA=HA=lIoJDHAA?omm=n@IJD=J=FFlOFHoCH=mIJoJANJ:

< UNIX program HAFl=?AI@oJ>OJDAoKJFKJoBJDA7N1:FHoCH=m. 5EmEl=HlO,JDA > ?omm=n@HKnIJDAFHo­ CH=mMEJD@oJ=IEJIIJ=n@=H@EnFKJ,=n@ | @oAI>oJD. .oHAN=mFlA, | HAFl=?AI @oJ >O JDA HAIKlJ oB =FFlOEnC JDA IJ=n@=H@ IoHJEnC KJElEJO Jo EJ. )C=En, nAMlEnAI D=LA no IFA?E=l IECnEBE?=n?A BoH JDAIA sam ?omm=n@I. 6DA JANJ =?JA@ KFon =n@ HAIKlJ­ EnC BHom JDAIA ?omm=n@I EI noJ nA?AII=HElO >oKn@A@ >O nAMlEnAI, =lJDoKCD BoH ?onnA?­ JEonMEJD7N1:FHoCH=mI,nAMlEnAIm=O>AnA?AII=HOJoo>AO?onLAnJEonI. OnA moHA ?omm=n@: p FHEnJI JDA ?onJAnJI oB @oJ. 6=>lA 1 IKmm=HEzAI samߣI ?om­ m=n@I. 6DA L=lKA oB @oJ m=O >A ?D=nCA@ >O IFA?EBOEnC =n address BoH JDA ?omm=n@. 6DA IEmFlAIJ=@@HAIIEI=lEnAnKm>AH:

3 HABAHIJoJDAJDEH@lEnAoBJDABElA,Io

3d @AlAJAI JDA JDEH@ lEnA oB JDA BElA, =n@ EmFlE?EJlO HAnKm>AHI JDA lEnAI Io JDA ol@ lEnA " EI noM nKm>AHA@ !. 6DEI EI onA oB JDA BAM Fl=?AI MDAHA sam @A=lI MEJD lEnAI @EHA?JlO. ­#­

6=>lA1. ?omm=n@I ______Sam 6ANJ?omm=n@I ______a/text/ )FFAn@JANJ=BJAH@oJ c/text/ +D=nCAJANJEn@oJ i/text/ 1nIAHJJANJ>ABoHA@oJ d ,AlAJAJANJEn@oJ s/regexp/text/ 5K>IJEJKJAJANJBoHm=J?DoBHACKl=HANFHAIIEonEn@oJ m address MoLAJANJEn@oJ=BJAH=@@HAII +oFOJANJEn@oJ=BJAH=@@HAII _t______address ,EIFl=O?omm=n@I ______p 2HEnJ?onJAnJIoB@oJ 2HEnJL=lKAlEnAnKm>AHI=n@?D=H=?JAHnKm>AHIoB@oJ _=______.ElA?omm=n@I ______b file−list 5AJ?KHHAnJBElAJoBEHIJBElAEnlEIJJD=J sam D=IEnmAnK B file−list 5=mA=I b,>KJlo=@nAMBElAI n 2HEnJmAnKlEnAIoB=llBElAI ,AlAJAn=mA@BElAIBHom _D______file−list sam 1/O?omm=n@I ______e 4AFl=?ABElAMEJDn=mA@@EI?BElA r filename 4AFl=?A@oJ>O?onJAnJIoBn=mA@@EI?BElA filename 9HEJABElAJon=mA@@EI?BElA f filename 5AJBElAn=mA=n@FHEnJnAMmAnKlEnA < UNIX−command 4AFl=?A@oJ>OIJ=n@=H@oKJFKJoB?omm=n@ > UNIX−command 5An@@oJJoIJ=n@=H@EnFKJoB?omm=n@ | UNIX−command 4AFl=?A@oJ>OHAIKlJoB?omm=n@=FFlEA@Jo@oJ 4KnJDA?omm=n@ _!______UNIX−command LooFI=n@?on@EJEon=lI ______x/regexp/ command .oHA=?Dm=J?DoBHACANF,IAJ@oJ=n@HKn?omm=n@ y/regexp/ command *AJMAAn=@j=?AnJm=J?DAIoBHACANF,IAJ@oJ=n@HKn?omm=n@ X/regexp/ command 4Kn?omm=n@EnA=?DBElAMDoIAmAnKlEnAm=J?DAIHACANF Y/regexp/ command 4Kn?omm=n@EnA=?DBElAMDoIAmAnKlEnA@oAInoJm=J?D g/regexp/ command 1B@oJ?onJ=EnI=m=J?DoBHACANF,HKn?omm=n@ 1B@oJ@oAInoJ?onJ=En=m=J?DoBHACANF,HKn?omm=n@ _v/______regexp/ command MEI?All=nO ______k 5AJ=@@HAIIm=HkJoL=lKAoB@oJ q 3KEJ u n 7n@ol=IJ n @AB=KlJ ?D=nCAI *H=?AICHoKF?omm=n@I _{______} ­$­

LEnA 0 EI JDA nKll IJHEnC =J JDA >ACEnnEnC oB JDA BElA. 1B = ?omm=n@ ?onIEIJI oB onlO =n =@@HAII, = p ?omm=n@ EI =IIKmA@, Io JOFEnC =n Kn=@oHnA@ 3 FHEnJI lEnA ! on JDA JAHmE­ n=l. 6DAHA =HA = ?oKFlA oB oJDAH >=IE? =@@HAIIAI: = FAHEo@ =@@HAIIAI @oJ EJIAlB; =n@ = @oll=HIECn$=@@HAIIAIJDAnKllIJHEnC=JJDAAn@oBJDABElA. )n =@@HAII EI =lM=OI = IEnClA IK>IJHEnC oB JDA BElA. 6DKI, JDA =@@HAII 3 =@@HAIIAI JDA ?D=H=?JAHI =BJAH JDA IA?on@ nAMlEnA oB JDA BElA JDHoKCD JDA JDEH@ nAMlEnA oB JDA BElA. ) compound address EI?onIJHK?JA@>OJDA?omm=oFAH=JoH address1,address2 =n@ =@@HAIIAI JDA IK>IJHEnC oB JDA BElA BHom JDA >ACEnnEnC oB address1 Jo JDA An@ oB address2. .oH AN=mFlA, JDA ?omm=n@ 3,5p FHEnJI JDA JDEH@ JDHoKCD BEBJD lEnAI oB JDA BElA=n@ .,$d @AlAJAIJDAJANJBHomJDA>ACEnnEnCoB@oJJoJDAAn@oBJDABElA. 6DAIA =@@HAIIAI =HA =ll =>IolKJA FoIEJEonI En JDA BElA, >KJ sam =lIo D=I HAl=JELA =@@HAIIAI,En@E?=JA@>O + oH −. .oHAN=mFlA, $−3 EIJDAJDEH@lEnA>ABoHAJDAAn@oBJDABElA=n@

.+1 EI JDA lEnA =BJAH @oJ. 1B no =@@HAII =FFA=HI Jo JDA lABJ oB JDA + oH −, @oJ EI =IIKmA@; EB noJDEnC =FFA=HI Jo JDA HECDJ, 1 EI =IIKmA@. 6DAHABoHA, .+1 m=O >A =>>HALE=JA@ Jo jKIJ =FlKIIECn. 6DA + oFAH=JoH =?JI HAl=JELA Jo JDA An@ oB EJI BEHIJ =HCKmAnJ, MDElA JDA − oFAH=JoH =?JI HAl=JELA JoJDA>ACEnnEnC. 6DKI .+1 =@@HAIIAIJDABEHIJlEnA=BJAH@oJ, .− =@@HAIIAI JDA BEHIJ lEnA >ABoHA @oJ, =n@ +− HABAHI Jo JDA lEnA ?onJ=EnEnC JDA An@ oB @oJ. ,oJ m=O IF=n mKlJEFlA lEnAI, =n@ + IAlA?JI JDA lEnA =BJAH JDA An@ oB @oJ, JDAn − >=?kI KF onA lEnA. 6DABEn=lJOFAoB=@@HAIIEI=HACKl=HANFHAIIEon,MDE?D=@@HAIIAIJDAJANJm=J?DA@ >OJDAANFHAIIEon. 6DAANFHAIIEonEIAn?loIA@EnIl=IDAI,=IEn

/expression/ $,% 6DA ANFHAIIEonI =HA JDA I=mA =I JDoIA En JDA 7N1: FHoCH=m egrep, =n@ En?lK@A ?lo­ IKHAI, =lJAHn=JEonI, =n@ Io on. 6DAO BEn@ JDA leftmost longest IJHEnC JD=J m=J?DAI JDA ANFHAIIEon, JD=J EI, JDA BEHIJ m=J?D =BJAH JDA FoEnJ MDAHA JDA IA=H?D EI IJ=HJA@, =n@ EB moHA JD=n onA m=J?D >ACEnI =J JDA I=mA IFoJ, JDA lonCAIJ IK?D m=J?D. 1 =IIKmA B=mElE=HEJOMEJDJDAIOnJ=NBoHHACKl=HANFHAIIEonIEn7N1:FHoCH=mI.'.oHAN=mFlA,

/x/ m=J?DAIJDAnANJ x ?D=H=?JAHEnJDABElA, /xx*/ m=J?DAIJDAnANJHKnoBonAoHmoHA xߣI,=n@ /x|Peter/ m=J?DAI JDA nANJ x oH Peter. .oH ?omF=JE>ElEJO MEJD oJDAH 7N1: FHoCH=mI, JDA ߢ=nO ?D=H=?JAHߣ oFAH=JoH,=FAHEo@,@oAInoJm=J?D=nAMlEnA,Io

/.*/ m=J?DAI JDA JANJ BHom @oJ Jo JDA An@ oB JDA lEnA, >KJ AN?lK@AI JDA nAMlEnA =n@ Io MEll noJm=J?D=?HoIIJDAlEnA>oKn@=HO. 4ACKl=H ANFHAIIEonI =HA =lM=OI HAl=JELA =@@HAIIAI. 6DA @EHA?JEon EI BoHM=H@I >O @AB=KlJ, Io /Peter/ EI HA=llO =n =>>HALE=JEon BoH +/Peter/. 6DA IA=H?D ?=n >A HALAHIA@MEJD=mEnKIIECn,Io ­%­

−/Peter/ BEn@I JDA BEHIJ Peter >ABoHA @oJ. 4ACKl=H ANFHAIIEonI m=O >A KIA@ MEJD oJDAH =@@HAII BoHmI, Io 0+/Peter/ BEn@I JDA BEHIJ Peter En JDA BElA =n@ $−/Peter/ BEn@I JDA l=IJ. 6=>lA11IKmm=HEzAI samߣI=@@HAIIAI. 6=>lA11. =@@HAIIAI ______Sam 5EmFlA=@@HAIIAI ______#n 6DAAmFJOIJHEnC=BJAH?D=H=?JAH n n LEnA n. /regexp/ 6DABEHIJBolloMEnCm=J?DoBJDAHACKl=HANFHAIIEon −/regexp/ 6DABEHIJFHALEoKIm=J?DoBJDAHACKl=HANFHAIIEon $ 6DAnKllIJHEnC=JJDAAn@oBJDABElA . ,oJ ’ 6DA=@@HAIIm=Hk,IAJ>O k ?omm=n@ ,oJEnJDABElAMDoIAmAnKlEnAm=J?DAIHACANF ______"regexp" +omFoKn@=@@HAIIAI ______a1+a2 6DA=@@HAII a2 AL=lK=JA@IJ=HJEnC=JHECDJoB a1 a1−a2 a2 AL=lK=JA@EnJDAHALAHIA@EHA?JEonIJ=HJEnC=JlABJoB a1 a1,a2 .HomJDAlABJoB a1 JoJDAHECDJoB a2 @AB=KlJ 0,$ LEkA >KJIAJI@oJ=BJAHAL=lK=JEnC ______a1;a2 , a1 6DA oFAH=JoHI + =n@ − =HA DECD FHA?A@An?A, MDElA , =n@ ; =HA loM FHA?A@An?A. 1n >oJD + =n@ − BoHmI, a2 @AB=KlJI Jo =n@ a1 @AB=KlJI Jo @oJ. 1B >oJD a1 =n@ a2 =HA FHAIAnJ, + m=O>AAlE@A@. ______

6DAl=nCK=CA@EI?KIIA@IoB=HMEllnoJIAAmnoLAlJoFAoFlAMDoKIA7N1: JANJ A@E­ ' JoHI IK?D =I ed oH . MoHAoLAH, JDA kEn@I oB A@EJEnC oFAH=JEonI JDAIA ?omm=n@I =lloM, MEJD JDA AN?AFJEon oB HACKl=H ANFHAIIEonI =n@ lEnA nKm>AHI, =HA ?lA=HlO moHA ?on­ LAnEAnJlO D=n@lA@ >O = moKIA->=IA@ EnJAHB=?A. 1n@AA@, samߣI moKIA l=nCK=CA @EI­ ?KIIA@ =J lAnCJD >AloM EI JDA mA=nI >O MDE?D IEmFlA ?D=nCAI =HA KIK=llO m=@A. .oH l=HCA oH HAFAJEJELA ?D=nCAI, DoMALAH, = JANJK=l l=nCK=CA oKJFAHBoHmI = m=nK=l EnJAH­ B=?A. 1m=CEnA JD=J, EnIJA=@ oB @AlAJEnC jKIJ onA o??KHHAn?A oB JDA IJHEnC Peter,MA M=nJA@ Jo AlEmEn=JA ALAHO Peter. 9D=JߣI nAA@A@ EI =n EJAH=JoH JD=J HKnI = ?omm=n@ BoHA=?Do??KHHAn?AoBIomAJANJ. SamߣIEJAH=JoHEI?=llA@ x,BoHANJH=?J: x/expression/ command BEn@I =ll m=J?DAI En @oJ oB JDA IFA?EBEA@ ANFHAIIEon, =n@ BoH A=?D IK?D m=J?D, IAJI @oJ JoJDAJANJm=J?DA@=n@HKnIJDA?omm=n@. 5oJo@AlAJA=llJDA Peters: 0,$ x/Peter/ d *l=nkI En JDAIA AN=mFlAI =HA Jo EmFHoLA HA=@=>ElEJO; sam nAEJDAH HAGKEHAI noH EnJAH­ FHAJI JDAm. 6DEI IA=H?DAI JDA AnJEHA BElA 0,$ BoH o??KHHAn?AI oB JDA IJHEnC Peter, =n@HKnIJDA d ?omm=n@MEJD@oJIAJJoA=?DIK?Do??KHHAn?A. *O ?onJH=IJ, JDA ?omF=­ H=>lA ed ?omm=n@ MoKl@ @AlAJA =ll lines ?onJ=EnEnC Peter; sam @AlAJAI onlO JDA Peters. 6DA =@@HAII 0,$ EI ?ommonlO KIA@, =n@ m=O >A =>>HALE=JA@ Jo jKIJ = ?omm=. )I=noJDAHAN=mFlA, ­&­

, x/Peter/ p FHEnJI = lEIJ oB Peters, onA BoH A=?D =FFA=H=n?A En JDA BElA, MEJD no EnJAHLAnEnC JANJ noJALAnnAMlEnAIJoIAF=H=JAJDAEnIJ=n?AI. OB ?oKHIA, JDA JANJ ANJH=?JA@ >O x m=O >A IAlA?JA@ >O = HACKl=H ANFHAIIEon, MDE?D ?omFlE?=JAI @A?E@EnC MD=J IAJ oB m=J?DAI EI ?DoIAn ߞ m=J?DAI m=O oLAHl=F. 6DEI EI HAIolLA@ >O CAnAH=JEnC JDA m=J?DAI IJ=HJEnC BHom JDA >ACEnnEnC oB @oJ KIEnC JDA lABJmoIJ-lonCAIJ HKlA, =n@ IA=H?DEnC BoH A=?D m=J?D IJ=HJEnC BHom JDA An@ oB JDA FHALE­ oKI onA. 4ACKl=H ANFHAIIEonI m=O =lIo m=J?D nKll IJHEnCI, >KJ = nKll m=J?D =@j=?AnJ Jo =non-nKllm=J?DEInALAHIAlA?JA@;=JlA=IJonA?D=H=?JAHmKIJEnJAHLAnA. .oHAN=mFlA,

, c/AAA/ x/B*/ c/−/ ,p FHo@K?AI=IoKJFKJ

−A−A−A− >A?=KIAJDAF=JJAHn B* m=J?DAIJDAnKllIJHEnCIIAF=H=JEnCJDA AߣI. 6DA x ?omm=n@ D=I = ?omFlAmAnJ, y, MEJD IEmEl=H IOnJ=N, JD=J ANA?KJAI JDA ?om­ m=n@MEJD@oJIAJJoJDAJANJ between JDAm=J?DAIoBJDAANFHAIIEon. .oHAN=mFlA, , c/AAA/ y/A/ c/−/ ,p FHo@K?AIJDAI=mAHAIKlJ=IJDAAN=mFlA=>oLA. 6DA x =n@ y ?omm=n@I =HA looFEnC ?onIJHK?JI, =n@ sam D=I = F=EH oB ?on@EJEon=l ?omm=n@IJoCoMEJDJDAm. 6DAOD=LAIEmEl=HIOnJ=N:

g/expression/ command CK=H@ HKnI JDA ?omm=n@ AN=?JlO on?A EB @oJ ?onJ=EnI = m=J?D oB JDA ANFHAIIEon. 6DEI EI @EBBAHAnJ BHom x, MDE?D HKnI JDA ?omm=n@ BoH each m=J?D: x looFI; g mAHAlO JAIJI, MEJDoKJ?D=nCEnCJDAL=lKAoB@oJ. 6DKI,

, x/Peter/ d @AlAJAI=llo??KHHAn?AIoB Peter,>KJ , g/Peter/ d @AlAJAI JDA MDolA BElA HA@K?AI EJ Jo = nKll IJHEnC EB Peter o??KHI =nOMDAHA En JDA JANJ. 6DA ?omFlAmAnJ=HO ?on@EJEon=l EI , MDE?D HKnI JDA ?omm=n@ EB JDAHA EI no m=J?D oB JDAANFHAIIEon. 6DAIA ?onJHol-IJHK?JKHA-lEkA ?omm=n@I m=O >A ?omFoIA@ Jo ?onIJHK?J moHA EnLolLA@ oFAH=JEonI. .oH AN=mFlA, Jo FHEnJ JDoIA lEnAI oB JANJ JD=J ?onJ=En JDA IJHEnC Peter: , x/.*\n/ g/Peter/ p 6DA x >HA=kI JDA BElA EnJo lEnAI, JDA g IAlA?JI JDoIA lEnAI ?onJ=EnEnC Peter, =n@ JDA p FHEnJI JDAm. 6DEI ?omm=n@ CELAI =n =@@HAII BoH JDA x ?omm=n@ JDA MDolA BElA, >KJ >A?=KIA g @oAI noJ D=LA =n ANFlE?EJ =@@HAII, EJ =FFlEAI Jo JDA L=lKA oB @oJ FHo@K?A@ >O JDA x ?omm=n@, JD=J EI, Jo A=?D lEnA. )ll ?omm=n@I En sam AN?AFJ BoH JDA ?omm=n@ Jo MHEJA=BElAJo@EI?KIA@oJBoHJDA@AB=KlJ=@@HAII. +omFoIEJEonm=O>A?onJEnKA@En@ABEnEJAlO.

, x/.*\n/ g/Peter/ v/SaltPeter/ p FHEnJIJDoIAlEnAI?onJ=EnEnC Peter >KJ not JDoIA?onJ=EnEnC SaltPeter. ­'­

Structural Regular Expressions 7nlEkA oJDAH 7N1: JANJ A@EJoHI, En?lK@EnC JDA non-EnJAH=?JELA onAI IK?D =I =n@ % , sam EI Coo@ BoH m=nEFKl=JEnC BElAI MEJD mKlJE-lEnA ߢHA?oH@I.ߣ )n AN=mFlA EI =n on-lEnAFDonA>ook?omFoIA@oBHA?oH@I,IAF=H=JA@>O>l=nklEnAI,oBJDABoHm

Herbert Tic 44 Turnip Ave., Endive, NJ 201−5555642

Norbert Twinge 16 Potato St., Cabbagetown, NJ 201−5553145

... 6DABoHm=Jm=O>AAn?o@A@=I=HACKl=HANFHAIIEon:

(.+\n)+ JD=J EI, = IAGKAn?A oB onA oH moHA non->l=nk lEnAI. 6DA ?omm=n@ Jo FHEnJ MH. 6E?ߣI AnJEHAHA?oH@EIJDAn

, x/(.+\n)+/ g/^Herbert Tic$/ p =n@JD=JJoANJH=?JjKIJJDAFDonAnKm>AHEI

, x/(.+\n)+/ g/^Herbert Tic$/ x/^[0−9]*−[0−9]*\n/ p 6DA l=JJAH ?omm=n@ >HA=kI JDA BElA EnJo HA?oH@I, ?DooIAI MH. 6E?ߣI HA?oH@, ANJH=?JI JDA FDonAnKm>AHBHomJDAHA?oH@,=n@BEn=llOFHEnJIJDAnKm>AH. ) moHA EnLolLA@ FHo>lAm EI JD=J oB HAn=mEnC = F=HJE?Kl=H L=HE=>lA, I=O n,Jonum En =+FHoCH=m. 6DAo>LEoKIBEHIJ=JJAmFJ,

, x/n/ c/num/ EI >=@lO Bl=MA@: EJ ?D=nCAI noJ onlO JDA L=HE=>lA n >KJ =nO lAJJAH n JD=J =FFA=HI. 9A nAA@JoANJH=?J=llJDAL=HE=>lAI,=n@IAlA?JJDoIAJD=Jm=J?D n =n@onlO n: , x/[A−Za−z_][A−Za−z_0−9]*/ g/n/ v/../ c/num/ 6DA F=JJAHn [A−Za−z_][A−Za−z_0−9]* m=J?DAI + E@AnJEBEAHI. NANJ g/n/ IAlA?JI JDoIA ?onJ=EnEnC =n n. 6DAn v/../ HAjA?JI JDoIA ?onJ=EnEnC JMo oH moHA ?D=H=?JAHI, =n@ BEn=llO c/num/ ?D=nCAI JDA HAm=En@AH E@AnJEBEAHI nJonum. 6DEI LAHIEon ?lA=HlO MoHkI mK?D >AJJAH, >KJ JDAHA m=O IJEll >A FHo>lAmI. .oH AN=mFlA, En + ?D=H=?JAH =n@ IJHEnC ?onIJ=nJI, JDA IAGKAn?A \n EI EnJAHFHAJA@ =I = nAMlEnA ?D=H=?JAH, =n@ MA @onߣJ M=nJJo?D=nCAEJJo \num. 6DEIFHo>lAm?=n>ABoHAIJ=llA@MEJD= y ?omm=n@: , y/\\n/ x/[A−Za−z_][A−Za−z_0−9]*/ g/n/ v/../ c/num/ JDA IA?on@ \ EI nA?AII=HO >A?=KIA oB lANE?=l ?onLAnJEonI En HACKl=H ANFHAIIEonI, oH MA ?oKl@ALAnHAjA?J?D=H=?JAH?onIJ=nJI=n@IJHEnCIoKJHECDJ:

,y/’[^’]*’/ y/"[^"]*"/ x/[A−Za−z_][A−Za−z_0−9]*/ g/n/ v/../ c/num/ 6DA y ?omm=n@I En JDEI LAHIEon AN?lK@A BHom ?onIE@AH=JEon =ll ?D=H=?JAH ?onIJ=nJI =n@ IJHEnCI. 6DA onlO HAm=EnEnC FHo>lAm EI Jo @A=l MEJD JDA FoIIE>lA o??KHHAn?A oB \’ oH \" MEJDEnJDAIAIAGKAn?AI,>KJEJߣIA=IOJoIAADoMJoHAIolLAJDEI@EBBE?KlJO. 6DA FoEnJ oB JDAIA ?omFoIA@ ?omm=n@I EI IK??AIIELA HABEnAmAnJ. ) IEmFlA LAH­ IEon oB JDA ?omm=n@ EI JHEA@, =n@ EB EJߣI noJ Coo@ AnoKCD, EJ ?=n >A DonA@ >O =@@EnC = ?l=KIA oH JMo. MEIJ=kAI ?=n >A Kn@onA; IAA >AloM. )lIo, JDA moKIA l=nCK=CA m=kAI EJ KnnA?AII=HO Jo HAJOFA JDA ?omm=n@ A=?D JEmA. 6DA HAIKlJEnC ?D=EnI oB ?omm=n@I =HA IomAMD=J HAmEnEI?AnJ oB IDAll FEFAlEnAI.% 7nlEkA FEFAlEnAI, JDoKCD, MDE?D F=II =lonC mo@EBEA@ , sam ?omm=n@I F=II = view oB JDA @=J=. 6DA JANJ =J A=?D IJAF oB JDA ­ ­

?omm=n@ EI JDA I=mA, >KJ MDE?D FEA?AI =HA IAlA?JA@ EI HABEnA@ IJAF >O IJAF KnJEl JDA ?oHHA?J FEA?A EI =L=El=>lA Jo JDA BEn=l IJAF oB JDA ?omm=n@ lEnA, MDE?D KlJEm=JAlO m=kAI JDA?D=nCA. 1n oJDAH 7N1: FHoCH=mI, HACKl=H ANFHAIIEonI =HA KIA@ onlO BoH IAlA?JEon, =I En JDA sam g ?omm=n@, nALAHBoHANJH=?JEon=IEnJDA x oH y ?omm=n@. .oHAN=mFlA,F=JJAHnI % En awk =HA KIA@ Jo IAlA?J lEnAI Jo >A oFAH=JA@ on, >KJ ?=nnoJ >A KIA@ Jo @AI?HE>A JDA BoHm=J oB JDA EnFKJ JANJ, oH Jo D=n@lA nAMlEnA-BHAA JANJ. 6DA KIA oB HACKl=H ANFHAIIEonI Jo @AI?HE>A JDA IJHK?JKHA oB = FEA?A oB JANJ H=JDAH JD=n EJI ?onJAnJI, =I En JDA x ?om­ m=n@, D=I >AAn CELAn = n=mA: structural regular expressions. 9DAn JDAO =HA ?omFoIA@, =I En JDA =>oLA AN=mFlA, JDAO =HA FlA=I=nJlO ANFHAIIELA. 6DAEH KIA EI @EI?KIIA@=JCHA=JAHlAnCJDAlIAMDAHA. 

Multiple files Sam D=I=BAMoJDAH?omm=n@I,moIJlOHAl=JEnCJoEnFKJ=n@oKJFKJ. e discfilename HAFl=?AIJDA?onJAnJI=n@n=mAoBJDA?KHHAnJBElAMEJDJDoIAoBJDAn=mA@@EI?BElA;

w discfilename MHEJAIJDA?onJAnJIJoJDAn=mA@@EI?BElA;=n@

r discfilename HAFl=?AI @oJ MEJD JDA ?onJAnJI oB JDA n=mA@ @EI? BElA. )ll JDAIA ?omm=n@I KIA JDA ?KH­ HAnJBElAߣIn=mAEBnonAEIIFA?EBEA@. .En=llO,

f discfilename ?D=nCAIJDAn=mA=IIo?E=JA@MEJDJDABElA=n@@EIFl=OIJDAHAIKlJ:

’−. discfilename 6DEI oKJFKJ EI ?=llA@ JDA BElAߣI menu line, >A?=KIA EJ EI JDA ?onJAnJI oB JDA BElAߣI lEnA En JDA >KJJon ! mAnK @AI?HE>A@ En JDA nANJ IA?JEon. 6DA BEHIJ JDHAA ?D=H=?JAHI =HA = ?on?EIA noJ=JEon BoH JDA IJ=JA oB JDA BElA. 6DA =FoIJHoFDA IECnEBEAI JD=J JDA BElA EI mo@EBEA@. 6DA mEnKI IECn En@E?=JAI JDA nKm>AH oB MEn@oMI oFAn on JDA BElA IAA JDA nANJ IA?JEon: − mA=nI nonA, + mA=nI onA, =n@ * mA=nI moHA JD=n onA. .En=llO, JDA FAHEo@ En@E?=JAI JD=J JDEI EI JDA ?KHHAnJ BElA. 6DAIA ?D=H=?JAHI =HA KIABKl BoH ?onJHollEnC JDA X ?omm=n@,@AI?HE>A@IDoHJlO. Sam m=O>AIJ=HJA@MEJD=IAJoB@EI?BElAIIK?D =I =ll JDA IoKH?A BoH = FHoCH=m >O EnLokEnC EJ MEJD = lEIJ oB BElA n=mAI =I =HCKmAnJI, =n@ moHA m=O >A =@@A@ oH @AlAJA@ on @Am=n@.

B discfile1 discfile2 ... =@@IJDAn=mA@BElAIJo samߣIlEIJ,=n@ D discfile1 discfile2 ... HAmoLAI JDAm BHom samߣI mAmoHO MEJDoKJ ABBA?J on =IIo?E=JA@ @EI? BElAI. *oJD JDAIA ?omm=n@I D=LA = IOnJ=N BoH KIEnC JDA IDAll% JDA 7N1: ?omm=n@ EnJAHFHAJAH Jo CAnAH­ =JAJDAlEIJI:

B

B lA JDA 7N1: ?omm=n@ −l lEIJI =ll BElAI En EJI =HCKmAnJI JD=J ?onJ=En m=J?DAI oB JDA IFA?EBEA@ HACKl=H ­ ­

ANFHAIIEon. .En=llO, D MEJDoKJ=HCKmAnJI@AlAJAIJDA?KHHAnJBElA. 6DAHA=HAJMoM=OIJo?D=nCAMDE?DBElAEI?KHHAnJ:

b filename m=kAI JDA n=mA@ BElA ?KHHAnJ. 6DA B ?omm=n@ @oAI JDA I=mA, >KJ =lIo =@@I =nO nAM BElAI Jo samߣI lEIJ. 1n FH=?JE?A, oB ?oKHIA, JDA ?KHHAnJ BElA EI KIK=llO ?DoIAn >O moKIA =?JEonI, noJ >O JANJK=l ?omm=n@I. 6DA oJDAH M=O EI Jo KIA = BoHm oB =@@HAII JD=J HABAHIJoBElAI:

"expression" address HABAHI Jo JDA =@@HAII AL=lK=JA@ En JDA BElA MDoIA mAnK lEnA m=J?DAI JDA ANFHAIIEon JDAHAmKIJ>AAN=?JlOonAm=J?D. .oHAN=mFlA,

"peter.c" 3 HABAHIJoJDAJDEH@lEnAoBJDABElAMDoIAn=mAm=J?DAI peter.c. 6DEIEImoIJKIABKlEn JDAmoLAm=n@?oFOt?omm=n@I: 0,$ t "peter.c" 0 m=kAI=?oFOoBJDA?KHHAnJBElA=JJDA>ACEnnEnCoB peter.c. 6DA X ?omm=n@EI=looFEnC?onIJHK?J,lEkA x,JD=JHABAHIJoBElAIEnIJA=@oBIJHEnCI: X/expression/ command HKnI JDA ?omm=n@ En =ll BElAI MDoIA mAnK lEnAI m=J?D JDA ANFHAIIEon. 6DA >AIJ AN=m­ FlAEI

X/’/ w MDE?D MHEJAI Jo @EI? =ll mo@EBEA@ BElAI. Y EI JDA ?omFlAmAnJ oB X: EJ HKnI JDA ?omm=n@ on=llBElAIMDoIAmAnKlEnAI@onߣJm=J?DJDAANFHAIIEon:

Y/\.c/ D @AlAJAI =ll BElAI JD=J @onߣJ D=LA .c En JDAEH n=mAI, JD=J EI, EJ kAAFI =ll + IoKH?A BElAI =n@ @AlAJAIJDAHAIJ. *H=?AI=lloM?omm=n@IJo>ACHoKFA@,Io

{ command1 command2 } EIIOnJ=?JE?=llO=IEnClA?omm=n@JD=JHKnIJMo?omm=n@I. 6DKI,

X/\.c/ ,g/variable/ { f , x/.*\n/ g/variable/ p } BEn@I =ll o??KHHAn?AI oB variable En + IoKH?A BElAI, =n@ FHEnJI oKJ JDA BElA n=mAI =n@ lEnAI oB A=?D m=J?D. 6DA FHA?EIA IAm=nJE?I oB ?omFoKn@ oFAH=JEonI EI @EI?KIIA@ En JDA EmFlAmAnJ=JEonIA?JEonI>AloM. .En=llO, JDA Kn@o ?omm=n@, u, Kn@oAI JDA l=IJ ?omm=n@, no m=JJAH DoM m=nO BElAIMAHA=BBA?JA@. MKlJEFlAKn@ooFAH=JEonImoLABKHJDAH>=?kEnJEmA,Io

u u MDE?D m=O >A =>>HALE=JA@ u2 Kn@oAI JDA l=IJ JMo ?omm=n@I. )n Kn@o m=O noJ >A Kn@onA, DoMALAH, noH m=O =nO ?omm=n@ JD=J =@@I oH @AlAJAI BElAI. -LAHOJDEnC AlIA EI Kn@o=>lA,JDoKCD,En?lK@EnCBoHAN=mFlA e ?omm=n@I: ­ ­

e filename u HAIJoHAI JDA IJ=JA oB JDA BElA ?omFlAJAlO, En?lK@EnC EJI n=mA, @oJ, =n@ mo@EBEA@ >EJ. *A?=KIA oB JDA Kn@o, FoJAnJE=llO @=nCAHoKI ?omm=n@I =HA noJ CK=H@A@ >O ?onBEHm=­ JEonI. OnlO D, MDE?D @AIJHoOI JDA EnBoHm=JEon nA?AII=HO Jo HAIJoHA EJIAlB, EI FHoJA?JA@. 1J MEll noJ @AlAJA = mo@EBEA@ BElA, >KJ = IA?on@ D oB JDA I=mA BElA MEll IK??AA@ HAC=H@lAII. 6DA q ?omm=n@,MDE?DANEJI sam,EIIEmEl=HlOCK=H@A@.

Mouse Interface Sam EI moIJ ?ommonlO HKn ?onnA?JA@ Jo = >EJm=F @EIFl=O =n@ moKIA BoH EnJAH=?JELA A@EJEnC. 6DA onlO @EBBAHAn?A En JDA ?omm=n@ l=nCK=CA >AJMAAn HACKl=H, moKIA-@HELAn sam =n@ sam −d EI JD=J EB =n =@@HAII EI FHoLE@A@ MEJDoKJ = ?omm=n@, sam −d MEll FHEnJ JDA JANJ HABAHAn?A@ >O JDA =@@HAII, >KJ HACKl=H sam MEll DECDlECDJ EJ on JDA I?HAAn ߞ EnB=?J,@oJEI=lM=OIDECDlECDJA@IAA.ECKHA .

Figure 2. A sam window. The scroll bar down the left represents the file, with the bubble showing the fraction visible in the window. The scroll bar may be manipulated by the mouse for convenient browsing. The current text, which is highlighted, need not fit on a line. Here it consists of one partial line, one complete line, and final partial line.

-=?D BElA m=O D=LA zAHo oH moHA MEn@oMI oFAn on JDA @EIFl=O. )J =nO JEmA, onlO onA MEn@oM En =ll oB sam EI JDA current window, JD=J EI, JDA MEn@oM Jo MDE?D JOFEnC =n@ moKIA =?JEonI HABAH; JDEI m=O >A JDA sam MEn@oM JD=J En MDE?D ?omm=n@I m=O >A JOFA@ oH onA oB JDA BElA MEn@oMI. 9DAn = BElA D=I mKlJEFlA MEn@oMI, JDA Em=CA oB JDA BElA En A=?D MEn@oM EI =lM=OI kAFJ KF Jo @=JA. 6DA ?KHHAnJ BElA EI JDA l=IJ BElA =BBA?JA@ >O = ?omm=n@, Io EB JDA sam MEn@oM EI ?KHHAnJ, JDA ?KHHAnJ MEn@oM EI noJ = MEn@oMonJDA ?KHHAnJ BElA. 0oMALAH, A=?D MEn@oM on = BElA D=I EJI oMn L=lKA oB @oJ, =n@ MDAn IMEJ?DEnC >AJMAAn MEn@oMI on = IEnClA BElA, JDA BElAߣI L=lKA oB @oJ EI ?D=nCA@ Jo JD=J oB JDAMEn@oM. 6DKI,BlEFFEnC>AJMAAnMEn@oMI>AD=LAIEnJDAo>LEoKI,?onLAnEAnJM=O. 6DAmoKIAonJDA*lEJD=IJDHAA>KJJonI,nKm>AHA@lABJJoHECDJ. *KJJon!D=I= lEIJ oB ?omm=n@I Jo m=nEFKl=JA MEn@oMI, BolloMA@ >O = lEIJ oB ߢmAnK lEnAIߣ AN=?JlO =I FHEnJA@ >O JDA f ?omm=n@, onA FAH BElA noJ onA FAH MEn@oM. 6DAIA mAnK lEnAI =HA IoHJA@ >O BElA n=mA. 1B JDA lEIJ EI lonC, JDA *lEJ mAnK IoBJM=HA MEll m=kA EJ moHA m=n=CA­ =>lA >O CAnAH=JEnC = I?HollEnC mAnK EnIJA=@ oB =n KnMEAl@O lonC lEIJ. 7IEnC JDA mAnK Jo IAlA?J = BElA BHom JDA lEIJ m=kAI JD=J BElA JDA ?KHHAnJ BElA, =n@ JDA moIJ HA?AnJlO ?KHHAnJ MEn@oM En JD=J BElA JDA ?KHHAnJ MEn@oM. *KJ EB JD=J BElA EI =lHA=@O ?KHHAnJ, IAlA?JEnC EJ En JDA mAnK ?O?lAI JDHoKCD JDA MEn@oMI on JDA BElA; JDEI IEmFlAJHE?k=LoE@I=IFA?E=lmAnK Jo ?DooIA MEn@oMI on = BElA. 1B JDAHA EI no MEn@oM oFAn on JDA BElA, sam ?D=nCAI JDA moKIA?KHIoHJoFHomFJJDAKIAHJo?HA=JAonA. 6DA ?omm=n@I on JDA >KJJon ! mAnK =HA IJH=ECDJBoHM=H@ IAA .ECKHA !, =n@ =HA ­ !­

& lEkA JDA ?omm=n@I Jo m=nEFKl=JA MEn@oMI En mux, JDA *lEJߣI MEn@oM IOIJAm. New m=kAI = nAM BElA, =n@ CELAI EJ onA AmFJO MEn@oM, MDoIA IEzA EI @AJAHmEnA@ >O = HA?J=n­ ClA IMAFJ >O JDA moKIA. Zerox FHomFJI BoH = MEn@oM Jo >A IAlA?JA@, =n@ m=kAI = ?lonA oB JD=J MEn@oM; JDEI EI DoM mKlJEFlA MEn@oMI =HA ?HA=JA@ on onA BElA. Reshape ?D=nCAI JDA IEzA oB JDA En@E?=JA@ MEn@oM, =n@ close @AlAJAI EJ. 1B JD=J EI JDA l=IJ MEn­ @oM oFAn on JDA BElA, close BEHIJ @oAI = D ?omm=n@ on JDA BElA. EI E@AnJE?=l Jo = w ?omm=n@ on JDA BElA; EJ EI En JDA mAnK FKHAlO BoH ?onLAnEAn?A. .En=llO, ~~sam~~ EI = mAnK EJAm JD=J =FFA=HI >AJMAAn JDA ?omm=n@I =n@ JDA BElA n=mAI. 5AlA?JEnC EJ m=kAI JDA sam MEn@oM JDA ?KHHAnJ MEn@oM, ?=KIEnC IK>IAGKAnJ JOFEnC Jo >A EnJAH­ FHAJA@=I?omm=n@I.

Figure 3. The menu on button 3. The black rectangle on the left is a scroll bar; the menu is limited to the length shown to prevent its becoming unwieldy. Above the ~~sam~~ line is a list of commands; beneath it is a list of files, presented exactly as with the f command.

9DAn sam HAGKAIJI JD=J = MEn@oM >A IMAFJ, En HAIFonIA Jo new, zerox oH reshape, EJ ?D=nCAI JDA moKIA ?KHIoH BHom JDA KIK=l =HHoM Jo = >oN MEJD = Im=ll =HHoM. 1n JDEI IJ=JA, JDA moKIA m=O >A KIA@ Jo En@E?=JA =n =H>EJH=HO HA?J=nClA >O FHAII­ EnC >KJJon ! =J onA ?oHnAH =n@ HAlA=IEnC EJ =J JDA oFFoIEJA ?oHnAH. MoHA ?onLAnEAnJlO, >KJJon ! m=O IEmFlO >A ?lE?kA@, MDAHAKFon sam ?HA=JAI JDA m=NEm=l HA?J=nClA JD=J ?onJ=EnI JDA ?KHIoH =n@ =>KJI JDA sam MEn@oM. *O Fl=?EnC JDA sam MEn@oM En JDA mE@­ @lA oB JDA I?HAAn, JDA KIAH ?=n @ABEnA JMo HACEonI onA =>oLA, onA >AloM En MDE?D IJ=?kA@ BKllO-oLAHl=FFEnC MEn@oMI ?=n >A ?HA=JA@ MEJD mEnEm=l BKII IAA .ECKHA . 6DEIIEmFlAKIAHEnJAHB=?AJHE?km=kAIMEn@oM?HA=JEonnoJE?A=>lOA=IEAH. 6DA ?KJ-=n@-F=IJA A@EJoH EI AIIAnJE=llO JDA I=mA =I JD=J En 5m=llJ=lk-&. 6DA JANJ En @oJ EI =lM=OI DECDlECDJA@ on JDA I?HAAn. 9DAn = ?D=H=?JAH EI JOFA@ EJ HAFl=?AI @oJ, =n@ IAJI @oJ Jo JDA nKll IJHEnC =BJAH JDA ?D=H=?JAH. 6DKI, oH@En=HO JOFEnC EnIAHJI JANJ. *KJJon EI KIA@ BoH IAlA?JEon: FHAIIEnC JDA >KJJon, moLEnC JDA moKIA, =n@ lEBJEnC JDA >KJJon IAlA?JI IAJI @oJ Jo JDA JANJ >AJMAAn JDA FoEnJI MDAHA JDA >KJJon M=I FHAIIA@ =n@ HAlA=IA@. 2HAIIEnC =n@ HAlA=IEnC =J JDA I=mA FoEnJ IAlA?JI = nKll IJHEnC; JDEI EI ?=llA@ ?lE?kEnC. +lE?kEnC JME?A GKE?klO, oH double clicking, IAlA?JI l=HCAH o>jA?JI; BoH AN=mFlA, @oK>lA ?lE?kEnC En = MoH@ IAlA?JI JDA MoH@, @oK>lA ?lE?kEnC jKIJ EnIE@A =n oFAnEnC >H=?kAJ IAlA?JI JDA JANJ ?onJ=EnA@ En JDA >H=?kAJI D=n@lEnC nAIJA@ >H=?kAJI ?oHHA?JlO, =n@ IEmEl=HlO BoH F=HAnJDAIAI, GKoJAI, =n@ Io on. 6DA @oK>lA-?lE?kEnC HKlAI HABlA?J = >E=I JoM=H@ FHoCH=mmAHI. 1B sam MAHA EnJAn@A@ moHA BoH MoH@ FHo?AIIEnC, @oK>lA-?lE?kIMoKl@FHo>=>lOIAlA?JlEnCKEIJE?IJHK?JKHAIIK?D=IIAnJAn?AI. 1B >KJJon EI FHAIIA@ oKJIE@A JDA ?KHHAnJ MEn@oM, EJ m=kAI JDA En@E?=JA@ MEn@oM ­ "­

?KHHAnJ. 6DEIEIJDAA=IEAIJM=OJoIMEJ?D>AJMAAnMEn@oMI=n@BElAI. 2HAIIEnC >KJJon >HEnCI KF = mAnK oB A@EJEnC BKn?JEonI IAA .ECKHA ". 6DAIA moIJlO =FFlO Jo JDA IAlA?JA@ JANJ: @AlAJAI JDA IAlA?JA@ JANJ, =n@ HAmAm>AHI EJ En = DE@@An >KBBAH ?=llA@ JDA snarf buffer, HAFl=?AI JDA IAlA?JA@ JANJ >O JDA ?onJAnJI oB JDA In=HB >KBBAH, snarf jKIJ ?oFEAI JDA IAlA?JA@ JANJ Jo JDA In=HB >KBBAH, look IA=H?DAI BoHM=H@ BoH JDA nANJ lEJAH=l o??KHHAn?A oB JDA IAlA?JA@ JANJ, =n@ AN?D=nCAI In=HB >KBBAHI MEJD JDA MEn@oM IOIJAm En MDE?D sam EI HKnnEnC. .En=llO, JDA l=IJ HACKl=H ANFHAIIEon KIA@ =FFA=HI =I = mAnK AnJHO Jo IA=H?D BoHM=H@ BoH JDA nANJ o??KHHAn?AoB=m=J?DBoHJDAANFHAIIEon.

Figure 4. The menu on button 2. The bottom entry tracks the recently used , which may be literal text.

6DA HAl=JEonIDEF >AJMAAn JDA ?omm=n@ l=nCK=CA =n@ JDA moKIA l=nCK=CA EI AnJEHAlO @KA Jo JDA AGK=lEJO oB @oJ =n@ JDA IAlA?JA@ JANJ ?DoIAn MEJD >KJJon on JDA moKIA. .oHAN=mFlA,Jom=kA=IAJoB?D=nCAIEn=+IK>HoKJEnA,@oJ?=n>A IAJ >O @oK­ >lA ?lE?kEnC on JDA lABJ >H=?A JD=J >ACEnI JDA IK>HoKJEnA, MDE?D IAJI @oJ BoH JDA ?om­ m=n@ l=nCK=CA. )n =@@HAII-BHAA ?omm=n@ JDAn JOFA@ En JDA sam MEn@oM MEll =FFlO onlO Jo JDA JANJ >AJMAAn JDA oFAnEnC =n@ ?loIEnC >H=?AI oB JDA BKn?JEon. 6DA E@A= EI Jo IAlA?J MD=J OoK M=nJ, =n@ JDAn I=O MD=J OoK M=nJ Jo @o MEJD EJ, MDAJDAH EnLokA@ >O = mAnK IAlA?JEon oH >O = JOFA@ ?omm=n@. )n@ oB ?oKHIA, JDA L=lKA oB @oJ EI DECDlECDJA@ on JDA @EIFl=O =BJAH JDA ?omm=n@ ?omFlAJAI. 6DEI HAl=JEonIDEF >AJMAAn moKIA EnJAH­ B=?A =n@ ?omm=n@ l=nCK=CA EI ?lKmIO Jo ANFl=En, >KJ ?omBoHJ=>lA, ALAn n=JKH=l, En FH=?JE?A.

The Implementation 6DA nANJ BAM IA?JEonI @AI?HE>A DoM sam EI FKJ JoCAJDAH, BEHIJ JDA DoIJ F=HJ, JDAn JDA EnJAH-?omFonAnJ ?ommKnE?=JEon, JDAn JDA JAHmEn=l F=HJ. )BJAH ANFl=EnEnC DoM JDA ?om­ m=n@ l=nCK=CA EI EmFlAmAnJA@, JDA @EI?KIIEon BolloMI HoKCDlO JDA F=JD oB = ?D=H=?JAH BHom JDA JAmFoH=HO BElA on @EI? Jo JDA I?HAAn. 6DA FHAIAnJ=JEon ?AnJAHI on JDA @=J= IJHK?JKHAI, >A?=KIA JD=J EI DoM JDA FHoCH=m M=I @AIECnA@ =n@ >A?=KIA JDA =lCoHEJDmI =HAA=IOJoFHoLE@A,CELAnJDAHECDJ@=J=IJHK?JKHAI.

Parsing and execution 6DA ?omm=n@ l=nCK=CA EI EnJAHFHAJA@ >O F=HIEnC A=?D ?omm=n@ MEJD = J=>lA-@HELAn HA?KHIELA @AI?AnJ F=HIAH, =n@ MDAn = ?omFlAJA ?omm=n@ EI =IIAm>lA@, EnLokEnC = JoF- @oMn ANA?KJoH. MoIJ A@EJoHI EnIJA=@ AmFloO = IEmFlA ?D=H=?JAH-=J-=-JEmA lANE?=l I?=n­ nAH. 7IA oB = F=HIAH m=kAI EJ A=IO =n@Kn=m>ECKoKIJo@AJA?JMDAn=?omm=n@EI?om­ FlAJA, MDE?D D=I JMo =@L=nJ=CAI. .EHIJ, AI?=FA ?onLAnJEonI IK?D =I >=?kIl=IDAI Jo GKoJA mKlJEFlA-lEnA ?omm=n@I =HA KnnA?AII=HO; EB JDA ?omm=n@ EInߣJ BEnEIDA@, JDA F=HIAH kAAFI HA=@EnC. .oH AN=mFlA, = mKlJEFlA-lEnA =FFAn@ @HELAn >O =n x ?omm=n@ EI IJH=ECDJBoHM=H@: ­ #­

x/.*\n/ g/Peter/ a one line about Peter another line about Peter . OJDAH7N1:A@EJoHIMoKl@HAGKEHA=>=?kIl=ID=BJAH=ll>KJJDAl=IJlEnA. 6DAoJDAH=@L=nJ=CAEIIFA?EBE?JoJDAJMo-FHo?AII IJHK?JKHA oB sam. 6DA DoIJ FHo­ ?AII mKIJ @A?E@A MDAn = ?omm=n@ EI ?omFlAJA@ Io JDA ?omm=n@ EnJAHFHAJAH ?=n >A ?=llA@. 6DEI FHo>lAm EI A=IElO HAIolLA@ >O D=LEnC JDA lANE?=l =n=lOzAH HA=@ JDA IEnClA IJHA=m oB ALAnJI BHom JDA JAHmEn=l, @EHA?JlO ANA?KJEnC =ll JOFEnC =n@ moKIA ?omm=n@I, >KJ F=IIEnC Jo JDA F=HIAH ?D=H=?JAHI JOFA@ Jo JDA sam ?omm=n@ MEn@oM. 6DEI I?DAmA EI IlECDJlO ?omFlE?=JA@ >O JDA =L=El=>ElEJO oB ?KJ-=n@-F=IJA A@EJEnC En JDA sam MEn@oM, >KJJD=J@EBBE?KlJOEIHAIolLA@>O =FFlOEnC JDA HKlAI KIA@ En mux: MDAn = nAMlEnA EI JOFA@ Jo JDA sam MEn@oM, =ll JANJ >AJMAAn JDA nAMlEnA =n@ JDA FHALEoKIlO JOFA@ nAMlEnA EI m=@A =L=El=>lA Jo JDA F=HIAH. 6DEI FAHmEJI =H>EJH=HO A@EJEnC Jo >A @onA Jo = ?omm=n@ >ABoHAJOFEnCnAMlEnA=n@JDAHA>OHAGKAIJEnCANA?KJEon. 6DA F=HIAH EI @HELAn >O = J=>lA >A?=KIA JDA IOnJ=N oB =@@HAIIAI =n@ ?omm=n@I EI HACKl=H AnoKCD Jo >A An?o@A@ ?omF=?JlO. 6DAHA =HA BAM IFA?E=l ?=IAI, IK?D =I JDA HAFl=?AmAnJ JANJ En = IK>IJEJKJEon, Io JDA IOnJ=N oB =lmoIJ =ll ?omm=n@I ?=n >A An?o@A@ MEJD = BAM Bl=CI. 6DAIA En?lK@A MDAJDAH JDA ?omm=n@ =lloMI =n =@@HAII BoH AN=mFlA, e @oAI noJ, MDAJDAH EJ J=kAI = HACKl=H ANFHAIIEon =I En x =n@ s, MDAJDAH EJ J=kAI HAFl=?AmAnJ JANJ =I En c oH i, MDE?D m=O >A mKlJE-lEnA, =n@ Io on. 6DA EnJAHn=l IOnJ=N oB HACKl=H ANFHAIIEonI EI D=n@lA@ >O = IAF=H=JA F=HIAH; = HACKl=H ANFHAIIEon EI = lA=B oB JDA ?omm=n@F=HIAJHAA. 4ACKl=HANFHAIIEonI=HA@EI?KIIA@BKllOEnJDAnANJIA?­ JEon. 6DA F=HIAH J=>lA =lIo D=I EnBoHm=JEon =>oKJ @AB=KlJI, Io JDA EnJAHFHAJAH EI =lM=OI ?=llA@ MEJD = ?omFlAJA JHAA. .oH AN=mFlA, JDA F=HIAH BEllI En JDA EmFlE?EJ 0 =n@ $ En JDA =>>HALE=JA@ =@@HAII , ?omm=, EnIAHJI = + Jo JDA lABJ oB =n Kn=@oHnA@ HACKl=H ANFHAI­ IEon En =n =@@HAII, =n@ FHoLE@AI JDA KIK=l @AB=KlJ =@@HAII . @oJ BoH ?omm=n@I JD=J ANFA?J=n=@@HAII>KJ=HAnoJCELAnonA. On?A = ?omFlAJA ?omm=n@ EI F=HIA@, JDA AL=lK=JEon EI A=IO. 6DA =@@HAII EI AL=lK­ =JA@ lABJ-Jo-HECDJ IJ=HJEnC BHom JDA L=lKA oB @oJ, MEJD = moIJlO oH@En=HO ANFHAIIEon AL=l­ K=JoH. )@@HAIIAI, lEkA m=nO oB JDA @=J= IJHK?JKHAI En sam, =HA DAl@ En = + IJHK?JKHA =n@ F=IIA@=HoKn@>OL=lKA:

typedef long Posn; /* Position in a file */ typedef struct Range{ Posn p1, p2; }Range; typedef struct Address{ Range r; File *f; }Address; )n =@@HAII EI An?o@A@ =I = IK>IJHEnC ?D=H=?JAH FoIEJEonI p1 Jo p2 En = BElA f. 6DA @=J=JOFA File EI@AI?HE>A@En@AJ=El>AloM. 6DA =@@HAII EnJAHFHAJAH EI =n Address-L=lKA@ BKn?JEon JD=J JH=LAHIAI JDA F=HIA JHAA@AI?HE>EnC=n=@@HAIIJDAF=HIAJHAABoHJDA=@@HAIID=IJOFA Addrtree: ­ $­

Address address(ap, a, sign) Addrtree *ap; Address a; int sign; { Address a2; do switch(ap−>type){ case ’.’: a=a.f−>dot; break; case ’$’: a.r.p1=a.r.p2=a.f−>nbytes; break; case ’"’: a=matchfile(a, ap−>aregexp)−>dot; break; case ’,’: a2=address(ap−>right, a, 0); a=address(ap−>left, a, 0); if(a.f!=a2.f || a2.r.p2right)!=0); return a; }

6DHoKCDoKJ, AHHoHI =HA D=n@lA@ >O = non-lo?=l goto = setjmp/longjmp En + JAHmEnoloCO DE@@An En = HoKJEnA ?=llA@ error JD=J EmmA@E=JAlO =>oHJI JDA ANA?KJEon, HAJH=?JI =nO F=HJE=llO m=@A ?D=nCAI IAA JDA IA?JEon >AloM on ߢKn@oEnCߣ, =n@ HAJKHnI Jo JDA JoF lALAl oB JDA F=HIAH. 6DA =HCKmAnJ Jo error EI =n AnKmAH=JEon JOFA JD=J EI JH=nIl=JA@ Jo = JAHIA >KJ FoIIE>lO DAlFBKl mAII=CA IK?D =I ߢ?=@@HAIIAI oKJ oB oH@AH.ߣ 8AHO ?ommon mAII=CAI =HA kAFJ IDoHJ; BoH AN=mFlA JDA mAII=CA BoH = B=ElA@ HACKl=H ANFHAIIEonIA=H?DEIߢ?IA=H?D.ߣ +D=H=?JAH =@@HAIIAI IK?D =I #3 =HA JHELE=l Jo EmFlAmAnJ, =I JDA File @=J= IJHK?­ JKHA EI =??AIIE>lA >O ?D=H=?JAH nKm>AH. 0oMALAH, sam kAAFI no EnBoHm=JEon =>oKJ JDA FoIEJEon oB nAMlEnAI ߞ EJ EI Joo ANFAnIELA Jo JH=?k @On=mE?=llO ߞ Io lEnA =@@HAIIAI =HA ?omFKJA@ >O HA=@EnC JDA BElA, ?oKnJEnC nAMlEnAI. -N?AFJ En LAHO l=HCA BElAI, JDEI D=I FHo­ LAn =??AFJ=>lA: BElA =??AII EI B=IJ AnoKCD Jo m=kA JDA JA?DnEGKA FH=?JE?=l, =n@ lEnAI =HA noJ?AnJH=lJoJDAIJHK?JKHAoBJDA?omm=n@l=nCK=CA. 6DA ?omm=n@ EnJAHFHAJAH, ?=llA@ cmdexec, EI =lIo IJH=ECDJBoHM=H@. 6DA F=HIA J=>lA En?lK@AI = BKn?JEon Jo ?=ll Jo EnJAHFHAJ = F=HJE?Kl=H ?omm=n@. 6D=J BKn?JEon HA?AELAI =I =HCKmAnJI JDA ?=l?Kl=JA@ =@@HAII BoH JDA ?omm=n@ =n@ JDA ?omm=n@ JHAA oB JOFA Cmdtree, MDE?D m=O ?onJ=En EnBoHm=JEon IK?D =I JDA IK>JHAA BoH ?omFoKn@ ?omm=n@I. 0AHA,BoHAN=mFlA,EIJDABKn?JEonBoHJDA g =n@ v ?omm=n@I: ­ %­

int g_cmd(a, ) Address a; Cmdtree *cp; { compile(cp−>regexp); if(execute(a.f, a.r.p1, a.r.p2)!=(cp−>cmdchar==’v’)){ a.f−>dot=a; return cmdexec(a, cp−>subcmd); } return TRUE; /* cause execution to continue */ } Compile =n@ execute =HAF=HJoBJDA HACKl=H ANFHAIIEon ?o@A, @AI?HE>A@ En JDA nANJ IA?JEon. *A?=KIA JDA F=HIAH =n@ JDA File @=J= IJHK?JKHA @o moIJ oB JDA MoHk, moIJ ?omm=n@I=HAIEmEl=HlO>HEAB.

Regular expressions 6DA HACKl=H ANFHAIIEon ?o@A En sam EI =n EnJAHFHAJA@, H=JDAH JD=n ?omFElA@ on-JDA-BlO, EmFlAmAnJ=JEon oB 6DomFIonߣI non-@AJAHmEnEIJE? BEnEJA =KJom=Jon =lCoHEJDm. 6DA IOnJ=N =n@ IAm=nJE?I oB JDA ANFHAIIEonI =HA =I En JDA 7N1: FHoCH=m egrep, En?lK@EnC =lJAHn=JEon, ?loIKHAI, ?D=H=?JAH ?l=IIAI, =n@ Io on. 6DA onlO ?D=nCAI En JDA noJ=JEon =HA JMo =@@EJEonI: \n EI JH=nIl=JA@ Jo, =n@ m=J?DAI, = nAMlEnA ?D=H=?JAH, =n@ @ m=J?DAI =nO ?D=H=?JAH. 1n egrep, JDA ?D=H=?JAH . m=J?DAI =nO ?D=H=?JAH AN?AFJ nAMlEnA, =n@ En sam JDA I=mA HKlA IAAmA@ I=BAIJ, Jo FHALAnJ E@EomI lEkA .* BHom IF=nnEnC nAMlEnAI. Egrep ANFHAIIEonI =HA =HCK=>lO Joo ?omFlE?=JA@ BoH =n EnJAH=?JELA A@EJoH ߞ ?AHJ=EnlO EJ MoKl@ m=kA IAnIA EB =ll JDA IFA?E=l ?D=H=?JAHI MAHA JMo-?D=H=?JAH IAGKAn?AI, Io JD=J moIJ oB JDA FKn?JK=JEon ?D=H=?JAHI MoKl@nߣJ D=LA FA?KlE=H mA=nEnCI ߞ >KJ BoH =n EnJAH­ AIJEnC ?omm=n@ l=nCK=CA, BKll HACKl=H ANFHAIIEonI =HA nA?AII=HO, =n@ egrep @ABEnAI JDA BKll HACKl=H ANFHAIIEon IOnJ=N BoH 7N1: FHoCH=mI. )lIo, EJ IAAmA@ IKFAHBlKoKI Jo @ABEnA = nAM IOnJ=N, IEn?A L=HEoKI 7N1: FHoCH=mI ed, egrep =n@ vi @ABEnA Joo m=nO =lHA=@O. 6DA ANFHAIIEonI =HA ?omFElA@ >O = HoKJEnA, compile, JD=J CAnAH=JAI JDA @AI?HEF­ JEon oB JDA non-@AJAHmEnEIJE? BEnEJA IJ=JA m=?DEnA. ) IA?on@ HoKJEnA, execute, EnJAH­ FHAJI JDA m=?DEnA Jo CAnAH=JA JDA lABJmoIJ-lonCAIJ m=J?D oB JDA ANFHAIIEon En = IK>­ , ! IJHEnC oB JDA BElA. 6DA =lCoHEJDm EI @AI?HE>A@ AlIAMDAHA. Execute HAFoHJI MDAJDAH = m=J?D M=I BoKn@, =n@ IAJI = Clo>=l L=HE=>lA, oB JOFA Range, Jo JDA IK>IJHEnC m=J?DA@. ) JHE?k EI HAGKEHA@ Jo AL=lK=JA JDA ANFHAIIEon En HALAHIA, IK?D =I MDAn IA=H?DEnC >=?kM=H@IBoH=nANFHAIIEon. .oHAN=mFlA,

−/P.*r/ lookI >=?kM=H@I JDHoKCD JDA BElA BoH = m=J?D oB JDA ANFHAIIEon. 6DA ANFHAIIEon, DoM­ ALAH, EI @ABEnA@ BoH = BoHM=H@ IA=H?D. 6DA IolKJEon EI Jo ?onIJHK?J = m=?DEnA E@AnJE?=l Jo JDA m=?DEnA BoH = BoHM=H@ IA=H?D AN?AFJ BoH = HALAHI=l oB =ll JDA ?on?=JAn=JEon oFAH=JoHI JDA oJDAH oFAH=JoHI =HA IOmmAJHE? Kn@AH @EHA?JEon HALAHI=l, Jo AN?D=nCA JDA mA=nEnC oB JDA oFAH=JoHI ^ =n@ $, =n@ JDAn Jo HA=@ JDA BElA >=?kM=H@I, lookEnC BoH JDA KIK=l A=H­ lEAIJlonCAIJm=J?D. Execute CAnAH=JAI onlO onA m=J?D A=?D JEmA EJ EI ?=llA@. 6o EnJAHFHAJ looFEnC ?onIJHK?JI IK?D =I JDA x ?omm=n@, sam mKIJ JDAHABoHA IOn?DHonEzA >AJMAAn ?=llI oB execute Jo =LoE@ FHo>lAmI MEJD nKll m=J?DAI. .oH AN=mFlA, ALAn CELAn JDA lABJmoIJ- lonCAIJ HKlA, JDA ANFHAIIEon a* m=J?DAI JDHAA JEmAI En JDA IJHEnC ab JDA ?D=H=?JAH a, JDA nKll IJHEnC >AJMAAn JDA a =n@ b, =n@ JDA BEn=l nKll IJHEnC. )BJAH HAJKHnEnC = m=J?D BoH JDA a, sam mKIJ noJ m=J?D JDA nKll IJHEnC >ABoHA JDA b. 6DA =lCoHEJDm IJ=HJI execute =J JDA An@ oB EJI FHALEoKI m=J?D, =n@ EB JDA m=J?D EJ HAJKHnI EI nKll =n@ =>KJI ­ &­

JDAFHALEoKIm=J?D,HAjA?JIJDAm=J?D=n@=@L=n?AIJDAEnEJE=lFoIEJEononA?D=H=?JAH.

Memory allocation 6DA + l=nCK=CA D=I no mAmoHO =llo?=JEon FHEmEJELAI, =lJDoKCD = IJ=n@=H@ lE>H=HO HoK­ JEnA, malloc, FHoLE@AI =@AGK=JA IAHLE?A BoH IEmFlA FHoCH=mI. .oH IFA?EBE? KIAI, DoM­ ALAH, EJ ?=n >A >AJJAH Jo MHEJA = ?KIJom =llo?=JoH. 6DA =llo?=JoH oH H=JDAH, F=EH oB =llo?=­ JoHI @AI?HE>A@ DAHA MoHk En >oJD JDA JAHmEn=l =n@ DoIJ F=HJI oB sam. 6DAO =HA @AIECnA@ BoH ABBE?EAnJ m=nEFKl=JEon oB IJHEnCI, MDE?D =HA =llo?=JA@ =n@ BHAA@ BHAGKAnJlO =n@ L=HO En lAnCJD BHom AIIAnJE=llO zAHo Jo ! K>OJAI LAHO l=HCA IJHEnCI =HA MHEJJAn Jo @EI?. MoHA EmFoHJ=nJ, IJHEnCI m=O >A l=HCA =n@ ?D=nCA IEzA oBJAn, Io Jo mEnEmEzA mAmoHO KI=CA EJ EI DAlFBKl Jo HA?l=Em =n@ Jo ?o=lAI?A JDA KnKIA@ FoHJEonI oB IJHEnCI MDAnJDAO=HAJHKn?=JA@. O>jA?JI Jo >A =llo?=JA@ En sam =HA oB JMo Bl=LoHI: JDA BEHIJ EI + structs, MDE?D =HA Im=ll =n@ oBJAn =@@HAIIA@ >O FoEnJAH L=HE=>lAI; JDA IA?on@ EI L=HE=>lA-IEzA@ =HH=OI oB ?D=H=?JAHI oH EnJACAHI MDoIA >=IA FoEnJAH EI =lM=OI KIA@ Jo =??AII JDAm. 6DA mAm­ oHO =llo?=JoH En sam EI JDAHABoHA En JMo F=HJI: BEHIJ, = JH=@EJEon=l BEHIJ-BEJ =llo?=JoH JD=J FHoLE@AI BENA@ IJoH=CA BoH structs; =n@ IA?on@, = C=H>=CA-?omF=?JEnC =llo?=JoH JD=J HA@K?AI IJoH=CA oLAHDA=@ BoH L=HE=>lA-IEzA@ o>jA?JI, =J JDA ?oIJ oB IomA >ookkAAFEnC. 6DA JMo JOFAI oB o>jA?JI =HA =llo?=JA@ BHom =@joEnEnC =HAn=I, MEJD JDA C=H>=CA- ?omF=?JEnC =llo?=JoH ?onJHollEnC JDA =HAn= MEJD DECDAH =@@HAIIAI. 5AF=H=JEnC EnJo JMo =HAn=I IEmFlEBEAI ?omF=?JEon =n@ FHALAnJI BH=CmAnJ=JEon @KA Jo EmmoL=>lA o>jA?JI. 6DA =??AII HKlAI BoH C=H>=CA-?omF=?J=>lA o>jA?JI @EI?KIIA@ En JDA nANJ F=H=CH=FD =lloM JDAm Jo >A HAlo?=JA@, Io MDAn JDA BEHIJ-BEJ =HAn= nAA@I IF=?A, EJ moLAI JDA C=H>=CA-?omF=?JA@ =HAn= Jo DECDAH =@@HAIIAI Jo m=kA Hoom. 5JoH=CA EI JDAHABoHA ?HA­ =JA@ onlO =J IK??AIIELAlO DECDAH =@@HAIIAI, AEJDAH MDAn moHA C=H>=CA-?omF=?JA@ IF=?A EInAA@A@oHMDAnJDABEHIJ-BEJ=HAn=FKIDAIKFJDAoJDAH=HAn=. O>jA?JI JD=J m=O >A ?omF=?JA@ @A?l=HA Jo JDA =llo?=JoH = ?All JD=J EI CK=H=nJAA@ Jo >A JDA IolA HAFoIEJoHO oB JDA =@@HAII oB JDA o>jA?J MDAnALAH = ?omF=?JEon ?=n o??KH. 6DA ?omF=?JoH ?=n JDAn KF@=JA JDA =@@HAII MDAn JDA o>jA?J EI moLA@. .oH AN=mFlA, JDAEmFlAmAnJ=JEonoBJOFA List HA=llO=L=HE=>lA-lAnCJD=HH=OEI: typedef struct List{ int nused; long *ptr; }List; 6DA ptr ?All mKIJ =lM=OI >A KIA@ @EHA?JlO, =n@ nALAH ?oFEA@. 9DAn = List EI Jo >A ?HA=JA@ JDA List IJHK?JKHA EI =llo?=JA@ En JDA oH@En=HO BEHIJ-BEJ=HAn==n@EJI ptr EI=llo­ ?=JA@ En JDA C=H>=CA-?omF=?JA@ =HAn=. ) IEmEl=H @=J= JOFA BoH IJHEnCI, ?=llA@ String, IJoHAIL=HE=>lA-lAnCJD?D=H=?JAH=HH=OIoBKFJo! %$%AlAmAnJI. ) HAl=JA@ m=JJAH oB FHoCH=mmEnC IJOlA: sam BHAGKAnJlO F=IIAI IJHK?JKHAI >O L=lKA, MDE?D IEmFlEBEAI JDA ?o@A. 6H=@EJEon=llO, + FHoCH=mI D=LA F=IIA@ IJHK?JKHAI >O HABAH­ An?A, >KJ EmFlE?EJ =llo?=JEon on JDA IJ=?k EI A=IEAH Jo KIA. 5JHK?JKHA F=IIEnC EI = HAl=­ JELAlO nAM BA=JKHA oB + EJ EI noJ En JDA IJ=n@=H@ HABAHAn?A m=nK=l BoH + ", =n@ EI FooHlO IKFFoHJA@EnmoIJ ?ommAH?E=l + ?omFElAHI. 1JߣI ?onLAnEAnJ =n@ ANFHAIIELA, JDoKCD, =n@ IEmFlEBEAI mAmoHO m=n=CAmAnJ >O =LoE@EnC JDA =llo?=JoH =lJoCAJDAH =n@ AlEmEn=JEnC FoEnJAH=lE=IAI.

Data structures for manipulating files -NFAHEAn?A MEJD jim IDoMA@ JD=J JDA HAGKEHAmAnJI oB JDA BElA @=J= IJHK?JKHA MAHA BAM, >KJ IJHE?J. .EHIJ, BElAI nAA@ Jo >A HA=@ =n@ MHEJJAn GKE?klO; =@@EnC = BHAID BElA mKIJ >A F=EnlAII. 5A?on@, JDA EmFlAmAnJ=JEon mKIJ Fl=?A no =H>EJH=HO KFFAH lEmEJ on JDA nKm­ >AH oH IEzAI oB BElAI. 1J IDoKl@ >A FH=?JE?=l Jo A@EJ m=nO BElAI, =n@ BElAI KF Jo mAC=>OJAI En lAnCJD IDoKl@ >A D=n@lA@ CH=?ABKllO. 6DEI EmFlEAI JD=J BElAI >A IJoHA@ on @EI?, noJ En ­ '­ m=En mAmoHO. )BE?Eon=@oI oB LEHJK=l mAmoHO m=O =HCKA oJDAHMEIA, >KJ JDA EmFlAmAn­ J=JEon oB LEHJK=l mAmoHO En oKH IOIJAm EI noJ IomAJDEnC Jo @AFAn@ on BoH Coo@ FAHBoH­ m=n?A. 6DEH@, ?D=nCAI Jo BElAI nAA@ >A m=@A >O onlO JMo FHEmEJELAI: @AlAJEon =n@ EnIAHJEon. 6DAIA =HA EnLAHIAI oB A=?D oJDAH, MDE?D IEmFlEBEAI JDA EmFlAmAnJ=JEon oB JDA Kn@o oFAH=JEon. .En=llO, EJ mKIJ >A A=IO =n@ ABBE?EAnJ Jo =??AII JDA BElA, AEJDAH BoHM=H@I oH>=?kM=H@I,=>OJA=J=JEmA. 6DA File @=J= JOFA EI ?onIJHK?JA@ BHom JDHAA IEmFlAH @=J= IJHK?JKHAI JD=J Dol@ =HH=OI oB ?D=H=?JAHI. -=?D oB JDAIA JOFAID=I=nEnIAHJEon=n@@AlAJEonoFAH=JoH,=n@JDA EnIAHJEon=n@@AlAJEonoFAH=JoHIoBJDA File JOFAEJIAlB=HA?onIJHK?JA@BHomJDAm. 6DA IEmFlAIJ JOFA EI JDA String, MDE?D EI KIA@ Jo Dol@ IJHEnCI En m=En mAmoHO. 6DA ?o@A JD=J m=n=CAI CK=H=nJAAI JD=J JDAO MEll nALAH >A lonCAH JD=n IomA mo@AH=JA IEzA, =n@ En FH=?JE?A JDAO =HA H=HAlO l=HCAH JD=n & K>OJAI. Strings D=LA JMo FKHFoIAI: JDAO Dol@ IDoHJ IJHEnCI lEkA BElA n=mAI MEJD lEJJlA oLAHDA=@, =n@ >A?=KIA JDAO =HA @AlE>AH=JAlO Im=ll, JDAO =HA ABBE?EAnJ Jo mo@EBO. 6DAO =HA JDAHABoHA KIA@ =I JDA @=J= IJHK?JKHABoHEn-mAmoHO?=?DAI. 6DA @EI? ?oFO oB JDA BElA EI m=n=CA@ >O = @=J= IJHK?JKHA ?=llA@ = Disc, MDE?D ?oH­ HAIFon@I Jo = JAmFoH=HO BElA. ) Disc D=I no IJoH=CA En m=En mAmoHO oJDAH JD=n >ook­ kAAFEnCEnBoHm=JEon;JDA=?JK=l@=J=>AEnCDAl@EI=llonJDA @EI?. 6o HA@K?A JDA nKm>AH oB oFAn BElAI nAA@A@, sam oFAnI = @ozAn JAmFoH=HO 7N1: BElAI =n@ mKlJEFlANAI JDA Discs KFon JDAm. 6DEI FAHmEJI m=nO BElAI Jo >A A@EJA@; JDA AnJEHA sam IoKH?A "& BElAI m=O >A A@EJA@ ?omBoHJ=>lO MEJD = IEnClA EnIJ=n?A oB sam. )llo?=JEnC onA JAmFo­ H=HO BElA FAH Disc MoKl@ IJH=En JDA oFAH=JEnC IOIJAmߣI lEmEJ on JDA nKm>AH oB oFAn BElAI. )lIo, IFHA=@EnC JDA JH=BBE? =monC JAmFoH=HO BElAI kAAFI JDA BElAI IDoHJAH, =n@ IDoHJAHBElAI=HAmoHAABBE?EAnJlOEmFlAmAnJA@>OJDA7N1:1/OIK>IOIJAm. ) Disc EI =n =HH=O oB BENA@-lAnCJD >lo?kI, A=?D oB MDE?D ?onJ=EnI >AJMAAn =n@ "'$ ?D=H=?JAHI oB =?JELA @=J=. 6DA >lo?k IEzA oB oKH 7N1: BElA IOIJAm EI "'$ >OJAI. 6DA >lo?k =@@HAIIAI MEJDEn JDA JAmFoH=HO BElA =n@ JDA lAnCJD oB A=?D >lo?k =HA IJoHA@ En = List. 9DAn ?D=nCAI =HA m=@A JDA lELA F=HJ oB >lo?kI m=O ?D=nCA IEzA. *lo?kI =HA ?HA=JA@ =n@ ?o=lAI?A@ MDAn nA?AII=HO Jo JHO Jo kAAF JDA IEzAI >AJMAAn "& =n@ "'$ >OJAI. )n =?JELAlO ?D=nCEnC F=HJ oB JDA Disc JDAHABoHA JOFE?=llO D=I =>oKJ = kElo>OJA oB IloF JD=J ?=n >A EnIAHJA@ oH @AlAJA@ MEJDoKJ ?D=nCEnC moHA JD=n onA >lo?k oH =BBA?JEnC JDA >lo?k oH@AH. 9DAn =n EnIAHJEon MoKl@ oLAHBloM = >lo?k, JDA >lo?k EI IFlEJ, = nAM onA EI =llo?=JA@ Jo HA?AELA JDA oLAHBloM, =n@ JDA mAmoHO-HAIE@AnJ lEIJ oB >lo?kI EI HA=H­ H=nCA@JoHABlA?JJDAEnIAHJEonoBJDAnAM>lo?k. O>LEoKIlO,CoEnCJoJDA@EI?BoHALAHOmo@EBE?=JEonJoJDABElAEIFHoDE>EJELAlO ANFAn­ IELA. 6DA @=J= JOFA Buffer ?onIEIJI oB = Disc Jo Dol@ JDA @=J= =n@ = String JD=J =?JI =I = ?=?DA. 6DEI EI JDA BEHIJ oB = IAHEAI oB ?=?DAI JDHoKCDoKJ JDA @=J= IJHK?JKHAI En sam. 6DA ?=?DAI noJ onlO EmFHoLA FAHBoHm=n?A, JDAO FHoLE@A = M=O Jo oHC=nEzA JDA BloM oB @=J=, F=HJE?Kl=HlO En JDA ?ommKnE?=JEon >AJMAAn JDA DoIJ =n@ JAHmEn=l. 6DEI E@A=EI@ALAloFA@>AloM,EnJDAIA?JEonon?ommKnE?=JEonI. 6o HA@K?A @EI? JH=BBE?, ?D=nCAI Jo = Buffer =HA mA@E=JA@ >O = L=HE=>lA-lAnCJD IJHEnC, En mAmoHO, JD=J =?JI =I = ?=?DA. 9DAn =n EnIAHJEon oH @AlAJEon EI m=@A Jo = Buffer, EB JDA ?D=nCA ?=n >A =??ommo@=JA@ >O JDA ?=?DA, EJ EI @onA JDAHA. 1B JDA ?=?DA >A?omAI >ECCAH JD=n = >lo?k >A?=KIA oB =n EnIAHJEon, IomA oB EJ EI MHEJJAn Jo JDA Disc =n@ @AlAJA@ BHom JDA ?=?DA. 1B JDA ?D=nCA @oAI noJ EnJAHIA?J JDA ?=?DA, JDA ?=?DA EI BlKIDA@. 6DA ?=?DA EI onlO lo=@A@ =J JDA nAM FoIEJEon EB JDA ?D=nCA EI Im=llAH JD=n = >lo?k; oJDAHMEIA, EJ EI IAnJ @EHA?JlO Jo JDA Disc. 6DEI EI >A?=KIA l=HCA ?D=nCAI =HA JOFE­ ?=llOIAGKAnJE=l,MDAHAKFonJDAnANJ?D=nCAEIKnlEkAlOJooLAHl=FJDA?KHHAnJonA. ) File ?omFHEIAI = String Jo Dol@ JDA BElA n=mA =n@ IomA =n?Ell=HO @=J= IK?D =I @oJ =n@ JDA mo@EBEA@ >EJ. 6DA moIJ EmFoHJ=nJ ?omFonAnJI, JDoKCD, =HA = F=EH oB Buffers, onA ?=llA@ JDA JH=nI?HEFJ =n@ JDA oJDAH JDA ?onJAnJI. 6DAEH KIA EI @AI?HE>A@ EnJDAnANJIA?JEon. ­ ­

6DA oLAH=ll IJHK?JKHA EI IDoMn En .ECKHA #. )lJDoKCD EJ m=O IAAm JD=J JDA @=J= EI JoK?DA@ m=nO JEmAI on EJI M=O BHom JDA Disc, EJ EI HA=@ >O onA 7N1: IOIJAm ?=ll @EHA?JlO EnJo JDA ?=?DA oB JDA =IIo?E=JA@ Buffer; no ANJH= ?oFO EI @onA. 5EmEl=HlO, MDAn BlKIDEnC JDA ?=?DA, JDA JANJ EI MHEJJAn @EHA?JlO BHom JDA ?=?DA Jo @EI?. MoIJ oFAH=­ JEonI =?J @EHA?JlO on JDA JANJ En JDA ?=?DA. ) FHEn?EFlA =FFlEA@ JDHoKCDoKJ sam EI JD=J JDA BAMAH JEmAI JDA @=J= EI ?oFEA@, JDA B=IJAH JDA FHoCH=m MEll HKn IAA =lIo JDA F=FAH>O 9=EJA #.

File

Buffer String Buffer String JH=nI?HEFJ ?=?DA ?onJAnJI ?=?DA

Disc Disc

JAmF.BElA JAmF.BElA

Figure 5. File data structures. The temporary files are stored in the standard repository for such files on the system.

6DA ?onJAnJI oB = File =HA =??AIIA@ >O = HoKJEnA JD=J ?oFEAI Jo = >KBBAH = IK>­ IJHEnC oB = BElA IJ=HJEnC =J = IFA?EBEA@ oBBIAJ. 6o HA=@ = >OJA =J = JEmA, = FAH-File =HH=O EI lo=@A@ IJ=HJEnC BHom = IFA?EBEA@ EnEJE=l FoIEJEon, =n@ >OJAI m=O JDAn >A HA=@ BHom JDA =HH=O. 6DA EmFlAmAnJ=JEon EI @onA >O = m=?Ho IEmEl=H Jo JDA + IJ=n@=H@ 1/O getc m=?Ho. " *A?=KIA JDA HA=@EnC m=O >A @onA =J =nO =@@HAII, = mEnoH ?D=nCA Jo JDA m=?Ho =lloMIJDABElAJo>AHA=@>=?kM=H@I. 6DEI=HH=OEIHA=@-onlO;JDAHAEIno putc.

Doing and undoing Sam D=I =n KnKIK=l mAJDo@ BoH m=n=CEnC ?D=nCAI Jo BElAI. 6DA ?omm=n@ l=nCK=CA m=kAI EJ A=IO Jo IFA?EBO mKlJEFlA L=HE=>lA-lAnCJD ?D=nCAI Jo =BElAmEllEonIoB>OJAIlonC, =n@ IK?D ?D=nCAI mKIJ >A m=@A ABBE?EAnJlO EB JDA A@EJoH EI Jo >A FH=?JE?=l. 6DA KIK=l JA?DnEGKAI BoH EnIAHJEnC =n@ @AlAJEnC IJHEnCI =HA En=@AGK=JA Kn@AH JDAIA ?on@EJEonI. 6DA Buffer =n@ Disc @=J= IJHK?JKHAI =HA @AIECnA@ BoH ABBE?EAnJ H=n@om =??AII Jo lonC IJHEnCI, >KJ ?=HA mKIJ >A J=kAn Jo =LoE@ IKFAH-lEnA=H >AD=LEoH MDAn m=kEnC m=nO ?D=nCAIIEmKlJ=nAoKIlO. Sam KIAI = JMo-F=II =lCoHEJDm BoH m=kEnC ?D=nCAI, =n@ JHA=JI A=?D BElA =I = @=J=­ >=IA =C=EnIJ MDE?D JH=nI=?JEonI =HA HACEIJAHA@. +D=nCAI =HA noJ m=@A @EHA?JlO Jo JDA ?onJAnJI. 1nIJA=@, MDAn = ?omm=n@ EI IJ=HJA@, = ߢm=Hkߣ ?onJ=EnEnC = IAGKAn?A nKm>AH EI Fl=?A@ En JDA JH=nI?HEFJ Buffer, =n@ A=?D ?D=nCA m=@A Jo JDA BElA, AEJDAH =n EnIAH­ JEon oH @AlAJEon oH = ?D=nCA Jo JDA BElA n=mA, EI =FFAn@A@ Jo JDA An@ oB JDA JH=nI?HEFJ. 9DAn JDA ?omm=n@ EI ?omFlAJA, JDA JH=nI?HEFJ EI HAMoKn@ Jo JDA m=Hk =n@ =FFlEA@ Jo JDA?onJAnJI. OnA HA=Ion BoH IAF=H=JEnC AL=lK=JEon BHom =FFlE?=JEon En JDEI M=O EI Jo IEmFlEBO JH=?kEnC JDA =@@HAIIAI oB ?D=nCAI m=@A En JDA mE@@lA oB = lonC IAGKAn?A. 6DA JMo- F=II =lCoHEJDm =lIo =lloMI =ll ?D=nCAI Jo =FFlO Jo JDA original @=J=: no ?D=nCA ?=n =BBA?J =noJDAH ?D=nCA m=@A En JDA I=mA ?omm=n@. 6DEI EI F=HJE?Kl=HlO EmFoHJ=nJ MDAn AL=lK=JEnC =n x ?omm=n@ >A?=KIA EJ FHALAnJI HACKl=H ANFHAIIEon m=J?DAI BHom IJKm­ >lEnC oLAH ?D=nCAI m=@A A=HlEAH En JDA ANA?KJEon. )lIo, JDA JMo-F=II =lCoHEJDm EI ­ ­

?lA=nAH JD=n JDA M=O oJDAH 7N1: A@EJoHI =lloM ?D=nCAI Jo =BBA?J A=?D oJDAH; BoH AN=mFlA, edߣI E@EomI Jo @o JDEnCI lEkA @AlAJA ALAHO oJDAH lEnA @AFAn@ ?HEJE?=llO on JDA EmFlAmAn­ J=JEon. 1nIJA=@, samߣI IEmFlA mo@Al, En MDE?D =ll ?D=nCAI En = ?omm=n@ o??KH ABBA?­ JELAlOIEmKlJ=nAoKIlO,EIA=IOJoANFl=En=n@JoKn@AHIJ=n@. 6DA HA?oH@I En JDA JH=nI?HEFJ =HA oB JDA BoHm ߢߢ@AlAJA IK>IJHEnC BHom lo?=JEonI ! Jo "#$ߣߣ =n@ ߢߢEnIAHJ ?D=H=?JAHI ߢDAllo JDAHAߣ =J lo?=JEon %&'.ߣߣ 1J EI =n AHHoH EB JDA ?D=nCAI=HAnoJ=JmonoJonE?=llOCHA=JAHFoIEJEonIJDHoKCDJDABElA. 9DElA JDA KF@=JA EI o??KHHEnC, JDAIA nKm>AHI mKIJ >A oBBIAJ >O A=HlEAH ?D=nCAI, >KJ JD=J EI IJH=ECDJBoHM=H@ =n@ lo?=l Jo JDA KF@=JA HoKJEnA; moHAoLAH, =ll JDA nKm>AHI D=LA >AAn ?omFKJA@ >ABoHA JDABEHIJEIAN=mEnA@. 6HA=JEnC JDA BElA =I = JH=nI=?JEon IOIJAm D=I =noJDAH =@L=nJ=CA: Kn@o EI JHELE=l. )ll EJ J=kAI EI Jo EnLAHJ JDA JH=nI?HEFJ =BJAH EJ D=I >AAn EmFlAmAnJA@, ?onLAHJEnC EnIAHJEonI EnJo @AlAJEonI =n@ LE?A LAHI=, =n@ I=LEnC JDAm En = Dol@EnC Buffer. 6DA ߢ@oߣ JH=n­ I?HEFJ ?=n JDAn >A @AlAJA@ BHom JDA JH=nI?HEFJ Buffer =n@ HAFl=?A@ >O JDA ߢKn@oߣ JH=n­ I?HEFJ. 1B =n Kn@o EI HAGKAIJA@, JDA JH=nI?HEFJ EI HAMoKn@ =n@ JDA Kn@o JH=nI?HEFJ ANA­ ?KJA@. *A?=KIA JDA JH=nI?HEFJ Buffer EI noJ JHKn?=JA@ =BJAH A=?D ?omm=n@, EJ =??KmK­ l=JAI IK??AIIELA ?D=nCAI. ) IAGKAn?A oB Kn@o ?omm=n@I ?=n JDAHABoHA >=?k KF JDA BElA =H>EJH=HElO, MDE?D EI moHA DAlFBKl JD=n JDA moHA ?ommonlO EmFlAmAnJA@ IAlB-EnLAHIA BoHm oB Kn@o. Sam FHoLE@AI no M=O Jo Kn@o =n Kn@o, >KJ EB EJ MAHA @AIEHA@, EJ MoKl@ >A A=IO Jo FHoLE@A >O HA-EnJAHFHAJEnC JDA ߢ@oߣ JH=nI?HEFJ. -=?D m=Hk En JDA JH=nI?HEFJ ?onJ=EnI = IAGKAn?A nKm>AH =n@ JDA oBBIAJ EnJo JDA JH=nI?HEFJ oB JDA FHALEoKI m=Hk, Jo =E@ EnKnMEn@EnCJDAJH=nI?HEFJ. M=HkI=lIo?onJ=EnJDAL=lKAoB@oJ=n@JDAmo@EBEA@>EJ Io JDAIA ?=n >A HAIJoHA@ A=IElO. 7n@oEnC mKlJEFlA BElAI EI A=IO; EJ mAHAlO @Am=n@I Kn@o­ EnC=llBElAIMDoIAl=JAIJ?D=nCAD=IJDAI=mAIAGKAn?AnKm>AH=IJDA?KHHAnJBElA. )noJDAH >AnABEJ oB D=LEnC = JH=nI?HEFJ EI JD=J AHHoHI An?oKnJAHA@ En JDA mE@@lA oB = ?omFlE?=JA@ ?omm=n@ nAA@ noJ lA=LA JDA BElAI En =n EnJAHmA@E=JA IJ=JA. *O HAMEn@EnC JDA JH=nI?HEFJ Jo JDA m=Hk >ACEnnEnC JDA ?omm=n@, JDA F=HJE=l ?omm=n@ ?=n >A JHELE=llO Kn@onA. 9DAn JDA KF@=JA =lCoHEJDm M=I BEHIJ EmFlAmAnJA@, EJ M=I Kn=??AFJ=>lO IloM, Io = ?=?DA M=I =@@A@ Jo ?o=lAI?A nA=H>O ?D=nCAI, HAFl=?EnC mKlJEFlA Im=ll ?D=nCAI >O = IEn­ ClA l=HCAH onA. 6DEI HA@K?A@ JDA nKm>AH oB EnIAHJEonI EnJo JDA JH=nI=?JEon Buffer, =n@ m=@A = @H=m=JE? EmFHoLAmAnJ En FAHBoHm=n?A, >KJ m=@A EJ EmFoIIE>lA Jo D=n@lA ?D=nCAI En non-monoJonE? oH@AH En JDA BElA; JDA ?=?DEnC mAJDo@ onlO MoHkI EB ?D=nCAI @onߣJ oLAHl=F. *ABoHA JDA ?=?DA M=I =@@A@, JDA JH=nI=?JEon ?oKl@ En FHEn?EFlA >A IoHJA@ EB JDA ?D=nCAI MAHA oKJ oB oH@AH, =lJDoKCD JDEI M=I nALAH @onA. 6DA ?KHHAnJ IJ=JKI EI JDAHABoHA =??AFJ=>lA FAHBoHm=n?A MEJD = mEnoH HAIJHE?JEon on Clo>=l ?D=nCAI, MDE?D EI IomAJEmAI,>KJH=HAlO,=n=nnoO=n?A. 6DA KF@=JA =lCoHEJDm o>LEoKIlO F=MI JDA @=J= moHA JD=n IEmFlAH =lCoHEJDmI, >KJ EJ EI noJ FHoDE>EJELAlO ANFAnIELA; JDA ?=?DAI DAlF. 6DA FHEn?EFlA oB =LoE@EnC ?oFOEnC JDA @=J= EI IJEll DonoHA@ DAHA, =lJDoKCD noJ =I FEoKIlO: JDA @=J= EI moLA@ BHom ?onJAnJIߣ ?=?DA Jo JDA JH=nI?HEFJߣI =ll =J on?A =n@ JDHoKCD onlO onA EnJAHn=l >KBBAH. 2AHBoHm=n?A BECKHAI ?onBEHm JDA ABBE?EAn?O. 6o HA=@ BHom = @A=@ IJ=HJ = DKn@HA@ kElo>OJA BElA on = 8):- /%# J=kAI ." IA?on@I oB KIAH JEmA, .# IA?on@IoBIOIJAmJEmA,=n@#IA?on@I oBHA=l JEmA. 4A=@EnC JDA I=mA BElA En ed J=kAI $. IA?on@I oB KIAH JEmA, .% IA?on@I oB IOIJAm JEmA, =n@ & IA?on@I oB HA=l JEmA. Sam KIAI =>oKJ D=lB JDA +27 JEmA. ) moHA EnJAHAIJEnC AN=mFlA EI JDA onA IJ=JA@ =>oLA: EnIAHJEnC = ?D=H=?JAH >AJMAAn ALAHO F=EH oB ?D=H=?JAHIEnJDABElA. 6DA sam ?omm=n@EI ,y/@/ a/x/ =n@ J=kAI ! +27 IA?on@I FAH kElo>OJA oB EnFKJ BElA, oB MDE?D =>oKJ = JDEH@ EI IFAnJ En JDA HACKl=H ANFHAIIEon ?o@A. 6DEI JH=nIl=JAI Jo =>oKJ # ?D=nCAI FAH IA?on@. Ed J=kAI .# IA?on@I FAH kElo>OJA Jo m=kA = IEmEl=H ?D=nCA ECnoHEnC nAMlEnAI, >KJ ?=nnoJ Kn@o ' EJ. 6DA I=mA AN=mFlA En , = L=HE=nJ oB ed @onA =J JDA 7nELAHIEJO oB +=lEBoHnE= =J ­ ­

*AHkAlAO, MDE?D =lloMI onA lALAl oB Kn@oEnC, =C=En J=kAI ! IA?on@I. 1n IKmm=HO, samߣI FAHBoHm=n?A EI ?omF=H=>lA Jo JD=J oB oJDAH 7N1: A@EJoHI, =lJDoKCD EJ IolLAI = D=H@AH FHo>lAm.

Communications 6DA @EI?KIIEon Io B=H D=I @AI?HE>A@ JDA EmFlAmAnJ=JEon oB JDA DoIJ F=HJ oB sam; JDA nANJ BAM IA?JEonI ANFl=En DoM = m=?DEnA MEJD moKIA =n@ >EJm=F @EIFl=O ?=n >A AnC=CA@ Jo EmFHoLA EnJAH=?JEon. Sam EI noJ JDA BEHIJ A@EJoH Jo >A MHEJJAn =I JMo FHo­ ?AIIAI, $ >KJEJIEmFlAmAnJ=JEonD=IIomAKnKIK=l=IFA?JI. 6DAHA =HA IALAH=l M=OI samߣI DoIJ =n@ JAHmEn=l F=HJI m=O >A ?onnA?JA@. 6DA BEHIJ =n@ IEmFlAIJ EI Jo BoHCo JDA JAHmEn=l F=HJ =n@ KIA JDA DoIJ F=HJߣI ?omm=n@ l=nCK=CA Jo A@EJ JANJ on =n oH@En=HO JAHmEn=l. 6DEI mo@A EI EnLokA@ >O IJ=HJEnC sam MEJD JDA −d oFJEon. 9EJD no oFJEonI, sam HKnI IAF=H=JA DoIJ =n@ JAHmEn=l FHoCH=mI, ?ommKnE?=J­ EnC MEJD = mAII=CA FHoJo?ol oLAH JDA FDOIE?=l ?onnA?JEon JD=J joEnI JDAm. 6OFE?=llO, JDA ?onnA?JEon EI =n 45- ! lEnk >AJMAAn = *lEJ JDA FHoJoJOFE?=l @EIFl=O BoH sam=n@=DoIJ HKnnEnC JDA NEnJD -@EJEon oB JDA 7N1: oFAH=JEnC IOIJAm.& 6DEI EI JDA LAHIEon oB JDA IOI­ JAm KIA@ En JDA +omFKJEnC 5?EAn?AI 4AIA=H?D +AnJAH =J )66 *All L=>oH=JoHEAI [noM LK?AnJ 6A?DnoloCEAI, *All L=>I], MDAHA 1 MoHk. 1JI HAlAL=nJ =IFA?JI =HA @EI?KIIA@ En JDA *lEJ F=FAH.  6DA EmFlAmAnJ=JEon oB sam BoH JDA 57N ?omFKJAH HKnI >oJD FHo?AIIAI on JDAI=mAm=?DEnA=n@?onnA?JIJDAm>O=FEFA. 6DA loM >=n@ME@JD oB =n 45- ! lEnk nA?AIIEJ=JA@ JDA IFlEJ >AJMAAn JDA JMo FHo­ CH=mI. 6DA @ELEIEon EI = mENA@ >lAIIEnC: = FHoCH=m En JMo F=HJI EI mK?D D=H@AH Jo MHEJA =n@ Jo @A>KC JD=n = IAlB-?onJ=EnA@ onA, >KJ JDA IFlEJ m=kAI IALAH=l KnKIK=l ?onBECKH=­ JEonI FoIIE>lA. 6DA JAHmEn=l m=O >A FDOIE?=llO IAF=H=JA@ BHom JDA DoIJ, =lloMEnC JDA ?onLAnEAn?AI oB = moKIA =n@ >EJm=F @EIFl=O Jo >A J=kAn DomA MDElA lA=LEnC JDA BElAI =J MoHk. 1JEI=lIoFoIIE>lAJoHKnJDADoIJF=HJon=HAmoJAm=?DEnA:

sam −r host ?onnA?JI Jo JDA JAHmEn=l En JDA KIK=l M=O, =n@ JDAn m=kAI = ?=ll =?HoII JDA nAJMoHk Jo AIJ=>lEID JDA DoIJ F=HJ oB sam on JDA n=mA@ m=?DEnA. .En=llO, EJ ?HoII-?onnA?JI JDA 1/O Jo joEn JDA JMo F=HJI. 6DEI =lloMI sam Jo >A HKn on m=?DEnAI JD=J @o noJ IKFFoHJ >EJ­ m=F @EIFl=OI; BoH AN=mFlA, sam EI JDA A@EJoH oB ?DoE?A on oKH +H=O :-M2/ ". Sam −r EnLolLAI three m=?DEnAI: JDA HAmoJA DoIJ, JDA JAHmEn=l, =n@ JDA lo?=l DoIJ. 6DA lo?=l DoIJߣIjo>EIIEmFlA>KJLEJ=l:EJF=IIAIJDA@=J=>AJMAAnJDAHAmoJADoIJ=n@JAHmEn=l. 6DA DoIJ =n@ JAHmEn=l AN?D=nCA mAII=CAI =IOn?DHonoKIlO H=JDAH JD=n, I=O, =I HAmoJA FHo?A@KHA ?=llI >KJ JDAHA EI no AHHoH @AJA?JEon oH ?oHHA?JEon >A?=KIA, MD=JALAH JDA ?onBECKH=JEon, JDA ?onnA?JEon EI HAlE=>lA. *A?=KIA JDA JAHmEn=l D=n@lAI mKn@=nA EnJAH=?JEon J=IkI IK?D =I FoFFEnC KF mAnKI =n@ EnJAHFHAJEnC JDA HAIFonIAI, JDA mAI­ I=CAI =HA =>oKJ @=J=, noJ =?JEonI. .oH AN=mFlA, JDA DoIJ knoMI noJDEnC =>oKJ MD=J EI @EIFl=OA@ on JDA I?HAAn, =n@ MDAn JDA KIAH JOFAI = ?D=H=?JAH, JDA mAII=CA IAnJ Jo JDA DoIJ I=OI ߢߢEnIAHJ = onA->OJA IJHEnC =J lo?=JEon ! En BElA %,ߣߣ noJ ߢߢ= ?D=H=?JAH M=I JOFA@ =J JDA ?KHHAnJ FoIEJEon En JDA ?KHHAnJ BElA.ߣߣ 1n oJDAH MoH@I, JDA mAII=CAI look LAHO mK?DlEkAJDAJH=nI=?JEonHA?oH@IEnJDAJH=nI?HEFJI. -EJDAH JDA DoIJ oH JAHmEn=l F=HJ oB sam m=O EnEJE=JA = ?D=nCA Jo = BElA. 6DA ?om­ m=n@ l=nCK=CA oFAH=JAI on JDA DoIJ, MDElA JOFEnC =n@ IomA moKIA oFAH=JEonI =HA ANA­ ?KJA@ @EHA?JlO En JDA JAHmEn=l Jo oFJEmEzA HAIFonIA. +D=nCAI EnEJE=JA@ >O JDA DoIJ FHo­ CH=m mKIJ >A JH=nImEJJA@ Jo JDA JAHmEn=l, =n@ LE?A LAHI=. ) JokAn EI AN?D=nCA@ Jo @AJAHmEnA MDE?D An@ EI En ?onJHol, MDE?D mA=nI JD=J ?D=H=?JAHI JOFA@ MDElA = JEmA- ?onIKmEnC ?omm=n@ HKnI mKIJ >A >KBBAHA@ =n@ @o noJ =FFA=H KnJEl JDA ?omm=n@ EI ?omFlAJA. 6o m=EnJ=En ?onIEIJAnJ EnBoHm=JEon, JDA DoIJ =n@ JAHmEn=l JH=?k ?D=nCAI JDHoKCD = FAH-BElA @=J= IJHK?JKHA JD=J HA?oH@I MD=J FoHJEonI oB JDA BElA JDA JAHmEn=l D=I HA?AELA@. 6DA @=J= IJHK?JKHA, ?=llA@ = Rasp = MA=k FKn: EJߣI = BElA MEJD DolAI EI DAl@ =n@ KF@=JA@ >O >oJD JDADoIJ=n@JAHmEn=l. ) Rasp EI=lEIJoB Strings Dol@EnCJDoIA ­ !­

F=HJI oB JDA BElA knoMn Jo JDA JAHmEn=l, IAF=H=JA@ >O ?oKnJI oB JDA nKm>AH oB >OJAI En JDA EnJAHIJE?AI. OB ?oKHIA, JDA DoIJ @oAInߣJ kAAF = IAF=H=JA ?oFO oB JDA @=J= EJ onlO nAA@IJDAlAnCJDIoBJDAL=HEoKIFEA?AI,>KJJDAIJHK?JKHAEIJDAI=mAon>oJDAn@I. 6DA Rasp EnJDAJAHmEn=l@oK>lAI =I = ?=?DA. 5En?A JDA JAHmEn=l kAAFI JDA JANJ BoH FoHJEonI oB JDA BElA EJ D=I @EIFl=OA@, EJ nAA@ noJ HAGKAIJ @=J= BHom JDA DoIJ MDAn HALEIEJ­ EnC ol@ F=HJI oB JDA BElA oH HA@H=MEnC o>I?KHA@ MEn@oMI, MDE?D IFAA@I JDEnCI KF ?onIE@­ AH=>lOoLAHloM-IFAA@lEnkI. 1JߣI JHELE=l BoH JDA JAHmEn=l Jo m=EnJ=En EJI Rasp, >A?=KIA =ll ?D=nCAI m=@A on JDA JAHmEn=l =FFlO Jo F=HJI oB JDA BElA =lHA=@O lo=@A@ JDAHA. +D=nCAI m=@A >O JDA DoIJ =HA ?omF=HA@ =C=EnIJ JDA Rasp @KHEnC JDA KF@=JA IAGKAn?A =BJAH A=?D ?omm=n@. 5m=ll ?D=nCAI Jo FEA?AI oB JDA BElA lo=@A@ En JDA JAHmEn=l =HA IAnJ En JDAEH AnJEHAJO. L=HCAH ?D=nCAI, =n@ ?D=nCAI JD=J B=ll AnJEHAlO En JDA DolAI, =HA JH=nImEJJA@ =I mAII=CAI MEJD­ oKJ lEJAH=l @=J=: onlO JDA lAnCJDI oB JDA @AlAJA@ =n@ EnIAHJA@ IJHEnCI =HA JH=nImEJJA@. 9DAn = ?omm=n@ EI ?omFlAJA@, JDA JAHmEn=l AN=mEnAI EJI LEIE>lA MEn@oMI Jo IAA EB =nO DolAI En JDAEH Rasps EnJAHIA?J JDA LEIE>lA FoHJEon oB JDA BElA. 1J JDAn HAGKAIJI JDA mEII­ EnC @=J= BHom JDA DoIJ, =lonC MEJD KF Jo # >OJAI oB IKHHoKn@EnC @=J=, Jo mEnEmEzA JDA nKm>AH oB mAII=CAI MDAn LEIEJEnC = nAM FoHJEon oB JDA BElA. 6DEI JA?DnEGKA FHoLE@AI = kEn@ oB JMo-lALAl l=zO AL=lK=JEon BoH JDA JAHmEn=l. 6DA BEHIJ lALAl IAn@I = mEnEmKm oB EnBoHm=JEon =>oKJ F=HJI oB JDA BElA noJ >AEnC A@EJA@ EnJAH=?JELAlO; JDA IA?on@ lALAl M=EJI KnJEl = ?D=nCA EI @EIFl=OA@ >ABoHA JH=nImEJJEnC JDA nAM @=J=. OB ?oKHIA, FAHBoHm=n?A EI =lIo DAlFA@ >O D=LEnC JDA JAHmEn=l HAIFon@ EmmA@E=JAlO Jo JOFEnC =n@ IEmFlA moKIA HAGKAIJI. -N?AFJ BoH Im=ll ?D=nCAI Jo =?JELA FEA?AI oB JDA BElA, MDE?D =HA JH=nImEJJA@ Jo JDA JAHmEn=l MEJDoKJ nACoJE=JEon, JDA JAHmEn=l EI MDollO HAIFonIE>lA BoH @A?E@EnC MD=J EI @EIFl=OA@;JDADoIJKIAIJDA Rasp onlOJoJAllJDAJAHmEn=lMD=JmECDJ>AHAlAL=nJ. 9DAn = ?D=nCA EI EnEJE=JA@ >O JDA DoIJ, JDA mAII=CAI Jo JDA JAHmEn=l @AI?HE>EnC JDA ?D=nCA =HA CAnAH=JA@ >O JDA HoKJEnA JD=J =FFlEAI JDA JH=nI?HEFJ oB JDA ?D=nCAI Jo JDA ?onJAnJI oB JDA File. 5En?A ?D=nCAI =HA Kn@onA >O JDA I=mA KF@=JA HoKJEnA, Kn@oEnC HAGKEHAI no ANJH= ?o@A En JDA ?ommKnE?=JEonI; JDA KIK=l mAII=CAI @AI?HE>EnC ?D=nCAI JoJDABElA=HAIKBBE?EAnJJo>=?kKFJDAI?HAAnEm=CA. 6DA Rasp EI = F=HJE?Kl=HlO Coo@ AN=mFlA oB JDA M=O ?=?DAI =HA KIA@ En sam. .EHIJ, EJ B=?ElEJ=JAI =??AII Jo JDA =?JELA FoHJEon oB JDA JANJ >O Fl=?EnC JDA >KIO JANJ En m=En mAmoHO. 1n Io @oEnC, EJ FHoLE@AI ABBE?EAnJ =??AII Jo = l=HCA @=J= IJHK?JKHA JD=J @oAI noJ BEJ En mAmoHO. 5En?A JDA BoHm oB @=J= EI Jo >A EmFoIA@ >O JDA KIAH, noJ >O JDA FHoCH=m, =n@ >A?=KIA ?D=H=?JAHI MEll BHAGKAnJlO >A I?=nnA@ IAGKAnJE=llO, BElAI =HA IJoHA@ =I Bl=J o>jA?JI. +=?DAIDAlFkAAFFAHBoHm=n?ACoo@=n@lEnA=HMDAnMoHkEnCMEJDIK?D@=J=. 5A?on@, JDA Rasp =n@ IALAH=l oB JDA oJDAH ?=?DAI D=LA IomA read−ahead; JD=J EI, JDA ?=?DA EI lo=@A@ MEJD moHA EnBoHm=JEon JD=n EI nAA@A@ BoH JDA jo> EmmA@E=JAlO =J D=n@. 9DAn m=nEFKl=JEnC lEnA=H IJHK?JKHAI, JDA =??AIIAI =HA KIK=llO IAGKAnJE=l, =n@ HA=@-=DA=@ ?=n IECnEBE?=nJlO HA@K?A JDA =LAH=CA JEmA Jo =??AII JDA nANJ AlAmAnJ oB JDA o>jA?J. 5AGKAnJE=l =??AII EI = ?ommon mo@A BoH FAoFlA =I MAll =I FHoCH=mI; ?onIE@AH I?HollEnCJDHoKCD=@o?KmAnJMDElAlookEnCBoHIomAJDEnC. .En=llO, lEkA =nO Coo@ @=J= IJHK?JKHA, JDA ?=?DA CKE@AI JDA =lCoHEJDm, oH =J lA=IJ JDA EmFlAmAnJ=JEon. 6DA Rasp M=I =?JK=llO EnLAnJA@ Jo ?onJHol JDA ?ommKnE?=JEonI >AJMAAn JDA DoIJ =n@ JAHmEn=l F=HJI, >KJ 1 HA=lEzA@ LAHO A=HlO JD=J EJ M=I =lIo = BoHm oB ?=?DA. OJDAH ?=?DAI MAHA moHA ANFlE?EJlO EnJAn@A@ Jo IAHLA = @oK>lA FKHFoIA:BoHAN=m­ FlA, JDA ?=?DAI En Files JD=J ?o=lAI?A KF@=JAI noJ onlO HA@K?A JH=BBE? Jo JDA JH=nI?HEFJ =n@ ?onJAnJI Buffers, JDAO =lIo ?lKmF I?HAAn KF@=JAI Io JD=J ?omFlE?=JA@?D=nCAIJo JDA I?HAAn =HA =?DEALA@ En jKIJ = BAM mAII=CAI Jo JDA JAHmEn=l. 6DEI I=LA@ mA ?onIE@AH­ =>lA MoHk: 1 @E@ noJ nAA@ Jo MHEJA IFA?E=l ?o@A Jo oFJEmEzAJDAmAII=CAJH=BBE?JoJDAJAH­ mEn=l. +=?DAI F=O oBB En IKHFHEIEnC M=OI. )lIo, JDAO JAn@ Jo >A En@AFAn@AnJ, Io JDAEH FAHBoHm=n?AEmFHoLAmAnJI=HAmKlJEFlE?=JELA. ­ "­

Data structures in the 6DA JAHmEn=lߣI jo> EI Jo @EIFl=O =n@ Jo m=EnJ=En = ?onIEIJAnJ Em=CA oB FEA?AI oB JDA BElAI >AEnC A@EJA@. *A?=KIA JDA JANJ EI =lM=OI En mAmoHO, JDA @=J= IJHK?JKHAI =HA ?onIE@AH­ =>lOIEmFlAHJD=nJDoIAEnJDADoIJF=HJ. Sam JOFE?=llO D=I B=H moHA MEn@oMI JD=n @oAI mux, JDA MEn@oM IOIJAm MEJDEn MDE?D EJI *lEJ EmFlAmAnJ=JEon HKnI. Mux D=I = B=EHlO Im=ll nKm>AH oB =IOn?DHonoKIlO KF@=JA@ MEn@oMI; sam nAA@I = l=HCA nKm>AH oB IOn?DHonoKIlO KF@=JA@ MEn@oMI JD=J =HA KIK=llO IJ=JE? =n@ oBJAn BKllO o>I?KHA@. 6DA @EBBAHAnJ JH=@AoBBI CKE@A@ sam =M=O % BHom JDA mAmoHO-EnJAnIELA EmFlAmAnJ=JEon oB MEn@oMI, ?=llA@ Layers, KIA@ En mux. 4=JDAH JD=n @AFAn@EnC on = ?omFlAJA >EJm=F Em=CA oB JDA @EIFl=O BoH A=?D MEn­ @oM, sam HACAnAH=JAI JDA Em=CA BHom EJI En-mAmoHO JANJ IJoHA@ En JDA Rasp MDAn nA?AII=HO, =lJDoKCD EJ MEll KIA IK?D =n Em=CA EB EJ EI =L=El=>lA. LEkA Layers, JDoKCD, sam KIAI JDA I?HAAn >EJm=F =I =?JELA IJoH=CA En MDE?D Jo KF@=JA JDA Em=CA KIEnC &, ' bitblt. 6DA HAIKlJEnC oHC=nEz=JEon, FE?JKHA@ En .ECKHA $, D=I = Clo>=l =HH=O oB MEn­ @oMI, ?=llA@ Flayers, A=?D oB MDE?D Dol@I =n Em=CA oB = FEA?A oB JANJ DAl@ En = @=J= IJHK?JKHA ?=llA@ = Frame, MDE?D En JKHn HAFHAIAnJI = HA?J=nCKl=H MEn@oM BKll oB JANJ @EI­ Fl=OA@ En IomA Bitmap. -=?D Flayer =FFA=HI En = Clo>=l lEIJ JD=J oH@AHI JDAm =ll BHonJ-Jo->=?k on JDA @EIFl=O, =n@ IEmKlJ=nAoKIlO =I =n AlAmAnJ oB = FAH-BElA =HH=O JD=J Dol@I =ll JDA oFAn MEn@oMI BoH JD=J BElA. 6DA ?omFlAmAnJ En JDA JAHmEn=l oB JDA File onJDADoIJEI?=llA@= Text;A=?D?onnA?JIEJI Flayers JoJDA=IIo?E=JA@ Rasp.

Text Rasp JoDoIJ

Flayer ...

Bitmap ?=?DA Frame ...

Box ...

Figure 6. Data structures in the terminal. Flayers are also linked together into a front−to−back list. Boxes are discussed in the next section.

6DA Bitmap BoH = Frame ?onJ=EnI JDA Em=CA oB JDA JANJ. .oH = BKllO LEIE>lA MEn­ @oM, JDA Bitmap MEll >A JDA I?HAAn oH =J lA=IJ JDA Layer En MDE?D sam EI >AEnC HKn, MDElA BoH F=HJE=llO o>I?KHA@ MEn@oMI JDA Bitmap MEll >A oBB-I?HAAn. 1B JDA MEn@oM EI BKllOo>I?KHA@,JDA Bitmap MEll>AnKll. 6DA Bitmap EI = kEn@ oB ?=?DA. 9DAn m=kEnC ?D=nCAI Jo JDA @EIFl=O, moIJ oB JDA oHECEn=l Em=CA MEll look JDA I=mA En JDA BEn=l Em=CA, =n@ JDA KF@=JA =lCoHEJDmI ANFloEJ JDEI. 6DA Frame IoBJM=HA KF@=JAI JDA Em=CA En JDA Bitmap En?HAmAnJ=llO; JDA &, ' Bitmap EI noJ jKIJ =n Em=CA, EJ EI = @=J= IJHK?JKHA. 6DA jo> oB JDA IoBJM=HA JD=J KF@=JAI JDA @EIFl=O EI JDAHABoHA Jo KIA =I mK?D =I FoIIE>lA oB JDA ANEIJEnC Em=CA ?on­ LAHJEnC JDA JANJ BHom )5+11 ?D=H=?JAHI Jo FENAlI EI ANFAnIELA En = IoHJ oB JMo- @EmAnIEon=l IJHEnC EnIAHJEon =lCoHEJDm. 6DA @AJ=ElI oB JDEI FHo?AII =HA @AI?HE>A@ En JDA nANJIA?JEon. 6DA Frame IoBJM=HA D=I no ?o@A Jo IKFFoHJ oLAHl=FFEnC MEn@oMI; EJI jo> EI Jo kAAF = IEnClA Bitmap KF Jo @=JA. 1J B=llI Jo JDA Flayer IoBJM=HA Jo mKlJEFlAN JDA ­ #­

L=HEoKI Bitmaps onJo JDA I?HAAn. 6DA FHo>lAm oB m=EnJ=EnEnC oLAHl=FFEnC Flayers % EI A=IEAH JD=n BoH Layers >A?=KIA ?D=nCAI =HA m=@A IOn?DHonoKIlO =n@ >A?=KIA JDA ?onJAnJI oB JDA MEn@oM ?=n >A HA?onIJHK?JA@ BHom JDA @=J= IJoHA@ En JDA Frame; JDA Layers IoBJM=HA m=kAI no IK?D =IIKmFJEonI. 1n sam, JDA MEn@oM >AEnC ?D=nCA@ EI =lmoIJ =lM=OI BKllO LEIE>lA, >A?=KIA JDA ?KHHAnJ MEn@oM EI =lM=OI BKllO LEIE>lA, >O ?on­ IJHK?JEon. 0oMALAH, MDAn mKlJE-BElA ?D=nCAI =HA >AEnC m=@A, oH MDAn moHA JD=n onA MEn@oMEIoFAnon=BElA,EJm=O>AnA?AII=HOJoKF@=JAF=HJE=llOo>I?KHA@MEn@oMI. 6DAHA =HA JDHAA ?=IAI: JDA MEn@oM EI BKllO LEIE>lA, EnLEIE>lA BKllO o>I?KHA@, oH F=H­ JE=llO LEIE>lA. 1B BKllO LEIE>lA, JDA Bitmap EI F=HJ oB JDA I?HAAn, Io MDAn JDA Flayer KF@=JA HoKJEnA ?=llI JDA Frame KF@=JA HoKJEnA, JDA I?HAAn MEll >A KF@=JA@ @EHA?JlO. 1B JDA MEn@oM EI EnLEIE>lA, JDAHA EI no =IIo?E=JA@ Bitmap, =n@ =ll JD=J EI nA?AII=HO EI Jo KF@=JA JDA Frame @=J= IJHK?JKHA, noJ JDA Em=CA. 1B JDA MEn@oM EI F=HJE=llO LEIE>lA, JDA Frame HoKJEnA EI ?=llA@ Jo KF@=JA JDA Em=CA En JDA oBB-I?HAAn Bitmap, MDE?D m=O HAGKEHA HACAnAH=JEnC EJ BHom JDA JANJ oB JDA MEn@oM. 6DA Flayer ?o@A JDAn ?lEFI JDEI Bitmap =C=EnIJ JDA Bitmaps oB =ll Frames En BHonJ oB JDA Frame >AEnC mo@EBEA@, =n@JDAHAm=En@AHEI?oFEA@JoJDA@EIFl=O. 6DEI EI mK?D B=IJAH JD=n HA?HA=JEnC JDA Em=CA oBB-I?HAAn BoH ALAHO ?D=nCA, oH ?lEF­ FEnC =ll JDA ?D=nCAI m=@A Jo JDA Em=CA @KHEnC EJI KF@=JA. 7nBoHJKn=JAlO, JDAIA ?=?DAI ?=n =lIo ?onIKmA FHoDE>EJELA =moKnJI oB mAmoHO, Io JDAO =HA BHAA@ B=EHlO lE>AH=llO ߞ =BJAH ALAHO ?D=nCA Jo JDA BHonJ-Jo->=?k oH@AH oB JDA Flayers. 6DA HAIKlJ EI JD=J JDA oBB-I?HAAn Bitmaps ANEIJ onlO MDElA mKlJE-MEn@oM ?D=nCAI =HA o??KHHEnC, MDE?D EI JDA onlOJEmAJDAFAHBoHm=n?AEmFHoLAmAnJJDAOFHoLE@AEInAA@A@. )lIo,JDAKIAHEnJAHB=?A ?=KIAI BKllO-o>I?KHA@ MEn@oMI Jo >A JDA A=IEAIJ Jo m=kA ߞ ?HA=JEnC = ?=nonE?=llO IEzA@ =n@ Fl=?A@ MEn@oM HAGKEHAI onlO = >KJJon ?lE?k ߞ MDE?D HA@K?AI JDA nAA@ BoH ?=?DEnC IJEllBKHJDAH.

Screen update OnlOJMoloM-lALAlFHEmEJELAI=HAnAA@A@BoHEn?HAmAnJ=lKF@=JA: bitblt, MDE?D ?oFEAI HA?J=nClAI oB FENAlI, =n@ string MDE?D En JKHn ?=llI bitblt, MDE?D @H=MI = nKll- JAHmEn=JA@ ?D=H=?JAH IJHEnC En = Bitmap.)Frame ?onJ=EnI = lEIJ oB Boxes, A=?D oB MDE?D @ABEnAI = DoHEzonJ=l IJHEF oB JANJ En JDA MEn@oM IAA .ECKHA %. ) Box D=I = ?D=H­ =?JAH IJHEnC str, =n@ = Rectangle rect JD=J @ABEnAI JDA lo?=JEon oB JDA IJHEF En JDA MEn@oM. 6DA JANJ En str EI IJoHA@ En JDA Box IAF=H=JAlO BHom JDA Rasp =IIo?E=JA@ MEJD JDA MEn@oMߣI BElA, Io Boxes =HA IAlB-?onJ=EnA@. 6DA EnL=HE=nJ EI JD=J JDA Em=CA oB JDA Box ?=n >A HAFHo@K?A@ >O ?=llEnC string MEJD =HCKmAnJ str Jo@H=MJDAIJHEnCEn rect, =n@ JDA HAIKlJEnC FE?JKHA BEJI FAHBA?JlO MEJDEn rect. 1n oJDAH MoH@I, JDA Boxes @ABEnA JDA JElEnC oB JDA MEn@oM. 6DA JElEnC m=O >A ?omFlE?=JA@ >O lonC lEnAI oB JANJ, MDE?D =HA Bol@A@ onJo JDA nANJ lEnA. 5omA A@EJoHI KIA DoHEzonJ=l I?HollEnC Jo =LoE@ JDEI ?omFlE?=JEon, >KJ Jo >A ?omBoHJ=>lA JDEI JA?DnEGKA HAGKEHAI JD=J lEnAI noJ >A too lonC; sam D=I no IK?D HAIJHE?JEon. )lIo, =n@ FAHD=FI moHA EmFoHJ=nJlO, 7N1: FHoCH=mI =n@ JAHmEn=lIJH=@EJEon=llOBol@lonClEnAIJom=kAJDAEH?onJAnJIBKllOLEIE>lA. 6Mo IFA?E=l kEn@I oB Boxes ?onJ=En = IEnClA ?D=H=?JAH: AEJDAH = nAMlEnA oH = J=>. NAMlEnAI =n@ J=>I =HA MDEJA IF=?A. ) nAMlEnA Box =lM=OI ANJAn@I Jo JDA HECDJ A@CA oB JDA MEn@oM, BoH?EnC JDA BolloMEnC Box Jo JDA nANJ lEnA. 6DA ME@JD oB = J=> @AFAn@I on MDAHA EJ EI lo?=JA@: EJ BoH?AI JDA nANJ Box Jo >ACEn =J = J=> lo?=JEon. 6=>I =lIo D=LA = mEnEmKm ME@JD AGKEL=lAnJ Jo = >l=nk >l=nkI =HA @H=Mn >O string =n@ =HA noJ JHA=JA@ IFA?E=llO;nAMlEnAID=LA=mEnEmKmME@JDoBzAHo.

for(i=0; i

Figure 7. A line of text showing its Boxes. The first two blank Boxes contain tabs; the last contains a new- line. Spaces are handled as ordinary characters. ­ $­

6DA KF@=JA =lCoHEJDmI =lM=OI KIA JDA Bitmap Em=CA oB JDA JANJ AEJDAH JDA @EI­ Fl=O oH ?=?DA Bitmap; JDAO nALAH AN=mEnA JDA ?D=H=?JAHI MEJDEn = Box AN?AFJ MDAn JDA Box nAA@I Jo >A IFlEJ En JMo. *ABoHA = ?D=nCA, JDA MEn@oM ?onIEIJI oB = JElEnC oB Boxes; =BJAH JDA ?D=nCA JDA MEn@oM EI JElA@ @EBBAHAnJlO. 6DA KF@=JA =lCoHEJDmI HA=H­ H=nCA JDA JElAI En Fl=?A, MEJDoKJ >=?kKF IJoH=CA. 6DA =lCoHEJDmI =HA noJ IJHE?JlO oFJEm=l ߞ BoH AN=mFlA, JDAO ?=n ?lA=H = FENAl JD=J EI l=JAH CoEnC Jo >A MHEJJAn KFon ߞ >KJ JDAO nALAH moLA = JElA JD=J @oAInߣJ nAA@ Jo >A moLA@, =n@ JDAO moLA A=?D JElA =J moIJ on?A. Frinsert on = *lEJ ?=n =>IoH> oLAH = JDoKI=n@ ?D=H=?JAHI = IA?on@ EB JDA IJHEnCI >AEnCEnIAHJA@=HA=BAMJAnIoB?D=H=?JAHIlonC. +onIE@AH frdelete. 1JI jo> EI Jo @AlAJA = IK>IJHEnC BHom = Frame =n@ HAIJoHA JDA Em=CA oB JDA Frame. 6DA Em=CA oB = IK>IJHEnC D=I = FA?KlE=H ID=FA IAA .ECKHA  ?omFHEIEnC FoIIE>lO = F=HJE=l lEnA, zAHo oH moHA BKll lEnAI, =n@ FoIIE>lO = BEn=l F=HJE=l lEnA. .oH HABAHAn?A, ?=ll JDEI JDA Z−shape. Frdelete >ACEnI >O IFlEJJEnC, EB nA?AII=HO, JDA Boxes ?onJ=EnEnC JDA An@I oB JDA IK>IJHEnC Io JDA IK>IJHEnC >ACEnI =n@ An@I on Box >oKn@=HEAI. *A?=KIA JDA IK>IJHEnC EI >AEnC @AlAJA@, EJI Em=CA EI noJ nAA@A@, Io JDA Z-ID=FA EI JDAn ?lA=HA@. 6DAn, JElAI JD=J EI, JDA Em=CAI oB Boxes =HA ?oFEA@, KIEnC bitblt, BHom EmmA@E=JAlO =BJAH JDA Z-ID=FA Jo JDA >ACEnnEnC oB JDA Z-ID=FA, HAIKlJEnC En = nAM Z-ID=FA. Boxes MDoIA ?onJAnJI MoKl@ IF=n JMo lEnAI En JDA nAM FoIEJEonmKIJBEHIJ>AIFlEJ. +oFOEnCJDAHAm=En@AHoBJDA Frame JElA>OJElAJDEIM=OMEll ?lA=HlO =??omFlEID JDA @AlAJEon >KJ ALAnJK=llO, JOFE?=llO MDAn JDA ?oFOEnC =lCoHEJDm An?oKnJAHI = J=> oH nAM­ lEnA, JDA ol@ =n@ nAM x ?ooH@En=JAI oB JDA JElA Jo >A ?oFEA@ =HA JDA I=mA. 6DEI ?oHHA­ IFon@An?A EmFlEAI JD=J JDA Z-ID=FA D=I EJI >ACEnnEnC =n@ An@EnC A@CAI =lECnA@ LAHJE­ ?=llO, =n@ = IAGKAn?A oB =J moIJ JMo bitblts ?=n >A KIA@ Jo ?oFO JDA HAm=EnEnC JElAI. 6DA l=IJ IJAF EI Jo ?lA=H oKJ JDA HAIKlJEnC AmFJO IF=?A =J JDA >oJJom oB JDA MEn@oM; JDA nKm>AH oB lEnAI Jo >A ?lA=HA@ EI JDA nKm>AH oB ?omFlAJA lEnAI En JDA Z-ID=FA ?loIA@ >O JDA BEn=l bitblts. 6DA BEn=l IJAF EI Jo mAHCA DoHEzonJ=llO =@j=?AnJ Boxes oB Fl=En JANJ. 6DA?omFlAJAIoKH?AJo frdelete EIlAIIJD=n lEnAIoB+. frinsert EI moHA ?omFlE?=JA@ >A?=KIA EJ mKIJ @o BoKH F=IIAI: onA Jo ?onIJHK?J JDA Box lEIJ BoH JDA EnIAHJA@ IJHEnC, onA Jo HA?onnoEJHA, onA Jo ?oFO EnoFFoIEJAoH@AHJo frdelete JDA Boxes Jo m=kA JDA DolA BoH JDA nAM JANJ, =n@ BEn=llO onA Jo ?oFO JDA nAM JANJ EnJo Fl=?A. OLAH=ll, JDoKCD, frinsert D=I = IEmEl=H Bl=LoH Jo frdelete, =n@ nAA@nߣJ >A @AI?HE>A@ BKHJDAH. Frinsert =n@ EJI IK>IE@E=HO HoKJEnAI ?omFHEIA lEnAIoB+. 6DAJAHmEn=lIoKH?A?o@AEI! "lEnAIoB+,=n@JDADoIJIoKH?AEI#%'%lEnAI.

Discussion

History 6DA EmmA@E=JA =n?AIJoH oB sam M=I JDA oHECEn=l JANJ A@EJoH BoH JDA *lEJ, ?=llA@ jim. Sam EnDAHEJA@ jimߣI JMo-FHo?AII IJHK?JKHA=n@moKIAl=nCK=CA=lmoIJKn?D=nCA@,>KJ jim IKBBAHA@ BHom IALAH=l @H=M>=?kI JD=J MAHA =@@HAIIA@ En JDA @AIECn oB sam. 6DA moIJ EmFoHJ=nJ oB JDAIA M=I JDA l=?k oB = ?omm=n@ l=nCK=CA. )lJDoKCD jim M=I A=IO JoKIABoHIEmFlAA@EJEnC, EJ FHoLE@A@ no @EHA?J DAlF MEJD l=HCA oH HAFAJEJELA A@EJEnC J=IkI. 1nIJA=@, EJ FHoLE@A@ = ?omm=n@ Jo F=II IAlA?JA@ JANJ JDHoKCD = IDAll FEFAlEnA, >KJ JDEI M=InomoHAI=JEIB=?JoHOJD=n?oKl@>AANFA?JA@oB=IJoFC=FmA=IKHA. Jim M=I MHEJJAn FHEm=HElO =I = LADE?lA BoH ANFAHEmAnJEnC MEJD = moKIA->=IA@ EnJAHB=?A Jo JANJ, =n@ JDA ANFAHEmAnJ M=I IK??AIIBKl. Jim D=@ IomA IFEn-oBBI: mux, JDA IA?on@ MEn@oM IOIJAm BoH JDA *lEJ, EI AIIAnJE=llO = mKlJEFlANA@ LAHIEon oB JDA JAHmE­  n=l F=HJ oB jim; =n@ JDA @A>KCCAH piߣI KIAH EnJAHB=?A M=I ?loIAlO mo@AlA@ on jimߣI. *KJ =BJAH = ?oKFlA oB OA=HI, jim D=@ >A?omA @EBBE?KlJ Jo m=EnJ=En =n@ lEmEJEnC Jo KIA, =n@EJIHAFl=?AmAnJM=IoLAH@KA. ­ %­

1 >AC=n JDA @AIECn oB sam >O =IkEnC jim ?KIJomAHI MD=J JDAO M=nJA@. 6DEI M=I FHo>=>lO = mEIJ=kA; JDA =nIMAHI MAHA AIIAnJE=llO = lEIJ oB BA=JKHAI Jo >A BoKn@ En oJDAH A@EJoHI, MDE?D @E@ noJ FHoLE@A =nO oB JDA CKE@EnC FHEn?EFlAI 1 M=I IAAkEnC. .oH EnIJ=n?A, onA ?ommon HAGKAIJ M=I BoH = ߢߢClo>=l IK>IJEJKJA,ߣߣ >KJ no onA IKCCAIJA@ DoM Jo FHo­ LE@A EJ MEJDEn = ?KJ-=n@-F=IJA A@EJoH. 1 M=I lookEnC BoH = I?DAmA JD=J MoKl@ IKFFoHJ IK?D IFA?E=lEzA@ BA=JKHAI ?omBoHJ=>lO En JDA ?onJANJ oB IomA CAnAH=l ?omm=n@ l=n­ CK=CA. 1@A=I MAHA noJ BoHJD?omEnC, JDoKCD, F=HJE?Kl=HlO CELAn mO EnIEIJAn?A on HAmoL­ EnC =ll lEmEJI on BElA IEzAI, lEnA lAnCJDI =n@ Io on. -LAn MoHIA, 1 HA?oCnEzA@ JD=J, IEn?A JDA moKIA ?oKl@ A=IElO En@E?=JA = HACEon oB JDA I?HAAn JD=J M=I noJ =n EnJACH=l nKm>AH oB lEnAI, JDA ?omm=n@ l=nCK=CA MoKl@ >AIJ BoHCAJ =>oKJ nAMlEnAI =lJoCAJDAH, =n@ JD=J mA=nJ JDA ?omm=n@ l=nCK=CA D=@ Jo JHA=J JDA BElA =I = IEnClA IJHEnC, noJ =n =HH=O oB lEnAI. -LAnJK=llO, 1 @A?E@A@ JD=J JDEnkEnC M=I noJ CAJJEnC mA LAHO B=H =n@ EJ M=I JEmA Jo JHO >KEl@EnC. 1 knAM JD=J JDA JAHmEn=l F=HJ ?oKl@ >A >KElJ A=IElO ߞ JD=J F=HJ oB jim >AD=LA@ =??AFJ=>lO MAll ߞ =n@ JD=J moIJ oB JDA D=H@ MoHk M=I CoEnC Jo >A En JDA DoIJ F=HJ: JDA BElA EnJAHB=?A, ?omm=n@ EnJAHFHAJAH =n@ Io on. MoHAoLAH, 1 D=@ IomA E@A=I =>oKJ DoM JDA =H?DEJA?JKHA oB jim ?oKl@ >A EmFHoLA@ MEJDoKJ @AIJHoOEnC EJI >=IE? IJHK?­ JKHA, MDE?D 1 lEkA@ En FHEn?EFlA >KJ MDE?D D=@nߣJ MoHkA@ oKJ =I MAll =I 1 D=@ DoFA@. 5o 1 >AC=n >O @AIECnEnC JDA BElA @=J= IJHK?JKHA, IJ=HJEnC MEJD JDA M=O jim MoHkA@ ߞ ?omF=­ H=>lA Jo = IEnClA IJHK?JKHA mAHCEnC Disc =n@ Buffer, MDE?D 1 IFlEJ Jo m=kA JDA ?=?DA moHA CAnAH=l ߞ =n@ JDEnkEnC =>oKJ DoM Clo>=l IK>IJEJKJA ?oKl@ >A EmFlAmAnJA@. 6DA =nIMAH M=I ?lA=HlO JD=J EJ D=@ Jo >A @onA En JMo F=IIAI, =n@ JDA JH=nI?HEFJ-oHEAnJA@ EmFlAmAnJ=JEonBAlloKJn=JKH=llO. Sam M=I MHEJJAn >oJJom-KF, IJ=HJEnC BHom JDA @=J= IJHK?JKHAI =n@ =lCoHEJDmI BoH m=nEFKl=JEnC JANJ, JDHoKCD JDA ?omm=n@ l=nCK=CA =n@ KF Jo JDA ?o@A BoH m=EnJ=EnEnC JDA @EIFl=O. 1n HAJHoIFA?J, EJ JKHnA@ oKJ MAll, >KJ JDEI EmFlAmAnJ=JEon mAJDo@ EI noJ HA?­ ommAn@A@ En CAnAH=l. 6DAHA MAHA IALAH=l JEmAI MDAn 1 D=@ = l=HCA >o@O oB EnJAHAIJEnC ?o@A=IIAm>lA@=n@no?lKADoMJoFHo?AA@MEJDEJ. 6DA?omm=n@ l=nCK=CA, En F=HJE?K­ l=H, Jook =lmoIJ = OA=H Jo BECKHA oKJ, >KJ ?=n >A EmFlAmAnJA@ CELAn MD=J M=I JDAHA =J JDA >ACEnnEnC oB JD=J OA=H En = @=O oH JMo. 5EmEl=HlO, EnLAnJEnC JDA Rasp @=J= IJHK?JKHA @Al=OA@ JDA ?onnA?JEon oB JDA DoIJ =n@ JAHmEn=l FEA?AI >O =noJDAH BAM monJDI. Sam Jook =>oKJ JMo OA=HI Jo MHEJA, =lJDoKCD onlO =>oKJ BoKH monJDI MAHA IFAnJ =?JK=llO MoHkEnConEJ. 2=HJ oB JDA @AIECn FHo?AII M=I KnKIK=l: JDA IK>IAJ oB JDA FHoJo?ol JD=J m=EnJ=EnI JDA Rasp M=I IEmKl=JA@, @A>KCCA@ =n@ LAHEBEA@ >O =n =KJom=JE? FHoJo?ol =n=lOzAH, =n@ M=I >KC-BHAA BHom JDA IJ=HJ. 6DA HAIJ oB JDA FHoJo?ol, ?on?AHnA@ moIJlO MEJD kAAF­ EnC mAnKI KF Jo @=JA, M=I KnBoHJKn=JAlO Joo KnMEAl@O BoH IK?D =n=lOIEI, =n@ M=I @A>KCCA@ >O moHA JH=@EJEon=l mAJDo@I, FHEm=HElO >O loCCEnC En = BElA =ll mAII=CAI En =n@oKJoBJDADoIJ.

Reflections Sam EI AIIAnJE=llO JDA onlO EnJAH=?JELA A@EJoH KIA@ >O JDA IENJO oH Io mAm>AHI oB JDA ?omFKJEnC I?EAn?A HAIA=H?D ?AnJAH En MDE?D 1 MoHk. 6DA I=mA ?oKl@ noJ >A I=E@ oB jim; JDA l=?k oB = ?omm=n@ l=nCK=CA kAFJ IomA FAoFlA BHom =@oFJEnC EJ. 6DA KnEon oB = KIAH EnJAHB=?A =I ?omBoHJ=>lA =I jimߣI MEJD = ?omm=n@ l=nCK=CA =I FoMAHBKl =I edߣIߤ EI AIIAnJE=l Jo samߣI IK??AII. 9DAn sam M=I BEHIJ m=@A =L=El=>lA Jo JDA jim ?ommK­ nEJO, =lmoIJ ALAHOonA IMEJ?DA@ Jo EJ MEJDEn JMo oH JDHAA @=OI. 1n JDA monJDI JD=J Bol­ loMA@,ALAnFAoFlAMDoD=@nALAH=@oFJA@ jim IJ=HJA@KIEnC sam AN?lKIELAlO. 6o >A DonAIJ, ed IJEll CAJI o??=IEon=l KIA, >KJ KIK=llO MDAn IomAJDEnC GKE?k ______ߤ6DA FAoFlA MDo ?HEJE?EzA ed =I =n EnJAH=?JELA FHoCH=m oBJAn BoHCAJ JD=J EJ =n@ EJI ?loIA HAl=JELA sed% IJEll JDHELA =I FHoCH=mm=>lA A@EJoHI. 6DA IJHAnCJD oB JDAIA FHoCH=mI EI En@AFAn@AnJ oB JDAEH ?onLAnEAn?A BoH EnJAH=?JELA A@EJEnC. ­ &­

nAA@I Jo >A @onA =n@ JDA oLAHDA=@ oB @oMnlo=@EnC JDA JAHmEn=l F=HJ oB sam EInߣJ MoHJD JDA JHoK>lA. )lIo, =I = ߢlEnAߣ A@EJoH, sam −d EI = >EJ o@@; MDAn KIEnC = Coo@ ol@ )5+11 JAHmEn=l, EJߣI ?omBoHJEnC Jo D=LA = JHKA lEnA A@EJoH. *KJ EJ EI B=EH Jo I=O JD=J samߣI ?om­ m=n@ l=nCK=CA D=I @EIFl=?A@ edߣI BoH moIJ oB JDA ?omFlE?=JA@ A@EJEnC JD=J D=I kAFJ lEnAA@EJoHIJD=JEI,?omm=n@-@HELAnA@EJoHIMEJDKI. SamߣI ?omm=n@ l=nCK=CA EI ALAn B=n?EAH JD=n edߣI, =n@ moIJ sam ?KIJomAHI @onߣJ ?omA nA=HJoKIEnC=llEJI?=F=>ElEJEAI. ,oAIEJnAA@Jo>AIoIoFDEIJE?=JA@? 1JDEnk JDA=nIMAHEIOAI,BoHJMoHA=IonI. .EHIJ, JDA model BoH samߣI ?omm=n@ l=nCK=CA EI HA=llO HAl=JELAlO IEmFlA, =n@ ?AH­ J=EnlO IEmFlAH JD=n JD=J oB ed. .oH EnIJ=n?A, JDAHA EI onlO onA kEn@ oB JANJK=l looF En sam ߞ JDA x ?omm=n@ ߞ MDElA ed D=I JDHAA JDA g ?omm=n@, JDA Clo>=l Bl=C on IK>­ IJEJKJEonI, =n@ JDA EmFlE?EJlooFoLAHlEnAIEnmKlJE-lEnAIK>IJEJKJEonI. )lIo, edߣIIK>IJE­ JKJA ?omm=n@ EI nA?AII=HO Jo m=kA ?D=nCAI MEJDEn lEnAI, >KJ En sam JDA s ?omm=n@ EI moHAoB=B=mElE=H?onLAnEAn?AJD=n=nA?AIIEJO; c =n@ t ?=n@o=llJDAMoHk. 5A?on@, CELAn = ?ommKnEJO JD=J ANFA?JI =n A@EJoH Jo >A =>oKJ =I FoMAHBKl =I ed, EJߣI D=H@ Jo IAA DoM sam ?oKl@ HA=llO >A mK?D IEmFlAH =n@ IJEll I=JEIBO JD=J ANFA?J=JEon. 2AoFlA M=nJ Jo @o ߢߢClo>=l IK>IJEJKJAI,ߣߣ =n@ moIJ =HA ?onJAnJ Jo D=LA JDA HA?EFA BoH JD=J =n@ = BAM oJDAH B=n?O ?D=nCAI. 6DA IoFDEIJE?=JEon oB JDA ?omm=n@ l=nCK=CA EI HA=llO jKIJ = LAnAAH oLAH = @AIECn JD=J m=kAI EJ FoIIE>lA Jo @o Clo>=l IK>IJEJKJAI En = I?HAAn A@EJoH. 5omA FAoFlAMEll=lM=OIM=nJIomAJDEnCmoHA,DoMALAH,=n@EJߣICH=JEBOEnCJo>A =>lA Jo FHoLE@A EJ. 6DA HA=l FoMAH oB samߣI ?omm=n@ l=nCK=CA ?omAI BHom ?omFoI­ =>ElEJO oB JDA oFAH=JoHI, MDE?D EI >O n=JKHA oHJDoCon=l Jo JDA Kn@AHlOEnC mo@Al. 1n oJDAH MoH@I, sam EI noJ EJIAlB ?omFlAN, >KJ EJ m=kAI ?omFlAN JDEnCI FoIIE>lA. 1B OoK @onߣJ M=nJ Jo @o =nOJDEnC ?omFlAN, OoK ?=n ECnoHA JDA ?omFlANEJO =lJoCAJDAH, =n@ m=nO FAo­ FlA@oIo. 5omAJEmAI 1 =m =IkA@ JDA oFFoIEJA GKAIJEon: MDO @E@nߣJ 1 jKIJ m=kA sam = HA=l FHoCH=mm=>lA A@EJoH, MEJD m=?HoI =n@ L=HE=>lAI =n@ Io on? 6DA m=En HA=Ion EI = m=J­ JAH oB J=IJA: 1 lEkA JDA A@EJoH Jo >A JDA I=mA ALAHO JEmA 1 KIA EJ. 6DAHA EI onA JA?DnE?=l HA=Ion, JDoKCD: FHoCH=mm=>ElEJO En A@EJoHI EI l=HCAlO = MoHk=HoKn@ BoH EnIKBBE?EAnJ EnJAH­ =?JELEJO. 2HoCH=mm=>lA A@EJoHI =HA KIA@ Jo m=kA F=HJE?Kl=H, KIK=llO IDoHJ-JAHm, JDEnCI A=IO Jo @o, IK?D =I >O FHoLE@EnC IDoHJD=n@I BoH ?ommon =?JEonI. 1B JDEnCI =HA CAnAH=llO A=IO Jo @o En JDA BEHIJ Fl=?A, IDoHJD=n@I =HA noJ =I DAlFBKl. Sam m=kAI ?ommon A@EJEnC oFAH=JEonI LAHO A=IO, =n@ JDA IolKJEonI Jo ?omFlAN A@EJEnC FHo>lAmI IAAm ?ommAnIK­ H=JA MEJD JDA FHo>lAmI JDAmIAlLAI. )lIo, JDA =>ElEJO Jo A@EJ JDA sam MEn@oM m=kAI EJ A=IO Jo HAFA=J ?omm=n@I ߞ EJ onlO J=kAI = moKIA >KJJon ?lE?k Jo ANA?KJA = ?omm=n@ =C=En.

Pros and cons Sam D=I IALAH=l oJDAH Coo@ FoEnJI, =n@ EJI ID=HA oB FHo>lAmI. )monC JDA Coo@ JDEnCI EI JDA E@A= oB IJHK?JKH=l HACKl=H ANFHAIIEonI, MDoIA KIABKlnAII D=I onlO >ACKn Jo >A ANFloHA@. 6DAO MAHA =HHELA@ =J IAHAn@EFEJoKIlO MDAn 1 =JJAmFJA@ Jo @EIJEll JDA AIIAn?A oB edߣI M=O oB @oEnC Clo>=l IK>IJEJKJEon =n@ HA?oCnEzA@ JD=J JDA looFEnC ?omm=n@ En ed M=IEmFlE?EJlOEmFoIEnC=IJHK?JKHA=n=HH=OoBlEnAIonJDABElA. )noJDAH oB samߣI Coo@ JDEnCI EI EJI Kn@o ?=F=>ElEJO. 1 D=@ nALAH >ABoHA KIA@ =n A@EJoH MEJD = JHKA Kn@o, >KJ 1 MoKl@ nALAH Co >=?k noM. 7n@o must >A @onA MAll, >KJ EB EJ EI, EJ ?=n >A HAlEA@ on. .oH AN=mFlA, EJߣI I=BA Jo ANFAHEmAnJ EB OoKߣHA noJ IKHA DoM Jo MHEJA IomA EnJHE?=JA ?omm=n@, >A?=KIA EB OoK m=kA = mEIJ=kA, EJ ?=n >A BENA@ IEmFlO =n@ HAlE=>lO. 1 lA=HnA@ JMo JDEnCI =>oKJ Kn@o BHom MHEJEnC sam: BEHIJ, EJߣI A=IO Jo FHo­ LE@A EB OoK @AIECn EJ En BHom JDA >ACEnnEnC, =n@ IA?on@, EJߣI nA?AII=HO, F=HJE?Kl=HlO EB JDA IOIJAmD=IIomAIK>JlAFHoFAHJEAIJD=Jm=O>AKnB=mElE=HoHAHHoH-FHonABoHKIAHI. SamߣI l=?k oB EnJAHn=l lEmEJI =n@ IEzAI EI = LEHJKA. *A?=KIA EJ =LoE@I =ll BENA@-IEzA J=>lAI =n@ @=J= IJHK?JKHAI, sam EI =>lA Jo m=kA Clo>=l ?D=nCAI Jo BElAI JD=J IomA oB oKH ­ '­

oJDAH JoolI ?=nnoJ ALAn HA=@. MoHAoLAH, JDA @AIECn kAAFI JDA FAHBoHm=n?A lEnA=H MDAn @oEnC IK?D oFAH=JEonI, =lJDoKCD 1 mKIJ =@mEJ sam @oAI CAJ IloM MDAn A@EJEnC = DKCA BElA. NoM, JDA FHo>lAmI. -NJAHn=llO, JDA moIJ o>LEoKI EI JD=J EJ EI FooHlO EnJACH=JA@ EnJo JDA IKHHoKn@EnC MEn@oM IOIJAm. *O @AIECn, JDA KIAH EnJAHB=?A En sam BAAlI =lmoIJ E@An­ JE?=lJoJD=JoB mux,>KJ=JDE?kM=llIAF=H=JAI JANJ En sam BHom JDA FHoCH=mI HKnnEnC En mux. .oH EnIJ=n?A, JDA ߢIn=HB >KBBAHߣ En sam mKIJ >A m=EnJ=EnA@ IAF=H=JAlO BHom JD=J En mux. 6DEI EI HACHAJJ=>lA, >KJ FHo>=>lO nA?AII=HO CELAn JDA KnKIK=l ?onBECKH=JEon oB JDA IOIJAm,MEJD=FHoCH=mm=>lAJAHmEn=lonJDAB=HAn@oB=n45- ! lEnk. Sam EI HAlE=>lA; oJDAHMEIA, FAoFlA MoKl@nߣJ KIA EJ. *KJ EJ M=I MHEJJAn oLAH IK?D = lonC JEmA, =n@ D=I Io m=nO nAM Jo mA E@A=I En EJ, JD=J 1 MoKl@ lEkA Jo IAA EJ @onA oLAH =C=EnJo?lA=nKF JDA ?o@A =n@ HAmoLA m=nO oB JDA lEnCAHEnC FHo>lAmI En JDA EmFlAmAn­ J=JEon. 6DA MoHIJ F=HJ EI En JDA EnJAH?onnA?JEon oB JDA DoIJ =n@ JAHmEn=l F=HJI, MDE?D mECDJ ALAn >A =>lA Jo Co =M=O En = HA@AIECn BoH = moHA ?onLAnJEon=l MEn@oM IOIJAm. 6DA FHoCH=m mKIJ >A IFlEJ En JMo Jo KIA JDA JAHmEn=l ABBA?JELAlO, >KJ JDA loM >=n@ME@JD oB JDA ?onnA?JEon BoH?AI JDA IAF=H=JEon Jo o??KH En =n En?onLAnEAnJ F=HJ oB JDA @AIECn EB FAHBoHm=n?A EI Jo >A =??AFJ=>lA. ) IEmFlA HAmoJA FHo?A@KHA ?=ll FHoJo?ol @HELAn >O JDA DoIJ,AmEJJEnConlOCH=FDE?I?omm=n@I, MoKl@ >A A=IO Jo MHEJA >KJ MoKl@nߣJ D=LA nA=HlO JDA nA?AII=HO HAIFonIELAnAII. On JDA oJDAH D=n@, EB JDA JAHmEn=l MAHA En ?onJHol =n@ HAGKAIJA@ mK?D IEmFlAH BElA IAHLE?AI BHom JDA DoIJ, HACKl=H ANFHAIIEon IA=H?DAI MoKl@ HAGKEHA JD=J JDA JAHmEn=l HA=@ JDA AnJEHA BElA oLAH EJI 45- ! lEnk, MDE?D MoKl@ >A KnHA=­ Ion=>lO IloM. ) ?omFHomEIA En MDE?D AEJDAH An@ ?=n J=kA ?onJHol EI nA?AII=HO. 1n HAJHo­ IFA?J, JDA ?ommKnE?=JEonI FHoJo?ol IDoKl@ D=LA >AAn @AIECnA@ =n@ LAHEBEA@ BoHm=llO, =lJDoKCD 1 @o noJ knoM oB =nO Jool JD=J ?=n =@AGK=JAlO HAl=JA JDA FHoJo?ol Jo EJI EmFlA­ mAnJ=JEon. NoJ =ll oB samߣI KIAHI =HA ?omBoHJ=>lA MEJD EJI ?omm=n@ l=nCK=CA, =n@ BAM =HA =@AFJ. 5omA LAnAH=>lA FAoFlA KIA = IoHJ oB ߢߢed IK>IAJߣߣ oB samߣI ?omm=n@ l=n­ CK=CA, =n@ ALAn =Ik MDO samߣI ?omm=n@ l=nCK=CA EI noJ AN=?JlO edߣI. 6DA HA=Ion, oB ?oKHIA, EI JD=J samߣI mo@Al BoH JANJ @oAI noJ En?lK@A nAMlEnAI, MDE?D =HA ?AnJH=l Jo ed. M=kEnC JDA JANJ =n =HH=O oB nAMlEnAI Jo JDA ?omm=n@ l=nCK=CA MoKl@ >A Joo mK?D oB = >HA=k BHom JDA IA=mlAII mo@Al FHoLE@A@ >O JDA moKIA. 5omA A@EJoHI, IK?D =I vi, =HA MEllEnC Jo m=kA JDEI >HA=k, JDoKCD. 6DA @EBBE?KlJO EI JD=J samߣI IOnJ=N EI Io ?loIA Jo edߣI JD=J FAoFlA >AlEALA EJ should >A JDA I=mA. 1 JDoKCDJ, MEJD IomA jKIJEBE?=JEon En DEn@IECDJ, JD=J m=kEnC sam IEmEl=H Jo ed MoKl@ m=kA EJ A=IEAH Jo lA=Hn =n@ Jo =??AFJ. *KJ 1 m=O D=LA oLAHIJAFFA@ =n@ H=EIA@ JDA KIAHIߣ ANFA?J=JEonI Joo mK?D. 1JߣI D=H@ Jo @A?E@AMDE?DM=OJoHAIolLAJDEIFHo>lAm. .En=llO, JDAHA EI = JH=@AoBB En sam JD=J M=I @A?E@A@ >O JDA AnLEHonmAnJ En MDE?D EJ HKnI: sam EI = mKlJE-BElA A@EJoH, =lJDoKCD En = @EBBAHAnJ IOIJAm JDAHA mECDJ EnIJA=@ >A mKlJEFlA IEnClA-BElA A@EJoHI. 6DA @A?EIEon M=I m=@A FHEm=HElO >A?=KIA IJ=HJEnC = nAM FHoCH=m En = *lEJ EI JEmA-?onIKmEnC. 1B JDA ?DoE?A ?oKl@ >A m=@A BHAAlO, DoMALAH, 1 MoKl@IJEll?DooIAJDAmKlJE-BElA=H?DEJA?JKHA,>A?=KIA EJ =lloMI CHoKFI oB BElAI Jo >A D=n­ @lA@ =I = KnEJ; JDA KIABKlnAII oB JDA mKlJE-BElA ?omm=n@I EI En?onJHoLAHJE>lA. 1J EI @AlECDJBKlJoD=LAJDAIoKH?AJo=nAnJEHAFHoCH=m=L=El=>lA=JOoKHBEnCAHJEFI.

Acknowledgements 6om +=HCEll IKCCAIJA@ JDA E@A= >ADEn@ JDA Rasp @=J= IJHK?JKHA. NoHm=n 9ElIon =n@ KAn 6DomFIon EnBlKAn?A@ JDA ?omm=n@ l=nCK=CA. 6DEI F=FAH M=I EmFHoLA@ >O ?om­ mAnJI BHom )l )Do, Jon *AnJlAO, +DHEI .H=IAH, /AH=H@ 0olzm=nn, *HE=n KAHnECD=n, 6A@ KoM=lIkE,,oKCM?1lHoO=n@,AnnEI4EJ?DEA. ­!­

REFERENCES .4. 2EkA, ߢ6DA *lEJ: = mKlJEFlANA@ CH=FDE?I JAHmEn=l,ߣ &T . Tech. J., 63, &, $%- $!  '&". .L.JoDnIon, MacWrite, )FFlA+omFKJAH1n?.,+KFAHJEno,+=lEB. '&!. !.*. L=mFIon, ߢ*H=Lo M=nK=l,ߣ En Alto User’s Handbook, FF. ! -$ , :AHoN 2=lo )lJo 4AIA=H?D+AnJAH,2=lo)lJo,+=lEB. '%'. ".9.6AEJAlm=n,ߢ)JoKHJDHoKCD+A@=H,ߣ IEEE , 1  ,""-%! '&". #.J. /KJknA?DJ, ߢ+on?AFJI oB JDA JANJ A@EJoH L=H=,ߣ . ACM, 28, ', '" -'$  '&#. $.*All 6AlAFDonA L=>oH=JoHEAI, UNIX ’s Manual, 0olJ, 4EnAD=HJ =n@ 9EnIJon,NAM;oHk '&!. %.*. 9. KAHnECD=n =n@ 4. 2EkA, The Unix Programming Environment, 2HAnJE?A-0=ll, -nClAMoo@+lEBBI,NAMJAHIAO '&". &. Unix −Sharing System Programmer’s Manual, Research Version, Ninth Edition, Volume 1, )66*AllL=>oH=JoHEAI,MKHH=O0Ell,NAMJAHIAO '&$. '. −Sharing System Programmer’s Manual, 4.1 Berkeley Software Distribution, Volumes 1 and 2C, 7nELAHIEJOoB+=lEBoHnE=,*AHkAlAO,+=lEB. '& . .4. 2EkA, ߢ5JHK?JKH=l 4ACKl=H -NFHAIIEonI,ߣ Proc. EUUG Spring Conf., Helsinki 1987, -KH.7nEN7IAHߣI/HoKF,*KnJEnCBoH@,0AHJI,7K '&%. .). /ol@>AHC, Smalltalk−80 ߝ The Interactive Programming Environment, )@@EIon- 9AIlAO,4A=@EnC,M=II. '&". .K. 6DomFIon, ߢ4ACKl=H ANFHAIIEon IA=H?D =lCoHEJDm,ߣ Comm. ACM, 11, $, " '-"  '$&. !.). 8. )Do, J. -. 0oF?HoBJ =n@ J. ,. 7llm=n, The Design and Analysis of Algorithms, )@@EIon-9AIlAO,4A=@EnC,M=II. '%". ".*. 9. KAHnECD=n =n@ ,. M. 4EJ?DEA, The C , 2HAnJE?A-0=ll, -nClAMoo@+lEBBI,NAMJAHIAO '%&. #.9. M. 9=EJA, ߢ6DA ?oIJ oB lANE?=l =n=lOIEI,ߣ Softw. Pract. Exp., 16, #, "%!-"&&  '&$. $.+.9..H=IAH,ߢ)CAnAH=lEzA@JANJA@EJoH,ߣ Comm. ACM, 23,!, #"- #& '&. %.4. 2EkA, ߢ/H=FDE?I En oLAHl=FFEnC >EJm=F l=OAHI,ߣ ACM Trans. on ., 2,   !#- $ '&!. &.L. J. /KE>=I =n@ J. 5JolBE, ߢ) l=nCK=CA BoH >EJm=F m=nEFKl=JEon,ߣ ACM Trans. on Graph., 1,!, ' - " '& . '.4. 2EkA, *. Lo?=nJDE =n@ J. 4AEIAH, ߢ0=H@M=HA/IoBJM=HA JH=@A-oBBI BoH >EJm=F CH=FDE?I onJDA*lEJ,ߣ Softw. Pract. Exp., 15, , ! - #  '&#. .6. ). +=HCEll, ߢ6DA BAAl oB 2E,ߣ Winter USENIX Conference Proceedings, Denver 1986, $ -% ,75-N1:)IIo?.,-l+AHHEJo,+). ./.J.0olzm=nn,ߢ6H=?EnCFHoJo?olI,ߣ AT&T Tech. J., 64, , " !- "!" '&#.