SlideShare a Scribd company logo
CS 415: Programming
Languages
Chapter 1
Aaron Bloomfield
Fall 2005
The first computers
Scales – computed relative weight of two items
 Computed if the first item’s weight was less than, equal to, or
greater than the second item’s weight
Abacus – performed mathematical computations
 Primarily thought of as Chinese, but also Japanese, Mayan,
Russian, and Roman versions
 Can do square roots and cube roots
Stonehenge
Computer Size
ENIAC then…
ENIAC today…
With computers (small) size does matter!
Why study programming
languages?
Become a better software engineer
 Understand how to use language features
 Appreciate implementation issues
Better background for language selection
 Familiar with range of languages
 Understand issues / advantages / disadvantages
Better able to learn languages
 You might need to know a lot
Why study programming
languages?
Better understanding of implementation issues
 How is “this feature” implemented?
 Why does “this part” run so slowly?
Better able to design languages
 Those who ignore history are bound to repeat it…
Why are there so many
programming languages?
There are thousands!
Evolution
 Structured languages -> OO programming
Special purposes
 Lisp for symbols; Snobol for strings; C for systems;
Prolog for relationships
Personal preference
 Programmers have their own personal tastes
Expressive power
 Some features allow you to express your ideas better
Why are there so many
programming languages?
Easy to use
 Especially for teaching / learning tasks
Ease of implementation
 Easy to write a compiler / interpreter for
Good compilers
 Fortran in the 50’s and 60’s
Economics, patronage
 Cobol and Ada, for example
Programming domains
Scientific applications
 Using the computer as a large calculator
 Fortran and friends, some Algol, APL
 Using the computer for symbol manipulation
 Mathematica
Business applications
 Data processing and business procedures
 Cobol, some PL/1, RPG, spreadsheets
Systems programming
 Building operating systems and utilities
 C, PL/S, ESPOL, Bliss, some Algol and derivitaves
Programming domains
Parallel programming
 Parallel and distributed systems
 Ada, CSP, Modula, DP, Mentat/Legion
Artificial intelligence
 Uses symbolic rather than numeric computations
 Lists as main data structure
 Flexibility (code = data)
 Lisp in 1959, Prolog in the 1970s
Scripting languages
 A list of commands to be executed
 UNIX shell programming, awk, tcl, Perl
Programming domains
Education
 Languages designed to facilitate teaching
 Pascal, BASIC, Logo
Special purpose
 Other than the above…
 Simulation
 Specialized equipment control
 String processing
 Visual languages
Programming paradigms
You have already seen assembly language
We will study five language paradigms:
 Top-down (Algol 60 and Fortran)
 Functional (Scheme and/or OCaml)
 Logic (Prolog)
 Object oriented (Smalltalk)
 Aspect oriented (AspectJ)
Programming language history
Pseudocodes (195X) – Many
Fortran (195X) – IBM, Backus
Lisp (196x) – McCarthy
Algol (1958) – Committee (led to Pascal, Ada)
Cobol (196X) – Hopper
Functional programming – FP, Scheme, Haskell, ML
Logic programming – Prolog
Object oriented programming – Smalltalk, C++, Python,
Java
Aspect oriented programming – AspectJ, AspectC++
Parallel / non-deterministic programming
Compilation vs. Translation
Translation: does a ‘mechanical’ translation of the source
code
 No deep analysis of the syntax/semantics of the code
Compilation: does a thorough understanding and
translation of the code
A compiler/translator changes a program from one
language into another
 C compiler: from C into assembly
An assembler then translates it into machine language
 Java compiler: from Java code to Java bytecode
The Java interpreter then runs the bytecode
Compilation stages
Scanner
Parser
Semantic analysis
Intermediate code generation
Machine-independent code improvement (optional)
Target code generation
Machine-specific code improvement (optional)
For many compilers, the result is assembly
 Which then has to be run through an assembler
These stages are machine-independent!
 The generate “intermediate code”
Compilation: Scanner
Recognizes the ‘tokens’ of a program
 Example tokens: ( 75 main int { return ; foo
Lexical errors are detected here
 More on this in a future lecture
Compilation: Parser
Puts the tokens together into a pattern
 void main ( int argc , char ** argv ) {
 This line has 11 tokens
 It is the beginning of a method
Syntatic errors are detected here
 When the tokens are not in the correct order:
 int int foo ;
 This line has 4 tokens
 After the type (int), the parser expects a variable
name
Not another type
Compilation: Semantic analysis
Checks for semantic correctness
A semantic error:
foo = 5;
int foo;
In C (and most languages), a variable has to be
declared before it is used
 Note that this is syntactically correct
As both lines are valid lines as far as the parser is concerned
Compilation: Intermediate code
generation (and improvement)
Almost all compilers generate intermediate code
 This allows part of the compiler to be machine-
independent
That code can then be optimized
 Optimize for speed, memory usage, or program
footprint
Compilation: Target code
generation (and improvement)
The intermediate code is then translated into the
target code
 For most compilers, the target code is assembly
 For Java, the target code is Java bytecode
That code can then be further optimized
 Optimize for speed, memory usage, or program
footprint

More Related Content

Similar to 02-chapter-1.ppt

1 introduction to compiler
1 introduction to compiler1 introduction to compiler
1 introduction to compiler
BarwarBadradin
 
First compailer written
First compailer writtenFirst compailer written
First compailer written
microwoorkers
 
Ss ui lecture 1
Ss ui lecture 1Ss ui lecture 1
Ss ui lecture 1
Avinash Kapse
 
01. introduction
01. introduction01. introduction
01. introduction
babaaasingh123
 
Assembly Langauge Assembly Langauge Assembly Langauge
Assembly Langauge Assembly Langauge Assembly LangaugeAssembly Langauge Assembly Langauge Assembly Langauge
Assembly Langauge Assembly Langauge Assembly Langauge
mustafkhalid
 
introduction to computer vision and image processing
introduction to computer vision and image processingintroduction to computer vision and image processing
introduction to computer vision and image processing
pakboy12
 
Lesson 1-3 Fundamentals of Programming.pptx
Lesson 1-3 Fundamentals of Programming.pptxLesson 1-3 Fundamentals of Programming.pptx
Lesson 1-3 Fundamentals of Programming.pptx
DysRobles
 
Compiler Construction introduction
Compiler Construction introductionCompiler Construction introduction
Compiler Construction introduction
Rana Ehtisham Ul Haq
 
Introduction to compiler development
Introduction to compiler developmentIntroduction to compiler development
Introduction to compiler development
DeepOad
 
Ch1 (1).ppt
Ch1 (1).pptCh1 (1).ppt
Ch1 (1).ppt
MDSayem35
 
Compilers.pptx
Compilers.pptxCompilers.pptx
Compilers.pptx
MohammedMohammed578197
 
Lec 01 basic concepts
Lec 01 basic conceptsLec 01 basic concepts
Lec 01 basic concepts
Abdul Khan
 
C101 – Intro to Programming with C
C101 – Intro to Programming with CC101 – Intro to Programming with C
C101 – Intro to Programming with C
gpsoft_sk
 
Lecture1 compilers
Lecture1 compilersLecture1 compilers
Lecture1 compilers
Aftab Ahmad
 
Chapter1 Introduction of compiler
Chapter1 Introduction of compiler Chapter1 Introduction of compiler
Chapter1 Introduction of compiler
Danish Alam
 
Plc part 1
Plc part 1Plc part 1
Plc part 1
Taymoor Nazmy
 
Create Your Own Language
Create Your Own LanguageCreate Your Own Language
Create Your Own Language
Hamidreza Soleimani
 
introduction computer programming languages
introduction computer programming languages introduction computer programming languages
introduction computer programming languages
BakhatAli3
 
Structure-Compiler-phases information about basics of compiler. Pdfpdf
Structure-Compiler-phases information  about basics of compiler. PdfpdfStructure-Compiler-phases information  about basics of compiler. Pdfpdf
Structure-Compiler-phases information about basics of compiler. Pdfpdf
ovidlivi91
 

Similar to 02-chapter-1.ppt (20)

1 introduction to compiler
1 introduction to compiler1 introduction to compiler
1 introduction to compiler
 
First compailer written
First compailer writtenFirst compailer written
First compailer written
 
Ss ui lecture 1
Ss ui lecture 1Ss ui lecture 1
Ss ui lecture 1
 
SS UI Lecture 1
SS UI Lecture 1SS UI Lecture 1
SS UI Lecture 1
 
01. introduction
01. introduction01. introduction
01. introduction
 
Assembly Langauge Assembly Langauge Assembly Langauge
Assembly Langauge Assembly Langauge Assembly LangaugeAssembly Langauge Assembly Langauge Assembly Langauge
Assembly Langauge Assembly Langauge Assembly Langauge
 
introduction to computer vision and image processing
introduction to computer vision and image processingintroduction to computer vision and image processing
introduction to computer vision and image processing
 
Lesson 1-3 Fundamentals of Programming.pptx
Lesson 1-3 Fundamentals of Programming.pptxLesson 1-3 Fundamentals of Programming.pptx
Lesson 1-3 Fundamentals of Programming.pptx
 
Compiler Construction introduction
Compiler Construction introductionCompiler Construction introduction
Compiler Construction introduction
 
Introduction to compiler development
Introduction to compiler developmentIntroduction to compiler development
Introduction to compiler development
 
Ch1 (1).ppt
Ch1 (1).pptCh1 (1).ppt
Ch1 (1).ppt
 
Compilers.pptx
Compilers.pptxCompilers.pptx
Compilers.pptx
 
Lec 01 basic concepts
Lec 01 basic conceptsLec 01 basic concepts
Lec 01 basic concepts
 
C101 – Intro to Programming with C
C101 – Intro to Programming with CC101 – Intro to Programming with C
C101 – Intro to Programming with C
 
Lecture1 compilers
Lecture1 compilersLecture1 compilers
Lecture1 compilers
 
Chapter1 Introduction of compiler
Chapter1 Introduction of compiler Chapter1 Introduction of compiler
Chapter1 Introduction of compiler
 
Plc part 1
Plc part 1Plc part 1
Plc part 1
 
Create Your Own Language
Create Your Own LanguageCreate Your Own Language
Create Your Own Language
 
introduction computer programming languages
introduction computer programming languages introduction computer programming languages
introduction computer programming languages
 
Structure-Compiler-phases information about basics of compiler. Pdfpdf
Structure-Compiler-phases information  about basics of compiler. PdfpdfStructure-Compiler-phases information  about basics of compiler. Pdfpdf
Structure-Compiler-phases information about basics of compiler. Pdfpdf
 

More from Joel Manio

DLL_TLE_sept.-4-8.docx
DLL_TLE_sept.-4-8.docxDLL_TLE_sept.-4-8.docx
DLL_TLE_sept.-4-8.docx
Joel Manio
 
History of computer .ppt
History of computer .pptHistory of computer .ppt
History of computer .ppt
Joel Manio
 
sss-sickness-notification.pdf
sss-sickness-notification.pdfsss-sickness-notification.pdf
sss-sickness-notification.pdf
Joel Manio
 
ProgrammingIntroduction.ppt
ProgrammingIntroduction.pptProgrammingIntroduction.ppt
ProgrammingIntroduction.ppt
Joel Manio
 
10 ssp Activity simple Payroll.pptx
10 ssp Activity simple Payroll.pptx10 ssp Activity simple Payroll.pptx
10 ssp Activity simple Payroll.pptx
Joel Manio
 
10 ssp Activity simple Payroll.pptx
10 ssp Activity simple Payroll.pptx10 ssp Activity simple Payroll.pptx
10 ssp Activity simple Payroll.pptx
Joel Manio
 
lecture02.ppt
lecture02.pptlecture02.ppt
lecture02.ppt
Joel Manio
 

More from Joel Manio (7)

DLL_TLE_sept.-4-8.docx
DLL_TLE_sept.-4-8.docxDLL_TLE_sept.-4-8.docx
DLL_TLE_sept.-4-8.docx
 
History of computer .ppt
History of computer .pptHistory of computer .ppt
History of computer .ppt
 
sss-sickness-notification.pdf
sss-sickness-notification.pdfsss-sickness-notification.pdf
sss-sickness-notification.pdf
 
ProgrammingIntroduction.ppt
ProgrammingIntroduction.pptProgrammingIntroduction.ppt
ProgrammingIntroduction.ppt
 
10 ssp Activity simple Payroll.pptx
10 ssp Activity simple Payroll.pptx10 ssp Activity simple Payroll.pptx
10 ssp Activity simple Payroll.pptx
 
10 ssp Activity simple Payroll.pptx
10 ssp Activity simple Payroll.pptx10 ssp Activity simple Payroll.pptx
10 ssp Activity simple Payroll.pptx
 
lecture02.ppt
lecture02.pptlecture02.ppt
lecture02.ppt
 

Recently uploaded

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
siemaillard
 
How to Break the cycle of negative Thoughts
How to Break the cycle of negative ThoughtsHow to Break the cycle of negative Thoughts
How to Break the cycle of negative Thoughts
Col Mukteshwar Prasad
 
Home assignment II on Spectroscopy 2024 Answers.pdf
Home assignment II on Spectroscopy 2024 Answers.pdfHome assignment II on Spectroscopy 2024 Answers.pdf
Home assignment II on Spectroscopy 2024 Answers.pdf
Tamralipta Mahavidyalaya
 
Palestine last event orientationfvgnh .pptx
Palestine last event orientationfvgnh .pptxPalestine last event orientationfvgnh .pptx
Palestine last event orientationfvgnh .pptx
RaedMohamed3
 
Cambridge International AS A Level Biology Coursebook - EBook (MaryFosbery J...
Cambridge International AS  A Level Biology Coursebook - EBook (MaryFosbery J...Cambridge International AS  A Level Biology Coursebook - EBook (MaryFosbery J...
Cambridge International AS A Level Biology Coursebook - EBook (MaryFosbery J...
AzmatAli747758
 
Phrasal Verbs.XXXXXXXXXXXXXXXXXXXXXXXXXX
Phrasal Verbs.XXXXXXXXXXXXXXXXXXXXXXXXXXPhrasal Verbs.XXXXXXXXXXXXXXXXXXXXXXXXXX
Phrasal Verbs.XXXXXXXXXXXXXXXXXXXXXXXXXX
MIRIAMSALINAS13
 
Introduction to Quality Improvement Essentials
Introduction to Quality Improvement EssentialsIntroduction to Quality Improvement Essentials
Introduction to Quality Improvement Essentials
Excellence Foundation for South Sudan
 
Unit 8 - Information and Communication Technology (Paper I).pdf
Unit 8 - Information and Communication Technology (Paper I).pdfUnit 8 - Information and Communication Technology (Paper I).pdf
Unit 8 - Information and Communication Technology (Paper I).pdf
Thiyagu K
 
The French Revolution Class 9 Study Material pdf free download
The French Revolution Class 9 Study Material pdf free downloadThe French Revolution Class 9 Study Material pdf free download
The French Revolution Class 9 Study Material pdf free download
Vivekanand Anglo Vedic Academy
 
Unit 2- Research Aptitude (UGC NET Paper I).pdf
Unit 2- Research Aptitude (UGC NET Paper I).pdfUnit 2- Research Aptitude (UGC NET Paper I).pdf
Unit 2- Research Aptitude (UGC NET Paper I).pdf
Thiyagu K
 
Sha'Carri Richardson Presentation 202345
Sha'Carri Richardson Presentation 202345Sha'Carri Richardson Presentation 202345
Sha'Carri Richardson Presentation 202345
beazzy04
 
How to Create Map Views in the Odoo 17 ERP
How to Create Map Views in the Odoo 17 ERPHow to Create Map Views in the Odoo 17 ERP
How to Create Map Views in the Odoo 17 ERP
Celine George
 
Polish students' mobility in the Czech Republic
Polish students' mobility in the Czech RepublicPolish students' mobility in the Czech Republic
Polish students' mobility in the Czech Republic
Anna Sz.
 
Model Attribute Check Company Auto Property
Model Attribute  Check Company Auto PropertyModel Attribute  Check Company Auto Property
Model Attribute Check Company Auto Property
Celine George
 
Template Jadual Bertugas Kelas (Boleh Edit)
Template Jadual Bertugas Kelas (Boleh Edit)Template Jadual Bertugas Kelas (Boleh Edit)
Template Jadual Bertugas Kelas (Boleh Edit)
rosedainty
 
1.4 modern child centered education - mahatma gandhi-2.pptx
1.4 modern child centered education - mahatma gandhi-2.pptx1.4 modern child centered education - mahatma gandhi-2.pptx
1.4 modern child centered education - mahatma gandhi-2.pptx
JosvitaDsouza2
 
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
MysoreMuleSoftMeetup
 
Thesis Statement for students diagnonsed withADHD.ppt
Thesis Statement for students diagnonsed withADHD.pptThesis Statement for students diagnonsed withADHD.ppt
Thesis Statement for students diagnonsed withADHD.ppt
EverAndrsGuerraGuerr
 
Fish and Chips - have they had their chips
Fish and Chips - have they had their chipsFish and Chips - have they had their chips
Fish and Chips - have they had their chips
GeoBlogs
 
Students, digital devices and success - Andreas Schleicher - 27 May 2024..pptx
Students, digital devices and success - Andreas Schleicher - 27 May 2024..pptxStudents, digital devices and success - Andreas Schleicher - 27 May 2024..pptx
Students, digital devices and success - Andreas Schleicher - 27 May 2024..pptx
EduSkills OECD
 

Recently uploaded (20)

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 
How to Break the cycle of negative Thoughts
How to Break the cycle of negative ThoughtsHow to Break the cycle of negative Thoughts
How to Break the cycle of negative Thoughts
 
Home assignment II on Spectroscopy 2024 Answers.pdf
Home assignment II on Spectroscopy 2024 Answers.pdfHome assignment II on Spectroscopy 2024 Answers.pdf
Home assignment II on Spectroscopy 2024 Answers.pdf
 
Palestine last event orientationfvgnh .pptx
Palestine last event orientationfvgnh .pptxPalestine last event orientationfvgnh .pptx
Palestine last event orientationfvgnh .pptx
 
Cambridge International AS A Level Biology Coursebook - EBook (MaryFosbery J...
Cambridge International AS  A Level Biology Coursebook - EBook (MaryFosbery J...Cambridge International AS  A Level Biology Coursebook - EBook (MaryFosbery J...
Cambridge International AS A Level Biology Coursebook - EBook (MaryFosbery J...
 
Phrasal Verbs.XXXXXXXXXXXXXXXXXXXXXXXXXX
Phrasal Verbs.XXXXXXXXXXXXXXXXXXXXXXXXXXPhrasal Verbs.XXXXXXXXXXXXXXXXXXXXXXXXXX
Phrasal Verbs.XXXXXXXXXXXXXXXXXXXXXXXXXX
 
Introduction to Quality Improvement Essentials
Introduction to Quality Improvement EssentialsIntroduction to Quality Improvement Essentials
Introduction to Quality Improvement Essentials
 
Unit 8 - Information and Communication Technology (Paper I).pdf
Unit 8 - Information and Communication Technology (Paper I).pdfUnit 8 - Information and Communication Technology (Paper I).pdf
Unit 8 - Information and Communication Technology (Paper I).pdf
 
The French Revolution Class 9 Study Material pdf free download
The French Revolution Class 9 Study Material pdf free downloadThe French Revolution Class 9 Study Material pdf free download
The French Revolution Class 9 Study Material pdf free download
 
Unit 2- Research Aptitude (UGC NET Paper I).pdf
Unit 2- Research Aptitude (UGC NET Paper I).pdfUnit 2- Research Aptitude (UGC NET Paper I).pdf
Unit 2- Research Aptitude (UGC NET Paper I).pdf
 
Sha'Carri Richardson Presentation 202345
Sha'Carri Richardson Presentation 202345Sha'Carri Richardson Presentation 202345
Sha'Carri Richardson Presentation 202345
 
How to Create Map Views in the Odoo 17 ERP
How to Create Map Views in the Odoo 17 ERPHow to Create Map Views in the Odoo 17 ERP
How to Create Map Views in the Odoo 17 ERP
 
Polish students' mobility in the Czech Republic
Polish students' mobility in the Czech RepublicPolish students' mobility in the Czech Republic
Polish students' mobility in the Czech Republic
 
Model Attribute Check Company Auto Property
Model Attribute  Check Company Auto PropertyModel Attribute  Check Company Auto Property
Model Attribute Check Company Auto Property
 
Template Jadual Bertugas Kelas (Boleh Edit)
Template Jadual Bertugas Kelas (Boleh Edit)Template Jadual Bertugas Kelas (Boleh Edit)
Template Jadual Bertugas Kelas (Boleh Edit)
 
1.4 modern child centered education - mahatma gandhi-2.pptx
1.4 modern child centered education - mahatma gandhi-2.pptx1.4 modern child centered education - mahatma gandhi-2.pptx
1.4 modern child centered education - mahatma gandhi-2.pptx
 
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
 
Thesis Statement for students diagnonsed withADHD.ppt
Thesis Statement for students diagnonsed withADHD.pptThesis Statement for students diagnonsed withADHD.ppt
Thesis Statement for students diagnonsed withADHD.ppt
 
Fish and Chips - have they had their chips
Fish and Chips - have they had their chipsFish and Chips - have they had their chips
Fish and Chips - have they had their chips
 
Students, digital devices and success - Andreas Schleicher - 27 May 2024..pptx
Students, digital devices and success - Andreas Schleicher - 27 May 2024..pptxStudents, digital devices and success - Andreas Schleicher - 27 May 2024..pptx
Students, digital devices and success - Andreas Schleicher - 27 May 2024..pptx
 

02-chapter-1.ppt

  • 1. CS 415: Programming Languages Chapter 1 Aaron Bloomfield Fall 2005
  • 2. The first computers Scales – computed relative weight of two items  Computed if the first item’s weight was less than, equal to, or greater than the second item’s weight Abacus – performed mathematical computations  Primarily thought of as Chinese, but also Japanese, Mayan, Russian, and Roman versions  Can do square roots and cube roots
  • 4. Computer Size ENIAC then… ENIAC today… With computers (small) size does matter!
  • 5. Why study programming languages? Become a better software engineer  Understand how to use language features  Appreciate implementation issues Better background for language selection  Familiar with range of languages  Understand issues / advantages / disadvantages Better able to learn languages  You might need to know a lot
  • 6. Why study programming languages? Better understanding of implementation issues  How is “this feature” implemented?  Why does “this part” run so slowly? Better able to design languages  Those who ignore history are bound to repeat it…
  • 7. Why are there so many programming languages? There are thousands! Evolution  Structured languages -> OO programming Special purposes  Lisp for symbols; Snobol for strings; C for systems; Prolog for relationships Personal preference  Programmers have their own personal tastes Expressive power  Some features allow you to express your ideas better
  • 8. Why are there so many programming languages? Easy to use  Especially for teaching / learning tasks Ease of implementation  Easy to write a compiler / interpreter for Good compilers  Fortran in the 50’s and 60’s Economics, patronage  Cobol and Ada, for example
  • 9. Programming domains Scientific applications  Using the computer as a large calculator  Fortran and friends, some Algol, APL  Using the computer for symbol manipulation  Mathematica Business applications  Data processing and business procedures  Cobol, some PL/1, RPG, spreadsheets Systems programming  Building operating systems and utilities  C, PL/S, ESPOL, Bliss, some Algol and derivitaves
  • 10. Programming domains Parallel programming  Parallel and distributed systems  Ada, CSP, Modula, DP, Mentat/Legion Artificial intelligence  Uses symbolic rather than numeric computations  Lists as main data structure  Flexibility (code = data)  Lisp in 1959, Prolog in the 1970s Scripting languages  A list of commands to be executed  UNIX shell programming, awk, tcl, Perl
  • 11. Programming domains Education  Languages designed to facilitate teaching  Pascal, BASIC, Logo Special purpose  Other than the above…  Simulation  Specialized equipment control  String processing  Visual languages
  • 12. Programming paradigms You have already seen assembly language We will study five language paradigms:  Top-down (Algol 60 and Fortran)  Functional (Scheme and/or OCaml)  Logic (Prolog)  Object oriented (Smalltalk)  Aspect oriented (AspectJ)
  • 13. Programming language history Pseudocodes (195X) – Many Fortran (195X) – IBM, Backus Lisp (196x) – McCarthy Algol (1958) – Committee (led to Pascal, Ada) Cobol (196X) – Hopper Functional programming – FP, Scheme, Haskell, ML Logic programming – Prolog Object oriented programming – Smalltalk, C++, Python, Java Aspect oriented programming – AspectJ, AspectC++ Parallel / non-deterministic programming
  • 14. Compilation vs. Translation Translation: does a ‘mechanical’ translation of the source code  No deep analysis of the syntax/semantics of the code Compilation: does a thorough understanding and translation of the code A compiler/translator changes a program from one language into another  C compiler: from C into assembly An assembler then translates it into machine language  Java compiler: from Java code to Java bytecode The Java interpreter then runs the bytecode
  • 15. Compilation stages Scanner Parser Semantic analysis Intermediate code generation Machine-independent code improvement (optional) Target code generation Machine-specific code improvement (optional) For many compilers, the result is assembly  Which then has to be run through an assembler These stages are machine-independent!  The generate “intermediate code”
  • 16. Compilation: Scanner Recognizes the ‘tokens’ of a program  Example tokens: ( 75 main int { return ; foo Lexical errors are detected here  More on this in a future lecture
  • 17. Compilation: Parser Puts the tokens together into a pattern  void main ( int argc , char ** argv ) {  This line has 11 tokens  It is the beginning of a method Syntatic errors are detected here  When the tokens are not in the correct order:  int int foo ;  This line has 4 tokens  After the type (int), the parser expects a variable name Not another type
  • 18. Compilation: Semantic analysis Checks for semantic correctness A semantic error: foo = 5; int foo; In C (and most languages), a variable has to be declared before it is used  Note that this is syntactically correct As both lines are valid lines as far as the parser is concerned
  • 19. Compilation: Intermediate code generation (and improvement) Almost all compilers generate intermediate code  This allows part of the compiler to be machine- independent That code can then be optimized  Optimize for speed, memory usage, or program footprint
  • 20. Compilation: Target code generation (and improvement) The intermediate code is then translated into the target code  For most compilers, the target code is assembly  For Java, the target code is Java bytecode That code can then be further optimized  Optimize for speed, memory usage, or program footprint