Download as pdf or txt
Download as pdf or txt
You are on page 1of 21

2/12/2017 CodeQuarterly

Ive pulled the plug on Code Quarterly. To read about why, please see this blog post. Thanks for
your interest. Peter Seibel

CodeQuarterly WRITEFORUS ABOUT


THEHACKADEMICJOURNAL

HalAbelsonQ&A
PS

HalAbelsonisperhapsbestknowntoprogrammersasthecoauthor,alongwithGeraldSussman,ofthe
classicbookStructureandInterpretationofComputerPrograms.HeandSussmanalsocreatedthe
MITcourseofthesamename,thelegendary6.001,whichbetween1980and2007wasoneoffour
requiredcoursestakenbyallMITDepartmentofElectricalEngineeringandComputerSciencestudents,
teachingthemhowtothinkaboutprogrammingand,incidentally,introducingthemtotheScheme
programminglanguage.
AbelsoniscurrentlyClassof1922ProfessorofElectricalEngineeringandComputerScienceatMIT
andhasbeenrecognizedwithinandoutsideofMITforhiscontributionstocomputerscienceeducation.
HewasoneofMITssixinauguralMacVicarFacultyFellows,wonMITsSchoolofEngineering
teachingaward,theBoseAward,in1992,andwasawardedTaylorL.BoothEducationAwardbythe
IEEEComputerSocietyin1995.
In2007,AbelsonhelpedcreateMITsnewcorecurriculumforEECSstudents,inwhich6.001was
replacedwithanewcourse,6.01.Amongotherchanges,thenewcourseswitchedlanguagesfromScheme
toPython,achangethatdrewmuchcommentaryfromoutsideobservers.InthisinterviewAbelson
discussesthemotivationsbehindthecurriculumchangesandwhytheswitchfromSchemetoPythonis
oneoftheleastsignicantchanges.
Abelsonhasalsolongbeeninvolvedinusingcomputersforteachingnonprogrammers,havingworked
withSeymourPapertonthechildrensprogramminglanguageLogoandcoauthoringthebookTurtle
Geometry.WhenIspokewithhim,hewasnishingayearlongsabbaticalatGoogle,whereheledthe
AppInventorproject,buildingadevelopmentenvironmentthatallowsnonprogrammerstodevelopapps
forAndroidphones.
Finally,Abelsonisanadvocateforopencultureandintellectualcommons.Heisafoundingdirectorof
theFreeSoftwareFoundation,CreativeCommons,andPublicKnowledgeandteachesMITs6.805
EthicsandLawontheElectronicFrontierandcoauthoredthebookBlowntoBits,anintroductionto
manyofthetopicscoveredinthatcourseaimedatamoregeneralaudience.

S:IllstartwhereIpreymuchalwaysstart,whichishowdidyoustart?Wheredidyou
rstgetdrawnintocomputersandlearntoprogram?
A:Gosh,IrstprogrammedwhenIwasinhighschoolwhenIgotasummerjobat
theLakehurstNavalAirStation,whichisfamousastheplacewheretheHindenburgblewup.
Notmuchfamousforanythingelse.AndtheyhadgoenoneoftheearlyIguessitwasan
IBM709computerandyoudprogramitwithpunchedpapertape.Andyoudstartodoing
really,reallysimplestu.Peoplewerejustplayingaroundwithit.
S:Whatyearwouldthathavebeen?
A:God.Letmethink.Maybe1960.Maybeearlier.No,itmusthavebeenaround1960.
Maybe1961.
S:Didtheyteachyoutoprogramordidyouhavesomeexperiencepriortothat?
A:IdontthinkIhadanyexperience,butnobodydid,right?Youwentandplayed
aroundwithitandyoureadabook.Idontrememberwhatlanguageweprogrammedin,
probablyFORTRAN.Sothatwasthebeginning.Thenactuallydoingrealprogrammingwas
whenIwasanundergraduateatPrincetonandbecamesortoftheexpertinthisbrandnew
languagethatwasgoingtorevolutionizeallprogramming,whichwascalledPL/I.
AndPrincetonwasplayingwiththisotherwasteofcomputertimecalledtimesharing.There
wasthisthingcalledHASP.TherewasASPandthenHASPwas,halfanASP.Andthenthere
wereawholebunchofpeoplewhoweretryingtoconvincethescientiststheretomovetheir
programsfromFORTRANintoPL/Ibecausethatwasgoingtobethewaveofthefuture.And
thenpeopleplayingaroundwithtimesharingwheneverybodyknewthatthegooduseof
computerswastosolveEinsteinsequationsbydoingnumericalstualloftheastrophysicists
gotextremelypissedwhentheytookthecomputersdownacoupleofhoursaday,awayfrom
doingusefulthings,andputthemontothiswasteoftime,whichwastimesharing.

http://codequarterly.com/2011/halabelson/ 1/21
2/12/2017 CodeQuarterly

SoIbecameanexpertinPL/I,thelanguageofthefuture,anddidsupportforfaculty
memberswhoweretryingtogureouthowtodostuinthislanguage.
S:Whatwasyourmajorasanundergrad?
A:Math.ItookacomputersciencecoursewhenIwasanundergraduate,but
basicallyIdidmath.
S:AndfromPrincetonyouwenttoMITandgotyourPhD,alsoinmath.
A:Alsoinmath,insomethingthathasnothingtodowithcomputers.
S:AndwhileyouweredoingyourPhDwereyoualsoworkingwithcomputers?
A:WhenIshowedupatMITasagraduatestudent,itwas1969.Thatwasthetime,if
youremember,whenstudentsweredoinggoodthingslikemarchingandactivismandtaking
overcampus.
AbouttwoweeksafterIgottoMIT,thestudentsoccupiedthepresidentsoce,whichI
thoughtwasgreatfun.Itstoobadstudentsdontdomoreofthatnow.
S:Didyouparticipateintheoccupation?
A:Well,Iwasanewgraduatestudent.Isaid,Whatthehell,Imnevergoingtogeta
chancetogositinthepresidentsoce.SoIwanderedaroundtothepresidentsoceand
therewereawholebunchofpeoplefromStudentsforaDemocraticSocietysiingaroundon
theoor.OneofthepeoplewhowassiingaroundontheoorwassomebodywhoIdgoneto
highschoolwith.
AndIsaid,Imanewgraduatestudent.Imlookingforajob.Whatsagoodplacetogo
work?Andhesaid,Well,whydontyougoovertotheArticialIntelligenceLaboratory.
Theydogoodthings.SoIwanderedaroundthereforalilebitandtalkedtopeople,and
thatspreymuchhowIgotstarted.
S:WhenyouweredoingyourPhDinmathdidyoureallylovethatorwasthatjust
like,Well,Isigneduptodomath,soImgoingtonishit,butwhatIreallyloveis
computers?
A:Well,Ilovedthemboth.MymathPhDwasinalgebraictopology,whichhad
nothingtodowithcomputers.ThenIgotinterested,throughthinkingabouttopology,inthe
relationswithdistributedcomputingandthateventuallyformedabridgeintodoingsomething
incomputing.
AlsoIgotajobasagraduatestudentworkingintheLogolab,inSeymourPapertsgroup,
whichwasjuststartingupthen,soIwashangingaroundtheArticialIntelligenceLab.And
thensimultaneouslyIstarteddoingworkdoingresearchthatwasrelatedtodistributed
computing.Icameatitfromthetopologyside.
WhatwashappeningthenwasMITformedthisthingthatnolongerexistscalledtheDivision
forStudyandResearchinEducation.ThatabsorbedtheLogogroupsoitseemedsortofnatural
tobepartlyinwhatwascalledtheEducationDivisionandthenpartlyinmath.AndthenI
starteddoingmoreandmoreoftheLogostu,andmoreandmoreofthedistributed
computingstu,sothattheEducationDivisionthingmorphedintoanappointmentinthe
ElectricalEngineeringandComputerSciencedepartment.
S:ThosetwothreadswereseparatedistributedcomputingandLogo?
A:Right.TheyweretiedinthattheywerebothofinterestintheArticialIntelligence
Lab.Buttheywerentformallytied.
S:MIThasthisfamoushackerculture,thatStevenLevywroteaboutinhisbook
Hackers.Hetalkedaboutthisdrawerfullofcodewhereanybodycouldpulloutalistingandx
it.
A:Thatwascertainlytruethen.
S:Didyoueverndsomeoneelsescodeandhackonit,ordidsomeonetakeyour
listinganddothingswithitthatyouneverimagined?
A:Notparticularlywithme,butthatwasthestandardstu.Youknow,thisisall
siingonacompletelyopen,sharedlesystem.Wedidntevenhaveloginsinthosedays,or
wedidnthavepasswords.ActuallytherewasabighuIthinkitwasARPAthatwasfunding
ussaid,youknow,youvegotalltheseaccounts,youshouldhavepasswordsonthem.Anda
bunchofussaid,whatacrappythingthatis.Butingeneralallthestuwasjustsharedand
open.Youdidnteventhinkofitlikethat.Youdidntthinkofitasmycodeandyourcodeand
somebodyelses.Itwasthisisthestuweareallbuildingtogether.
Everythingwasopenandthemostnaturalthingintheworldisyoutooksomebodys
programanditwasntquiteright,andyoudchangeit.
S:Okay.AndwiththeAIlab,whenyougotyourjob,wasthatonProjectMACorwas
thatyetgoing?

http://codequarterly.com/2011/halabelson/ 2/21
2/12/2017 CodeQuarterly

A:Itscomplicated.TherewasthisthingcalledProjectMAC,whichwasmostlyabout
inventingtimesharing,andthenafterthattheydidawholebunchofotherthings.Andthenat
onepointtherewasaghtaboutspace,whichiswhatmostghtsatuniversitiesareabout,and
somebodywantedtotakeawayacoupleofoces.MarvinMinskywasrunningtheAIgroup
insideProjectMACandhesaid,Well,screwyou.Illgoformmyownlaboratory.Thatwas
thebeginningoftheArticialIntelligenceLaboratory.WhenIshowedup,therewasProject
MACandtheArticialIntelligenceLaboratory.
ThenProjectMACchangeditsnametotheLaboratoryforComputerScience.Five,six,seven
yearsagothetwolaboratoriesdecidedtomergebecausetherewasnogoodreasontokeep
themseparate.

S:Ifyoulookatthewayyouthoughtaboutprogrammingwhenyoustartedoutand
thewayyouthinkaboutitnow,canyousumupthebigchanges?
A:Itsanimmensechange.LetmeseeifIcanexpressthat.WhenIrstlearned
programming,andIthinkwhenmostpeoplerstlearnprogramming,theythinkitsaboutthe
rules.SoprogrammingisaboutwhatsanifstatementlooklikeandthefactthatinFORTRAN
ifyousayDO,youhavetoputacommaintherightplace.
CertainlybynowIdontthinkaboutthatatallIdontthinkaboutsyntaxatallwhenI
program.Itsreallyaboutbuildingabstractionsandexpressingideas.Thatsthekindofthing
thatGerrySussmanandIdidinourbook.Theresonelevelwhereyousay,Ihavethisstu,
andthethingaboutprogrammingisfollowingtherulessoIcandosomethingthatisalegal
something.Whereastheotherviewofprogramming,whichiscertainlytheoneweputinour
book,isthatprogrammingisaboutcreatingalanguageinwhichtoexpressthethingsyouwant
todo.Itsjustafundamentallydierenttask.
S:Thatbook,StructureandInterpretationofComputerPrograms,isfamousasbotha
computersciencebookandasaSchemebook.WasSchemeitselfarevelationthatallowedyou
towritethebookorwasitjustausefultoolforexploringtheseideasthatyouhadalready?
A:Well,Schemeexistedbeforethebook.ButwemadealotofchangesinSchemein
ordertoteachthecourse,sotheykindofgohandinhand.Thegoalisthatyouwanttomake
somethingthathasvery,verysimplebuiltinrulesandwherethepowerisinthewayyoucan
combinethings.AlotofSchemewasdesignedexplicitlylikethat.OneofthetenetsofSchemeis
thattheresonlyonewaytonamethings.ItsverynonSchemeytosaythatthereareidentiers
thatareusedforfunctionsandthereareidentiersthatareusedfordatastructuresandthere
areidentiersusedforprocessesorwhateveritis.ThewholepointinSchemeisthatthisisone
uniformwaytorefertothings.Attheendofthedaytheyreallprocedures.Theyreallobjects.
ButyouaskedwhetheritsSchemeorcomputerscience.WedontwriteaboutSchemevery
muchreally,otherthanwesay,Hey,thatsthenaturalwaytothinkaboutthisstu.
S:Whichissortoftheipsideofmyquestion:towhatextentcouldyouhavewrien
thesamebookusingadierentlanguage?
A:Icouldimaginewell,infactIhavedonetheverybeginningofitusingPython
becausePythonatleasthasrstclassproceduresandhasasinglenamespace,preymuch.
Anythingelse,themechanicsofthelanguagesjustgetinthewayoftheideas.Whatwetryto
doiswewanttogettotheideasassoonaspossible.Thereshouldbenothingthatstopsyou
fromwritingaprocedureasyourrstexperience.
Itspartlythelanguageandpartlyhowyouthinkaboutit.Itsstillthecasethatifyoupickup
mostbooksonprogramming,howtowriteaprocedureorafunctionorwhatevertheycallit
comesaboutthirtypercentofthewaythroughthebook,andthersttwentypagesareabout,
Well,theresthesedierentdatatypesandthereareoatingpointnumbersandtheresstrings
andtheresthisandthat,andthenpeopleactasifthatsthestuofwhatprogrammingis
about.Butthatsjusttotallyboring.
S:StructureandInterpretationofComputerProgramswasthetextbookforthelegendary
6.001courseatMITthatallEECSstudentshadtotake.Howdidthatcoursecomeabout?
A:Thatwasalongtimeago.Waybeforemytimetherewastheoriginallambda
calculuscoursethatwasthegenesisofallofthis.ButthatneverbecametheMITrstcourse
thateveryonetook.Before6.001thereisadierentcourseIwanttosay6.031thatwassortof
aweirdcoursewhenIrstgotinvolvedinit.ItdidALGOLandthenitdidLisp.
Lispwasabout,hey,wecanbuildthisinterpreterandthatinterpreterandtheother
interpreter,andyoucouldmakethisonewithdynamicscopingandthisonewithlexical

http://codequarterly.com/2011/halabelson/ 3/21
2/12/2017 CodeQuarterly

scoping.EvenhavingtaughtittwiceIcouldntgetitintomyhead.WasittheJinterpreterthat
didthatortheDinterpreter?
Sothedepartmentwentthrough,Letsinventthecorecurriculum.Itmighthavebeen78
or79.ThenGerrySussmanandIgottheabilitytodothenewcourse,whichwasgoingtobe
called6.001.Webasicallydiditwithouttellingpeoplewhatweweredoing,whichiswhythey
letus.
S:Whatdoyouthinktheywouldhaveobjectedto?
A:Oh,peopleobjecttowhateveryoudo.Wedidalotofworkoverthesummerand
thenGerrysaid,Hey,youknow,GuySteeleandImadethislanguageScheme.Weworked
onthatandbuiltanewimplementation,Iguesstherstrealimplementation.
OurbigideawasthatweweregoingtodoSchemeandthenALGOL.InALGOLwewere
goingtodostaticscopingandIforgetwhatelse.EveryonesaidOkay,becauseyouredoing
thereallyimportantthingwhichistheALGOL,becausethatwastherealcomputerscience.
AroundJulyIrememberGerrysaying,Thisisstupid.Schemealreadyislexicallyscoped;
whatarewegoingtobeteachingpeoplewhenwedoALGOL?Sowesaid,howaboutwejust
dontdoALGOLatall?Andthenwesaid,yeah,butweshoulddosomethingelse,soitsnot
justawholesemesterofScheme.ThatswhytheresaPrologchapterinthebook.
S:ImplementingProloginScheme,youmean?
A:Right,itsimplementingProlog.Anditsnot,ofcourse,allofProlog.Again,we
said,welluseSchemeasthevehiclebutshowothedierentprogrammingparadigms.
S:YouwereinvolvedintherevisiontotheMITcorecomputersciencecurriculum,a
fewyearsago,whichreplaced6.001with6.01.IntheLispworldpeoplearelike,Oh,theyre
switchingfromSchemetoPython.Theskyisfalling.
A:Well,thatsallsupercial.Themainthingis6.01isnotacourseabout
programming.Itsnotacourseaboutsoftware.Itsnotevenacourseaboutcomputers.The
mainchangewasthatwesaidtherstcourseinthedepartmentshouldbeamuchbroader
courseaboutwhatsgoingoninthedepartment.Thatshardfortheprogrammingpeopleto
understand.
6.001wasreallyacourseinsoftware.Itshowyouthinkaboutsoftware,howyouthinkabout
programming.Inthenewdepartmentstructure,6.01isspecicallynotthatanditsnotthat
intentionally.Now,thatmightormightnothavebeenagoodchoice,butwhatwesaidis,we
aregoingtoswitch.Before,whenyouenteredthedepartmentwhatyougotwasaverydeep
courseinthinkingaboutthestructureofprogrammingandcomputerscienceabstractionand
modularity.
Wesaid,wearenotgoingtodothatanymore.Insteadweregoingtoshowthebreadthofthe
department.Thatsthebasicchoice.Weregoingtotalkaboutprogramming,weregoingtotalk
aboutcircuittheory,weregoingtotalkaboutsignalprocessing,andweregoingtotalkabout
probabilisticreasoning.
Itsjustadierentcourse.WecouldhavedoneitinSchemeandIsortofwishwehad.And
forrandomreasonswedidnt.Butthethingthattiesittogetherifyouhadfteensecondsto
describethewholecourseitsstillaboutabstractionandmodularity.Thebeginningofthat
courseisnotverydierentfromthebeginningof6.001otherthanyoudoitinPython.Butat
thatpoint,whereyourenotbuildinginterpretersyet,youcanpreymuchdothisstuin
Python.YouhavetocontendwithPythonsbrokennotionoflambdabutotherthanthatitsnot
reallythatdierent.
Thecoursebasicallysays,Look,thewayyoubuildthings,theresanengineering
discipline.Andthatsexactlywhatwasin6.001.Itsays,youthinkaboutwhatarethe
primitives,whatarethemeansofcombination,andwhatarethemeansofabstraction.The
coursestartsoutandweshowthataroundprogramminginPython.Ofcoursewedontgoinas
deep,butweevendothesameexamples,Fibonacciandhowyoudoanumericalderivativeby
passingafunction.Thenwedosomeobjectsandclasses,whichyoucandoearlierinPython.
Thenwedothatincircuittheory,andwesay,Look,itsthesamething.Youhaveresistors
andcapacitorsandstu,andtheresameansofcombinationcalledwirestutogether,and
theresameansofabstractioncalledyoumakeaThveninequivalenttoacircuit,andthen
therearecommonpaernsfordoingthings.Andthenwedoitinsignalprocess.Yousaythere
aretheseprimitivethingsthatarecalledlters,andtheresameansofcombination,making
blockdiagrams,andtheresameansofabstraction,whichisasystemfunction.
SojustlikeinprogrammingIcantakesomecomplicatedthingandsay,Oh,itsablackbox
calledaprocedureandIdonthavetolookatitsinsides,insignalprocessingIcansay,Oh,
theresthisblackboxandIdonthavetoworrythatthisthingisdonewithanopampandtwo
resistorsversussomethingelse.Itsabstractedbythesystemfunction,andtherearelotsof
http://codequarterly.com/2011/halabelson/ 4/21
2/12/2017 CodeQuarterly

realizationsforthatjustastherearelotsofwaystoimplementaprocedureandkeepthesame
API.
Andthenwedothesamethinginprobability,although,itdoesntactuallyhangtogetheras
muchthen,butwedowanttodoprobabilisticreasoning.Soitsbasicallytakingwhat
fundamentallyisthesamephilosophicalparadigmasthepreviouscourse,butinsteadofgoing
deep,itgoesbroadandtriestosay,Well,thisnotionofabstractionreallycutsacrossallof
engineering.Whichofcourseisalietoobecausethereareplacesthatitdoesntworkatall.But
thatswhatthatcourseisabout.Now,whetheritsgoodornot,Idontknow.
S:AndthedepartmentthatitsinisactuallytheDepartmentofElectricalEngineering
andComputerScience?
A:Right.Itsbasicallyonedepartment,sothiswasastatementthat,infact,MIT
wantstokeepthisasonedepartment.Thewayitusedtobeonedepartmentisthateverybody
hadtotakethesefourcourses.Therewassoftwareandcircuitsandsignalprocessingand
architecture.Whatschangedinthecurriculumpartlyinresponsetothepressurethattheres
justsomanymorethingstodoiswetookthecore,thestuthateverybodyhastotake,and
greatlyshrunkthat.
S:Sothereasontodoabreadthrstcourserstisbecausetheresgoingtobelessin
thecore.
A:Right.Therealityis,ifyoucomeintoMITandyourgoalistolearnaslileabout
circuitsaspossible,intheoldcurriculum,therewasawholesemesterofcircuittheory.Inthe
newcurriculum,itsthethreeweeksthatwedowherethemessageis,Well,yougettowire
somestutogether,andhey,youcanmakeaThveninequivalentofsomethingbecausethats
theabstractionofthecircuit.
S:Imsorry.Whatwasthatword?
A:AThveninequivalent.HewasaFrenchelectricalengineer.Ifyouhaveacircuit
thatsputtogetherbylinearcomponentsandyouputavoltagethroughandyoumeasurean
amperage,orviceversa,whateverisinthismess,youdgetthesamebehaviorwithan
appropriatelychosenresistorandavoltagesource.ThatscalledaThveninequivalent.
Itsusedinawaythatsreallycomfortableinprogramming.Ifsomebodylooksatsome
circuit,analyzingit,theywillsay,WhatstheThveninequivalentofthis?Andthatsthe
thingonwhichyouddotheanalysis.Itreallyisthesameabstractionstory.
S:Soyouregivingpeopleabreadthrsttasteofthedepartment,sotheycanthen
choosewhattheywanttodo.Itactuallysoundslikedespitetheintroductorycoursebeingmore
breadthrst,itwillactuallyenablepeopletospecializemore.
A:Thatsexactlyright.
S:Sothestatementthatthisisonedepartmentisnotactuallyastatementthatcomputer
programmersoftomorrowneedtoknowmoreaboutcircuittheory.Theycanactuallyknow
less.
A:Andconversely.Ifyouareinterestedindevicesandyouhateanythingthathasto
dowiththiscomputerjunk,inthepreviouscurriculumyouhadtositthroughallof6.001and
learnallofthosethings.Nowyougetthebeginningoftheabstractionstory.Aboutveweeks
intothecourse,whenweswitchfromdoingprogrammingstutodoingcircuitstu,halfthe
classgoes,OhmyGod,nally,andhalftheclasssays,OhGod,whatisthiscrap?
Theideasaremergedofcourse.Oneofthewaysyouanalyzethesecircuitsisyouwrite
programstoanalyzethem.Insignalprocessing,forexample,whenyoulearntomakea
dierentialequationmodelofsomethingandpumpsomethingthroughit,theresbasicallya
representationthatsays,Herestherationalfunctionthatisthesystem.Theresanother
representationthatsays,HeresthestreamprocesswhereIputinabunchofsamplesandout
comesthething.
Thentherearetransformersthatgobetweenthosetworepresentations,andthatsstraight
Pythonprogramming.Theyhavetobuildtheclassthattakesarationalfunctionandthenturns
thatintothestreamprocessingprogram.Wetryhardtomaketherelationgoacrossthese
things.

S:Thatcomestoanotheraspectofteachingcomputerscience,orprogramming.Doyou
thinkthesedaystoreallybeagoodelectricalengineerorwhatever,youhavetoknowhowto
program?
A:Certainlyalotoftoolsinvolveprogramming.Buttherearelotsofpeoplewho
havenothingtodowiththat.IfyourereallydowndoingdevicephysicsImean,sure,youre

http://codequarterly.com/2011/halabelson/ 5/21
2/12/2017 CodeQuarterly

workingwithsimulationsandprogrammingandthings,butIdontthinkyouhavetoknow
howtoprogram.
S:Iworkedonaprojectforawhileprovidingaprogrammingenvironmentfor
biologists.Itstartedwithaguywhowasacomputerscienceprofessorandthenswitchedtowet
labbiology.Andhisbiologistpeerswerejustastoundedbywhathecoulddowithjustalile
bitofprogrammingtheyweredoingthesehorriblethingsinExcel.Sohistakewasthat
biologistshavesomuchdata,andtheyneedtoanalyzeitinsuchadhocwaysthattheyhaveto
learntoprogramtogetagriponit.
A:Itmightbe.Idontknow.Theymightjusthavesomereallybadtools.Certainly
therearepeoplethathavedemonstratedsomeverypowerfulthingswithsystemsliketheones
youretalkingabout,anditsalsotruethatthereisthisabstraction,modularitywayofthinking
aboutthings.Youcanrecognizevariousbiologistswhoaresystemsbiologistswhothinkthat
way.Youcanseethat.Thatsnotquiteprogrammingasmuchasacomputingwayoflookingat
theworld.
LookatthestuthatTomKnightatMITworkedon,basicallythebeginningsofsynthetic
biology.Hescertainlyaprogrammer.Syntheticbiologyisreallyaweirdengineerlookingat
biologystu.Itsnotathingthatabiologistwouldvecomeupwith.
S:So,tojumpbacktotheStructureandInterpretationofComputerProgramsandusing
Schemeforthat:asapedagogicalchoiceitwasgreatbecauseitwassimpleanditdidntgetin
theway.
A:Anditsexpressive.Inteachingprogramming,youshouldshowpeoplethe
dierentstyles.Ifyouteachpeopleacourseandyoudonttalkaboutfunctionalprogramming,
youredoingthemadisservice.Itsliketeachingliteratureandyouleaveoutfortypercentof
thegenres.Weputinlogicprogrammingbecausewewantedtoshowpeoplethatgenre.Itsa
wayofthinkingabouthowtodostu.
Ithinkalotofcoursesdonttakethataitude.PartofitisthatyoucandothisinScheme.
Therearelotsoflanguageswhereitspreyhardtoteachfunctionalprogrammingorlogic
programming.ThatspartofwhywechoseSchemeasthelanguage.
S:Howhasteachingcomputersciencechanged?Peoplemustcomein,maybenot
knowingmore,butwithalotmoreexposuretoprogramming.
A:Wellsome.Wevedealtwiththatdierentlyovertheyears.Andwiththeswitchto
6.01wereseeingsomethingalilebitdierent.Itusedtobewedtakethesepolls:Whointhe
classhaseverprogrammedbefore?Theanswerusedtobeeverybodyhadprogrammed
before,exceptfourbiologygraduatestudentswhoweretakingthecoursebecausetheywanted
toknowsomethingaboutprogramming.ThenthereweremorepeopleasMITbroadeneda
lilebitwhohadnoprogrammingexperienceatall.
Oneofthewaysweoriginallydealtwiththatisbydoingfunctionalprogrammingsoearly.It
wasreallyquiteintentionalthatbylecturetwoorlecturethreeweweretalkingabouthigher
orderprocedures,becausenobodyhadreallyseenthatbefore.
ThetrapinaplacelikeMITisthecoursesareactuallypreyhard.Studentswillcomeintoa
courseandiftheyspendthersttwoweekssaying,Oh,Iveseenthat,theyllgetusedtothe
ideatheyneveractuallyhavetostudyanythinginthecourse.Andaboutweekfour,theyre
killed.
S:Soyoutryandgetitstartedfastersotheydontgetlulledintocomplacency?
A:Yeah,andtheresalilebitoflevelingwhereyousay,Noneofyoupeoplehave
seenhigherorderproceduresbefore.Thatsnotquitesotrueanymore.Thelasttimewedida
surveyin6.01,whichwasprobablytwoyearsago,therewerepeoplewhohadnever
programmedbefore,whoreally,reallyhadneverprogrammedbeforeintherealsenseofbeing
unfamiliarwithitandnothavingthestandardfacilitywithacomputer.Andreallybasicthings
peopledidnthave,likewhentheresaproblemyoureworkingontheydonthavethesense
thatyoushouldtryamoresimpleversionoftheproblemrstthingsthatareindependentof
anylanguage.
Wehavesomestudentswhofellintothatcategoryandwevebeenplayingwithvarious
remedialthingstodo.Idontactuallyknowhowthatcameout,becausewhenIstopped
teachingthecoursetocometoGooglewewererightinthemiddleofplayingwiththingslike
that.Thenofcoursetherearepeoplewhoaresupersophisticated,peoplewhohavecometo
MITafterstartingcompaniesanddoingotherstu.
S:Buttheystillhavetotakethatcourseiftheyreinthatdepartment?
A:Veryfewpeopleplaceit.Itsahardcoursetoplacebecauseitspreyunlikelythat
youbotharegoingtobeanexpertprogrammerandknowaboutsignalprocessing.

http://codequarterly.com/2011/halabelson/ 6/21
2/12/2017 CodeQuarterly

Andthecoursethesedayshasalooseenoughstructurethatpeoplecansortofgetbylearning
whatevertinylilebitofPythontheydontknow.MostofthemknowJava,unfortunately.
S:Unfortunatelybecauseitsrenderedthembraindamagedor?
A:Wellitsnotquitebraindamaged.ItsthisaituderememberwhatIsaidabout
programmingisntaboutthedetailsofthesyntaxasopposedtothestructure?Aspartof
guringoutwhatwewanttodoin6.01,Igavenotquiteanentranceexam;wehadtoletyou
intothecoursebutasortofselfcalibrationexam.
Iputvequestionsonit.Therewasonequestionthatsaid:wewanttomakeathingcalledan
invertedindexinordertolookatapieceoftextandidentifywhichwordsareinitandtheir
frequency.SoIsaidwhataninvertedindexwasandsaid,Buildathingthatmakesaninverted
index.
Thesecondquestionwas:writeaprogramthattakesinA,B,andCandgivesyoutheanswer
tothequadraticequationAx2+Bx+C=0.
Thethirdonesaid:writeaprogramthattakesinabunchofcoecientsofapolynomialanda
valueforXandprintoutthevalueofthepolynomial.
Thefourthonewasathingabouthowmanywayscanyoumakechangefor$2.35given
nickelsanddimesandquarters.Thatwasthetest.
Sothequestionforyouis:forwhichofthosequestionsdidpeopleturninthelargestamount
ofcode?Isaidyoucouldpickanylanguageyouwant.Justwriteaprogramthatdoesthisand
turnitin.
S:Myguesswouldbethechangecounting.
A:Theanswerwasthequadraticequation.Becausewhatsaquadraticequation
programlooklike?Theprogramsstartwithabunchofsystemdotoutdotopenstu.Thats
followedbyinstructionslike:Iamgoingtoaskyoutotypeinthreenumbersandwearegoing
tosolvetheequationAx2+B=C.PleasetypeinA.Parsethestring.TypeinB.Parsethestring.
NowImabouttodothisthingand,and,and,and,and.Anditturnsouttobetwopagesof
code.WhenImadeupthatquestion,Icouldntevenimaginethattheyregoingtobedoing
stulikethis.
Butthatturnsouttobethekindofexperience,theprogrammingexperiencethatkidsgetin
highschool,anditsallaboutthisjunkandnotabouttherealideasthataresiingthere.Thats
evenataplacelikeMIT,andthatsevensuper,supertopstudents.
S:WhatdoyouthinkofcoursesthatstartwithsomethinglikeCorevenassembly?Is
thatjustadierentwaytodoit,orisitmisguided?
A:Ithinkitsthewrongthing,butyouknowagain,somuchdependsonthecontext
andwhotheinstructoris,andwhatkindoflessonsyouregoingtodo.Andtherealsoreallyare
peoplewholiketounderstandstuboomup.Itsnottomytaste.Tomytastethemost
importantthingistheideathatyoubuildonabstraction.Thatsnowbecomingavery,very
commonview.Butwhenwewererstdoing6.001,thatwashardlythecommonview.
S:Doyouthinkthatmaybewhythatcourseandthatbookareconsideredclassics
becausetheyreallyadvancedthatviewwhenitwasntcommon?
A:Yeah,Ithinkso.TherearealotofthingsweconsciouslydidusingSchemewas
partofthat.Usingalanguagethathadalmostnosyntaxwaspartofthatsoyoudidntspend
therstthreeweeksofthecourseexplainingwhetheryouputabracketoraparenthesis,or
howyoubreakaline,orwhereyouputasemicolon.
Ifyounotice,oneofthethingsthatwedidinthe6.001book,whichstillbugsmethatIdont
seeitinbooks,iswestartbydeningaprocedure.Ithinkweaddtwonumbersandname
somethinganddeneaprocedure.Whereasifyoupickupmostprogrammingbooksthese
days,proceduresaresomewherelikechaptersevenandtherstchapteriswell,letslistallthe
datatypesinthelanguage.Theresstillabigdierenceinperspective.
S:Right.Thoughpresumablythatspartly,asyouvesaid,becausethatbookisnot
intendedtoteachyouScheme.Itsintendedtoteachyouprogramming.Whereasyouwerejust
writingabookforsomeonewhowantstolearnScheme,youmightbreakitdownalilemore
systematically.
A:Right.ButitsstillweirdtomethatIwouldstartteachingprogrammingbygoing
throughalitanyofwhatarealltheprimitivesinthelanguageandwhatarethedatatypesand
allthatstu.Forme,therstbreakthroughishowdoyouputstutogether.
S:Leavingasidewhetheryoustartthereornot,howlowleveldoyouthink
programmersoughttogo?DoeseverybodyneedtolearnCorsomesystemslanguage?
A:Orsolderingirons?
S:Yeah.Chipdesignorassembly.Whatever.

http://codequarterly.com/2011/halabelson/ 7/21
2/12/2017 CodeQuarterly

A:Whichprogrammers?Whoareyouthinkingabout?Therearelotsofprogrammers
whoIguessnevergobelowtheHTMLlevelthesedays.
S:Right.Clearly,ifyouregoingtohackkernelsorthingsthatactuallyareinC,
obviouslyyouneedtoknowthatstu.Buttherespeoplewhosayevenifyouregoingtobe
spendingyourwholelifewritingJava,orRuby,orPython,youshouldstillknowwhatsgoing
ondownatthechip.Ifyouwanttobeaseriousprogrammer,youreallyneedtounderstand
thatstu.Andotherpeoplesaythatshooey:youoperateatthelayerofabstractionyouoperate
at.
A:Icertainlythinkthesecond.Ofcourse,therearepeoplewhoneedtoknowthat
stu.Therespeoplewhoreallyneedtoknowhowtogrindoutrealeciency.Therearepeople
whoneedtohavesomeunderstandingofwhatthatis.Butformostpeoplewhoare
programming,unlessyouwanttobearealexpert,yougetbywiththelayerofabstraction
youreat.
LookatGoogle.Theresthisinsane,giant,distributed,opaqueinfrastructurethatrunsinthe
backend,andveryfewpeoplehavearealsenseofwhatshappeningthere,eveninsideGoogle.
Ontheotherhand,therearetherealexpertswhokeepthissturunning.
S:Itusedtobethatallprogrammershadtobeabletooperateatthatlevel,because
therewerentsuchhighlevellanguages.
A:Well,itsnotonlythattheyrehighlevellanguages.Therearereallyvery
complicateddistributedinfrastructures.IfImwritingsomething,someofitmayhavetodo
with,DidIusetherightsortingalgorithm?Butmuchmoreofithastodowith,HaveI
distributedthedatacorrectly?
S:Howaboutmath?Howmuchmathdoprogrammersneed?
A:Theresatremendousamountinthis6.001book.Thatspartlybecausewewere
writingitforMIT.Youwanttotalkabouthigherorderprocedures,sotheobviousthingyou
candoisyoucanexpresstheideaofanintegral.Sothatsanobstacleforlotsofplaces.
Remember,atMITthecontextwewerewritinginiseverypersonwhotookthecoursehadjust
hadasemesterofcalculus.
WeactuallydidsomeversionsfortheHumanitiesfaculty,wherewedidntdothatatall,and
weeectivelystartedwiththedatastructurechapterandthentalkedabouttheideasforhow
doyoustructureandmanipulatedata,andthendoabstractionsoverthat.
S:IwaswonderingwhenIrereadit.Talkingabouthomogeneoussecondorderlinear
dierentialequationsprobablyplaysatMIT,butmaybenoteverywhere.
A:Thatsright.WhenwewrotethatweverymuchhadMITstudentsinmind.It
startedoutasthecoursenotesoftheclass.
S:Sothatexplainswhythebookisthewayitis.Butingeneralforprogrammers,how
muchmathandwhatkindsofmathareimportantforworkingprogrammerstoknow?
A:Idontevenknowanymore.WehavetheseargumentsatMITallthetime.People
say,well,theresmath.Otherpeoplesay,well,whattheyreallyneedtoknowarealgebraic
structuressoyouunderstandabstractdatatypes,howyouthinkaboutaxiomatizingthem.And
thenpeoplesaywhatyoureallyneedtoknowiswhatamathematicalproofissoyoucanthink
rigorously.AndIdontknowwhattosay.Theseargumentshavebeengoingonforthirtyor
fortyyears.
S:Andhaveyoueverhadaposition?
A:Well,thelasttimeIhadapositionItendedtosaythattheyoughttobeabletolike
alotofmath.Iveneverbeenpartialtothethingthatsaystheyneedtobeabletodoproofs,but
thatsjusttaste.Andagain,thesedaysthemainthingyoutrytounderstandisabstraction.
Maybethatsrelatedtoproofs.Youneedtobeabletosaylook,heresthisthingandheresthe
rulesforhowitworks.AndthenIdontneedtolookbelowthatlayermostofthetimeinorder
togetstarted.Andtherearepeoplewhoreallygethunguponthat.
S:Youmeanpeoplegeinghunguptryingtolookunderthelayertheyneedto?
A:Well,theysay,IcantgetthisinmybrainunlessIcanimagineitalltheway
down.Thatsthethingyouseestudentsdo.Iwasgoingtosaymathisthethingthathelpsyou
withthat,buttheremightbelotsofotherthingsthathelp.
S:Programmingitself,perhapsbeingoneofthem.Itseemstomethatkeepingthose
levelsseparateisthenameofthegameinprogramming.
A:Itotallyagreewiththat.
S:Ithinksomeonewhocouldntlearntodothatwouldgiveuponprogrammingat
somepoint.
A:Andthatswhathappens.Peoplehavenowaytoanchorthemselves.

http://codequarterly.com/2011/halabelson/ 8/21
2/12/2017 CodeQuarterly

S:Sotheygooanddesignchipsorsomething.
A:Right.Ortheygointolawschool.Well,lawsinteresting.Thatsanexamplewhere
youdonthavethatabstraction.
S:Yeah,andwoefortherestofus.
A:Yeah,butitsperfectlyreasonableandtheyreextremelybrilliantpeople,who
thinklikethat.Butthatsnotthewayprogrammersthink.
S:Right.Anotherpartofmathasitrelatestoprogrammingthesedaysisthatlotsof
academiclanguageresearchisfocusedonstaticallytyped,purefunctionallanguageslike
Haskellwhichareintendedtobebuiltontopofsomekindofrigorousmathematical
foundation.
A:Yeah.Thatsright.Itsallwonderfulstu,butyouknowitskindofconstraining
sometimes.Buttherestremendousinsightsyougetfromthat.
S:Doyouseethatasagoodwaytostartprogramming?Somepeopleliketoteachthat
asarstlanguage.
A:Asanintro?Iwantstudentstomakethingsasanintro.
S:YoumentionedbeforethatoneofthebenetsofusingSchemeisthatyougotto
showlotsofdierentstylesofprogramming.
A:Thatsaid,butremember,westartoutinthisalmostpurelyfunctionalstyle.
S:Itsfunctional,butthesedays,toalotofpeople,functionalincludesthenotionsof
statictypingandmonadsandallthiscategorytheorystu.
A:Well,Idontcallthatfunctional.Icallthatstaticallytyped.
S:Doyouseethatasaninterestingstyle?Theresfunctionalprogramming,andlogic
programming,andprocedural.Isstaticallytypedfunctionaljustaslightvariantoffunctionalor
isthatacompletelydierentstyleofprogrammingwithitsownbenetsanddrawbacks.
A:Thatssortoforthogonal.Thatsthewayinwhichyoudenemodulesthathave
particularbehavior.Tome,thatsalilebitmorelikeobjectorientedbuttheideathatits
staticallytypedisnotparticularlyinteresting.Thatsaquestionaboutwhatthecompileris
doing.
S:Itdoesseemtoaectthewaypeoplethink.WhenIinterviewedSimonPeytonJones,
whoobviouslylikesHaskellalot,hetalkedabouthowhethinksaboutaprogramhereally
startsfromtypes.
A:Right.Thatswhenyouredoingtypesthathaveinterestingproperties.The
problemispeopleconfusethatwiththistotallyboringthingaboutissomethinganintegerora
oatingpointnumber.
S:ButinalanguagelikeHaskellthetypesystemcanexpressthosehigherleveltypes.
A:Right.Thatstheinterestingpart.IsitdownandIsaywhatarethedataobjectsand
whataretherules.Thoseareinterestingworthwhilethings.Butthatswhyitseemstomelike
thatsobjectoriented;Imdeningtheinterfacetoit.

S:OutsideMIT,alotofprogrammersareselftaught.IwasanEnglishmajorandhave
learnedhowtoprogramonthey.Doyouhaveanyadviceforpeoplewhoareselftaught?Is
thereanythingtheyshoulddo,orgapstheyshouldbesuretollin?
A:Readalotofgoodcode.Thatstherealissuethatpeopledontreadcode.
S:Howdoyoureadcode?Givenapieceofcodethatyouhavesomereasontobelieve
isgood,howdoyoureadit?Doyoureadtopdownandstuitallintoyourbrain?Doyou
makediagrams?
A:Itrytolookforthewholestructureandsometimesitsmakingdiagrams.Itendto
readitthewayIwriteit,whichistotryandgetatopdownstructureofwhatingeneralis
goingon.Thenyousay,Whatsacool,interestinglilepieceofthat?andyouseewhatthat
lookslikeintermsofstyle.Thenyouthinkabouttheconstraintsthateachpartputsontheother
one.Itypicallydoitthatway.Igetanorientationaboutwhatsgoingonatall.
S:Aretheretricksasitgetsbigger?Becauseinactualpractice,lotsofcodenowisbig
andoftenpeoplearentjustreadingitforfuntheyrereadingitbecausetheyhaveto
understandit.Sometimesitsbigandhairyandfullofkludges.
A:TypicallyImreadingbecauseImgradingstudentsofmine.Sometimesitsprey
awful.Youthinkabout,Gee,howwouldIhavestructuredthisproject,andhowdoesthis
structureherematchwithwhatIwouldhavedone?Andtypicallyitdoesnot.Andthenyou
say,Ohyeah,Isee.Theydidthat.Thatshowyougetthestructureinyourhead.

http://codequarterly.com/2011/halabelson/ 9/21
2/12/2017 CodeQuarterly

S:Whenyoureadgoodcode,whatdoyoureadfor?
A:Well,Iliketolookattheabstractionsthatpeoplemake,especially,Wow,thisis
justgreatbecauseyoumadethisthingwhichnotonlydoesthejob,butitsreallyelegantand
itsextensible,anditsdoneinawaythatjustwillnaturallyexpandandnaturallybe
debuggable,anditjustcapturesalltheabstractionsintherightway.Tomethatswhatgood
codelookslike.
S:Soyoureadstudentcodeforgrading.Doyouactuallyregularlyreadcode?What
wasthelastpieceofcodeyoureadforfun?
A:AtGoogleyoureadatremendousamountofcode.Youhavetoreviewcode.Thats
whatIvebeendoingsinceIvebeenatGoogle,readingalotofreviewstu.
S:Iwanttodigaliledeeperonthis.You,likemanyotherpeople,sayprogrammers
shouldreadcode.YetwhenIaskwhatcodehaveyoureadforfunoredication,youalsolike
manyotherpeopleanswerthatyoureadstudentscode,whichisyourjob,andreviewcodeat
Google,whichisalsoyourjob.Butitdoesntsoundlikeyousitdownofaneveningwithanice
printoutandreadit.
A:Notforalongtime.Iusedtodothat.IcertainlydidthatwhenIwasatMIT.When
IwasagradstudentatMITandlearninghowstuworks.
S:AndthatalsoseemscommonalotofpeopleIvetalkedto,did,intheirsocalled
larvalstage,readabunchofcodeandlearnabunchofstu.Andthenitseemsthataftera
whiletheystop.
A:Yeah.Ithinkthatsright.Althoughoneexceptioniswhenyouwanttolearnstu.
Thewonderfulthingaboutthewaythewebstartedoutisthatyoucouldreadthecodeforany
webpage.ItscertainlytruethatifIwanttolearnhowtodosomeJavascriptthingormake
somethingthatsonawebpage,Indsomenicepageandreadhowitsimplemented.
S:Soletssay,justforthesakeofargument,thattheadvicetoreadcodeisreallymeant
fornewerprogrammersandthatexperiencedprogrammersafterawhilestopreadingcode,
otherthantacticalreadingtogureouthowsomethingworks.Aretherepiecesofcodethat
youthinknewprogrammersshouldread?Codepeopleshouldreadbecauseitsthesoftware
equivalentofShakespeare?
A:Actuallynot.Imean,theresstuthatmadeabigimpressiononme,butIdont
knowthatIwouldsayeverybodyshouldreadit.
S:Soiftherearentspecicthingsthatyouwouldcanonize,canyougivesomeadvice
abouthowtondthingstoread?
A:Well,Idsayrstofallitshouldbeathingthatyoureinterestedin.Heresakind
ofprogramIdliketowriteandheresareallybeautifulexamplethatIseeworking.ThenI
wouldlookatthecodeforthat.ImnotsureIwouldgooutintheabstractandsaywhats
beautifulcode.
S:Imstillcuriousaboutthissplitbetweenwhatpeoplesayandwhattheyactuallydo.
Everyonesays,Peopleshouldreadcodebutfewpeopleseemtoactuallydoit.Idbe
surprisedifIinterviewedanovelistandaskedthemwhatthelastnoveltheyhadreadwas,and
theysaid,Oh,IhaventreallyreadanovelsinceIwasingradschool.Writersactuallyread
otherwritersbutitdoesntseemthatprogrammersreallydo,eventhoughwesayweshould.
A:Yeah.Youreright.Butremember,alotoftimesyoucrudupaprogramtomakeit
nallyworkanddoallofthethingsthatyouneedittodo,sotheresalotofextraneousstu
aroundtherethatisntthecoreidea.
S:Sobasicallyyouresayingthatintheend,mostcodeisntworthreading?
A:Oritsbuiltfromaninitialplanorsomekindofpseudocode.Alotofthecodein
books,theyhavesomeverycleanedupversionthatdoesntdoallthestuitneedstomakeit
work.
S:ImthinkingoftheprefacetoSICP,whereitsays,programsmustbewrienfor
peopletoreadandonlyincidentallyformachinestoexecute.Butitseemstherealityyoujust
describedisthatinfact,mostprogramsarewrienformachinestoexecuteandonly
incidentally,ifatall,forpeopletoread.
A:Well,Ithinktheystartoutforpeopletoread,becausetheressomeideathere.You
explainstu.Thatsalilebitofwhatwehaveinthebook.Therearesomefairlysignicant
programsinthebook,likethecompiler.Andthatspartlybecausewethinktheeasiestwayto
explainwhatitsdoingistoexpressthatincode.
IthinkifpeoplewroteinSchememore,therewouldbemoreprogramsforpeopletoread.I
thinkifpeoplewroteinC,therewouldbefewerprogramsforpeopletoread.

http://codequarterly.com/2011/halabelson/ 10/21
2/12/2017 CodeQuarterly

S:Soisthereanythingwecandotomakeitpossibletodeliversoftwarethatworksand
operatesintherealworldandgetsnishedinatimelyfashionwhilealsoimprovingits
readability?Youjustsaid,writeinSchemeinsteadofC.Isthereanythingelse?
A:Ithinkmuchoflanguagedesignismotivatedbythat.
S:Anddoyouthinkthatlanguageshavegoenbeerdotheyactuallyallowmore
readablecode?
A:Ithinksome.Youcanalwayscrudthingsup.ButIthinkalotoftheaesthetic
aroundPythonisthatitshouldbereadable.Buttheendresultispeoplestillwritealotof
cruddyPythonprograms.Youcancertainlywriteamessinanylanguage,butyouknow,you
canalsobecarefulandwritethingsreasonably.Ithinkalotofthestuyouweretalkingabout
thekindoftypestuwhereyourecarefulabouthowyoudenewhatthedatatypesare,and
theyrepreyhighlevelthingsthatencapsulatestuthatcertainlyhelps.
Butrememberalltheghts.Remembertheghtsabouthowhorribleitwasthatyouwould
dogarbagecollection.Becauseanysaneprogrammerknewthatyouhadtodomanualmemory
management.Thatsanexampleofnotbeingreadable.
S:Meaning,garbagecollectionmakesthingsmorereadable,becauseittakesawayall
thegorphavingtodowithmemorymanagement?
A:Right.Becauseyoubuildsomelevelofabstraction,whichtakessomethingwhose
detailsarenotgermanetotheideasyouretryingtogetacrossandthenyoubuildalanguage
thatsuppressesthatlevelofdetail.MapReduceisanotherexampleofthat.Thatcouldhave
beensomecomplicatedinterfacewithlteringandmapping,andallkindsofstu.Andnow
peoplesay,well,MapReduce.Thenthatbecomesanideathatyoucanstartusingtobuildmore
complicatedthings.
Rightnowthereareterribleproblemswithparallelism.AndIdontthinkthereactuallyare
anyverygoodideas.Maybethecalculusistherightthing.ButIdontthinktheresreally
goodstunowgoingthathastodowiththat.Andnobodyunderstandssynchronization.
S:HaveyoueverdoneliterateprogramminglaKnuthorreadliterateprograms?
A:Notreally.Iknowthewords,butIdontevenknowwhatitisreally.
S:WhataboutKnuthsmagnumopus,TheArtofComputerProgramming?Itseemslike
therearepeoplewhouseitasareference,afewpeoplewhohavereadthewholething,and
otherpeoplewhojusthaveitontheshelf.Whereareyouonthatspectrum?
A:WhenIwasanundergraduateatPrinceton,Itookthisonecomputerscience
courseanditusedVolume1ofTheArtofComputerProgramming.Thatwasin1968or
something.AndIvelookedatVolume2and3.
Actually,whenIwasatPrinceton,Knuthwasvisitingthatyear.Ifyouremember,Knuthlaid
outthewholewhateveritis,eightvolume,eightbookseries.Wefoundhimwalkingaround
campusin68andwesaid,Hey,wereundergraduatesandweredoingthisproject,andwe
hearthatVolume4isgoingtobeaboutcompilers.Wewanttowriteasymboltable;couldwe
usethemanuscriptforVolume4todothis?Knuthsaidsomethinglike,Well,itsnotquite
doneyet,butwerereallyclose.Imsorryitsnotgoingtobeintimeforyourclassproject.1

S:Supposesomeonehastaken6.001ortheyvereadSICPandtheyunderstandallthe
goodideas.Nowtheyregoingtobuildsomebigsystem.ShouldtheychooseScheme?Should
theynotchooseScheme?Ordoesitnotmaer?
A:Oh,atthatpointitdoesntmaersomuch.Thatsreallyaquestionofthe
developmentenvironmentyouhaveandthetools.CertainlyataplacelikeGoogle,whereyou
havethesegiantprogramspeopleareworkingon,thelanguageislessimportantthanthe
developmentenvironmentandtheproceduresyouhaveaboutcheckingeachotherscode.
Butthatworkswhenpeoplehaveageneralideaofwhatitsabout.ForallIknowImsaying
somethingthatisfalsebasedonfacts,butIwouldimagineitwouldbeveryhardforsomeone
whoknewnothingaboutfunctionalprogrammingtocomeupwithathinglikeMapReduce.
S:AphenomenonweintheCommonLispworldexperiencealotisthatpeoplewhove
hadtheStructureandInterpretationofComputerProgrammingcourseatMITorsomewhereelseas
theirsoleexposuretoLisp,comeawaywiththisidea,Oh,Lispisthistoylanguagethats
mostlyusedforimplementingitselfinitselfandisntthatweeandclever.
A:Right.
S:WhichforaCommonLisppersonissortofannoyingbecauseCommonLispisthis
big,industrialballofmudthatyoucandoanythingin.

http://codequarterly.com/2011/halabelson/ 11/21
2/12/2017 CodeQuarterly

A:Right.Exactly.Again,thepointofSchemeistobereally,reallysimple.Ifyoulook
attheSchemereport,youknow,itwasveryproudlyverysmallasopposedtoCommonLisps
spec,whichisabook.
Butsure,atsomepointyouhavetobuildmoreandmoreinfrastructure.Imean,themain
thingthatSchemeismissingislibraries.Itdoesnthavegoodsupportforthat.
S:Haveyoukeptupwiththerecentstandardizationeorts?
A:Yeah.IvekeptupandIdontquiteknowwhattothink.Thebookisalotlarger.
Themanualisalotlarger.R6RShasbecomeaverycomplicatedlanguage.Thingsare
intellectuallylessclear.Thenumberstuisverycomplicated.
S:Andisitcomplicatedinausefulway?
A:Idontknow.ThatswhatIdontknow.Butitsmostlylarge.Ithinkpeople
eventuallymovetootherlanguagesoncetheygetthepoint.
S:Sothisgetstowhatyousaidbeforeaboutmakingprogramsreadable.Ifpeople
wroteprogramsinSchemeratherthanC,moresoftwarewouldbereadable.AndSchemeat
leastuntilrecentlymaybewasasmallandbeautifullanguage.
Butcanrealworldprogramsbewrieninsmallbeautifullanguages?Orbecauseofthegorp
thatcomesinasaresultofmakingthingsworkintherealworld,itisactuallybeertousea
languagethatsgorpieritself?
A:Idontknow.Thatsagreatquestion.Idontknow.Iguesswhatpeoplereally
wanttosayis,youkeepthebeautifulcoreandthenyoumakeawholebunchoflibraries.I
donthaveabeeranswerthanthat.
S:HaveyoueverstartedouttowritesomethinginSchemeandthensaid,Ivegotto
usesomethingelse?
A:IvedonesomewebpagestuwherethereisstuinSchemeforpuingtogether
webpageswhichisverybeautiful,butpreylimitedattheend.Butthatwasmostlybecause
thelibrarywasntushedout.Occasionallyyoudropintosomethingforspeed.Butgenerally
thewayIthinkaboutprograms,theyrenicelyexpressedinScheme.Icantgetoverhowhardit
istodocallbacksinJava.IthinkevenC#doesitmuchbeerthanthat.Icantbelievethat
languagesdonthavelambdainthem.

S:Youvesaidthatcomputerscienceisnotaboutcomputersandyouvealsosaidits
notascience.So,whatistherelationinyourmindbetweencomputerscienceand
programming?Doyouhavetoprogramtounderstandcomputerscienceorisprogramming
justthebricklayingpartofthisgranderenterprise?
A:Idontknow.Doyouhavetobeabletoplayaninstrumentinordertosay
somethingaboutmusic?Therescertainlypeoplewhodothat.Therearetwopointsofview.
Oneisyousay,well,theyrenotconfusedbythedetailsofknowingwhatitsactuallylike,and
theotheroneis,well,theydontactuallyhaveagut,handsonappreciationofwhatthestuis
thatyouresayingthingsabout.Certainly,intermsofcomputerscience,therearelotsof
theoreticianswhoareoutstandinglygoodandprobablyhaventprogrammedinalongtime.
ButifyoulookatsomeonelikeKnuth,theresaguywhosprogrammedandhistheorygrows
outofthat.
S:Sotoaskitanotherway,isthepurposeofstudyingcomputersciencetogureout
beerwaystobuildsoftware?Ultimatelythatsthepoint,right?Otherwiseitwouldjustbe
math.
A:Well,Idontknow.Peoplehavebeenarguing,probablysincevonNeumann
probablysinceAdaLovelaceaboutwhatsthiscomputersciencestu,andIthinkpeopleget
hunguponitwaytoomuch.Theresthispowerfulphenomenonandthereareallsortsof
aspectsaboutit,rangingfromhowitchangessocietytohowyoumakethingshappen
ecientlyatthemicrolevel.Itsfunnywhenyousay,Whatsthepurposeofthat?Imean,
whatsthepurposeofdoingphysics?
S:Well,purposeismaybealilephilosophical.Butifyouaskaphysicist,Whatis
physicsabout?,itsaboutunderstandingthenaturaluniverse.
A:Right.Well,youknowourtakeonitcomputerscienceisaboutformalizing
imperativeknowledge.Theessenceofprogrammingisaboutimperativeknowledge.Itsabout
howtodothings.Ifyoureallystretchit,itmightbethatabookoncookingiscomputerscience.
Butthatsreallystretchingit.ButitsnodierentthanwhatwesayintheSICPlectures:
Mathematicsisabouthowyouthinkaboutwhatstrue,followingfromvariousaxioms.
Computingishowyouthinkabouthowtodothings.

http://codequarterly.com/2011/halabelson/ 12/21
2/12/2017 CodeQuarterly

S:Soifcomputerscience,likeallothereldswithscienceinthename,isntascience
whatisitthatweredoing?Engineering?Art?Math?Somethingcompletelynew?
A:Well,itsthisfunnymixtureofformalizingknowledgeandthinkingofwaystodo
thatandthenlookingattheresultsofthisinformationcommunicationstumixingupwith
cultureandsocietyandthewaypeopleinteractwitheachother.Andthatsallverycomplicated
andverydeep.
IthinkthefutureofcomputerscienceisatplaceslikeCornellandMichiganandMaryland,
wheretheyguredoutthattheyshouldmergetheircomputersciencedepartmentswiththeir
informationschools.
S:Informationschoolsasinlibraryscience?
A:Yeah,theycomeoutoflibraryscience.Cornellisareallygoodexampleofthat.The
computersciencedepartment,Ibelieve,actuallymovedoutoftheschoolofengineeringand
nowtheresaninformation/computingmerger.Ithinkthatsthedirectionthisisgoingtogo,
andsomeofitwillhappenformally.Somewillhappenbypeopleshiftingtheirresearchfocus.
S:Inthebeginningsofcomputerscience,itseemsthereweretwowaysitemerged:it
eithercameoutofthemathdepartmentoritcameoutoftheelectricalengineeringdepartment.
Soyougoteithertheoretical,mathycomputersciencedepartmentsorverysystemsfocused
departments,likeatBerkeley,buildingthingslikeUnix.
A:Right.Andneitherofthosearewheretheimportantstuisnow.Ithinkthe
interestingstuisinthisthirdarea.
S:Doyouthinkthattheskillsrequiredtobeaprogrammerarethesamenow?Orcan
dierentkindsofpeoplenowsucceedasprogrammersbecausetherearedierentkindsof
programmingthatreallyrequiredierentskills?
A:ImnotsureImgoingtoanswerthequestionthewayyoumeantit,butIthink
whatsreallyimportantrightnowisforprogrammerstoknowwhatsworthmaking.Thats
whatItryandfocusoninmyclass.Youknowsomelanguageandyouknowenoughtoseethe
importanceofalgorithmsandyouhavetobeabletolookthemupandthings.Butyoualso
havetohavesomesenseofwhatsworthmaking.Andthatrequiresunderstandingabout
people,andunderstandingaboutsociety,andunderstandingaboutthecontextinwhichthe
programisgoingtobeused.ThatswhatItrytoteachwhenIteachprogramming.
S:Doyoufeellikethatsamorerecentdevelopmentbecauseofallofthisinfrastructure
thatsouttherenowpeoplecanmakeallsortsofthingswithoutspendingtheirwholelives
guringouthowtomashmachineinstructionstogetherbyhand?
A:Right.Andyouendupreusinglibrariesandmodulesandallkindsofthings.
S:Whendidyoustartthinkingaboutthis?
A:Ireallystartedthinkingaboutitinthesecondhalfofthe90s.Becauseitoccurred
tomethatIcouldgiveaprogrammingassignmentandsomestudentinmyclasscouldwrite
somethinganditcouldbeusedby50,000people.Itsthistransitionbetweenwhenstudents
writeprogramsmostlyforthemandmaybetheteachertolookat,versus,Icouldputup
somethingonthewebthatsactuallyusefulandcouldaractalotofinterest.Tome,thatsthe
bigdierence.
S:Basicallytheadventoftheweb?
A:Right.Yourprogrammingbecomesamuchmorepublicact.Ithinkthatoneofthe
thingsthatIseeinmostcomputersciencerightnowismostcomputerprogrammingcourses
stilldontgetthat.Theyrestillbackintheageof,Imgoingtowriteaprogramforoneperson
tolookat.
S:Sowhatsworthmaking?
A:Makesomethinginteresting.
S:Andhowdoyougetyourstudentstoexplorewhatsinteresting?
A:Well,yougivethemtools.Yougivethemexamples.AtMIT,andactuallymost
places,youcanstayaheadandgivepeoplemodulestousethatareinteresting.
Usuallyyoutryandndsomethingfeasiblestudentshavethesewonderfulgrandiose
thingsthataregreat,andyouhavetondapartthattheycanmake.Sometimeswedo
programmingwhereyouworkwithaclient.Thatspartofwhatyouhavetolearn.Thatyousit
downwithaclientwhohassomebigidea,andpartofwhatyouneedtodoisshapethatinto
somethingthatactuallyworks.
S:Right.Arethoseeverinconict?Certainlyitseemsintherealworldtheycanbe.A
clientsays,Iwantyoutocomeupwithacomputermodelforsomecrazyderivativethats
goingtomakemerichanddestroytheeconomy.Isthatworthbuilding?

http://codequarterly.com/2011/halabelson/ 13/21
2/12/2017 CodeQuarterly

A:Wedontpickthingslikethat.Wehaveclientsapplytousandwedoascreening
ontheclientsstu.
Amorelikelyexampleisyouworkforhalfasemesterandthestudentscomeinandsay,Oh
myGod,wedidexactlywhattheclientsaidandnowtheclientsaidthatsnotwhatthey
wantedatall.Andwesay,youknow,thatsagoodlessonabouthowyoucommunicatewith
yourclientasyoureworking.
S:Sorsttheyhavetocutitdowntosomethingthatsfeasible,thenyouhavethese
clientswhohavebeenscreenedtobehopefullymoreorlessworthwhilethingstobeworking
on.Istheresomethingthatyoudototeachyourstudentssothatwhentheygooutinthe
broaderworldwhentheyhavemoreskillssomorethingsarefeasibleandwherenotall
clientsactuallyaskthemforgoodthings,thattheyhavewhateverintellectualorphilosophical
toolstheyneedtoanswerthatquestionofwhatsworthbuilding?
A:Well,Itendnottodothatlevelintheprogrammingcourses.Iteachcourseson
internetlawethicsandlawwherewelookmoreatthat,butthosetwocoursesdontget
combinedparticularly.
S:IsthatthesamestuyoutalkaboutinyourbookBlowntoBits?
A:BlowntoBitsissortofanoshootwetookmyethicsandlawcourse,andthen
dumbeditdownsowecouldteachitatHarvard,andthendumbeditdownmoresoitcouldbe
abook.Itwasreallysimpleattheendoftheday.TherewasabeautifulexplanationofDie
HellmanHarryLewiswroteitandithadoneequation.Ilookedatthisthingandsaid,My
God,whatabeautiful,elegant,simpleexplanationofthisthing.Thentheeditorcamethrough:
Youcanthaveanequationthere.Foreveryequationinthebookyouregoingtolosetwenty
percentofyourreadership.SowereallycutthetechnicalstuoutofBlowntoBits.
ThewonderfulthingaboutteachingtheethicsandlawcourseatMITishalfofthestudents
areverytechnicallysophisticated.Whentheythinkaboutthesethings,someofthemcan
actuallydoprojectsthatarereallypreyoutstanding.
TheresagreatexamplehavingtodowithprivacythatImstillgoingaroundtalkingabout.
Thiswasdonethreeyearsago,sorightnowitskindofinteresting.Threeyearsagoitjust
pulledusupshort.
WehadtwoundergraduateswhobasicallydidananalysisofthesocialnetworksofMIT
undergraduates.Whattheyshowed,andbynowyoullsay,Wellsure,ofcourse,wasthatyou
canseewhetherornotsomeoneisgaywithapreygoodprobabilityofprediction,eightyve
percent,bylookingattheproportionoftheirFacebookfriendswhoaregay.Infact,Ishouldbe
careful.Thatsonlytrueformales,notfemales.
TheyactuallybuiltthecodeandsuckedintheFacebookdataanddidtheanalysisandthey
knewenoughaboutprobabilityandBayesianreasoningtodothisthing.
Butthecoolthingaboutthatis,itsaysthatpersonalprivacyisnotpersonal.Thewholeway
thateverybodyisthinkingaboutprivacyregulationrightnowis,theressomestuaboutme,
andthenIgetthechoiceofwhetherornottoexposethat.Butthisisanexamplethatsays,ifIm
gayandIdecidetooutmyself,thatsgivingtheworldlotsofinformationaboutmyfriends.
SothiswholewaywethinkaboutwhatprivacymeansontheWebisrootedina
simplicationthatsjustwrong.Wedontactuallyknowhowtodealwiththat.Thewholelegal,
regulatorysystemwehavejustdoesntrecognizethat.Thatsthestrikingthing.
Buttheotherpartofitisthreeyearsagowhentheydidthisanalysis,doingtheanalysiswas
striking.Nowofcourseeverybodysays,Wellyeah,youcangolookatFacebookmembers.
ThatswhatsniceaboutteachingatMITyoundstudentswhoreallycandothat.
S:Inaperfectworldwouldyouhopethatallprogrammerswouldtakesomethinglike
yourethicsandlawcourseandhavewrestledwiththoseissuesbeforetheywentoutinthe
worldandstartedslingingcode?
A:Well,Ihardlywanttosayall.AtMIT,ourcourseisaseniorelective.Buttypically
itistakenbyallkindsofpeoplesay,bypeoplewantingtogotolawschool.Ingeneral,whatI
likeisforpeopletobuildontheirtechnicalexperience.
Anexampleofaverygoodprojectafewyearsagowhenpeoplewerejuststartingtouse
TwierthesestudentsbecamesomeoftherstTwierusersanddidareallygoodsecurity
analysisofprivacyinTwier.Becausetheydidunderstandthatstu,theycoulddoareal
technicalanalysis.
S:IsthatsimilartoLawrenceLessigsstuabouttherelationbetweentechnical
architectureandtheresultsonsociety?
A:ItaughtjointcourseswithLarryatHarvardandMITwhenhewasrstwriting
thatbook,soyeah,therewasthissenseofthewaythecodeandthearchitecturearedesigned

http://codequarterly.com/2011/halabelson/ 14/21
2/12/2017 CodeQuarterly

constrainshowitsgoingtobeused.Thatphilosophywasthroughoutthecourse.ButthestuI
waslookingatendsupbeingalotmoretechnicalthanthat.
AnotherexampleiswhenthesubwayinBostonrstwasgoingtoputinRFIDcards.Wehad
studentsdoatechnicalanalysisoftheRFIDsystemandtheprivacyrisks.Theyactuallyworked
asvolunteerstaforoneofthestatesenators,talkingwiththepeoplewhoruntheT2inBoston
andshowingthemsomeoftheactualtechnicalrisksintheinfrastructuretheydsetup.

S:InadditiontoteachingprogrammingtoMITstudents,youvealsobeeninvolvedina
coupleprojects,rstLogoandnowAppInventorforAndroid,thatseemlikeaemptstomake
programmingmoreaccessibletofolkswhomightotherwisenotthinkofprogrammingas
somethingtheycando.
A:WhenweweredoingLogo,wewerethinkingaboutteachingmathematicsgive
kidsaplacewheretheycaninteractwithstuformallyandthinkaboutbugsandhowtheyget
aroundthem.SothenotionofLogo,initially,wasntthatyoucouldmakethecomputerdo
preythingsorstulikethatitwaspuingkidsinaplacewherethinkingformallypayso.
IfyoulookattheveryoriginalpapersofSeymourPapertandCynthiaSolomon,theywere
calledthingslikeTeachingChildrenThinking.Thatwasthemotivationallthewaythrough.
ThatwasthemotivationwhenAndydiSessaandIwroteTurtleGeometry.Itwassayingthatby
takingstuandexpressingitprocedurallyyoucangetatthefundamentalideas.InfactGerry
SussmanandJackWisdomwroteabookcalledStructureandInterpretationofClassicalMechanics,
whichisexactlythesamemotivation,butnowinanalyticalmechanics.
S:Sothatsusingprogrammingasawayofexploringatopic.
A:Partlyexploringandpartlyexpressing.
S:Butitgivesyouawaytounderstandaeldthatexists.Geometryexists.Classical
mechanicsexists.AndsomeoftheLogostualsohadtodowithgrammar.
A:Yeah,right,thatwastheoriginal.Whentherewerenodisplays,itwaseasiertodo
that.
S:Andmathseemsparticularlywellsuitedtothat.Itsaeldthatyoucanexplore
becauseitisaformaleld.Youuseadierentformalismsoyoucanexperienceitinaway
thatsverydierent.
A:Right.
S:Whatabouttheideathatlearningtoprogramisitselfaninterestinganddierent
wayofthinking?Wealllearnhowtoreadandwrite.Wealllearn,hopefully,todosomemath.
Isprogramminganotherthingthatteachesyouanewwayofthinkingthatsuseful,evenfor
peoplewhodontendupbeingprogrammers?
A:Ithinktheimportantpartofitistherearewaysoforganizingthings.Iguessyou
cancallthatprogramming.Theresthenotionthatthingscanbedescribedrecursively.Itscool
andpowerful.Butithasnothingtodowithprogramming.Whoareyourancestors?Your
ancestorsareyourmotherandyourfatherandtheirancestors.Thatsjustacoolthing,whether
yourewritingacomputerprogramorjustasawaytowrapyourmindaroundthatidea.
Programminghasalotofstulikethat,mostlyaround,CanIwrapsomethingupandname
it?CanIparametrizestu?Thosearehardwell,maybenothard,butcertainlynonobvious
ideas.Turinginventedtheideaofthesubroutine,andittooksomebodyassmartashimtodo
that.Itsnotlikeitwassiingaroundasanobviousthing.
S:Letstalkabitaboutyourlatestproject,AppInventor,atoolthatallowsnon
programmerstobuildappsforAndroidphones.
A:AppInventoriscool.ThewayAppInventorworksisthatyousitatabrowserand
theresaGUIinthebrowser.Andyouwanttoputabuononthephonesoyoudragouta
buonandputitontheimageofthephone.ThentheresanotherpieceIdontknowifyou
knowScratch;itssortoflikethatwherethereareblocksandyoudragthemaroundandyou
hookthemtogether.Thentheresthethingthatgoesfromthoseblocksyoudragaroundand
thecomponentsyoupickonthedesignerGUI,anditgetsstuedintothephone.
S:SotheblocksrepresenttheprogramandtheGUIistheGUI?
A:Right.TheGUIsays,Ivegotabuonanditshere,andIvegotalabelandits
here.And,ohyeah,theresanaccelerometeranditspartofthisthing,butIdontseeit.Then
theblockssay,Ohgee,theaccelerometerisanobject,andithasamethodthatsayshowfast
areyoufallingorareyoubeingshakenandtheresanevent,andthebuonhasathingthat
says,AmIpressed?

http://codequarterly.com/2011/halabelson/ 15/21
2/12/2017 CodeQuarterly

Thearchitectureofthatis,stuthatishappeningintheGUI,throughthebrowser,iswrien
inJavawithGoogleWebToolkit.TheblockseditorthethingthatlookslikeScratchis
wrieninJava.ThethingthatstheaccelerometerisaverythinlayerontopoftheAndroidJava
accelerometercomponent.ThesecomponentsarewrieninJavaandrundirectlyonAndroid.
ThoseblocksyoupusharoundgetparsedessentiallyintoaverythinlayeroverScheme.
ThereisanimplementationofSchemeinJavacalledKawa.TheblocksgettranslatedintoKawa
thenthatgetscompiledintoJavaandpushedtothephone.Theresactuallyaninteractiveway
todoit,whereyouhaveareadevalprintlooprunningonthephoneandthenwhatpasseson
thewirebetweenthecomputerandthephoneisScheme.
Whenyoumoveblocksaroundonthecomputer,itsparsingyourblocksintoScheme,andit
goesoverthewiretoaREPLthatsrunningonthephone.
S:SoyourebasicallygeneratingSchemeviablocks.
A:Yeah,itsjustthesyntax,ifyoulike.Theresalilemorecrapbecauseerrorsdont
comeback,butthatsbasicallywhatsgoingon.Thentheressomebackendwebserverstu,a
lilebitthatsdoneinPython.
Idontknowwhatlanguageisthatin?ItspartlyJavaandalilebitofPython.Thelayeron
thephone,thatsnotpureKawawerealilemorecarefulaboutthingslikeruntimetype
errors.Theproblemis,whenyourepushingtoacompiledenvironmentlikethephoneandthis
languageisforkids,youdrathernothaveeveryruntimetypeerrorcrashtheapplication.
ThephoneisrunningaREPLinKawaactually,aslightlyhigherlevelinterface,butonly
slightly.Itdoesthingslikemorecarefultypecheckingbeforeyoupassargumentsaround.And
acoupleofoperationsthatareinSchemethatarenotinKawa,likeforeach.
S:Typecheckinginthesenseof,ifyoucallCAR,makesureitsacons.
A:Well,wedothat,too,butmostlythingslikeoneofthethingswedidinLogowe
buriedthedierencebetweenthecharacterstring123andthenumber123.Itdoesthatsame
amountofconversion,alotofautomaticconversion,butitsareallythinlayerontopof
Scheme.
Soitsallofthoselanguages.Yougobackandforth.TheresapartthatsaSchemeprogram.
ThebulkofitisinJava.SomeoftheJavaisdoingSwingandsomeoftheJavaisusingGoogle
WebToolkit.
S:AndthepartthatsinScheme,isthatduetoyourinuence?Didyoustartthe
project?
A:Istartedtheproject,butactuallytheotherguywhoisthedevelopmentleadonit,
aguynamedMarkFriedmanwhoactuallyusedtobeatMITalongtimeagohesaid,Well,
thewaytodothisis,theresthisKawathing,becausewewerethinkingwhatsthegluelayer
ontheAndroidphone.Preyearlyinthegamewedecideditneededanarchitecturesomething
likethat.
AttheverybeginningwelookedatPythonS60,IthinkthereareacoupleofPythonsthat
peoplewerewritingforAndroidwhenwestartedtheprojectayearandahalfago.Butthen
thisKawathingcameupandwesaid,Well,good,itsScheme.WeknowScheme.
S:Andyouwantalanguagerunningonthephonetogiveyoualevelofdynamismthat
youwouldntgetbyjustshippingclasslesdowntothephone?
A:Yes.Weunderstandtheexibility.Itsniceorthogonalityinhowyoumakethe
tradeos.Youcanhaveproceduresandhigherorderprocedures.Withourarchitecture,forus
thatstotallyaquestionofwhatsyntaxwewanttouseintheblockstorepresenthigherorder
procedures,becauseifyouwanttogopassthatintotheSchemethatsrunningonthephone,
youcandoit.
Inourcase,thefactthatwehaventdoneitisforthesamereasonMitchResnickhasntdone
itinScratchitsthatwerenotsurehowearlywewanttoexposethattopeople.
S:SoIplayedalilebitwithAppInventor,anditsobviouslydesignedtoallowpeople
toexperienceprogrammingwhomaybewouldntotherwise.Whoareyoureallyaimingthatat?
A:Whenwebuiltit,wewerethinkinghighschoolstudentsandbeginningcollege
students,andthatsstilltrue.Butwhatshappenedis,nowtheresawholebunchofamateurs
whovegoeninterestedinAppInventor,saying,Idliketobeabletomakesomelile
applicationjustforfunorjusttosharewithmyfamilyorsomething.Justtogetthefeeling,in
thisnewworldofcomputing,whatitsliketoactuallymakesomething.Ithinkthattendstobe
themajorityofpeoplewerelookingatnow.Theinterestedamateurwhowouldliketodo
something.
S:So,amateurinthesensethattheyveneverprogrammedbefore,maybeakintothe
peoplewholearnedtobuildwebsitesbackintheearly90s.

http://codequarterly.com/2011/halabelson/ 16/21
2/12/2017 CodeQuarterly

A:Yeah.Thatsagoodanalogy.Itsnevergoingtobetheprofessionalstu,butyou
getthefeelingthat,Imadesomething.Ipersonalizedittome.IhavesomesensethatIcan
controlthistechnology.AndmaybeImakesomethingthatsfunanduseful.
S:Right.SoIhavetosayandIdontknowhowmuchofthisisbecauseIdidntreally
becomeanexpertatusingitintheliletimeIspentplayingwithit,orjustbecauseIknowhow
toprograminotherwaysbutIfoundthatalthoughthevisualprogrammingwiththeblocks
editorwaspreyslick,itwasstillverypainfultouse.
A:Becauseyoufeellikeitdjustbeeasierifyoucouldtype?
S:Right.
A:Yeah.Thatsthethingthatwereplayingwithnow.Therealvalueofthevisual
thingforbeginnersisthatyoudontmakesyntaxerrorsitssoconstrained.Thevisualthingis
tremendouslyconstrainingaboutwhatyoucanputtogether,andtheipsideofthatisthatyou
wantsomethingthatsmoreexibleandeasiertodealwith.Sowereplayingaroundwith,is
thereanalternatetextlanguage?WemightmakealanguagethatlookslikePythonor
something.Butatthemoment,werelookingatpeoplewhoreallyneedthatbeginning.That
really,reallymakesadierencetopeopleattheverybeginning.
S:Haveyouhadpeoplewhoveplayedwithitenoughthattheyvegoentothepoint
wheretheysay,Okay,thiswasveryuseful;ImgladIhadthis,anditgotmegoingatthe
beginning,buttheresgottobeabeerwaytodothis?Ordofolksstayhappywithit?
A:No.Experiencedpeoplesay,Well,thisisreallycool,andIseethepoint,butI
reallywishIcouldjusttypethisprogram.Wellprobablyhavesomewaythatpeoplecando
that.Itsjustthatthatsnotwhatwerefocusedonrightnow.
S:Iwasthinkingevenifyouwantedtoconstrainit,perhapssomethingtextbased,like
astructureeditor,laInterlisp.
A:Right.Iveusedsomestulikethatwhere,asyoutypeanexpression,it
immediatelysays,Geez,thatsoneoftheprimitivesIknowabout.Andtheninatotally
textualway,itdoesntletyoumakethosekindoferrorsmuch.
TheissuewithAppInventoristhatweresimultaneouslybeingpulledtomakeitmore
simpleandmorepowerful.Whatyouresayingisagoodexampleofthat.Youreasking,isthere
atextbasedinputtoit?Theothersideofthecoinis,theresawholebunchofpeoplewhosay
thatthesystemwehavenowisjustwaytoocomplicated.
Andthentherearepeoplelikeyou,saying,Gosh,whycantIjustwritetextandimportit?
Orwhycantitdoalloftheseotherthings?AndwhycantitdoeverythingthatIknowthe
Androidphonecando?
S:Right.Perhapstheansweris,youshouldntlistentopeoplelikemebecauseifIreally
wanttoprogram,Iknowhowtodoit.
A:Well,yeah.Theresreallyaquestionofhowyoupositionit.Butitistruethateven
ifweenduplisteningtopeoplelikeyou,ourrsttaskistomakethatthresholdlower.
AppInventorhasasomewhatdierentmotivationthanLogo.Ifyougobacktothemid80s
whenpersonalcomputersrstcameout,therewasjustthisenormoussenseofyoucouldgive
kidspoweroverthisthing.Itwassocool.
Computershadbeenmilliondollarmachinesandthosewerethecheapones.Whenthe
personalcomputerappeared,suddenlykidscouldtakeadvantageofthatpowerandbepartof
itandcontrolitandlearntonegotiatethatworldthatwasjustamazing.Mostofthepeople
whoareineducationalcomputinghavethatmotivation.
Butherestheweirdthing:thesesmartphoneswithlocationawareness,andallofthestu
aboutsocialnetworksthatstherealityofcomputertechnologyforkids,anditsthefutureof
thisstubuttherejustisntthethoughtthatwecanempowerkidsinthisworldofmobilityin
thesamewaythatinthe80swetalkedaboutempoweringthemintheworldofpersonal
computing.
Itsactuallyalilebitscarytome,becausewhatitssayingisthatthenextgenerationgets
introducedtothistechnologypurelyasaconsumerproduct.Therejustisnttheideathatmy
cellphoneissomethingImightwanttoprogram.ThereisnttheideathatthewayIinteract
withmyfriendsissomethingthatIcouldmakeormyfriendscouldmake.Thatswhats
motivatingAppInventor.
WecangivepeopletheideathatthisstucouldbeprogrammableAppInventorisa
demonstrationofthat.ThenitscoolifIactuallydowanttoteachkidsabouttechnologyand
programmingitsjustcoolyoucandoitwithcellphonesbecause,afterall,theseother
computerthingsareboringthingsthatnobodyusesanymore,ancienttechnologieslikeemail.

http://codequarterly.com/2011/halabelson/ 17/21
2/12/2017 CodeQuarterly

S:Itseemsthatmaybethattideisgoingtobehardtostematthispointthatthereare
goingtobeallthesecooldevicesbuttheyrenotgoingtobeprogrammable;theyllbesealed
boxesthatdowhattheydo.
A:Right.Andithasrealimplications.OneoftheplacesthatusedAppInventorinthe
fallisWellesley.WepickedmanyschoolsthatweredoingthisthingcalledCS0.Idontknowif
youknowthatjargonCS0istherstcomputingcourseyougivetopeoplewheretheydont
knowhowtoprogram,andyoudontactuallyexpectthemtogointocomputing.Theylearna
lilebitabouttechnology.ThatswhatCS0is.
Thatstheplacethesedaysincollegeswhereyoucaninnovate,becausenobodyknows
whattheywanttoteach,andtheresatremendoushungerforit.Everybodywantsit.Wepicked
CS0becausewewantedsomethingthatwouldhappeninthefall.Itsnotoftenyoucan
introduceathingandsay,Well,wedontactuallyhavethisthingworkingyet,anditsJune,
andweregoingtogetaprototypeforyoubyAugust,butwedlikeyoutoteachacourseinit.
Thatshardtodo,butyoucandoitinCS0.
Inanycase,WellesleydidaCS0course,areallyniceexample.Itwasalilebitabout
empowermentandalilebitaboutgivingasenseofhowthistechnologycouldworkandwhat
theissueswere.TheexampleIreallylikewas,theybuiltapollingapplication.Theresareally
simpleapponthephone;itgoesoverthenetandgetsthelatestpollandsays,Herearefour
choices.Whichonedoyouwant?
Thentheresabackend,whichisaserversidethatletssomebodysay,Iwanttoopenanew
poll,andIwanttocollecttheresponses,andIwanttoseetheresults.Thisreallyneatthing
happenedatWellesley,becausesuddenlyeverybodyiswalkingaroundcampuswiththeability
totakeinstantpollsonanything.Butinclasstheywouldlookattheotherend.Theysaid,Oh,
heresthepiechartofhowpeoplepickedtheirfavoritefemalevocalistorsomething.Andguess
what:hereshoweverybodyvoted.Andtherewasjustamomentofshockthatgoesthrough
theclass.
S:Youmeanvotingwasnotanonymous.
A:Theideawasthatitwastheirchoiceastheimplementerofthissystemtodecide
whetherornotitwasanonymous.Andeitheranonymoussotheycouldntseeeachothers
responsesoranonymoussothatthepersonrunningthepollcouldntactuallyseehowpeople
voted.Thatsoundsobvioustous,buttothatgroupthatsarevelationbecausetheyhaveno
ideahowthistechnologyworks.
AndthatsalilebitaboutwhatImeanbyempowerment.Iwouldassumethatmostpeople
inthecountryhavenoideathatthepersoncollectingthevotescouldseehowpeoplevoted.So
itcomesdowntoapoliticalthingwhichis,isthisgoingtobeatechnologyofempowerment,or
isitgoingtobeaconsumertechnologywhereyouhavenoideawhatishappeningattheother
end?AppInventorisalilebitmotivatedbythat.
S:Soletssayweendupinthisworldwherecompaniesjustwanttomakemoneyoof
thesethings,andtheydontreallycarewhetherpeoplecantinkerwiththem.Howbadisthat?
Maybeitsapitythatthesecooldevicesthatare,infact,generalpurposecomputersarent
goingtobeanavenueforpeopletotinker,butmaybethepeoplewhoaregoingtotinkerare
justgoingtotinkerwithsomethingelse.Ontheotherhand,maybewevecomeoutofthis
goldenmomentwhenwehadcomputersonourdesksthatwerepreygeneralpurposeand
peoplereallycoulddostu,andthatsending.
A:Ithinkthatexpressesitreallywell.Irememberpeopleinthe80seventalking
aboutitthatway.Iremembersomeonetalkingabouthowtherewasthisgoldenmomentin
musicwhenthepianorstcameout.Suddenlytherewasthisthingthatlotsofpeoplecould
havethatcouldplaybothloudandsoft,anditwasthisenormousthing.Thatwastheperiod
whereMozartaroseandlotsofcomposersarose.Theyweresaying,Well,gee,arentwenow
inaperiodthatssortoflikethatwithrespecttothiscomputing,andwecanseeallthesenew
Mozartsofprogramminghappening?
Ithinkitwouldbealileworsethanunfortunateifwedidntdothataroundthesevery
intrusive,verypersonaldevices.Iguesswecouldgivecivicscoursesinwhatsknownabout
youwhenyouvoteonline.Wereseeingnowtheequivalentofthecivicscourse,goingthrough
withallthesegyrationsaroundFacebookandBuzzandallthesethings.Butatthemomentthe
aitudeis,well,therearethesehorriblethingshappeningwhichnobodyunderstands.
S:Soyouthinkifpeoplehadmoreabilitytotinker,theywouldendupwithamore
naturalunderstandingoftheseissues?
A:Partlyamorenaturalunderstanding.Andtheymightmakeotherthings.Youread
intermsoftheFacebookthingsomeblogsthatsay,Well,therealwaytodothisis,there

http://codequarterly.com/2011/halabelson/ 18/21
2/12/2017 CodeQuarterly

shouldbesomedistributedsystemwhereyoujustputupyourownlileserverwithyourown
informationinthat.Butthenotionoflotsandlotsofpeopledoingthat,orevenunderstanding
whatitmeans,isalreadyjustafantasy.
S:Soyouresayingitwouldbegoodifmorepeopleunderstood,atleastintheory,how
todothat,orunderstoodthattherewasapossibilitytodothesethingsinotherways?
A:Right,basicallyifpeoplehadasenseofwhatsgoingon,andhadasensethat,Im
morethanjustsomebodywhoshelplessinthefaceofpeopledoingthingsIdontunderstand.
S:Istheresomelevelofunderstandingaboutprogrammingandcomputersthatyou
needtounderstandbecausesomuchofourlivesisnowmediatedthroughthemorcontrolled
bythem?
A:Theresawholebuzzwordcalledcomputationalthinking.TheNational
Academypulledtogetheraworkshopofeverybodytalkingaboutit.Ifyoulookinthat,theres
awholegroupsayingexactlywhatyouresaying:youshouldbeteachingaboutcomputingand
computationalthinking,becausethisisaworldoftechnology,andpeopleshouldhavesome
understandingandmasteryoftheirworld.
S:Doyouthinkthatsreasonable?
A:Well,Ithinkitsawonderful,noblegoal.
S:Theresanotherperspectiveonthis,though.Youvetaughtcomputerscienceand
programmingtoMITstudents,whichisalreadynotarandomsampleofthepopulation.And
youmentionedthatinthenewcourse,thefolkswhoreallywanttodocircuitdesignhatethe
veweeksofprogramming.Soitsnetosay,everybodyshouldlearnalilebitabouthowto
programandthiswayofthinkingbecauseitsvaluableandimportant.Butthenmaybethats
justnotrealistic.DonaldKnuthtoldmethathethinkstwopercentofthepopulationhave
brainswiredtherightwaytothinkaboutprogramming.
A:ThatsamelogicwouldleadyoutosaythatonepercentoftheUSspopulationis
wiredtounderstandMandarin.Thereasoningthereisequivalent.
S:Youthinkifwegrewupinaculturewhereprogrammingwassomehowpervasive,
everybodywouldbeabletodoit?
A:Well,thatwastheoriginalideaofLogo.Papertcameupwiththisnotioncalled
Mathland.ThatswhatMathlandwas.Hesaidifyoulookedatschoolsteachinglanguages,
youdguretherewasjustthisinherent,innateabilitytolearnFrench,andonlytwopercentof
thepopulationofAmericanshadit.Sohesaid,WhatLogoistryingtobuildistheequivalent
mathcountry,whereifyougrewupthere,youwouldspeakmath.
S:Right.Butitsnotentirelyclearthatthattheoryeverplayedoutthewayhe
promised.
A:Itsnotentirelyclear.IdontknowifyouknowaveryfamousFrench
mathematiciannamedJeanDieudonn,oneofthetopFrenchmathematiciansinthe60swho
laterongotinterestedineducation.AndIrememberPaperttalkingaboutLogoataMath
Internationalconference.Dieudonn,whowasthebigpoobahthere,basicallysaid,Youre
entirelywrong.Yourgoaliscompletelywrong.Youretryingtodothiseducationandmakeit
intuitive,butinfactallyouredoingisprovidingpeoplewithacrutchsotheyllthinkthey
understanditandtheyreallywont,andtheactualgoalofmatheducationshouldbetoidentify
thetwopercentofthepopulationwhocanreallydoit.Papert,Ithink,justdidntknowhowto
respond.Buttherereallyissometruthinthemiddlethere.

S:Onadierenttopic:yousaidbeforethat,Programmingisaboutcreatinga
languageinwhichtoexpressthethingsyouwanttodo.Whatdoyoumeanbycreatea
language?Becausedierentprogrammersmighthearthatinverydierentways.Somepeople
wouldsayifyoudeneanAPI,youredeninganewlanguage.
A:Well,Idcertainlysaythat.Ithinkitsthewayyouthinkaboutit.Goingbackto
whatswrieninthebook,thewayIthinkaboutitis,youdenesomeprimitiveobjectsyoure
goingtoworkwithandyoutalkabouthowtheyregoingtobecombined.Andthen,ifyoure
lucky,youcantalkabouthowthosearegoingtobeabstracted.
SayIwanttobuildsomesortofwindowingthing.ThenIask,whatarethepiecesandhow
doIputthemtogether?HowdoIputthemonthescreen?Howdotheyinteract?Idcertainly
saythatsdeningalanguage.
S:SoitsnotnecessarytogotherouteofLispers,whosay,Oh,thegreatthingabout
Lispisitseasytodenelanguagesbecauseyoucandenenewsyntax.

http://codequarterly.com/2011/halabelson/ 19/21
2/12/2017 CodeQuarterly

A:Right.Itsnotonlydeningsyntax.ThegreatthingaboutLispisthattheresthis
verystandardplumbingcalledfunctionalcomposition.Thatstheotherpartofalanguageits
notjusttheprimitivesitshowyoucomposethem.AndLispwasparticularlygoodatthat.
S:Thoughinmostlanguagesthesedaysyoucanwritefunctionsandcallthemandso
forth.Isitthehigherorderfunctionsthatreallymakethatpowerful?
A:Well,thehigherorderfunctionshelp.Thenyougettomakethefunctionanobject
thatyoucanpassaround.Butitsalsothatandyoucanthinkofthisasaplusoraminus
thatifIwriteafunctionandIhavetodenewhattypesitworkson,thenitslessgeneralunless
Imverycarefulaboutmakingthingsgeneric.IfIdenedletstakeastupidexampleifI
denemaximumandIhavetoworryaboutwhetherImtakingmaximumofintegersoroating
pointnumbersorsinglesordoublesorsomething,thatbecomesathingthatimpedesmefrom
usinganidealikemaximum.Althoughofcourse,Javahasalreadyxedthatbecausetheyve
madeitgenericatthatlevel.Buttherearemorecomplicatedthingswhereyoucantjustdothat.
S:AndsobasicallythedynamictypingofLispallowsyoutodothat?
A:Right.Dynamictypingletsyoudothat.Youcanargueaboutgenericityand
polymorphicstu.Butwhatyouneedistobeabletolookatthemeansofcombinationitselfas
somethingthatcanbegeneralandnotonlyrestrictedtoaparticulardatatype.
S:Andsotheimportantmeansofcombinationhere,infunctions,isbasicallyAPPLY.
A:Right.ThatswhyLispisgood,becauseLispbasicallyhasthisverygeneralthing
calledfunctionalcomposition,andpeopleconstructthingsoutofthat.Itbecomespreyeasyto
makethisinteroperablestu.
S:Canyougivemeanexampleofalanguagethatinterfereswiththat?
A:MostanythingIdoinJavainterfereswiththat.
S:ButanymethodinJavacancallanyothermethod.
A:IfIknowthetype.Icantwritetheideajusttogiveyouastupidexample
Multiplysomethingbyfourbyaddingittoitselffourtimes.
S:SoJavapeoplewouldsay,Okay,ifthatsreallywhatyouwanttodo,youcando
thatonanytypethatsupportsaddition.Andyoucandeneaninterface,Addable.Maybe
theresalilebitofgorpyouvegottodo,butyoucandoit.
A:Thatsright.Itstheamountofgorpyouvegottodo.ComparethatwithPython,
whereIdenefourtimesxasx + x + x + x.AndifImeantstringstobeconcatenation,it
doesthat.Ofcourse,youcandothatinJavaifyoutryhardenough,butitsnotthemostnatural
thingtodo.
S:Right.ThoughinScheme,itsnotlikethisisfree.Youdhaveto,asyoudointhe
book,putinalayerofdispatchingifyoureallywantittobegeneral.Youhavetohavetagged
typesorsomethingtosaywhatadditionmeans.
A:Right.Idhavetosaywhatadditionmeans.Thatsbecause,well,inScheme
additiondoesntmeananythingforstrings.
S:Whataboutmacros?Schemehasmacrosbuttheydontseemtobeasmuchapartof
thecultureastheyarein,say,CommonLisp.
A:IstoppedbeingpartoftheSchememacroargumentabouttenyearsago.Ialways
thoughtmacrosweretremendouslyimportant.Buttherewereawholebunchofpeoplewho
weremuchmorecarefulabouthowtheyshouldworkthanIwasthingslikerenamingand
howallthatshouldhappen.Ithinktheydidareallygoodjob.Butittookalongtimeforitto
comeout.
S:IguesstheSchemerswerewillingtodowithoutastandarduntiltheycouldgure
outTheRightWaytodoit.
A:Thatsright.TherewereargumentsintheSchemecommunitythatsaid,Well,the
pointofSchemeistogureouttherightwaytodoit,whereasthepointofCommonLispwas,
youputanyoldjunkintoit.Therearepeoplewhoheldthatposition.Butyouwanttodo
syntacticabstractionmacrosletyoudosyntacticabstraction.

S:Doyoustillenjoyprogrammingasmuchasyouusedto?
A:Oh,Imhavingablast.ThatswhatImdoinghereatGoogle.
S:Youmeanitsmoreprogrammingthanyouwouldnormallygettodo?
A:Oh,waymore.Ivedecidedthatfromnowon,Ishouldbemeasuringthequalityof
mylifebytheratiooftheamountoftimespentprogrammingtotheamountoftimesiingin
meetings.

http://codequarterly.com/2011/halabelson/ 20/21
2/12/2017 CodeQuarterly

S:Andwheredoesteachingtintothat?
A:Teachingiskindoflikeprogramming,butImnotdoinganyteachingatGoogleso
Ihaventthoughtaboutthat.ButIhavewildlyreducedmytimesiinginmeetings.
S:Anddoyoundatallthatprogrammingisayoungpersonsgame?Areyouabeer
programmernowthanyouusedtobe?Thesame?Orworse?
A:IthinkImbeer.UntilIcamehere,IdneverwrienanylargeJavaprograms.One
ofthethingsImlearninghereistheexperienceofworkingontheseenormousprograms.Ijust
neverexperiencedthatbefore.Previouslyalargeprogramtomewasahundredpagesor
something.Nowthatsatiny,lilething.
Andalotofthat,ofcourse,hastodowiththetoolsandtheorganization.Ineveractually
usedthisstubefore.Itspreyimpressive.
S:DoyouthinkyoullgobackandteachMITstudentsdierentlyasaconsequence?
A:Idontknow.Idontknow,becausetherealityiswedonthavethosetoolsfor
students,certainlynotinthecoursethatImdoing.Maybe.Idontknow.
S:HavingjustspentayearatGoogle,doyoufeelthesoftwareindustryisahorrible
messorabrilliantengineofinnovation?Orsomethinginthemiddle?Sometimesitfeelslike,
wow,wejustrunaroundreinventingthewheel,anddoingthingsinhorrible,brokenways,and
thatsterrible,weshouldbedoingmuchbeer.Butontheotherhand,theresallthisamazing
stuintheworldtoday.
A:Yeah,well,thatsit.Weremakingallthishairystu.OneofthethingsthatIve
startedtounderstandintheselanguagesistheincredibleimportanceofthedevelopment
environment.IcouldntevenbegintoprograminJavawithoutEclipse.Imean,itsjustsuchan
enormouslycomplexthing,andyouareusingimportsandlibrariesandinterfacessomuch.I
wouldntknowhowtomanageitwithoutanIDE.ThatsthethingthatIdidntappreciate
enoughbeforecomingtoaplacelikeGoogle.
Idontquiteknowwhattosay.Everyonewantstodosomethinggreater,andgreater,and
greater,butweremakingthisstuthatseemstowork.Itmightbethatallweredoingis
geingclosertotheedgeofthecliandmakingtheriskoffailuremoreaswebuildonthese
things.
S:Doyouhaveanypredictionsorhopesforthefutureofoureld?
A:Imreallyhunguponthisconvergenceofcomputingandinformationscience.I
thinkyoureallyneedpeoplewhounderstandwhatkindsofprogramsareworthwhilemaking.
Cornellhasthisnicephrasewheretheytalkaboutprogramminginsidetheboxand
programmingoutsidethebox.Andinsidetheboxiswhereyoufocusonhowcompilerswork
andeverythinghowthestuisputtogethertheclassicalstu.Andprogrammingoutside
theboxis,howdoyoumakethisstu,andwhatsitsimpactonthepeopleusingit,andwhats
itsimpactontheworld.Myownhopeforcomputerscienceisthatwepayaentiontowhats
goingonoutsidethebox.Ithinkthatswhatneedstobereallypartoftheeducationofpeople
doingjustanykindofcomputing.

1TherstpartofVolume4wasreleasedin2011.Editor

2ThenameoftheBostonsubwaysystem

Copyright2011.Allrightsreserved.

http://codequarterly.com/2011/halabelson/ 21/21

You might also like