












































Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Community
Ask the community for help and clear up your study doubts
Discover the best universities in your country according to Docsity users
Free resources
Download our free guides on studying techniques, anxiety management strategies, and thesis advice from Docsity tutors
A guest lecture by Alfred V. Aho at Columbia University on the PLT course. The lecture covers course objectives, language issues, compiler issues, and team issues. It also discusses the importance of software in today's world, computational thinking, programming languages, and evolutionary forces driving PL changes. The document could be useful as study notes, lecture notes, summary, or university essay for students taking PLT courses or interested in software development.
Typology: Lecture notes
1 / 52
This page cannot be seen from the preview
Don't miss anything!
Outline
Plus Learning Three Vital Skills for Life
Project management
Teamwork
Communication both oral and written
The Importance of Software in Today’s World
How much software does the world use today?
Guesstimate: around one trillion lines of source code
What is the sunk cost of the legacy software base?
$100 per line of finished, tested source code
How many bugs are there in the legacy base?
10 to 10,000 defects per million lines of source code
Why Take PLT?
To discover the beautiful marriage of
theory and practice in compiler design
“Theory and practice are not mutually exclusive;
they are intimately connected. They live together
and support each other.” [D. E. Knuth, 1989]
Theory in practice: regular expression pattern matching in
Perl, Python, Ruby vs. AWK
Running time to check whether a****? nan^ matches an
regular expression and text size n
What is Computational Thinking?
The thought processes involved
in formulating a problem and
expressing its solution in a way
that a computer − human or
machine − can effectively carry it
out
A. V. Aho Computation and Computational Thinking The Computer Journal 55:12, pp. 832-835, 2012
Jeannette M. Wing Joe Traub 80th^ Birthday Symposium Columbia University, November 9, 2012
What is a Programming Language?
A programming language is a notation for describing computations
to people and to machines.
Target Languages and Machines
Another programming language
CISCs
RISCs
Parallel machines
Multicores
GPUs
Quantum computers
How Many PLs are There Today?
Guesstimate: thousands
The website http://www.99-bottles-of-beer.net has programs in over 1,500 different programming languages and variations to print
the lyrics to the song “99 Bottles of Beer.”
“ 99 Bottles of Beer ” in AWK
for(i = 99; i >= 0; i--) { print ubottle(i), "on the wall,", lbottle(i) "." print action(i), lbottle(inext(i)), "on the wall." print } } function ubottle(n) { return sprintf("%s bottle%s of beer", n? n : "No more", n - 1? "s" : "") } function lbottle(n) { return sprintf("%s bottle%s of beer", n? n : "no more", n - 1? "s" : "") } function action(n) { return sprintf("%s", n? "Take one down and pass it around," :
"Go to the store and buy some more,") } function inext(n) { return n? n - 1 : 99 }
“ 99 Bottles of Beer ” in Perl
' |'!') .('
' |',') .'"'. '\$'')| '/').').' .'\\"'.+( '{'^'['). ('
'|'"') .('`'|'/''|',').( '
'|('%')). '\".\"'.( '['^('(')).'|'/').( '
'|"&").('|"\"").( '
'|"%").( '`'|"%").( '['^(')')). '\").\"'.'|"\/").( '
'|".").( '{'^"[").( '['^"/").( '`'|"(").('|"\%").( '{'^"\[").( '['^"\,").( '
'|"!").( ''|"\,").( '
'|(',')).'|"\)").( '
'|".").( '['^('/')).'|"\+").( '
'|"%").( '{'^"[").( ''|"\/").( '
'|".").( '`'|"%").('|"\$").( '
'|"/").( '['^",").( '`'|('.')). ','.(('{')^'|"\(").( '
'|")").( '`'|",").(tiobe.com
[www.tiobe.com, August 2014 Data from search engines]
PyPL Index
[PyPL Index, August 2014 Tutorial searches
What are Today’s Most Popular PLs?
RedMonk
[redmonk.com, June 2014 Data from GitHub]
StackOverflow
[langpop.corger.nl, August 2014 Data from GitHub]
Yukihiro Matsumoto in Japan in the mid 1990s
the web, scripting, reflective
functional, object oriented, and imperative
Case Study 1: Ruby