SlideShare a Scribd company logo
PRINCIPLES OF
PROGRAMMING LANGUAGES
1
2
1-3
CONCEPTS
• Introduction to syntax and semantics
• The General Problem of Describing Syntax
• Formal Methods of Describing Syntax
• Attribute Grammars
• Describing the Meanings of Programs:
Dynamic Semantics
1-4
❖ Reasons for Studying Concepts of
Programming Languages
● Increased ability to express ideas.
● Improved background for choosing appropriate
languages.
● Increased ability to learn new languages.
● Better understanding of significance of implementation.
● Better use of languages that are already known.
● Overall advancement of computing.
❖Programming Domains
• Scientific Applications
– Large numbers of floating point computations; use of
arrays.
– Example:Fortran.
• Business Applications
– Produce reports, use decimal numbers and
characters.
– Example:COBOL.
• Artificial intelligence
– Symbols rather than numbers manipulated; use of linked
lists.
– Example:LISP.
1-6
7
❖Programming Domains
● System programming
- Need effieciency because of continous use.
- Example:C
● Web Software
-Eclectic collection of languages:
markup(example:XHTML),scripting(example:PHP),
general-purpose(example:JAVA).
❖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-8
❖Evaluation Criteria: Readability
➔ Overall simplicity
◆ A manageable set of features and constructs.
◆ Minimal feature multiplicity .
◆ 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
➔ Data types
◆ Adequate predefined data types.
10
❖Evaluation Criteria:Readability
➔ Syntax considerations
-Identifier forms:flexible composition.
-Special words and methods of forming
compound statements.
-Form and meaning:self-descriptive
constructs,meaningful keywords.
1-10
❖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.
– Strength and number of operators and
predefined
functions.
1-11
❖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 require the use
of
“unnatural” approaches, and hence reduced
1-12
❖Evaluation Criteria: Cost
• Training programmers to use the 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-13
Evaluation Criteria: Others
• Portability
– The ease with which programs can be moved
from one implementation to another.
• Generality
– The applicability to a wide range of
applications.
• Well-definedness
– The completeness and precision of the
language’s official definition.
1-14
❖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-15
❖Computer Architecture Influence
• Well-known computer architecture: Von Neumann
• Imperative languages, 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
❖The Von Neumann Architecture
1-16
1-17
❖The Von Neumann Architecture
• Fetch-execute-cycle (on a von Neumann
architecture computer)
initialize the program counter
repeat forever
fetch the instruction pointed by the counter
increment the counter
decode the instruction
execute the instruction
end repeat
1-18
❖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-19
❖Language Categories
• Imperative
– Central features are variables, assignment statements, and iteration
– Include languages that support object-oriented programming
– Include scripting languages
– Include the visual languages
– Examples: C, Java, Perl, JavaScript, Visual BASIC .NET, C++
• 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
• Markup/programming hybrid
– Markup languages extended to support some programming
– Examples: JSTL, XSLT
1-20
❖Language Design Trade-Offs
• Reliability vs. cost of execution
– Example: Java demands all references to array elements be checked
for proper indexing, which leads to increased execution costs
• Readability vs. writability
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
– Example: C++ pointers are powerful and very flexible but are
unreliable
1-21
❖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
❖Layered View of Computer
The operating system
and language
implementation are
layered over
machine interface of
a computer
1-22
1-23
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
The Compilation Process
1-24
1-25
Additional Compilation Terminologies
• Load module (executable image): the user and
system code together
• Linking and loading: the process of collecting
system program units and linking them to a
user program
1-26
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 much
faster than the speed of the connection; the
connection speed thus results in a bottleneck
• Known as the von Neumann bottleneck; it is the
primary limiting factor in the speed of computers
1-27
Pure Interpretation
• No translation
• Easier implementation of programs (run-time errors can
easily and immediately be displayed)
• Slower execution (10 to 100 times slower than compiled
programs)
• Often requires more space
• Now rare for traditional high-level languages
• Significant comeback with some Web scripting languages
(e.g., JavaScript, PHP)
Pure Interpretation Process
1-28
1-29
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)
Hybrid Implementation Process
1-30
1-31
Just-in-Time Implementation Systems
• Initially translate programs to an intermediate language
• Then compile the intermediate language of the subprograms
into machine code when they are called
• 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-32
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-33
Programming Environments
• A 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
runs on top of UNIX
• Microsoft Visual Studio.NET
– A large, complex visual environment
• Used to build Web applications and non-Web applications in any .NET
language
• NetBeans
– Related to Visual Studio .NET, except for Web applications in Java
1-34
Programming Environments
• Zuse’s Plankalkül
• Minimal Hardware Programming: Pseudocodes
• The IBM 704 and Fortran
• Functional Programming: LISP
• The First Step Toward Sophistication: ALGOL 60
• Computerizing Business Records: COBOL
• The Beginnings of Timesharing: BASIC
1-35
Programming Environments
• Everything for Everybody: PL/I
• Two Early Dynamic Languages: APL and SNOBOL
• The Beginnings of Data Abstraction: SIMULA 67
• Orthogonal Design: ALGOL 68
• Some Early Descendants of the ALGOLs
• Programming Based on Logic: Prolog
• History's Largest Design Effort: Ada
1-36
Programming Environments
• Object-Oriented Programming: Smalltalk
• Combining Imperative ad Object-Oriented
Features: C++
• An Imperative-Based Object-Oriented
Language: Java
• Scripting Languages
• A C-Based Language for the New Millennium:
C#
• Markup/Programming Hybrid Languages

More Related Content

Similar to Principles of Intro to Programming Languages (20)

PPTX
unit-1(ppl notes) programing for problem.pptx
Pavani839789
 
PDF
Principles of programming languages. Detail notes
VIKAS SINGH BHADOURIA
 
PDF
Principles of programming languages .pdf
ssusera6e2c3
 
PPT
week1.ppt
nazimsattar
 
PDF
Computer programing 111 lecture 1
ITNet
 
PPTX
Unit1 principle of programming language
Vasavi College of Engg
 
PPTX
CSCorganization of programming languages
OluwafolakeOjo
 
PPT
PPL unit 1 syntax and semantics- evolution of programming language lexical an...
SARANYAM124686
 
PPT
Programming language design and implemenation
Ashwini Awatare
 
PPTX
Paradigms
Edward Blurock
 
PDF
Programing paradigm & implementation
Bilal Maqbool ツ
 
PPTX
Introduction To Computer Programming
Hussain Buksh
 
PDF
computer-science_engineering_principles-of-programming-languages_introduction...
AshutoshSharma874829
 
PDF
01
abel bucad
 
PPT
English de lenguaje de programacion
Villalba Griselda
 
PPTX
L1.1 Introduction to Programming Languages.pptx
shiblyrahman7
 
PDF
CS-321 Compiler Design computer engineering PPT.pdf
chauhanmr47
 
PPTX
Ch1 language design issue
Jigisha Pandya
 
PPTX
Plc part 1
Taymoor Nazmy
 
PPT
02-chapter-1.ppt
Joel Manio
 
unit-1(ppl notes) programing for problem.pptx
Pavani839789
 
Principles of programming languages. Detail notes
VIKAS SINGH BHADOURIA
 
Principles of programming languages .pdf
ssusera6e2c3
 
week1.ppt
nazimsattar
 
Computer programing 111 lecture 1
ITNet
 
Unit1 principle of programming language
Vasavi College of Engg
 
CSCorganization of programming languages
OluwafolakeOjo
 
PPL unit 1 syntax and semantics- evolution of programming language lexical an...
SARANYAM124686
 
Programming language design and implemenation
Ashwini Awatare
 
Paradigms
Edward Blurock
 
Programing paradigm & implementation
Bilal Maqbool ツ
 
Introduction To Computer Programming
Hussain Buksh
 
computer-science_engineering_principles-of-programming-languages_introduction...
AshutoshSharma874829
 
English de lenguaje de programacion
Villalba Griselda
 
L1.1 Introduction to Programming Languages.pptx
shiblyrahman7
 
CS-321 Compiler Design computer engineering PPT.pdf
chauhanmr47
 
Ch1 language design issue
Jigisha Pandya
 
Plc part 1
Taymoor Nazmy
 
02-chapter-1.ppt
Joel Manio
 

Recently uploaded (20)

PPTX
Powerful Uses of Data Analytics You Should Know
subhashenia
 
PPTX
apidays Helsinki & North 2025 - Agentic AI: A Friend or Foe?, Merja Kajava (A...
apidays
 
PPTX
apidays Singapore 2025 - From Data to Insights: Building AI-Powered Data APIs...
apidays
 
PPTX
SHREYAS25 INTERN-I,II,III PPT (1).pptx pre
swapnilherage
 
PDF
Driving Employee Engagement in a Hybrid World.pdf
Mia scott
 
PPTX
apidays Helsinki & North 2025 - APIs at Scale: Designing for Alignment, Trust...
apidays
 
PDF
Optimizing Large Language Models with vLLM and Related Tools.pdf
Tamanna36
 
PPTX
b6057ea5-8e8c-4415-90c0-ed8e9666ffcd.pptx
Anees487379
 
PDF
apidays Singapore 2025 - From API Intelligence to API Governance by Harsha Ch...
apidays
 
PDF
Research Methodology Overview Introduction
ayeshagul29594
 
PPTX
Feb 2021 Ransomware Recovery presentation.pptx
enginsayin1
 
PDF
OOPs with Java_unit2.pdf. sarthak bookkk
Sarthak964187
 
PDF
apidays Singapore 2025 - Building a Federated Future, Alex Szomora (GSMA)
apidays
 
PPTX
Listify-Intelligent-Voice-to-Catalog-Agent.pptx
nareshkottees
 
PDF
JavaScript - Good or Bad? Tips for Google Tag Manager
📊 Markus Baersch
 
PDF
A GraphRAG approach for Energy Efficiency Q&A
Marco Brambilla
 
PPTX
04_Tamás Marton_Intuitech .pptx_AI_Barometer_2025
FinTech Belgium
 
PDF
InformaticsPractices-MS - Google Docs.pdf
seshuashwin0829
 
PPT
Growth of Public Expendituuure_55423.ppt
NavyaDeora
 
PPT
tuberculosiship-2106031cyyfuftufufufivifviviv
AkshaiRam
 
Powerful Uses of Data Analytics You Should Know
subhashenia
 
apidays Helsinki & North 2025 - Agentic AI: A Friend or Foe?, Merja Kajava (A...
apidays
 
apidays Singapore 2025 - From Data to Insights: Building AI-Powered Data APIs...
apidays
 
SHREYAS25 INTERN-I,II,III PPT (1).pptx pre
swapnilherage
 
Driving Employee Engagement in a Hybrid World.pdf
Mia scott
 
apidays Helsinki & North 2025 - APIs at Scale: Designing for Alignment, Trust...
apidays
 
Optimizing Large Language Models with vLLM and Related Tools.pdf
Tamanna36
 
b6057ea5-8e8c-4415-90c0-ed8e9666ffcd.pptx
Anees487379
 
apidays Singapore 2025 - From API Intelligence to API Governance by Harsha Ch...
apidays
 
Research Methodology Overview Introduction
ayeshagul29594
 
Feb 2021 Ransomware Recovery presentation.pptx
enginsayin1
 
OOPs with Java_unit2.pdf. sarthak bookkk
Sarthak964187
 
apidays Singapore 2025 - Building a Federated Future, Alex Szomora (GSMA)
apidays
 
Listify-Intelligent-Voice-to-Catalog-Agent.pptx
nareshkottees
 
JavaScript - Good or Bad? Tips for Google Tag Manager
📊 Markus Baersch
 
A GraphRAG approach for Energy Efficiency Q&A
Marco Brambilla
 
04_Tamás Marton_Intuitech .pptx_AI_Barometer_2025
FinTech Belgium
 
InformaticsPractices-MS - Google Docs.pdf
seshuashwin0829
 
Growth of Public Expendituuure_55423.ppt
NavyaDeora
 
tuberculosiship-2106031cyyfuftufufufivifviviv
AkshaiRam
 
Ad

Principles of Intro to Programming Languages

  • 2. 2
  • 3. 1-3 CONCEPTS • Introduction to syntax and semantics • The General Problem of Describing Syntax • Formal Methods of Describing Syntax • Attribute Grammars • Describing the Meanings of Programs: Dynamic Semantics
  • 4. 1-4 ❖ Reasons for Studying Concepts of Programming Languages ● Increased ability to express ideas. ● Improved background for choosing appropriate languages. ● Increased ability to learn new languages. ● Better understanding of significance of implementation. ● Better use of languages that are already known. ● Overall advancement of computing.
  • 5. ❖Programming Domains • Scientific Applications – Large numbers of floating point computations; use of arrays. – Example:Fortran. • Business Applications – Produce reports, use decimal numbers and characters. – Example:COBOL. • Artificial intelligence – Symbols rather than numbers manipulated; use of linked lists. – Example:LISP. 1-6
  • 6. 7 ❖Programming Domains ● System programming - Need effieciency because of continous use. - Example:C ● Web Software -Eclectic collection of languages: markup(example:XHTML),scripting(example:PHP), general-purpose(example:JAVA).
  • 7. ❖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-8
  • 8. ❖Evaluation Criteria: Readability ➔ Overall simplicity ◆ A manageable set of features and constructs. ◆ Minimal feature multiplicity . ◆ 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 ➔ Data types ◆ Adequate predefined data types.
  • 9. 10 ❖Evaluation Criteria:Readability ➔ Syntax considerations -Identifier forms:flexible composition. -Special words and methods of forming compound statements. -Form and meaning:self-descriptive constructs,meaningful keywords.
  • 10. 1-10 ❖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. – Strength and number of operators and predefined functions.
  • 11. 1-11 ❖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 require the use of “unnatural” approaches, and hence reduced
  • 12. 1-12 ❖Evaluation Criteria: Cost • Training programmers to use the 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
  • 13. 1-13 Evaluation Criteria: Others • Portability – The ease with which programs can be moved from one implementation to another. • Generality – The applicability to a wide range of applications. • Well-definedness – The completeness and precision of the language’s official definition.
  • 14. 1-14 ❖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
  • 15. 1-15 ❖Computer Architecture Influence • Well-known computer architecture: Von Neumann • Imperative languages, 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
  • 16. ❖The Von Neumann Architecture 1-16
  • 17. 1-17 ❖The Von Neumann Architecture • Fetch-execute-cycle (on a von Neumann architecture computer) initialize the program counter repeat forever fetch the instruction pointed by the counter increment the counter decode the instruction execute the instruction end repeat
  • 18. 1-18 ❖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
  • 19. 1-19 ❖Language Categories • Imperative – Central features are variables, assignment statements, and iteration – Include languages that support object-oriented programming – Include scripting languages – Include the visual languages – Examples: C, Java, Perl, JavaScript, Visual BASIC .NET, C++ • 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 • Markup/programming hybrid – Markup languages extended to support some programming – Examples: JSTL, XSLT
  • 20. 1-20 ❖Language Design Trade-Offs • Reliability vs. cost of execution – Example: Java demands all references to array elements be checked for proper indexing, which leads to increased execution costs • Readability vs. writability 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 – Example: C++ pointers are powerful and very flexible but are unreliable
  • 21. 1-21 ❖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
  • 22. ❖Layered View of Computer The operating system and language implementation are layered over machine interface of a computer 1-22
  • 23. 1-23 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
  • 25. 1-25 Additional Compilation Terminologies • Load module (executable image): the user and system code together • Linking and loading: the process of collecting system program units and linking them to a user program
  • 26. 1-26 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 much faster than the speed of the connection; the connection speed thus results in a bottleneck • Known as the von Neumann bottleneck; it is the primary limiting factor in the speed of computers
  • 27. 1-27 Pure Interpretation • No translation • Easier implementation of programs (run-time errors can easily and immediately be displayed) • Slower execution (10 to 100 times slower than compiled programs) • Often requires more space • Now rare for traditional high-level languages • Significant comeback with some Web scripting languages (e.g., JavaScript, PHP)
  • 29. 1-29 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)
  • 31. 1-31 Just-in-Time Implementation Systems • Initially translate programs to an intermediate language • Then compile the intermediate language of the subprograms into machine code when they are called • Machine code version is kept for subsequent calls • JIT systems are widely used for Java programs • .NET languages are implemented with a JIT system
  • 32. 1-32 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
  • 33. 1-33 Programming Environments • A 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 runs on top of UNIX • Microsoft Visual Studio.NET – A large, complex visual environment • Used to build Web applications and non-Web applications in any .NET language • NetBeans – Related to Visual Studio .NET, except for Web applications in Java
  • 34. 1-34 Programming Environments • Zuse’s Plankalkül • Minimal Hardware Programming: Pseudocodes • The IBM 704 and Fortran • Functional Programming: LISP • The First Step Toward Sophistication: ALGOL 60 • Computerizing Business Records: COBOL • The Beginnings of Timesharing: BASIC
  • 35. 1-35 Programming Environments • Everything for Everybody: PL/I • Two Early Dynamic Languages: APL and SNOBOL • The Beginnings of Data Abstraction: SIMULA 67 • Orthogonal Design: ALGOL 68 • Some Early Descendants of the ALGOLs • Programming Based on Logic: Prolog • History's Largest Design Effort: Ada
  • 36. 1-36 Programming Environments • Object-Oriented Programming: Smalltalk • Combining Imperative ad Object-Oriented Features: C++ • An Imperative-Based Object-Oriented Language: Java • Scripting Languages • A C-Based Language for the New Millennium: C# • Markup/Programming Hybrid Languages