You are on page 1of 7

LESSON 1- HISTORY OD PROGRAMMING Grace Murray Hopper - It’s an often-repeated story

that computer pioneer and mathematician Grace


1842 - 1843
Murray Hopper (1906-1992) coined the term “bug” to
AUGUSTA ADA KING (Countess of Lovelace). – Was an refer to mysterious computer failures.
English mathematician and author known for her work
- COBOL – Common Business–Oriented
on Charles Babbage's proposed General-Purpose
Language - was created as part of the US
Mechanical computer, The ANALYTICAL ENGINE.
Department of Defense's effort to create a
- World’s First Computer Programmer portable programming language for data
processing.
1890
1970
Herman Hollerith - An American Businessman and
inventor Statistician Developed an Electromechanical Niklaus Wirth – Swiss Computer Scientist
Tabulating Machine for Punch Cards (which Helps to
- PASCAL and pioneered several classic
compress information and Keep records later).
topics in Software Engineering
- U.S. CENSUS DATA ON PUNCH CARDS
1972
1943 - 1945
Dennis Ritchie - American Computer Scientist
Konrad Zuse – Developed PLANKALKUL (PL) for
- Created the C Programming Language
German Z3
- Created the Unix Operating System and B
- PLANKALKUL – is an early high-level Programming Language with Ken
programming language to be designed for Thompson
a computer.
1983
1949
Bjarne Stroustrup – Danish Computer Scientist
John Mauchly – American Physicist who teamed up
- Created C++ Programming Language
with J. PRESPER ECKERT designed ENIAC.
Brad Cox and Tom Love – Co-creator of the Objective C
- ENIAC – First General-Purpose Electronic
Programming Language
Digital Computer.
- EDVAC, BINAC, UNIVACI, the First BRAD COX – American Computer Scientist and
Commercial Computer in the United System Architect who works in software engineering
States and Object-oriented Software Development.

1952 TOM LOVE – Businessman

Alick Glennie – British Computer Scientist 1987

- Known for developing AUTOCODE Larry Wall – American Computer Programmer and
(considered the first computer compiler) Linguist
- Worked with ALAN TURING
- First Released PERL 1.0 for Unix Operating
- The Manchester MARK 1
Systems.
1957 - The first version is an intuitive and easily
coded language for Scanning, Extracting,
John Backus – American Computer Scientist
and Printing information from Text Files.
- Fortran – Implemented and Invented by
1991
the Team he led.
- Backus – Naur Form – The first widely Guido Van Rossum – Dutch Programmer, He was the
used High-Level Programming Language. A BENEVOLENT DICTATOR FOR LIFE.
widely used notation for defining Formal
- Created Python Programming Language
Language Syntax.
1993
1959
Yukihiro Matsumoto – Japanese Computer Scientist - It has a Merits of very fast execution
and Software Programmer speed and efficient use of primary
memory.
- Chief Designer of the Ruby Programming
Language
- Matz’s Ruby Interpreter (Reference
Implementation)

1995

James Gosling – Canadian Computer Scientist,


Referred to as DR. Java. Has been with Sun
Microsystems since 1984 and is widely recognized as
the founder.

- Founder and Lead Developer of the JAVA


PROGRAMMING LANGUAGE

Rasmus Lerdorf – Danish – Canadian Programmer

- Co-authored and inspired the PHP


Scripting Language (Open-Source
b) Assembly Language – designing a program
Program)
programmer requires detailed knowledge of
Brendan Eich – American Technician, Co-founded the hardware specifications.
Mozilla Project and became the Chief Technical Officer - This language uses mnemonics code
and Chief Executive Officer (symbolic operation code like ‘ADD’ for
addition) in place of 0s and 1s. The
- Creator of JavaScript Programming program is converted into machine code
Language by the assembler. The resulting program is
referred to as an object code.
LESSON 2 – TYPES OF PROGRAMMING LANGUAGES

TYPES OF PROGRAMMING LANGUAGES

1. Low Level Language - a programming


language that provides little or no abstraction
to a computer's instruction set architecture - ASCII (American Standard Code for Information
language commands or functions closely Interchange) - Standard code for the exchange of
related to the processor's instructions. information between data processing systems, data
- This language is the most understandable communication systems, and related devices in the
language used by computers to perform United States. The ASCII character set consists of
its operations. control characters and graphic characters.
a) Machine Language – consists of strings of
2. High Level Language - Instructions in this
binary numbers and it is the only one
language are similar to human language or
language.
English-like words.
- Uses mathematical notations to perform
this task.
- High Level Language is easy to learn.
- Writing takes less time and bugs are easier
to maintain.
- Translation of different languages High
Level Language is converted into machine
language by one of the two different
languages translator programs: interpreter
or compiler.

c) Natural Language Programming (NLP)- is a


method of programming using oncology to
a) Procedural-Oriented Language - Procedural refer to sentences in a natural language such
programming is a methodology for solving a as English.
problem, determining the order of steps and - A structured document with contents,
the order of those steps to achieve a specific sections, and subsections to interpret
result or a specific program state. sentences creates an NLP document,
- These languages are designed to convey which is actually a computer program.
logic and problem-solving processes. This
includes languages like Pascal, Cobol, C,
Fortran, etc.

LESSON 3 – PROGRAMMING PARADIGMS

b) Problem-Oriented Language - A wide array of Programming Paradigms


problem-oriented languages has been - is a paradigmatic style of programming
developed, some of the principal ones being (compare with a methodology which is a
COBOL (Common Business-Oriented paradigmatic style of doing software
Language), FORTRAN (Formula Translation), engineering).
BASIC (Beginner’s All-Purpose Symbolic - provides a programmer's perspective on
Instruction Code), and Pascal. implementation. The relationship between
Objectives: programming paradigms and programming
languages can be complex since a
 Increase the speed of developing programs. programming language can support multiple
 Minimize the user’s effort to obtain paradigms.
information from computer. - paradigm is a basic style of computer
 Reduce errors while writing programs. programming. Paradigms differ in the
concepts and methods used to represent the
elements of a program (such as objects, 2. Procedural Approach - divides the work that a
functions, variables, and constraints). The program is supposed to perform into smaller
steps include a calculation (such as sub-tasks that are described individually in the
assignments, evaluation, suites, and data code. This leads to programming modules that
flows). can be used in other programs.
3. Modular Programming Model - goes a step
further, designing, developing, and testing
individual program components
independently of each other. Individual
modules are combined to create actual
software.

ADVANTAGES

1. Easy to read.
2. Relatively easy to learn.
3. Conceptual model (solution path) is very easy
for beginners to understand.
4. Characteristics of specific applications can be
taken into account.

DISADVANTAGES

1. Code quickly becomes very extensive and thus


Confusing.
2. Higher risk of errors when editing
TYPES OF PROGRAMMING PARADIGMS
3. Complex processes lead to "spaghetti code “
 IMPERATIVE PROGRAMMING PARADIGM 4. Optimization and extension are more difficult.
- Latin Imperare - command and the oldest Types of Imperative Programming
programming paradigm. Also, a clearly defined
sequence of instructions (step-by-step 1. Procedure programming – Procedural
instructions) to a computer. programming works with a process in terms of
- Represents computational processes as a set the machine model. This type has the ability
of sequential steps. to recycle code.
- The source code is a set of commands that 2. Object-oriented programming - a computer
indicate what and when the computer needs programming model that organizes software
to work to achieve the desired result. design around data, or objects, rather than
- The results of the imperative programs detail functions and logic.
how are to be obtained. What does the 3. Parallel processing approach - This approach is
description of inputs and “how” the output is a method of concurrently processing
generated. instructions. Parallel processing is useful when
running programs that perform complex
operations.
DIFFERENT IMPERATIVE PROGRAMMING
LANGUAGES
 DECLARATIVE PROGRAMMING PARADIGM
1. Structures Programming Style - Structured
- Represents the logic of a computation.
Programming Style - extends the basic
- A style of building the structure and elements
imperative principle with specific control
of computer programs that expresses the logic
structures: sequences, selection, and
of a computation without describing its
iteration. This approach is based on a desire to
control flow.
limit or completely avoid jump statements
- focuses on what the program should
that make imperatively designed code
accomplish.
unnecessarily complicated.
- It often considers programs as theories of a 1. Reusable. -Since the object contains both data
formal logic, and computations as deductions and functions that act on the data, the object
in that logic space. can be thought of as a stand-alone "box". This
- “What” of the solution is described directly. makes it easier to reuse code in new systems.
2. Maintainable. -Object-oriented paradigm
ADVANTAGES
techniques make code more maintainable. It
1. Short, efficient code. becomes easy to identify the source of the
2. Can be implemented using methods not yet errors because the objects are self-contained.
known at the time of programming. 3. Scalable. -Object-oriented applications are
3. Easy optimization as implementation is more scalable than their structured
controlled by an algorithm. programming roots. Because the object
4. Maintenance is possible independent of interface provides a schema for reusing
application development. objects. It makes it easier to replace old and
inefficient code with faster algorithms.
DISADVANTAGES
DISADVANTAGES
1. Sometimes hard to understand for external
people. 1. Object Oriented Programs are much larger
2. Based on an unfamiliar conceptual model for than other programs.
people (solution state). 2. Object Oriented Programs require a lot of
3. Hard to take the characteristics of individual work to Create.
applications into account during 3. Object Oriented Programs are slower than
programming. other programs, because of their size.

Types of Declarative Programming

1. Logic programming is mostly based on formal


logic. This programming shows details and
rules about problems within a system of
mathematical reason.
2. Functional programming is a procedure of
building computer software by forming pure
responsibilities preventing shared state and
mutable data.

 OBJECT-ORIENTED PROGRAMMING PARADIGM


- Represents the world as a system of
interacting objects.
- A paradigm in which real-world objects are
each viewed as separate entities having their  FUNCTIONAL PROGRAMMING PARADIGM
own state which is modified only by built-in - Represents the world as mathematical
procedures, called methods. functions and a subset of declarative
- Object-oriented programming (OOP) is a programming.
programming paradigm based on the concept - The process of creating software by
of "objects", which may contain data, in the composing better functions, avoiding shared
form of fields, often known as attributes; and format, variable data, and side effects.
code, in the form of procedures, often known ADVANTAGES
as methods.
- There is significant diversity of OOP languages, 1. Algebraically representable calculations.
but the most popular ones are class-based, 2. Provably correct algorithms.
meaning that objects are instances of classes, 3. Theoretical representations.
which typically also determine their type. 4. Stateless processes.

ADVANTAGES DISADVANTAGES
1. Difficult to scale up.
2. Type safety often lacking.
3. Limited to mathematical abstractions.

 MULTI PARADIGM
- A multi-paradigm programming language is a
programming language that supports more
than one programming paradigm.
- The design goal of such languages is to allow
programmers to use the most suitable
programming style and associated language
constructs for a given job.  INTERPRETED LANGUAGES
- Languages such as C++, Java, and Python are - is a programming language that is typically
multi-paradigm programming languages that implemented using interpreters and doesn’t
support object-oriented programming to a compile source code directly into machine
greater or lesser degree, typically in code ahead of execution. is a programming
combination with imperative, procedural language that is typically implemented using
programming. interpreters and doesn’t compile source code
directly into machine code ahead of
execution.
- The interpreter executes the program directly,
translating each statement into a sequence of
one or more subroutines, and then into
another language (often machine code).

LESSON 4 – COMPILED VS INTERPRETATIVE


“Scripting languages are written in one language and
LANGUAGES
interpreted within another program, for instance,
 COMPILED LANGUAGES - A compiled
JavaScript has to be incorporated within HTML which
language is a programming language that is
will then be interpreted by the Internet browser.
typically implemented using compilers.
Thus, programming languages run independently of a
ADVANTAGES
parent program, but scripting languages run inside
1. Programs compiled into native code at another program.”
compile time usually tend to be faster than
ADVANTAGES
those translated at run time, due to the
overhead of the translation process. 1. Flexibility. Smaller executable program
size.
DISADVANTAGES
2. Platform independence (Java's byte code)
1. Additional time is needed to complete the 3. Smaller executable program size.
entire compilation step before testing.
DISADVANTAGES
2. Platform dependence of the generated binary
code. 1. Slower execution compared to direct native
machine code execution.
2. Susceptible to Code injection attacks.
JIT COMPILATION

- JIT –JUST IN TIME compilation (Dynamic


Translation or Run time compilations).
- The Just-In-Time (JIT) compiler is a key
component of the OpenJ9 VM that improves
the performance of Java applications by
compiling platform-neutral Java bytecode into
native machine code at run time. Without the
JIT, the VM has to interpret the bytecodes
itself - a process that requires extra CPU and
memory.

How does JIT compilation works?

 Analyzing the code that is being executed


(usually bytecode).
 JIT making decisions which parts of the code
should be fully compiled to machine code
based on how often that piece of code is
being executed (and a few other factors).

aaas

You might also like