Understanding Programming Languages Using Python As An Example
Understanding Programming Languages Using Python As An Example
1. Interpreted,
2. Object-oriented,
4. Dynamic semantics.
Interpreted Versus Compiled Languages
• Compilers and interpreters take human-readable code and convert it to
computer-readable machine code.
• In a compiled language, the target machine directly translates the
program.
• In an interpreted language, the source code is not directly translated by
the target machine.
• Instead, a different program, aka the interpreter, reads and executes
the code.
• https://www.freecodecamp.org/news/compiled-versus-interpreted-lan
guages/#:~:text=In%20a%20compiled%20language%2C%20the,reads%
20and%20executes%20the%20code
.
Just in Time Compilation
• Just In Time Compilation, JIT, or Dynamic Translation, is compilation
that is being done during the execution of a program. Meaning, at run
time, as opposed to prior to execution.
• https://www.freecodecamp.org/news/compiled-versus-interpreted-la
nguages/#:~:text=In%20a%20compiled%20language%2C%20the,read
s%20and%20executes%20the%20code
.
Video Links
• https://www.youtube.com/watch?v=QXjU9qTsYCc
• https://www.youtube.com/watch?v=F64_bwahaWQ
• https://www.youtube.com/watch?v=5rn_MAspYFM
Optional – Map of Computer Science
• https://www.youtube.com/watch?v=SzJ46YA_RaA
• https://www.youtube.com/watch?v=OmJ-4B-mS-Y
• The Map of Quantum Computing | Quantum Computers Explained –
YouTube
• Who Has The Best Quantum Computer? – YouTube
Some Math: Lambda Calculus
• https://www.youtube.com/watch?v=eis11j_iGMs
• Essentials: Functional Programming's Y Combinator - Computerphile -
YouTube
• Lambda Functions - Mary had a little lambda by Anjana Vakil – YouTub
e
• Lambda Expressions & Anonymous Functions || Python Tutorial || Le
arn Python Programming – YouTube
• Top 5 mathematicians in the world – YouTube
• https://www.youtube.com/watch?v=BqRi2dGuOqc
Alan Turing
• https://www.youtube.com/watch?v=cDc6Gfo3egk
• Turing Machines Explained - Computerphile – YouTube
• https://www.youtube.com/watch?v=PLVCscCY4xI&t=23s
• https://www.youtube.com/watch?v=JDlda6K_XmI
• https://www.youtube.com/watch?v=-mdSvGUd0_c
• Flaw in the Enigma Code - Numberphile – YouTube
• How Alan Turing Cracked the Enigma Code Using Statistics – YouTube
• https://www.youtube.com/watch?v=HYNen5muQSE
• Cracking Enigma in 2021 - Computerphile - YouTube
• https://www.youtube.com/watch?v=4VROUIAF2Do
• https://www.youtube.com/watch?v=MGW_Qcqr9eQ
• https://www.youtube.com/watch?v=RPQD7-AOjMI
• https://www.youtube.com/watch?v=D0MD4sRHj1M
Theory of Computation (Automata Theory)
• Formal Language
• Computability theory
• Complexity theory.
Discrete Systems
• In theoretical computer science, a discrete system is a system with a countable
number of states. Discrete systems may be contrasted with continuous systems, which
may also be called analog systems. A final discrete system is often modeled with a
directed graph and is analyzed for correctness and complexity according to
computational theory. Because discrete systems have a countable number of states,
they may be described in precise mathematical models.
• A computer is a finite state machine that may be viewed as a discrete system. Because
computers are often used to model not only other discrete systems but continuous
systems as well, methods have been developed to represent real-world continuous
systems as discrete systems. One such method involves sampling a continuous signal
at discrete time intervals.
• https://en.wikipedia.org/wiki/Discrete_system#:~:text=In%20theoretical%20computer
%20science%2C%20a,also%20be%20called%20analog%20systems
.
Automata Theory
• Automata theory (also known as Theory Of Computation) is a
theoretical branch of Computer Science and Mathematics, which
mainly deals with the logic of computation with respect to simple
machines, referred to as automata.
• Automata enables scientists to understand how machines compute
the functions and solve problems. The main motivation behind
developing Automata Theory was to develop methods to describe and
analyze the dynamic behavior of discrete systems.
• https://www.geeksforgeeks.org/introduction-of-theory-of-computatio
n/
Formal Language
• In automata theory, a formal language is a set of strings of symbols drawn
from a finite alphabet. A formal language can be specified either by a set of
rules (such as regular expressions or a context-free grammar) that
generates the language, or by a formal machine that accepts (recognizes)
the language.
• A formal machine takes strings of symbols as input and outputs either “yes”
or “no.” A machine is said to accept a language if it says “yes” to all and only
those strings that are in the language. Alternatively, a language can be
defined as the set of strings for which a particular machine says “yes.”
• https://www.sciencedirect.com/topics/computer-science/formal-language#
:~:text=In%20automata%20theory%2C%20a%20formal,accepts%20(recogni
zes)%20the%20language
.
Formal Language
• Formal languages can be grouped into a series of successively larger classes known as
the Chomsky hierarchy.14 Most of the classes can be characterized in two ways: by the
types of rules that can be used to generate the set of strings, or by the type of formal
machine that is capable of recognizing the language. As we have seen, regular languages
are defined by using concatenation, alternation, and Kleene closure, and are recognized
by a scanner. Context-free languages are a proper superset of the regular languages.
They are defined by using concatenation, alternation, and recursion (which subsumes
Kleene closure), and are recognized by a parser. A scanner is a concrete realization of a
finite automaton, a type of formal machine. A parser is a concrete realization of a push-
down automaton. Just as context-free grammars add recursion to regular expressions,
push-down automata add a stack to the memory of a finite automaton.
• https://www.sciencedirect.com/topics/computer-science/formal-language#:~:text=In%2
0automata%20theory%2C%20a%20formal,accepts%20(recognizes)%20the%20language
.
Optional Theory of Computation - MIT
• https://www.youtube.com/watch?v=9syvZr-9xwk&list=PLUl4u3cNGP6
0_JNv2MmK3wkOt9syvfQWY
Computability theory
• https://www.britannica.com/topic/computational-complexity
Computational Complexity Video
• https://www.youtube.com/watch?v=YoZPTyGL2IQ
Computational Thinking
• https://www.youtube.com/watch?v=jjqgP9dpD1k
Optional - Theory of Computation Videos
• https://www.youtube.com/watch?v=nykOeWgQcHM&t=358s
• https://www.youtube.com/watch?v=ruOnPmI_40g
• https://www.youtube.com/watch?v=ylxYEuj9qfw
Optional – Quantum Computing – A quick
Reference
• https://www.youtube.com/watch?v=KhrTTqwKjn4
• https://www.youtube.com/watch?v=uLnGp1WTNFQ
• https://www.youtube.com/watch?v=9o-3HBvibYg
• https://www.youtube.com/watch?v=-UlxHPIEVqA
• https://www.youtube.com/watch?v=gAFAj3pzvAA&list=RDLVOmJ-4B-
mS-Y&index=27
Types of Programming Languages
• There are three main kinds of programming language:
• Machine language
• Assembly language
• High-level language
• https://study.com/academy/lesson/what-is-programming-
language-types-examples-quiz.html
Machine Language
• Sometimes referred to as machine code or object code, machine language is a
collection of binary digits or bits that the computer reads and interprets.
• Machine language is the only language a computer is capable of understanding.
• The exact machine language for a program or action can differ by operating
system. The specific operating system dictates how a compiler writes a program
or action into machine language.
• Below is an example of machine language (binary) for the text "Hello World."
• 01001000 01100101 01101100 01101100 01101111 00100000 01010111
01101111 01110010 01101100 01100100
• https://www.computerhope.com/jargon/m/machlang.htm
Assembly Language Versus Machine
Language
• Assembly Language versus Machine Language
• Assembly language is an intermediate programming language between a high-level programming
language and Machine language Machine language is a low-level language.
• Assembly language is English syntaxes, which is understood by the CPU after converting it to low-
level language by interpreter and compilers. Machine language is in the form of 0’s and1’s (binary
format). One showcases the true/on state while zero depicts the false/off state.
• Programmers can understand the assembly language, however, CPU cannot. CPU can directly
understand Machine language. No need of compiler or assembler.
• Assembly language is a set of instructions which are the same irrespective of platform.
Machine code differs platform to platform.
Optional – Assembly Language and
Computer Architecture
• https://www.youtube.com/watch?v=L1ung0wil9Y
High Level Languages
• High-level languages allow programmers to write instructions in a
language that is easier to understand than low-level languages.
• https://www.bbc.co.uk/bitesize/guides/z4cck2p/revision/1
High Level Versus Low Level Languages
• Python and C# are examples of high-level languages that are widely
used in education and in the workplace. A high-level language is one
that is user-oriented in that it has been designed to make it
straightforward for a programmer to convert an algorithm into
program code.
• https://isaaccomputerscience.org/topics/programming_languages?ex
amBoard=all&stage=all
Optional – High Level versus Low Level
Languages
• https://www.youtube.com/watch?v=bUWCD45qniA
• https://www.youtube.com/watch?v=o0wtxsdHdlw
Programming Paradigms
• Procedural Programming Language.
• Functional Programming Language.
• Object-Oriented Programming Language.
Procedural Programming Language
• A procedural language is a type of computer programming language that specifies a
series of well-structured steps and procedures within its programming context to
compose a program.
• It contains a systematic order of statements, functions and commands to complete a
computational task or program.
• Procedural languages are some of the common types of programming languages used
by script and software programmers. They make use of functions, conditional
statements, and variables to create programs that allow a computer to calculate and
display a desired output.
• Procedural language is also known as imperative language.
• https://www.techopedia.com/definition/8982/procedural-language
Functional Programming
• It is a way of thinking about software construction by creating pure functions.
• Value output in FP depends only on the arguments passed to the function.
• The foundation for Functional Programming is Lambda Calculus. It was developed in the
1930s for the functional application, definition, and recursion
• LISP was the first functional programming language. McCarthy designed it in 1960
• In the late 70’s researchers at the University of Edinburgh defined the ML(Meta Language)
• In the early 80’s Hope language adds algebraic data types for recursion and equational
reasoning
• In the year 2004 Innovation of Functional language ‘Scala.’
• https://www.guru99.com/functional-programming-tutorial.html#:~:text=Functional%20pr
ogramming%20(also%20called%20FP,rather%20than%20execution%20of%20statements
.
Examples of Functional Programming
Languages
• Haskell
• SML
• Clojure
• Scala
• Erlang
• Clean
• F#
• ML/OCaml Lisp / Scheme
• XSLT
• SQL
• Mathematica
• https://www.guru99.com/functional-programming-tutorial.html#:~:text=Functional%20programming%20(
also%20called%20FP,rather%20than%20execution%20of%20statements
.
Object Oriented Programming
• Object Oriented programming (OOP) is a programming paradigm that
relies on the concept of classes and objects. It is used to structure a
software program into simple, reusable pieces of code blueprints
(usually called classes), which are used to create individual instances
of objects. There are many object-oriented programming languages
including JavaScript, C++, Java, and Python.
• Classes define what attributes an instance of an object will have
• Classes also contain functions, called methods
• https://www.educative.io/blog/object-oriented-programming
Programming Paradigms Video
• https://www.youtube.com/watch?v=cgVVZMfLjEI
• https://www.youtube.com/watch?v=08CWw_VD45w
• https://www.youtube.com/watch?v=-DP1i2ZU9gk
• https://www.youtube.com/watch?v=m_MQYyJpIjg
• https://www.youtube.com/watch?v=Pg3UeB-5FdA&list=PLHNc57Ieb1
djk3Lc3nPY10BUQbhJ3fE0G&index=4
Who created Python
• Python laid its foundation in the late 1980s.
• The implementation of Python was started in the December 1989 by Guido Van Rossum
at CWI in Netherland.
• ABC programming language is said to be the predecessor of Python language which was
capable of Exception Handling and interfacing with Amoeba Operating System.
• ABC language.
• Modula-3
Optional – Interview with the creator of
Python - Guido Van Rossum
• https://www.youtube.com/watch?v=7kn7NtlV6g0
Optional – The Analysis of Algorithms –
Donald Knuth
• https://www.youtube.com/watch?v=2BdBfsXbST8