Principles - of - Programming - Languages - Presentation - LECTURE 1,2
Principles - of - Programming - Languages - Presentation - LECTURE 1,2
Languages
LECTURE -1
Introduction to Key Concepts
(Preliminaries)
Presented by: Kalyani Vidhate
COEP Technological University, Pune
Introduction to Programming
language
Language is a mode of communication that is used to
share ideas, opinions with each other.
70s:
• High level and structured programming: Pascal
• Systems programming: C, modula-2
• Logical programming: Prolog
• Improvement of functional programming: Scheme
History of Programming Languages
80s :
• Development of functional programming: ML, Miranda
• Need for reliability and maintainability: Ada
• Object-oriented programming: Smalltalk, C++
90s:
• Fourth-generation languages
• Productivity tools (such as spreadsheets)
• Visual languages : Delphi
• Scripting languages : Perl
• Expert systems shells
• Network computing: Java
Programming Domains
1. Scientific Applications: 2. Business Applications:
● Emphasis on numerical and scientific ● Focus on data processing, report
computations. generation, and transaction processing.
● Extensive use of floating-point arithmetic. ● High reliability and maintainability.
● High-performance requirements.
Languages: Languages:
Declarative Paradigm:
● Unified Memory:
○ A single read/write memory is used for both
data and instructions.
○ Memory locations are utilized for storing
data and instructions interchangeably.
● Addressable Memory:
○ Memory consists of multiple locations, each
with a unique address.
○ Any memory location can be addressed and
accessed by its address, allowing flexible
data and instruction storage and retrieval.
● Sequential Execution:
○ Instructions are typically executed in a
sequential order (one after the other).
○ Conditional jumps and branches are used to
change the execution sequence as required.
○ For example, if executing instructions from
line 1 to line 10, a condition might require
jumping to line 50 instead of proceeding to
line 11.
Architecture Components:
● Buses
● Input Device: Feeds data and instructions into the
system.
● Central Processing Unit (CPU)
● Output Device: Receives processed data from the CPU
and presents it to the user or another system.
Harvard Architecture:
Data and Code Separation:
Features:
Features:
● Varied Implementations: Microarchitecture can vary significantly based on technology and design goals, such
as performance, power consumption, and cost.
● Execution Process: The typical microarchitecture execution process involves reading instructions, decoding
them, identifying parallel data, executing instructions, and generating output.
● Pipeline and Parallelism: Some microarchitectures support pipelining, where multiple instruction phases are
overlapped, and parallel execution units, enhancing performance by executing multiple instructions
simultaneously.
● Execution Units: Essential components like ALUs, FPUs, load/store units, and branch predictors are included to
perform various operations.
Applications:
● Widely used in designing microprocessors and microcontrollers, which are the core of many computing
devices.
● Microarchitecture designs often overlap multiple instructions during execution, although some designs might
process instructions sequentially.
Considerations:
● Important factors in microarchitecture design include the size, latency, and connectivity of memories and
caches, which affect overall system performance.
Memory Hierarchy
The memory hierarchy is the memory
organization of a particular system to
balance its overall cost and performance.
As a system has several layers of memory
devices, all having different performance
rates and usage, they vary greatly in size and
access time as compared to one another.
Registers Description
Self- study