Professional Documents
Culture Documents
Code Quarterly
Code Quarterly
Ive pulled the plug on Code Quarterly. To read about why, please see this blog post. Thanks for
your interest. Peter Seibel
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