SlideShare a Scribd company logo
Principals Of Programming
Languages
MS. LARAIB SAEED
Department of Computer Science
COMSATS University Islamabad
Wah Campus
Chapter 1
Preliminaries
1-2
Course Details
 Course Title: Theory of Programming Language
 Course Code: CSC315
 Credit Hours: 3(3,0)
1-3
Course Grading
 Quizzes (4) 15%
 Assignments (4) 10%
 Midterm 25%
 Terminal Exam 50%
1-4
Rules and Considerations
 Be on time for every class. Late arrivals may be marked absent.
 Active participation in discussions is encouraged.
 All assignments must be submitted on time. Late submissions may result
in deductions.
 Quizzes can be surprise or scheduled, so stay prepared.
 For any queries, contact: laraibsaeed828@gmail.com
1-5
Chapter 1 Topics
 Reasons for Studying Concepts of Programming Languages
 Programming Domains
 Language Evaluation Criteria
 Influences on Language Design
 Language Categories
 Language Design Trade-Offs
 Implementation Methods
 Programming Environments
1-6
Reasons for Studying Concepts of Programming
Languages
 Increased ability to express ideas
• Write more efficient and effective programs
• Convey your thoughts and intentions clearly
• Develop a unique programming style
 Improved background for choosing appropriate languages
• Understand the strengths and weaknesses of different languages
• Make informed decisions about language selection
• Adapt to new languages and technologies more easily
 Increased ability to learn new languages
• Recognize similarities and differences between languages
• Transfer knowledge and skills to new languages
• Learn new languages more quickly and efficiently
1-7
Reasons for Studying Concepts of
Programming Languages
 Better understanding of significance of implementation
• Data structures and algorithms
• Memory management and optimization
• Error handling and debugging
 Overall advancement of computing
• Drive innovation and research in computer science
• Improve software development methodologies and tools
• Enhance the overall quality and reliability of software systems
1-8
Programming Domains
 Scientific applications
 Help scientists and researchers solve complex problems
 Large number of floating point computations
 Fortran
 Business applications
 Produce reports, use decimal numbers and characters
 COBOL
1-9
Programming Domains
 Artificial intelligence
 Creating intelligent machines that can think and learn like humans
 Symbols, Logic and Reasoning rather than numbers manipulated
 LISP
 Systems programming
 Creating software that manages and controls computer hardware resources
 Need efficiency because of continuous use
 C
 Web Software
 Software refers to programs that run on the web, like websites, web applications,
and mobile apps.
 Eclectic collection of languages: markup (e.g., XHTML), scripting (e.g., PHP),
general-purpose (e.g., Java)
1-10
Language Evaluation Criteria
 Readability: the ease with which programs can be read and
understood
 Writability: the ease with which a language can be used to create
programs
 Reliability: conformance to specifications (i.e., performs to its
specifications)
 Cost: the ultimate total cost
1-11
Evaluation Criteria: Readability
 Overall simplicity
 A manageable set of features and constructs
 Few feature multiplicity (means of doing the same operation)
 Minimal operator overloading
 Orthogonality
 A relatively small set of primitive constructs can be combined
in a relatively small number of ways
 Every possible combination is legal
 Control statements
 The presence of well-known control structures (e.g., while
statement)
1-12
Evaluation Criteria: Readability
 Data types and structures
 The presence of adequate facilities for defining data structures
 Syntax considerations
 Identifier forms: flexible composition
 Special words and methods of forming compound statements
 Form and meaning: self-descriptive constructs, meaningful keywords
1-13
Evaluation Criteria: Writability
 Simplicity and orthogonality
 Few constructs, a small number of primitives, a small set of
rules for combining them
 Support for abstraction
 The ability to define and use complex structures or operations in
ways that allow details to be ignored
 Expressivity
 A set of relatively convenient ways of specifying operations
 Example: the inclusion of for statement in many modern
languages
1-14
Evaluation Criteria: Reliability
 Type checking
 Testing for type errors
 Exception handling
 Intercept run-time errors and take corrective measures
 Aliasing
 Presence of two or more distinct referencing methods for the
same memory location
 Readability and writability
 A language that does not support “natural” ways of expressing
an algorithm will necessarily use “unnatural” approaches, and
hence reduced reliability
1-15
Evaluation Criteria: Cost
 Training programmers to use language
 Writing programs (closeness to particular applications)
 Compiling programs
 Executing programs
 Language implementation system: availability of free compilers
 Reliability: poor reliability leads to high costs
 Maintaining programs
1-16
Evaluation Criteria: Others
 Portability
 The ease with which programs can be moved from one
implementation to another
 Generality
 How widely a programming language can be used for different types
of applications.
 Well-definedness
 How clear and precise the rules and definitions of a programming
language are.
1-17
Influences on Language Design
 Computer Architecture
 Languages are developed around the prevalent computer architecture,
known as the von Neumann architecture
 Programming Methodologies
 New software development methodologies (e.g., object-oriented
software development) led to new programming paradigms and by
extension, new programming languages
1-18
Computer Architecture Influence
 Well-known computer architecture: Von Neumann
 Imperative languages(How to perform a task), most dominant, because of von
Neumann computers
 Data and programs stored in memory
 Memory is separate from CPU
 Instructions and data are piped from memory to CPU
 Basis for imperative languages
• Variables model memory cells
• Assignment statements model piping
• Iteration is efficient
1-19
The von Neumann Architecture 1-20
Programming Methodologies Influences
 1950s and early 1960s: Simple applications; worry about machine efficiency
 Late 1960s: People efficiency became important; readability, better control
structures
 structured programming
 top-down design and step-wise refinement
 Late 1970s: Process-oriented to data-oriented
 data abstraction
 Middle 1980s: Object-oriented programming
 Data abstraction + inheritance + polymorphism
1-21
Language Categories
 Imperative
 Central features are variables, assignment statements, and iteration
 Examples: C, Pascal
 Functional
 Main means of making computations is by applying functions to given
parameters
 Examples: LISP, Scheme
 Logic
 Rule-based (rules are specified in no particular order)
 Example: Prolog
1-22
Language Categories
 Object-oriented
 Data abstraction, inheritance, late binding (Resolve meaning of a
symbol or identifier at run time)
 Examples: Java, C++
 Markup
 New; not a programming per se, but used to specify the layout of
information in Web documents
 Examples: XHTML, XML
1-23
Language Design Trade-Offs
 Reliability vs. cost of execution
 Conflicting criteria
 Example: Java demands all references to array elements be checked for
proper indexing but that leads to increased execution costs
 Readability vs. writability
 Another conflicting criteria
 Example: APL provides many powerful operators (and a large number of
new symbols), allowing complex computations to be written in a compact
program but at the cost of poor readability
 Writability (flexibility) vs. reliability
 Another conflicting criteria
 Example: C++ pointers are powerful and very flexible but not reliably used
1-24
Implementation Methods
 Compilation
 Programs are translated into machine language
 Pure Interpretation
 Programs are interpreted by another program known as an interpreter
 Hybrid Implementation Systems
 A compromise between compilers and pure interpreters
1-25
Layered View of Computer
 The operating system and language implementation are layered over
machine interface of a computer
1-26
Compilation
 Translate high-level program (source language) into machine code (machine
language)
 Slow translation, fast execution
 Compilation process has several phases:
 lexical analysis: converts characters in the source program into lexical units
 Syntax analysis: transforms lexical units into parse trees which represent
the syntactic structure of program
 Semantics analysis: generate intermediate code
 code generation: machine code is generated
1-27
The Compilation Process 1-28
Additional Compilation Terminologies
 Load module (executable image): the user and system code
together
 Linking and loading: the process of collecting system program
and linking them to user program
1-29
Von Neumann Bottleneck
 Connection speed between a computer’s memory and its
processor determines the speed of a computer
 Program instructions often can be executed a lot faster than the
above connection speed; the connection speed thus results in a
bottleneck
 Known as von Neumann bottleneck; it is the primary limiting factor
in the speed of computers
1-30
Pure Interpretation
 No translation
 Easier implementation of programs (run- time errors can easily and
immediately displayed)
 Slower execution (10 to 100 times slower than compiled programs)
 Often requires more space
 Significant comeback with some Web scripting languages (e.g.,
JavaScript)
 Becoming rare on high-level languages
1-31
Pure Interpretation Process 1-32
Hybrid Implementation Systems
 A compromise between compilers and pure interpreters
 A high-level language program is translated to an intermediate
language that allows easy interpretation
 Faster than pure interpretation
 Examples
 Perl programs are partially compiled to detect errors before
interpretation
 Initial implementations of Java were hybrid; the intermediate
form, byte code, provides portability to any machine that has a
byte code interpreter and a run-time system (together, these are
called Java Virtual Machine)
1-33
Hybrid Implementation Process 1-34
Just-in-Time Implementation Systems
 Initially translate programs to an intermediate language
 Then compile intermediate language into machine code
 Machine code version is kept for subsequent calls
 JIT systems are widely used for Java programs
 .NET languages are implemented with a JIT system
1-35
Preprocessors
 Preprocessor macros (instructions) are commonly used to specify that code
from another file is to be included
 A preprocessor processes a program immediately before the program is
compiled to expand embedded preprocessor macros
 A well-known example: C preprocessor
 expands #include, #define, and similar macros
1-36
Programming Environments
 The collection of tools used in software development
 UNIX
 An older operating system and tool collection
 Nowadays often used through a GUI (e.g., CDE, KDE, or GNOME) that run
on top of UNIX
 Borland JBuilder
 An integrated development environment for Java
 Microsoft Visual Studio.NET
 A large, complex visual environment
 Used to program in C#, Visual BASIC.NET, Jscript, J#, or C++
1-37
Summary
 The study of programming languages is valuable for a number of reasons:
 Increase our capacity to use different constructs
 Enable us to choose languages more intelligently
 Makes learning new languages easier
 Most important criteria for evaluating programming languages include:
 Readability, writability, reliability, cost
 Major influences on language design have been machine architecture and
software development methodologies
 The major methods of implementing programming languages are:
compilation, pure interpretation, and hybrid implementation
1-38
39
TIOBI Index
 The TIOBE Programming Community index is an indicator of the popularity
of programming languages.
 The index is updated once a month.
 The ratings are based on the number of skilled engineers world-wide,
courses and third-party vendors.
 Popular search engines such as Google, Bing, Yahoo!, Wikipedia, Amazon,
YouTube and Baidu are used to calculate the ratings.
 It is important to note that the TIOBE index is not about
the best programming language or the language in which most lines of
code have been written.
 https://www.tiobe.com/tiobe-index/
40

More Related Content

Similar to Chapter 1: Theory of programming languages (20)

PDF
Introduction
baran19901990
 
PPT
week1.ppt
nazimsattar
 
PPTX
unit-1(ppl notes) programing for problem.pptx
Pavani839789
 
PPTX
CSCorganization of programming languages
OluwafolakeOjo
 
PDF
Intro to Backend Development - GDG on Campus EUE
Google Developer Group On Campus European Universities in Egypt
 
PPT
CH # 1 preliminaries
Munawar Ahmed
 
PPTX
Advanced Programming practices - UNIT 1 .pptx
rasheedabegum11
 
PPTX
CSE-1203-Lecture-01-Introduction for c programming.pptx
MARaihanEmon
 
PPTX
Introduction-to-Programming-Languages.pptx
ranjan317165
 
PDF
1504.00693
Khushboo Agarwal
 
PPTX
Computer Software and It's Development
Rabin BK
 
PPTX
Plc part 1
Taymoor Nazmy
 
PPTX
Cobbbbbbbnnnnnnnnnnnnnnnnncepts of PL.pptx
mehrankhan7842312
 
PPTX
Chapter 1
ZcelTablizo3
 
PPT
Ppl 13 july2019
Khurram Tehseen
 
PPT
Software and os ch5
Khan Yousafzai
 
PPTX
Computer Programming
Newreborn Incarnation
 
PPTX
Computer
Newreborn Incarnation
 
PPTX
Unit1 principle of programming language
Vasavi College of Engg
 
Introduction
baran19901990
 
week1.ppt
nazimsattar
 
unit-1(ppl notes) programing for problem.pptx
Pavani839789
 
CSCorganization of programming languages
OluwafolakeOjo
 
Intro to Backend Development - GDG on Campus EUE
Google Developer Group On Campus European Universities in Egypt
 
CH # 1 preliminaries
Munawar Ahmed
 
Advanced Programming practices - UNIT 1 .pptx
rasheedabegum11
 
CSE-1203-Lecture-01-Introduction for c programming.pptx
MARaihanEmon
 
Introduction-to-Programming-Languages.pptx
ranjan317165
 
1504.00693
Khushboo Agarwal
 
Computer Software and It's Development
Rabin BK
 
Plc part 1
Taymoor Nazmy
 
Cobbbbbbbnnnnnnnnnnnnnnnnncepts of PL.pptx
mehrankhan7842312
 
Chapter 1
ZcelTablizo3
 
Ppl 13 july2019
Khurram Tehseen
 
Software and os ch5
Khan Yousafzai
 
Computer Programming
Newreborn Incarnation
 
Unit1 principle of programming language
Vasavi College of Engg
 

Recently uploaded (20)

PPTX
How to Configure Re-Ordering From Portal in Odoo 18 Website
Celine George
 
PPTX
HUMAN RESOURCE MANAGEMENT: RECRUITMENT, SELECTION, PLACEMENT, DEPLOYMENT, TRA...
PRADEEP ABOTHU
 
PDF
Characteristics, Strengths and Weaknesses of Quantitative Research.pdf
Thelma Villaflores
 
PPTX
PPT-Q1-WK-3-ENGLISH Revised Matatag Grade 3.pptx
reijhongidayawan02
 
PDF
Biological Bilingual Glossary Hindi and English Medium
World of Wisdom
 
PDF
Governor Josh Stein letter to NC delegation of U.S. House
Mebane Rash
 
PPTX
Introduction to Indian Writing in English
Trushali Dodiya
 
PDF
Is Assignment Help Legal in Australia_.pdf
thomas19williams83
 
PDF
The Constitution Review Committee (CRC) has released an updated schedule for ...
nservice241
 
PPTX
Universal immunization Programme (UIP).pptx
Vishal Chanalia
 
PDF
Horarios de distribución de agua en julio
pegazohn1978
 
PDF
Week 2 - Irish Natural Heritage Powerpoint.pdf
swainealan
 
PPTX
DIGITAL CITIZENSHIP TOPIC TLE 8 MATATAG CURRICULUM
ROBERTAUGUSTINEFRANC
 
PDF
The History of Phone Numbers in Stoke Newington by Billy Thomas
History of Stoke Newington
 
PDF
Council of Chalcedon Re-Examined
Smiling Lungs
 
PPTX
Nitrogen rule, ring rule, mc lafferty.pptx
nbisen2001
 
PDF
Knee Extensor Mechanism Injuries - Orthopedic Radiologic Imaging
Sean M. Fox
 
PPTX
CATEGORIES OF NURSING PERSONNEL: HOSPITAL & COLLEGE
PRADEEP ABOTHU
 
PDF
Stokey: A Jewish Village by Rachel Kolsky
History of Stoke Newington
 
PPTX
PPT-Q1-WEEK-3-SCIENCE-ERevised Matatag Grade 3.pptx
reijhongidayawan02
 
How to Configure Re-Ordering From Portal in Odoo 18 Website
Celine George
 
HUMAN RESOURCE MANAGEMENT: RECRUITMENT, SELECTION, PLACEMENT, DEPLOYMENT, TRA...
PRADEEP ABOTHU
 
Characteristics, Strengths and Weaknesses of Quantitative Research.pdf
Thelma Villaflores
 
PPT-Q1-WK-3-ENGLISH Revised Matatag Grade 3.pptx
reijhongidayawan02
 
Biological Bilingual Glossary Hindi and English Medium
World of Wisdom
 
Governor Josh Stein letter to NC delegation of U.S. House
Mebane Rash
 
Introduction to Indian Writing in English
Trushali Dodiya
 
Is Assignment Help Legal in Australia_.pdf
thomas19williams83
 
The Constitution Review Committee (CRC) has released an updated schedule for ...
nservice241
 
Universal immunization Programme (UIP).pptx
Vishal Chanalia
 
Horarios de distribución de agua en julio
pegazohn1978
 
Week 2 - Irish Natural Heritage Powerpoint.pdf
swainealan
 
DIGITAL CITIZENSHIP TOPIC TLE 8 MATATAG CURRICULUM
ROBERTAUGUSTINEFRANC
 
The History of Phone Numbers in Stoke Newington by Billy Thomas
History of Stoke Newington
 
Council of Chalcedon Re-Examined
Smiling Lungs
 
Nitrogen rule, ring rule, mc lafferty.pptx
nbisen2001
 
Knee Extensor Mechanism Injuries - Orthopedic Radiologic Imaging
Sean M. Fox
 
CATEGORIES OF NURSING PERSONNEL: HOSPITAL & COLLEGE
PRADEEP ABOTHU
 
Stokey: A Jewish Village by Rachel Kolsky
History of Stoke Newington
 
PPT-Q1-WEEK-3-SCIENCE-ERevised Matatag Grade 3.pptx
reijhongidayawan02
 
Ad

Chapter 1: Theory of programming languages

  • 1. Principals Of Programming Languages MS. LARAIB SAEED Department of Computer Science COMSATS University Islamabad Wah Campus
  • 3. Course Details  Course Title: Theory of Programming Language  Course Code: CSC315  Credit Hours: 3(3,0) 1-3
  • 4. Course Grading  Quizzes (4) 15%  Assignments (4) 10%  Midterm 25%  Terminal Exam 50% 1-4
  • 5. Rules and Considerations  Be on time for every class. Late arrivals may be marked absent.  Active participation in discussions is encouraged.  All assignments must be submitted on time. Late submissions may result in deductions.  Quizzes can be surprise or scheduled, so stay prepared.  For any queries, contact: [email protected] 1-5
  • 6. Chapter 1 Topics  Reasons for Studying Concepts of Programming Languages  Programming Domains  Language Evaluation Criteria  Influences on Language Design  Language Categories  Language Design Trade-Offs  Implementation Methods  Programming Environments 1-6
  • 7. Reasons for Studying Concepts of Programming Languages  Increased ability to express ideas • Write more efficient and effective programs • Convey your thoughts and intentions clearly • Develop a unique programming style  Improved background for choosing appropriate languages • Understand the strengths and weaknesses of different languages • Make informed decisions about language selection • Adapt to new languages and technologies more easily  Increased ability to learn new languages • Recognize similarities and differences between languages • Transfer knowledge and skills to new languages • Learn new languages more quickly and efficiently 1-7
  • 8. Reasons for Studying Concepts of Programming Languages  Better understanding of significance of implementation • Data structures and algorithms • Memory management and optimization • Error handling and debugging  Overall advancement of computing • Drive innovation and research in computer science • Improve software development methodologies and tools • Enhance the overall quality and reliability of software systems 1-8
  • 9. Programming Domains  Scientific applications  Help scientists and researchers solve complex problems  Large number of floating point computations  Fortran  Business applications  Produce reports, use decimal numbers and characters  COBOL 1-9
  • 10. Programming Domains  Artificial intelligence  Creating intelligent machines that can think and learn like humans  Symbols, Logic and Reasoning rather than numbers manipulated  LISP  Systems programming  Creating software that manages and controls computer hardware resources  Need efficiency because of continuous use  C  Web Software  Software refers to programs that run on the web, like websites, web applications, and mobile apps.  Eclectic collection of languages: markup (e.g., XHTML), scripting (e.g., PHP), general-purpose (e.g., Java) 1-10
  • 11. Language Evaluation Criteria  Readability: the ease with which programs can be read and understood  Writability: the ease with which a language can be used to create programs  Reliability: conformance to specifications (i.e., performs to its specifications)  Cost: the ultimate total cost 1-11
  • 12. Evaluation Criteria: Readability  Overall simplicity  A manageable set of features and constructs  Few feature multiplicity (means of doing the same operation)  Minimal operator overloading  Orthogonality  A relatively small set of primitive constructs can be combined in a relatively small number of ways  Every possible combination is legal  Control statements  The presence of well-known control structures (e.g., while statement) 1-12
  • 13. Evaluation Criteria: Readability  Data types and structures  The presence of adequate facilities for defining data structures  Syntax considerations  Identifier forms: flexible composition  Special words and methods of forming compound statements  Form and meaning: self-descriptive constructs, meaningful keywords 1-13
  • 14. Evaluation Criteria: Writability  Simplicity and orthogonality  Few constructs, a small number of primitives, a small set of rules for combining them  Support for abstraction  The ability to define and use complex structures or operations in ways that allow details to be ignored  Expressivity  A set of relatively convenient ways of specifying operations  Example: the inclusion of for statement in many modern languages 1-14
  • 15. Evaluation Criteria: Reliability  Type checking  Testing for type errors  Exception handling  Intercept run-time errors and take corrective measures  Aliasing  Presence of two or more distinct referencing methods for the same memory location  Readability and writability  A language that does not support “natural” ways of expressing an algorithm will necessarily use “unnatural” approaches, and hence reduced reliability 1-15
  • 16. Evaluation Criteria: Cost  Training programmers to use language  Writing programs (closeness to particular applications)  Compiling programs  Executing programs  Language implementation system: availability of free compilers  Reliability: poor reliability leads to high costs  Maintaining programs 1-16
  • 17. Evaluation Criteria: Others  Portability  The ease with which programs can be moved from one implementation to another  Generality  How widely a programming language can be used for different types of applications.  Well-definedness  How clear and precise the rules and definitions of a programming language are. 1-17
  • 18. Influences on Language Design  Computer Architecture  Languages are developed around the prevalent computer architecture, known as the von Neumann architecture  Programming Methodologies  New software development methodologies (e.g., object-oriented software development) led to new programming paradigms and by extension, new programming languages 1-18
  • 19. Computer Architecture Influence  Well-known computer architecture: Von Neumann  Imperative languages(How to perform a task), most dominant, because of von Neumann computers  Data and programs stored in memory  Memory is separate from CPU  Instructions and data are piped from memory to CPU  Basis for imperative languages • Variables model memory cells • Assignment statements model piping • Iteration is efficient 1-19
  • 20. The von Neumann Architecture 1-20
  • 21. Programming Methodologies Influences  1950s and early 1960s: Simple applications; worry about machine efficiency  Late 1960s: People efficiency became important; readability, better control structures  structured programming  top-down design and step-wise refinement  Late 1970s: Process-oriented to data-oriented  data abstraction  Middle 1980s: Object-oriented programming  Data abstraction + inheritance + polymorphism 1-21
  • 22. Language Categories  Imperative  Central features are variables, assignment statements, and iteration  Examples: C, Pascal  Functional  Main means of making computations is by applying functions to given parameters  Examples: LISP, Scheme  Logic  Rule-based (rules are specified in no particular order)  Example: Prolog 1-22
  • 23. Language Categories  Object-oriented  Data abstraction, inheritance, late binding (Resolve meaning of a symbol or identifier at run time)  Examples: Java, C++  Markup  New; not a programming per se, but used to specify the layout of information in Web documents  Examples: XHTML, XML 1-23
  • 24. Language Design Trade-Offs  Reliability vs. cost of execution  Conflicting criteria  Example: Java demands all references to array elements be checked for proper indexing but that leads to increased execution costs  Readability vs. writability  Another conflicting criteria  Example: APL provides many powerful operators (and a large number of new symbols), allowing complex computations to be written in a compact program but at the cost of poor readability  Writability (flexibility) vs. reliability  Another conflicting criteria  Example: C++ pointers are powerful and very flexible but not reliably used 1-24
  • 25. Implementation Methods  Compilation  Programs are translated into machine language  Pure Interpretation  Programs are interpreted by another program known as an interpreter  Hybrid Implementation Systems  A compromise between compilers and pure interpreters 1-25
  • 26. Layered View of Computer  The operating system and language implementation are layered over machine interface of a computer 1-26
  • 27. Compilation  Translate high-level program (source language) into machine code (machine language)  Slow translation, fast execution  Compilation process has several phases:  lexical analysis: converts characters in the source program into lexical units  Syntax analysis: transforms lexical units into parse trees which represent the syntactic structure of program  Semantics analysis: generate intermediate code  code generation: machine code is generated 1-27
  • 29. Additional Compilation Terminologies  Load module (executable image): the user and system code together  Linking and loading: the process of collecting system program and linking them to user program 1-29
  • 30. Von Neumann Bottleneck  Connection speed between a computer’s memory and its processor determines the speed of a computer  Program instructions often can be executed a lot faster than the above connection speed; the connection speed thus results in a bottleneck  Known as von Neumann bottleneck; it is the primary limiting factor in the speed of computers 1-30
  • 31. Pure Interpretation  No translation  Easier implementation of programs (run- time errors can easily and immediately displayed)  Slower execution (10 to 100 times slower than compiled programs)  Often requires more space  Significant comeback with some Web scripting languages (e.g., JavaScript)  Becoming rare on high-level languages 1-31
  • 33. Hybrid Implementation Systems  A compromise between compilers and pure interpreters  A high-level language program is translated to an intermediate language that allows easy interpretation  Faster than pure interpretation  Examples  Perl programs are partially compiled to detect errors before interpretation  Initial implementations of Java were hybrid; the intermediate form, byte code, provides portability to any machine that has a byte code interpreter and a run-time system (together, these are called Java Virtual Machine) 1-33
  • 35. Just-in-Time Implementation Systems  Initially translate programs to an intermediate language  Then compile intermediate language into machine code  Machine code version is kept for subsequent calls  JIT systems are widely used for Java programs  .NET languages are implemented with a JIT system 1-35
  • 36. Preprocessors  Preprocessor macros (instructions) are commonly used to specify that code from another file is to be included  A preprocessor processes a program immediately before the program is compiled to expand embedded preprocessor macros  A well-known example: C preprocessor  expands #include, #define, and similar macros 1-36
  • 37. Programming Environments  The collection of tools used in software development  UNIX  An older operating system and tool collection  Nowadays often used through a GUI (e.g., CDE, KDE, or GNOME) that run on top of UNIX  Borland JBuilder  An integrated development environment for Java  Microsoft Visual Studio.NET  A large, complex visual environment  Used to program in C#, Visual BASIC.NET, Jscript, J#, or C++ 1-37
  • 38. Summary  The study of programming languages is valuable for a number of reasons:  Increase our capacity to use different constructs  Enable us to choose languages more intelligently  Makes learning new languages easier  Most important criteria for evaluating programming languages include:  Readability, writability, reliability, cost  Major influences on language design have been machine architecture and software development methodologies  The major methods of implementing programming languages are: compilation, pure interpretation, and hybrid implementation 1-38
  • 39. 39 TIOBI Index  The TIOBE Programming Community index is an indicator of the popularity of programming languages.  The index is updated once a month.  The ratings are based on the number of skilled engineers world-wide, courses and third-party vendors.  Popular search engines such as Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube and Baidu are used to calculate the ratings.  It is important to note that the TIOBE index is not about the best programming language or the language in which most lines of code have been written.  https://www.tiobe.com/tiobe-index/
  • 40. 40