![Page 1: Big Ideas for CS 251 Theory of Programming Languages …cs251/f16/slides/intro_with_answers_1up.pdf · Pragmatics: Metaprogramming 1-22 PLs are implemented in terms of metaprogams](https://reader036.vdocuments.us/reader036/viewer/2022071219/60571f5d9f24eb63c80bd11b/html5/thumbnails/1.jpg)
Big Ideas for CS 251Theory of Programming Languages
Principles of Programming Languages
CS251ProgrammingLanguagesFall2016,LynTurbakDepartmentofComputerScienceWellesleyCollege
![Page 2: Big Ideas for CS 251 Theory of Programming Languages …cs251/f16/slides/intro_with_answers_1up.pdf · Pragmatics: Metaprogramming 1-22 PLs are implemented in terms of metaprogams](https://reader036.vdocuments.us/reader036/viewer/2022071219/60571f5d9f24eb63c80bd11b/html5/thumbnails/2.jpg)
Discussion: Programming Languages
• What PLs have you used? • Which PLs/PL features do you like/dislike. Why?
Your experience:
• What is a PL? • Why are new PLs created?
– What are they used for? – Why are there so many?
• Why are certain PLs popular? • What goes into the design of a PL?
More generally:
1-2
![Page 3: Big Ideas for CS 251 Theory of Programming Languages …cs251/f16/slides/intro_with_answers_1up.pdf · Pragmatics: Metaprogramming 1-22 PLs are implemented in terms of metaprogams](https://reader036.vdocuments.us/reader036/viewer/2022071219/60571f5d9f24eb63c80bd11b/html5/thumbnails/3.jpg)
PLismypassion!• First PL project in 1982 as intern
at Xerox PARC
• Created visual PL for 1986 MIT masters thesis
• 1994 MIT PhD on PL feature (synchronized lazy aggregates)
• 1996 – 2006: worked on types as member of Church project
• 1988 – 2008: Design Concepts in Programming Languages
• 2011 – current: lead TinkerBlocks research team at Wellesley
• 2012 – current: member of App Inventor development team
1-3
![Page 4: Big Ideas for CS 251 Theory of Programming Languages …cs251/f16/slides/intro_with_answers_1up.pdf · Pragmatics: Metaprogramming 1-22 PLs are implemented in terms of metaprogams](https://reader036.vdocuments.us/reader036/viewer/2022071219/60571f5d9f24eb63c80bd11b/html5/thumbnails/4.jpg)
GeneralPurposePLs
Python Fortran
C/C++
Java
RacketML
Haskell
CommonLisp
Perl
Ruby
1-4
JavaScript
![Page 5: Big Ideas for CS 251 Theory of Programming Languages …cs251/f16/slides/intro_with_answers_1up.pdf · Pragmatics: Metaprogramming 1-22 PLs are implemented in terms of metaprogams](https://reader036.vdocuments.us/reader036/viewer/2022071219/60571f5d9f24eb63c80bd11b/html5/thumbnails/5.jpg)
DomainSpecificPLs
IDL
CSS
PostScript�
HTML
OpenGL
LaTeX
Excel
Matlab R
Swift 1-5
![Page 6: Big Ideas for CS 251 Theory of Programming Languages …cs251/f16/slides/intro_with_answers_1up.pdf · Pragmatics: Metaprogramming 1-22 PLs are implemented in terms of metaprogams](https://reader036.vdocuments.us/reader036/viewer/2022071219/60571f5d9f24eb63c80bd11b/html5/thumbnails/6.jpg)
ProgrammingLanguages:MechanicalView
Acomputerisamachine.OuraimistomakethemachineperformsomespecifiedacEons.WithsomemachineswemightexpressourintenEonsbydepressingkeys,pushingbuIons,rotaEngknobs,etc.Foracomputer,weconstructasequenceofinstrucEons(thisisa``program'')andpresentthissequencetothemachine.–LaurenceAtkinson,PascalProgramming 1-6
![Page 7: Big Ideas for CS 251 Theory of Programming Languages …cs251/f16/slides/intro_with_answers_1up.pdf · Pragmatics: Metaprogramming 1-22 PLs are implemented in terms of metaprogams](https://reader036.vdocuments.us/reader036/viewer/2022071219/60571f5d9f24eb63c80bd11b/html5/thumbnails/7.jpg)
ProgrammingLanguages:LinguisEcView
Acomputerlanguage…isanovelformalmediumforexpressingideasaboutmethodology,notjustawaytogetacomputertoperformoperaEons.ProgramsarewriIenforpeopletoread,andonlyincidentallyformachinestoexecute.–HaroldAbelsonandGeraldJ.Sussman
1-7
![Page 8: Big Ideas for CS 251 Theory of Programming Languages …cs251/f16/slides/intro_with_answers_1up.pdf · Pragmatics: Metaprogramming 1-22 PLs are implemented in terms of metaprogams](https://reader036.vdocuments.us/reader036/viewer/2022071219/60571f5d9f24eb63c80bd11b/html5/thumbnails/8.jpg)
“Religious”ViewsTheuseofCOBOLcripplesthemind;itsteachingshould,therefore,beregardedasacriminaloffense.–EdsgerDijkstra
ItispracEcallyimpossibletoteachgoodprogrammingtostudentsthathavehadapriorexposuretoBASIC:aspotenEalprogrammerstheyarementallymuElatedbeyondhopeofregeneraEon.–EdsgerDijstra
You'reintroducingyourstudentstoprogramminginC?Youmightaswellgivethemafrontallobotomy!–Acolleagueofmine
ALISPprogrammerknowsthevalueofeverything,butthecostofnothing.-AlanPerlis
Ihavenevermetastudentwhocuttheirteethinanyoftheselanguagesanddidnotcomeawayprofoundlydamagedandunabletocope.ImeanthisreadstomeverysimilarlytoteachingsomeonetobeacarpenterbystarEngthemoffwithplasEctoytoolsandtellingthemtogosculptsandonthebeach.-AlfredThompson,onblockslanguages
Alanguagethatdoesn'taffectthewayyouthinkaboutprogramming,isnotworthknowing.-AlanPerlis 1-8
![Page 9: Big Ideas for CS 251 Theory of Programming Languages …cs251/f16/slides/intro_with_answers_1up.pdf · Pragmatics: Metaprogramming 1-22 PLs are implemented in terms of metaprogams](https://reader036.vdocuments.us/reader036/viewer/2022071219/60571f5d9f24eb63c80bd11b/html5/thumbnails/9.jpg)
ProgrammingLanguageEssenEals
PrimiEves
MeansofCombinaEon
MeansofAbstracEon
1-9
Thinkofthelanguagesyouknow.WhatmeansofabstracEondotheyhave?
![Page 10: Big Ideas for CS 251 Theory of Programming Languages …cs251/f16/slides/intro_with_answers_1up.pdf · Pragmatics: Metaprogramming 1-22 PLs are implemented in terms of metaprogams](https://reader036.vdocuments.us/reader036/viewer/2022071219/60571f5d9f24eb63c80bd11b/html5/thumbnails/10.jpg)
PL Parts Syntax: form of a PL
• What a P in a given L look like as symbols? • Concrete syntax vs abstract syntax trees (ASTs)
Semantics: meaning of a PL • Static Semantics: What can we tell about P before running it?
– Scope rules: to which declaration does a variable reference refer?
– Type rules: which programs are well-typed (and therefore legal)?
• Dynamic Semantics: What is the behavior of P? What actions does it perform? What values does it produce? – Evaluation rules: what is the result or effect of evaluating each language
fragment and how are these composed?
Pragmatics: implementation of a PL (and PL environment)
1-10
• How can we evaluate programs in the language on a computer? • How can we optimize the performance of program execution?
![Page 11: Big Ideas for CS 251 Theory of Programming Languages …cs251/f16/slides/intro_with_answers_1up.pdf · Pragmatics: Metaprogramming 1-22 PLs are implemented in terms of metaprogams](https://reader036.vdocuments.us/reader036/viewer/2022071219/60571f5d9f24eb63c80bd11b/html5/thumbnails/11.jpg)
Syntax (Form) vs. Semantics (Meaning)in Natural Language
Furiously sleep ideas green colorless.
Colorless green ideas sleep furiously.
Little white rabbits sleep soundly.
1-11
![Page 12: Big Ideas for CS 251 Theory of Programming Languages …cs251/f16/slides/intro_with_answers_1up.pdf · Pragmatics: Metaprogramming 1-22 PLs are implemented in terms of metaprogams](https://reader036.vdocuments.us/reader036/viewer/2022071219/60571f5d9f24eb63c80bd11b/html5/thumbnails/12.jpg)
ConcreteSyntax:AbsoluteValueFuncEonLogo: to abs :n ifelse :n < 0 [output (0 - :n)] [output :n] end
Javascript: function abs (n) {if (n < 0) return -n; else return n;}
Java: public static int abs (int n) {if (n < 0) return -n; else return n;}
Python: App Inventor: def abs(n): if n < 0: return -n else: return n
Scheme: (define abs (lambda (n) (if (< n 0) (- n) n)))
PostScript: /abs {dup 0 lt {0 swap sub} if} def
1-12
![Page 13: Big Ideas for CS 251 Theory of Programming Languages …cs251/f16/slides/intro_with_answers_1up.pdf · Pragmatics: Metaprogramming 1-22 PLs are implemented in terms of metaprogams](https://reader036.vdocuments.us/reader036/viewer/2022071219/60571f5d9f24eb63c80bd11b/html5/thumbnails/13.jpg)
AbstractSyntaxTree(AST):AbsoluteValueFuncEon
varref
return
n
return
intlit
0
relaEonalOperaEon
varref
n
condiEonalStatement
funcEonDeclaraEon
absn
testthen
bodyparamsfuncDo
nName
rand1
name
name
1-13
arithmeEcOperaEon
value
subtract
varref
nname
value
intlit
0
lessThan
valuerand1
ThisASTabstractsovertheconcretesyntaxfortheLogo,JavaScript,andPythondefiniEons.TheotherdefiniEonswouldhavedifferentASTs.
![Page 14: Big Ideas for CS 251 Theory of Programming Languages …cs251/f16/slides/intro_with_answers_1up.pdf · Pragmatics: Metaprogramming 1-22 PLs are implemented in terms of metaprogams](https://reader036.vdocuments.us/reader036/viewer/2022071219/60571f5d9f24eb63c80bd11b/html5/thumbnails/14.jpg)
SemanEcsExample1
1-14
Whatisthemeaningofthefollowingexpression?
(1 + 11) * 10
Somepossibleanswers:• 120(regularintepretaEonofnumbers,operators)• 1000(binarynumbers,regularoperators)• 0(“+”means“minus”,“*”means“plus”)• 13(numberofcharactersinstring)• 5(numberofnodesinAST)• 3(numberofleavesinAST)
![Page 15: Big Ideas for CS 251 Theory of Programming Languages …cs251/f16/slides/intro_with_answers_1up.pdf · Pragmatics: Metaprogramming 1-22 PLs are implemented in terms of metaprogams](https://reader036.vdocuments.us/reader036/viewer/2022071219/60571f5d9f24eb63c80bd11b/html5/thumbnails/15.jpg)
SemanEcsExample2
1-15
Whatisprintedbythefollowingprogram?
a = 1;
b = a + 20;
print(b);
a = 300
print(b);
count = 0;
fun inc() { count = count + 1; return count; }
fun dbl(ignore, x) { return x + x; }
print(dbl(inc(), inc())
21214
21212
213203
213202
Herearesomepossibleanswers.WhatexecuEonmodelsgiverisetotheseanswers?
![Page 16: Big Ideas for CS 251 Theory of Programming Languages …cs251/f16/slides/intro_with_answers_1up.pdf · Pragmatics: Metaprogramming 1-22 PLs are implemented in terms of metaprogams](https://reader036.vdocuments.us/reader036/viewer/2022071219/60571f5d9f24eb63c80bd11b/html5/thumbnails/16.jpg)
SemanEcsExample3
1-16
Supposeaisanarray(orlist)containingthethreeintegervalues10,20,and30inthefollowinglanguages.Whatisthemeaningofthefollowingexpressions/statementsinvariouslanguages(thesyntaxmightdifferfromwhat’sshown).
a[1] a[3] a[2] = "foo" a[3] = 17
Java
C
Python
JavaScript
Pascal
AppInventor
![Page 17: Big Ideas for CS 251 Theory of Programming Languages …cs251/f16/slides/intro_with_answers_1up.pdf · Pragmatics: Metaprogramming 1-22 PLs are implemented in terms of metaprogams](https://reader036.vdocuments.us/reader036/viewer/2022071219/60571f5d9f24eb63c80bd11b/html5/thumbnails/17.jpg)
SemanEcsExample3(Answers)
1-17
Supposeaisanarray(orlist)containingthethreeintegervalues10,20,and30inthefollowinglanguages.Whatisthemeaningofthefollowingexpressions/statementsinvariouslanguages(thesyntaxmightdifferfromwhat’sshown).
a[1] a[3] a[2] = "foo" a[3] = 17
Java 20 dynamicindexoutofboundserror
staEctypeerror dynamicindexoutofboundserror
C 20 returnsvalueinmemoryslotalera[2]
staEctypeerror
Stores17inmemoryslotalera[2]
Python 20 dynamiclistindexoutofrangeerror
stores“foo”inthirdslotofa
dynamiclistindexoutofrangeerror
JavaScript 20 “undefined”value stores“foo”inthirdslotofa
Stores17ina[3]
Pascal 20 staEcindexoutofboundserror
staEctypeerror
staEcindexoutofboundserror
AppInventor 10 30 stores“foo”insecondslotofa
Stores17inthirdslotofa
![Page 18: Big Ideas for CS 251 Theory of Programming Languages …cs251/f16/slides/intro_with_answers_1up.pdf · Pragmatics: Metaprogramming 1-22 PLs are implemented in terms of metaprogams](https://reader036.vdocuments.us/reader036/viewer/2022071219/60571f5d9f24eb63c80bd11b/html5/thumbnails/18.jpg)
Pragmatics: Raffle App In App Inventor
DesignerWindow BlocksEditor
18
Toentertheraffle,textmenowwithanemptymessage:339-225-0287
hIp://ai2.appinventor.mit.edu
HowhardisthistodoinmoretradiEonaldevelopmentenvironmentsforAndroid/iOS?
![Page 19: Big Ideas for CS 251 Theory of Programming Languages …cs251/f16/slides/intro_with_answers_1up.pdf · Pragmatics: Metaprogramming 1-22 PLs are implemented in terms of metaprogams](https://reader036.vdocuments.us/reader036/viewer/2022071219/60571f5d9f24eb63c80bd11b/html5/thumbnails/19.jpg)
PL Dimensions
1-19
PLsdifferbasedondecisionslanguagedesignersmakeinmanydimensions.E.g.:
• First-classvalues:whatvaluescanbenamed,passedasargumentstofuncEons,returnedasvaluesfromfuncEons,storedindatastructures.Whichofthesearefirst-classinyourfavoritePL:arrays,funcEons,variables?
• Naming:Dovariables/parametersnameexpressions,thevaluesresulEngfromevaluaEngexpressions,ormutableslotsholdingthevaluesfromevaluaEngexpressions?Howarenamesdeclaredandreferenced?Whatdeterminestheirscope?
• State:Whatismutableandimmutable;i.e.,whatenEEesinthelanguage(variables,datastructures,objects)canchangeoverEme.
• Control:Whatconstructsarethereforcontrolflowinthelanguage,e.g.condiEonals,loops,non-localexits,excepEonhandling,conEnuaEons?
• Data:Whatkindsofdatastructuresaresupportedinthelanguage,includingproducts(arrays,tuples,records,dicEonaries),sums(opEons,oneofs,variants),sum-of-products,andobjects.
• Types:AreprogramsstaEcallyordynamicallytyped?Whattypesareexpressible?
![Page 20: Big Ideas for CS 251 Theory of Programming Languages …cs251/f16/slides/intro_with_answers_1up.pdf · Pragmatics: Metaprogramming 1-22 PLs are implemented in terms of metaprogams](https://reader036.vdocuments.us/reader036/viewer/2022071219/60571f5d9f24eb63c80bd11b/html5/thumbnails/20.jpg)
ProgrammingParadigms
1-20
• Impera:ve(e.g.C,Python):ComputaEonisstep-by-stepexecuEononastatefulabstractmachineinvolvingmemoryslotsandmutabledatastructures.
• Func:onal,func:on-oriented(e.gRacket,ML,Haskell):ComputaEonisexpressedbycomposingfuncEonsthatmanipulateimmutabledata.
• Object-oriented(e.g.Simula,Smalltalk,Java):ComputaEonisexpressedintermsofstatefulobjectsthatcommunicatebypassingmessagestooneanother.
• Logic-oriented(e.g.Prolog):ComputaEonisexpressedintermsofdeclaraEverelaEonships.
Note:InpracEce,mostPLsinvolvemulEpleparadigms.E.g.
• PythonsupportsfuncEonalfeatures(map,filter,listcomprehensions)andobjects
• RacketandMLhaveimperaEvefeatures.
![Page 21: Big Ideas for CS 251 Theory of Programming Languages …cs251/f16/slides/intro_with_answers_1up.pdf · Pragmatics: Metaprogramming 1-22 PLs are implemented in terms of metaprogams](https://reader036.vdocuments.us/reader036/viewer/2022071219/60571f5d9f24eb63c80bd11b/html5/thumbnails/21.jpg)
quicksort :: Ord a => [a] -> [a]quicksort [] = []quicksort (p:xs) =
(quicksort lesser) ++ [p] ++ (quicksort greater) where lesser = filter (< p) xs greater = filter (>= p) xs
1-21
ParadigmExample:Quicksortvoid qsort(int a[], int lo, int hi) { int h, l, p, t;
if (lo < hi) {
l = lo; h = hi; p = a[hi];
do { while ((l < h) && (a[l] <= p)) l = l+1;
while ((h > l) && (a[h] >= p)) h = h-1; if (l < h) {
t = a[l]; a[l] = a[h]; a[h] = t; }
} while (l < h);
a[hi] = a[l]; a[l] = p;
qsort( a, lo, l-1 ); qsort( a, l+1, hi );
}}
ImperaEveStyle(inC;Javawouldbesimilar)
FuncEonalStyle(inHaskell)
![Page 22: Big Ideas for CS 251 Theory of Programming Languages …cs251/f16/slides/intro_with_answers_1up.pdf · Pragmatics: Metaprogramming 1-22 PLs are implemented in terms of metaprogams](https://reader036.vdocuments.us/reader036/viewer/2022071219/60571f5d9f24eb63c80bd11b/html5/thumbnails/22.jpg)
Pragmatics: Metaprogramming
1-22
PLsareimplementedintermsofmetaprogams=programsthatmanipulateotherprograms.
Thismaysoundweird,butprogramsarejusttrees(ASTs),soametaprogramisjustaprogramthatmanipulatestrees(thinkamorecomplexversionofCS230binarytreeprograms).
ImplementaEonstrategies:• Interpreta:on:interpretaprogramPinasourcelanguageSintermsofan
implementaEonlanguageI.
• Transla:on(compila:on):translateaprogramPinasourcelanguageStoaprogramP’inatargetlanguageTusingatranslatorwriIeninimplementaEonlanguageI.
• Embedding:expressprogramPinsourcelanguageSintermsofdatastructuresandfuncEonsinimplementaEonlanguageI.
![Page 23: Big Ideas for CS 251 Theory of Programming Languages …cs251/f16/slides/intro_with_answers_1up.pdf · Pragmatics: Metaprogramming 1-22 PLs are implemented in terms of metaprogams](https://reader036.vdocuments.us/reader036/viewer/2022071219/60571f5d9f24eb63c80bd11b/html5/thumbnails/23.jpg)
Metaprogramming:InterpretaEon
InterpreterforlanguageLonmachineM
MachineMPrograminlanguageL
1-23
![Page 24: Big Ideas for CS 251 Theory of Programming Languages …cs251/f16/slides/intro_with_answers_1up.pdf · Pragmatics: Metaprogramming 1-22 PLs are implemented in terms of metaprogams](https://reader036.vdocuments.us/reader036/viewer/2022071219/60571f5d9f24eb63c80bd11b/html5/thumbnails/24.jpg)
Metaprogramming:TranslaEon
InterpreterforlanguageBonmachineM
MachineM
PrograminlanguageA AtoBtranslator
PrograminlanguageB
1-24
![Page 25: Big Ideas for CS 251 Theory of Programming Languages …cs251/f16/slides/intro_with_answers_1up.pdf · Pragmatics: Metaprogramming 1-22 PLs are implemented in terms of metaprogams](https://reader036.vdocuments.us/reader036/viewer/2022071219/60571f5d9f24eb63c80bd11b/html5/thumbnails/25.jpg)
Metaprogramming:Embedding
InterpreterforlanguageBonmachineM
MachineMPrograminlanguageAembeddedinlanguageB
1-25
![Page 26: Big Ideas for CS 251 Theory of Programming Languages …cs251/f16/slides/intro_with_answers_1up.pdf · Pragmatics: Metaprogramming 1-22 PLs are implemented in terms of metaprogams](https://reader036.vdocuments.us/reader036/viewer/2022071219/60571f5d9f24eb63c80bd11b/html5/thumbnails/26.jpg)
Metaprogramming:BootstrappingPuzzles
1-26
HowcanwewriteaJava-to-x86compilerinJava?
We’lllearnhowtounderstandsuchpuzzles!
![Page 27: Big Ideas for CS 251 Theory of Programming Languages …cs251/f16/slides/intro_with_answers_1up.pdf · Pragmatics: Metaprogramming 1-22 PLs are implemented in terms of metaprogams](https://reader036.vdocuments.us/reader036/viewer/2022071219/60571f5d9f24eb63c80bd11b/html5/thumbnails/27.jpg)
Metaprogramming:ProgrammingLanguageLayers
kernel
syntacEcsugar
primiEvevalues/datatypes
systemlibraries
userlibraries
1-27
![Page 28: Big Ideas for CS 251 Theory of Programming Languages …cs251/f16/slides/intro_with_answers_1up.pdf · Pragmatics: Metaprogramming 1-22 PLs are implemented in terms of metaprogams](https://reader036.vdocuments.us/reader036/viewer/2022071219/60571f5d9f24eb63c80bd11b/html5/thumbnails/28.jpg)
Why?Who?When?Where?DesignandApplicaEon
• Historical context • Motivating applications
– Lisp: symbolic computation, logic, AI, experimental programming – ML: theorem-proving, case analysis, type system – C: Unix operating system – Simula: simulation of physical phenomena, operations, objects – Smalltalk: communicating objects, user-programmer,
pervasiveness • Design goals, implementation constraints
– performance, productivity, reliability, modularity, abstraction, extensibility, strong guarantees, …
• Well-suited to what sorts of problems? 1-28
![Page 29: Big Ideas for CS 251 Theory of Programming Languages …cs251/f16/slides/intro_with_answers_1up.pdf · Pragmatics: Metaprogramming 1-22 PLs are implemented in terms of metaprogams](https://reader036.vdocuments.us/reader036/viewer/2022071219/60571f5d9f24eb63c80bd11b/html5/thumbnails/29.jpg)
WhystudyPL?• CrossroadsofCS
• Approachproblemsasalanguagedesigner.
– "Agoodprogramminglanguageisaconceptualuniverseforthinkingaboutprogramming"--AlanPerlis
– Evaluate,compare,andchooselanguages
– BecomebeIeratlearningnewlanguages
– becomeabeIerproblem-solver
– viewAPIdesignaslanguagedesign• Ask:
– WhyarePLsarethewaytheyare?
– Howcouldthey(orcouldn'tthey)bebeIer?– Whatisthecost-conveniencetrade-offforfeatureX?
1-29
![Page 30: Big Ideas for CS 251 Theory of Programming Languages …cs251/f16/slides/intro_with_answers_1up.pdf · Pragmatics: Metaprogramming 1-22 PLs are implemented in terms of metaprogams](https://reader036.vdocuments.us/reader036/viewer/2022071219/60571f5d9f24eb63c80bd11b/html5/thumbnails/30.jpg)
Administrivia
• Schedule, psets, quizzes, lateness policy, etc.:see http://cs.wellesley.edu/~cs251/
• PS1 is available; due next Friday • office hours poll • visit me in office hours next week! • Install Dr. Racket for next time
1-30