SlideShare una empresa de Scribd logo
1 de 25
Descargar para leer sin conexión
The epistemology of programming language paradigms
HaPoC 2013

F. Gobbo & M. Benini
Univ. of Torino & Univ. of Insubria
federico.gobbo@unito.it
marco.benini@uninsubria.it
$



BY:

C

CC

28-31 Oct, 2013

(1 of 23)
Modern computing in terms of information hiding
The whole history of modern computing can be seen in terms of
information hiding (Gobbo and Benini, 2013):
in the early days, there was only a machine-tailored assembler
letting programmers write one-to-one machine-readable
instructions;

(2 of 23)
Modern computing in terms of information hiding
The whole history of modern computing can be seen in terms of
information hiding (Gobbo and Benini, 2013):
in the early days, there was only a machine-tailored assembler
letting programmers write one-to-one machine-readable
instructions;
then, a fundamental LoA was introduced by Backus (1978) during
the design of Fortran and its implementation via a compiler, i.e.,
the computer program that translates the source code into
machine code: the Backus-Naur Form (BNF) abstracts over the
language, allowing to compute on its structures;

(2 of 23)
Modern computing in terms of information hiding
The whole history of modern computing can be seen in terms of
information hiding (Gobbo and Benini, 2013):
in the early days, there was only a machine-tailored assembler
letting programmers write one-to-one machine-readable
instructions;
then, a fundamental LoA was introduced by Backus (1978) during
the design of Fortran and its implementation via a compiler, i.e.,
the computer program that translates the source code into
machine code: the Backus-Naur Form (BNF) abstracts over the
language, allowing to compute on its structures;
the next LoA in programming has been introduced after Böhm and
Jacopini (1966), a result that permitted to hide the way the
machine interprets the flow of control, and to change it to
something which can be easily analysed mathematically.
(2 of 23)
The early days of Structured Programming

In the end of the 1960s it became evident that computer
programming ought to be more solid, both theoretically and
practically. In particular:
the structured program theorem by Böhm and Jacopini (1966)
the j’accuse against the goto statement by Dijkstra (1968)
in 1968 the NATO Science Committee introduced the concept of
‘software engineering’;
in 1968 an IFIP Working Group on ‘Programming Methodology’
was established.

(3 of 23)
Why Structured Programming

Software projects were becoming more complex, involving an
increasing number of programmers, as for instance the IBM
System/360 family and in particular the OS/360 (Brooks, 1995)
[IBM] did not like the popularity of my text; it stole the term
“Structured Programming” and under its auspices Harlan D.
Mills trivialized the original concept to the abolishment of the
goto statement. — Dijkstra (2001)
Structured Programming permitted to cope with this complexity,
essentially through best practices and new ad-hoc programming
languages (Ceruzzi, 2003). Here, we will analyse the latter.

(4 of 23)
Programmers and their view of the machine

From the point of view of a programmer, a program is the result of a
work whose aim is to instruct a (given) machine to solve a given
problem.
Usually, the machine is not just a piece of hardware, but is also
considered as an abstract machine, possibly equipped with an
operative system and a number of services, like a database, graphical
user interface, networking, etc.

(5 of 23)
How programmers choose a programming language

To simplify terminology, we will use the term solution to identify the
result of executing a program, and we will reserve the term algorithm
to identify what has to be coded as a program in a programming
language.
The choice of the programming language defines how the way to
achieve the solution is described to the machine. In this respect, the
many different programming languages have been justified because of
their ability to express the various problems and the ways to solve
them.

(6 of 23)
The Method of Levels of Abstraction

The method of LoAs (Floridi, 2008) can be used to describe
programming in terms of informational organisms (inforgs):
1. the programmer is the informational agent;
2. the machine is the artificial artifact — where the Levels of
Organisation (LoOs), i.e., the apparatuses, can be identified.
A software project is an infosphere, including processes and mutual
relations among the inforgs directed to the same goal.

(7 of 23)
Machine, solution, program

From the point of view of the programmer, the machine is described
by MO , a LoO which specifies what can be inspected of the machine,
and MA , a LoA that provides the description of how observables in
MO are organised and what instructions can be used to manipulate
them.
Similarly, the solution of the problem is ultimately specified by a pair
SA , SO , a (partial) LoA and the corresponding (partial) LoO which
should become (part of) PA and PO , the LoA and the LoO of the
program to be constructed.

(8 of 23)
The program in terms of Levels of abstraction

When the program will be completed, the pair formed by PO and PA
will be a new abstract machine that can be used to calculate the
solution of the original problem — the purpose of the programming
activity.
The algorithm the programmer has to devise is the mapping between
the level of abstraction P and the level M, which must become an
observable of M, in the form of an executable program.
The presence of a mapping is what distiguishes
computational-inforgs: in these inforgs, it is essential that the
artifact is computational, i.e., it is able to execute a coded algorithm.

(9 of 23)
Programming as the creation of a c-inforg

It is worth remarking that, in a sense, the act of programming creates
a new computational inforg from an existing one: from the pair
machine + programmer, the pair abstract machine + user arises
thanks to the programmer’s activity.
If the above cited mapping would be absent, the user would be unable
to use the machine to solve the problem, thus failing to fulfill the
purpose of programming!

(10 of 23)
Why levels of explanations

The choice of the programming language determines the
epistemological approach sustaining the programmers’ goals, which
is identified as a Level of Explanation (LoE) by Floridi (2008).
Unlike LoAs and LoOs, LoEs do not really pertain to the system,
rather they are an epistemological lens through which the
informational agent(s) approaches the goal of programming.

(11 of 23)
The epistemological priority of LoEs

As an example, modular arithmetic is a LoE a machine-level
programmer adopts to explain what some instructions of the central
processing unit.
It is worth noticing how some LoE of the would-be program are
known in advance to the programmer: in fact, the purpose the
program is written for is well-known to the programmer, and this
forms a LoE for the program, even before it exists as a LoA/LoO pair.
Thus, the LoE adopted by the programmer has an epistemological
priority on the LoA/LoO pair.

(12 of 23)
A taxonomy of programming languages

Paraphrasing the three-layered description of programming by
Hofstadter (1979):
the source code is the novel;
the programmer is the novelist;
the programming language is the literary genre of the novel.
To these levels we can add
the executable code is the book;
the machine is the narrator.
We can classify programming languages in various way; applying the
method of LoAs, we can find only three major paradigms, according
to the kind of information got hidden.

(13 of 23)
1. The procedural paradigm

Mainly because of the historical development of computational
machineries, current computers can be seen as structures of von
Neumann machines (Gobbo and Benini, 2013).
This class of languages abstracts over the structure of von Neumann
machines by allowing more data types than just computational
numbers and by allowing more or different instructions than those by
the bare machine.

(14 of 23)
The machine in the procedural paradigm

The essential structure of the von Neumann machine is retained: an
engine operating on a memory via a set of instructions from a fixed
set; the code is organised as a sequence of elementary instructions
each one modifying the state of the machine — the next instruction
to execute chosen according to the state:
most programming languages allow programs to perform actions
that change the values of variables, or which have other
irreversible effects (input or output, for example); we say that
these actions have side-effect — White (2004) in Floridi (2004)

(15 of 23)
2. The declarative paradigm

Historically, the von Neumann machine was nothing but one of the
possible models of computation introduced in the beginning of the
last century. Other models, like Church’s λ-calculus, Herbrand
universes, stable models, etc., where proposed and studied. To some
extent, the actual evolutions of these systems are much closer to
interesting problems, i.e., they allow to describe the problem almost
directly in the terms of their language.
Moreover, these systems have an instrinsic computational meaning,
which amounts to say that the very description of the problem hides
in itself the algorithm to solve it. The programming languages based
on these systems are called declarative.

(16 of 23)
The machine in the declarative paradigm

This class of programming languages, comprising logical languages as
Prolog or Answer Set Programming, but also the functional languages
as ML or Haskell, abstracts over the very structure of the von
Neumann machine.
In fact, each language in this class provides an abstract machine
operating on a different computational model, perfectly described in
mathematical terms – sometimes before von Neumann’s. The
programming language contains some sort of simulator to enable the
execution of the code on a standard von Neumann architecture.

(17 of 23)
3. The object-oriented paradigm

Another approach is by the introduction of the concept of object,
which is conceived originally on a different LoE, philosophically based
on Leibniz’s monads and the subsequent adapted notions of 20th
century physics and biology (Kay, 1993).
In fact, the object-oriented paradigm abstracts over the organisation
of memory and state of a von Neumann architecture by putting a
layered structure of abstractions over them.

(18 of 23)
The machine in the object-oriented paradigm

One can consider each object-oriented class as a LoA over the
memory/state of the hosting machine, which is equipped with an
internal map (its implementation) and an external interface (its
LoA/LoO pair).
These classes are, in turn, the building blocks for further levels of
abstractions whose aim is to construct the PA /PO pair, i.e., the levels
of abstraction the program has to provide to fulfill its goal.

(19 of 23)
The relations between the three paradigms

It should be clear that the object-oriented paradigm is orthogonal
to the declarative paradigm: in fact, nothing prevents from
introducing layers of abstractions over a basically different
organisation of memory, like the database of clauses in Prolog, or the
heap of functions in Standard ML. And, of course, this has already
been done, in many different ways.
Also, these paradigms can realised in a different degree by a language:
for example, in LISP, the grandfather of functional languages, there is
an implicit state, while in most modern functional languages, the
state is explicit and very limited.

(20 of 23)
Observations
Thus, the gradients of applications of the previously exposed
paradigms allow to naturally place each existing programming
language in a multi-dimensional space. The fact that these
gradients are not necessarily of a quantitative nature is the deep
reason why philosophy and not engineering is the right discipline
wherein to analyse the principles of programming.
When dealing with really complex problems, which happens in most
contemporary software design, rarely a single language has the right
features to model the whole problem.
Probably, the universal language is an unreachable dream, as
hiding/showing some features is essential to solve specific problems
— and what to hide in a problem is exactly what one wish to expose
in another one.
(21 of 23)
Essential References
Backus, J. (1978), ‘The history of FORTRAN I, II, and III’, SIGPLAN Not.
13(8), 165–180.
Böhm, C. and Jacopini, G. (1966), ‘Flow diagrams, turing machines and languages with
only two formation rules’, Communications of the ACM 9(5), 366–371.
Brooks, Jr., F. P. (1995), The mythical man-month (anniversary ed.), Addison-Wesley
Longman Publishing Co., Inc., Boston, MA, USA.
Ceruzzi, P. (2003), A history of modern computing, History of computing, MIT Press.
Dijkstra, E. W. (1968), ‘Letters to the editor: go to statement considered harmful’,
Commun. ACM 11(3), 147–148.
Dijkstra, E. W. (2001), What led to "notes on structured programming". circulated
privately.
Floridi, L. (2008), ‘The method of levels of abstraction’, Minds Mach. 18, 303–329.
Floridi, L., ed. (2004), The Blackwell guide to the philosophy of computing and
information, Blackwell, London.
Gobbo, F. and Benini, M. (2013), ‘From ancient to modern computing: A history of
information hiding’, IEEE Annals of the History of Computing 99(PrePrints).
Hofstadter, D. R. (1979), Gödel, Escher, Bach: An Eternal Golden Braid, Basic Books,
New York.
Kay, A. C. (1993), ‘The early history of smalltalk’, SIGPLAN Not. 28(3), 69–95.
Lloyd, J. W. (1984), Foundations of logic programming, Springer-Verlag New York, Inc.,
New York, NY, USA.
White, G. (2004), The Philosophy of Computer Languages, in Floridi (2004), chapter 18.
(22 of 23)
Thanks for your attention!

Questions?
For proposals, ideas & comments:

federico.gobbo@unito.it & marco.benini@uninsubria.it

Download & share these slides here:
http:/federicogobbo.name/en/2013.html

(23 of 23)

$



BY:

C

CC

Federico Gobbo & Marco Benini 2013

Más contenido relacionado

La actualidad más candente

What can we know of computational inforgs?
What can we know of computational inforgs?What can we know of computational inforgs?
What can we know of computational inforgs?Federico Gobbo
 
Ppl for students unit 1,2 and 3
Ppl for students unit 1,2 and 3Ppl for students unit 1,2 and 3
Ppl for students unit 1,2 and 3Akshay Nagpurkar
 
Towards high performance computing(hpc) through parallel programming paradigm...
Towards high performance computing(hpc) through parallel programming paradigm...Towards high performance computing(hpc) through parallel programming paradigm...
Towards high performance computing(hpc) through parallel programming paradigm...ijpla
 
Mapping and visualization of source code a survey
Mapping and visualization of source code a surveyMapping and visualization of source code a survey
Mapping and visualization of source code a surveyNakul Sharma
 
A Performance Comparison Of C# 2013, Delphi Xe6, And Python 3.4 Languages
A Performance Comparison Of C# 2013, Delphi Xe6, And Python 3.4 LanguagesA Performance Comparison Of C# 2013, Delphi Xe6, And Python 3.4 Languages
A Performance Comparison Of C# 2013, Delphi Xe6, And Python 3.4 Languagesijpla
 
Software languages
Software languagesSoftware languages
Software languagesEelco Visser
 
Visualizing UML’s Sequence and Class Diagrams Using Graph-Based Clusters
Visualizing UML’s Sequence and   Class Diagrams Using Graph-Based Clusters  Visualizing UML’s Sequence and   Class Diagrams Using Graph-Based Clusters
Visualizing UML’s Sequence and Class Diagrams Using Graph-Based Clusters Nakul Sharma
 
Data analysis with R and Julia
Data analysis with R and JuliaData analysis with R and Julia
Data analysis with R and JuliaMark Tabladillo
 
Zhao huang deep sim deep learning code functional similarity
Zhao huang deep sim   deep learning code functional similarityZhao huang deep sim   deep learning code functional similarity
Zhao huang deep sim deep learning code functional similarityitrejos
 
De-virtualizing virtual Function Calls using various Type Analysis Technique...
De-virtualizing virtual Function Calls using various Type  Analysis Technique...De-virtualizing virtual Function Calls using various Type  Analysis Technique...
De-virtualizing virtual Function Calls using various Type Analysis Technique...IOSR Journals
 
C programming presentation(final)
C programming presentation(final)C programming presentation(final)
C programming presentation(final)aaravSingh41
 
Comparative Analysis of Transformer Based Pre-Trained NLP Models
Comparative Analysis of Transformer Based Pre-Trained NLP ModelsComparative Analysis of Transformer Based Pre-Trained NLP Models
Comparative Analysis of Transformer Based Pre-Trained NLP Modelssaurav singla
 
International journal of compiling
International journal of compilingInternational journal of compiling
International journal of compilingAndivann
 
Software effort estimation through clustering techniques of RBFN network
Software effort estimation through clustering techniques of RBFN networkSoftware effort estimation through clustering techniques of RBFN network
Software effort estimation through clustering techniques of RBFN networkIOSR Journals
 
Declare Your Language: What is a Compiler?
Declare Your Language: What is a Compiler?Declare Your Language: What is a Compiler?
Declare Your Language: What is a Compiler?Eelco Visser
 
Excitement introduction
Excitement introductionExcitement introduction
Excitement introductionPnina Lorman
 

La actualidad más candente (17)

What can we know of computational inforgs?
What can we know of computational inforgs?What can we know of computational inforgs?
What can we know of computational inforgs?
 
Krml203
Krml203Krml203
Krml203
 
Ppl for students unit 1,2 and 3
Ppl for students unit 1,2 and 3Ppl for students unit 1,2 and 3
Ppl for students unit 1,2 and 3
 
Towards high performance computing(hpc) through parallel programming paradigm...
Towards high performance computing(hpc) through parallel programming paradigm...Towards high performance computing(hpc) through parallel programming paradigm...
Towards high performance computing(hpc) through parallel programming paradigm...
 
Mapping and visualization of source code a survey
Mapping and visualization of source code a surveyMapping and visualization of source code a survey
Mapping and visualization of source code a survey
 
A Performance Comparison Of C# 2013, Delphi Xe6, And Python 3.4 Languages
A Performance Comparison Of C# 2013, Delphi Xe6, And Python 3.4 LanguagesA Performance Comparison Of C# 2013, Delphi Xe6, And Python 3.4 Languages
A Performance Comparison Of C# 2013, Delphi Xe6, And Python 3.4 Languages
 
Software languages
Software languagesSoftware languages
Software languages
 
Visualizing UML’s Sequence and Class Diagrams Using Graph-Based Clusters
Visualizing UML’s Sequence and   Class Diagrams Using Graph-Based Clusters  Visualizing UML’s Sequence and   Class Diagrams Using Graph-Based Clusters
Visualizing UML’s Sequence and Class Diagrams Using Graph-Based Clusters
 
Data analysis with R and Julia
Data analysis with R and JuliaData analysis with R and Julia
Data analysis with R and Julia
 
Zhao huang deep sim deep learning code functional similarity
Zhao huang deep sim   deep learning code functional similarityZhao huang deep sim   deep learning code functional similarity
Zhao huang deep sim deep learning code functional similarity
 
De-virtualizing virtual Function Calls using various Type Analysis Technique...
De-virtualizing virtual Function Calls using various Type  Analysis Technique...De-virtualizing virtual Function Calls using various Type  Analysis Technique...
De-virtualizing virtual Function Calls using various Type Analysis Technique...
 
C programming presentation(final)
C programming presentation(final)C programming presentation(final)
C programming presentation(final)
 
Comparative Analysis of Transformer Based Pre-Trained NLP Models
Comparative Analysis of Transformer Based Pre-Trained NLP ModelsComparative Analysis of Transformer Based Pre-Trained NLP Models
Comparative Analysis of Transformer Based Pre-Trained NLP Models
 
International journal of compiling
International journal of compilingInternational journal of compiling
International journal of compiling
 
Software effort estimation through clustering techniques of RBFN network
Software effort estimation through clustering techniques of RBFN networkSoftware effort estimation through clustering techniques of RBFN network
Software effort estimation through clustering techniques of RBFN network
 
Declare Your Language: What is a Compiler?
Declare Your Language: What is a Compiler?Declare Your Language: What is a Compiler?
Declare Your Language: What is a Compiler?
 
Excitement introduction
Excitement introductionExcitement introduction
Excitement introduction
 

Destacado

The Adoption of Public Urban Space as a Driving Force for Third Places
The Adoption of Public Urban Space as a Driving Force for Third PlacesThe Adoption of Public Urban Space as a Driving Force for Third Places
The Adoption of Public Urban Space as a Driving Force for Third PlacesFederico Gobbo
 
Il metodo diagonale di Cantor
Il metodo diagonale di CantorIl metodo diagonale di Cantor
Il metodo diagonale di CantorFederico Gobbo
 
Instrui interlingvistikon hodiaŭ
Instrui interlingvistikon hodiaŭInstrui interlingvistikon hodiaŭ
Instrui interlingvistikon hodiaŭFederico Gobbo
 
17 Il computer connesso -- 1
17 Il computer connesso -- 117 Il computer connesso -- 1
17 Il computer connesso -- 1Federico Gobbo
 
Fulmokurso de Esperanto
Fulmokurso de EsperantoFulmokurso de Esperanto
Fulmokurso de EsperantoFederico Gobbo
 
Kien estas iranta Esperantologio? Defioj kaj proponoj por la ĵusa estonteco
Kien estas iranta Esperantologio? Defioj kaj proponoj por la ĵusa estontecoKien estas iranta Esperantologio? Defioj kaj proponoj por la ĵusa estonteco
Kien estas iranta Esperantologio? Defioj kaj proponoj por la ĵusa estontecoFederico Gobbo
 
Modificare la rappresentazione linguistica: piemontese ed esperanto a confronto
Modificare la rappresentazione linguistica: piemontese ed esperanto a confrontoModificare la rappresentazione linguistica: piemontese ed esperanto a confronto
Modificare la rappresentazione linguistica: piemontese ed esperanto a confrontoFederico Gobbo
 
L’esperanto nelle origini dello strutturalismo linguistico: La storia ‘segret...
L’esperanto nelle origini dello strutturalismo linguistico: La storia ‘segret...L’esperanto nelle origini dello strutturalismo linguistico: La storia ‘segret...
L’esperanto nelle origini dello strutturalismo linguistico: La storia ‘segret...Federico Gobbo
 
08 Il computer come calcolatore - 2
08 Il computer come calcolatore - 208 Il computer come calcolatore - 2
08 Il computer come calcolatore - 2Federico Gobbo
 
04 Le origini del calcolo digitale
04 Le origini del calcolo digitale04 Le origini del calcolo digitale
04 Le origini del calcolo digitaleFederico Gobbo
 

Destacado (10)

The Adoption of Public Urban Space as a Driving Force for Third Places
The Adoption of Public Urban Space as a Driving Force for Third PlacesThe Adoption of Public Urban Space as a Driving Force for Third Places
The Adoption of Public Urban Space as a Driving Force for Third Places
 
Il metodo diagonale di Cantor
Il metodo diagonale di CantorIl metodo diagonale di Cantor
Il metodo diagonale di Cantor
 
Instrui interlingvistikon hodiaŭ
Instrui interlingvistikon hodiaŭInstrui interlingvistikon hodiaŭ
Instrui interlingvistikon hodiaŭ
 
17 Il computer connesso -- 1
17 Il computer connesso -- 117 Il computer connesso -- 1
17 Il computer connesso -- 1
 
Fulmokurso de Esperanto
Fulmokurso de EsperantoFulmokurso de Esperanto
Fulmokurso de Esperanto
 
Kien estas iranta Esperantologio? Defioj kaj proponoj por la ĵusa estonteco
Kien estas iranta Esperantologio? Defioj kaj proponoj por la ĵusa estontecoKien estas iranta Esperantologio? Defioj kaj proponoj por la ĵusa estonteco
Kien estas iranta Esperantologio? Defioj kaj proponoj por la ĵusa estonteco
 
Modificare la rappresentazione linguistica: piemontese ed esperanto a confronto
Modificare la rappresentazione linguistica: piemontese ed esperanto a confrontoModificare la rappresentazione linguistica: piemontese ed esperanto a confronto
Modificare la rappresentazione linguistica: piemontese ed esperanto a confronto
 
L’esperanto nelle origini dello strutturalismo linguistico: La storia ‘segret...
L’esperanto nelle origini dello strutturalismo linguistico: La storia ‘segret...L’esperanto nelle origini dello strutturalismo linguistico: La storia ‘segret...
L’esperanto nelle origini dello strutturalismo linguistico: La storia ‘segret...
 
08 Il computer come calcolatore - 2
08 Il computer come calcolatore - 208 Il computer come calcolatore - 2
08 Il computer come calcolatore - 2
 
04 Le origini del calcolo digitale
04 Le origini del calcolo digitale04 Le origini del calcolo digitale
04 Le origini del calcolo digitale
 

Similar a The epistemology of programming language paradigms

From requirements to ready to run
From requirements to ready to runFrom requirements to ready to run
From requirements to ready to runijfcstjournal
 
A Short Communication On Computer Programming Languages In Modern Era
A Short Communication On Computer Programming Languages In Modern EraA Short Communication On Computer Programming Languages In Modern Era
A Short Communication On Computer Programming Languages In Modern EraKatie Naple
 
PROGRAMMING LANGUAGES
PROGRAMMING LANGUAGESPROGRAMMING LANGUAGES
PROGRAMMING LANGUAGESABHINAV SINGH
 
Programming Languages An Intro
Programming Languages An IntroProgramming Languages An Intro
Programming Languages An IntroKimberly De Guzman
 
Key Features Of The Pseudo Code
Key Features Of The Pseudo CodeKey Features Of The Pseudo Code
Key Features Of The Pseudo CodeAngilina Jones
 
Computer Software and It's Development
Computer Software and It's DevelopmentComputer Software and It's Development
Computer Software and It's DevelopmentRabin BK
 
Compoutational Physics
Compoutational PhysicsCompoutational Physics
Compoutational PhysicsSaad Shaukat
 
Programing paradigm & implementation
Programing paradigm & implementationPrograming paradigm & implementation
Programing paradigm & implementationBilal Maqbool ツ
 
What is a computer
What is a computerWhat is a computer
What is a computerJagan Mohan
 
Introduction to software engineering
Introduction to software engineeringIntroduction to software engineering
Introduction to software engineeringGregory Herrera
 
computerprogramminglanguages-201216152310.pptx
computerprogramminglanguages-201216152310.pptxcomputerprogramminglanguages-201216152310.pptx
computerprogramminglanguages-201216152310.pptxSubramanian Mani
 
Computer program, computer languages, computer software
Computer program, computer languages, computer softwareComputer program, computer languages, computer software
Computer program, computer languages, computer softwareSweta Kumari Barnwal
 
The History of Programming.pptx
The History of Programming.pptxThe History of Programming.pptx
The History of Programming.pptxsheillakontor
 

Similar a The epistemology of programming language paradigms (20)

From requirements to ready to run
From requirements to ready to runFrom requirements to ready to run
From requirements to ready to run
 
A Short Communication On Computer Programming Languages In Modern Era
A Short Communication On Computer Programming Languages In Modern EraA Short Communication On Computer Programming Languages In Modern Era
A Short Communication On Computer Programming Languages In Modern Era
 
Lect 1
Lect 1Lect 1
Lect 1
 
PROGRAMMING LANGUAGES
PROGRAMMING LANGUAGESPROGRAMMING LANGUAGES
PROGRAMMING LANGUAGES
 
SYSTEM DEVELOPMENT
SYSTEM DEVELOPMENTSYSTEM DEVELOPMENT
SYSTEM DEVELOPMENT
 
Programming Languages An Intro
Programming Languages An IntroProgramming Languages An Intro
Programming Languages An Intro
 
Key Features Of The Pseudo Code
Key Features Of The Pseudo CodeKey Features Of The Pseudo Code
Key Features Of The Pseudo Code
 
Computer Software and It's Development
Computer Software and It's DevelopmentComputer Software and It's Development
Computer Software and It's Development
 
Compoutational Physics
Compoutational PhysicsCompoutational Physics
Compoutational Physics
 
Analysis Report
 Analysis Report  Analysis Report
Analysis Report
 
E0361038043
E0361038043E0361038043
E0361038043
 
Programming
ProgrammingProgramming
Programming
 
Programing paradigm & implementation
Programing paradigm & implementationPrograming paradigm & implementation
Programing paradigm & implementation
 
What is a computer
What is a computerWhat is a computer
What is a computer
 
Computer programming languages
Computer programming languagesComputer programming languages
Computer programming languages
 
Introduction to software engineering
Introduction to software engineeringIntroduction to software engineering
Introduction to software engineering
 
computerprogramminglanguages-201216152310.pptx
computerprogramminglanguages-201216152310.pptxcomputerprogramminglanguages-201216152310.pptx
computerprogramminglanguages-201216152310.pptx
 
Computer program, computer languages, computer software
Computer program, computer languages, computer softwareComputer program, computer languages, computer software
Computer program, computer languages, computer software
 
History Of C Essay
History Of C EssayHistory Of C Essay
History Of C Essay
 
The History of Programming.pptx
The History of Programming.pptxThe History of Programming.pptx
The History of Programming.pptx
 

Más de Federico Gobbo

Open Issues of Language Contestation in Italy
Open Issues of Language Contestation in ItalyOpen Issues of Language Contestation in Italy
Open Issues of Language Contestation in ItalyFederico Gobbo
 
Human-Machine Communication strategies in today’s Esperanto community of prac...
Human-Machine Communication strategies in today’s Esperanto community of prac...Human-Machine Communication strategies in today’s Esperanto community of prac...
Human-Machine Communication strategies in today’s Esperanto community of prac...Federico Gobbo
 
Esperanto as Lingua Receptiva / Esperanto Ricevema
Esperanto as Lingua Receptiva / Esperanto RicevemaEsperanto as Lingua Receptiva / Esperanto Ricevema
Esperanto as Lingua Receptiva / Esperanto RicevemaFederico Gobbo
 
L’utilizzo di lingue inventate come strumento di educazione interculturale in...
L’utilizzo di lingue inventate come strumento di educazione interculturale in...L’utilizzo di lingue inventate come strumento di educazione interculturale in...
L’utilizzo di lingue inventate come strumento di educazione interculturale in...Federico Gobbo
 
One species, many languages
One species, many languagesOne species, many languages
One species, many languagesFederico Gobbo
 
Una lingua comune per l'Europa?
Una lingua comune per l'Europa?Una lingua comune per l'Europa?
Una lingua comune per l'Europa?Federico Gobbo
 
Esperanto: el Eŭropa lulilo al disvastiĝo tra la tuta mondo
Esperanto: el Eŭropa lulilo al disvastiĝo tra la tuta mondoEsperanto: el Eŭropa lulilo al disvastiĝo tra la tuta mondo
Esperanto: el Eŭropa lulilo al disvastiĝo tra la tuta mondoFederico Gobbo
 
Reflecting upon the European Day of Languages
Reflecting upon the European Day of LanguagesReflecting upon the European Day of Languages
Reflecting upon the European Day of LanguagesFederico Gobbo
 
Interlinguistica ed esperantologia oggi: l’esperienza di Amsterdam
Interlinguistica ed esperantologia oggi: l’esperienza di AmsterdamInterlinguistica ed esperantologia oggi: l’esperienza di Amsterdam
Interlinguistica ed esperantologia oggi: l’esperienza di AmsterdamFederico Gobbo
 
Adpositional Argumentation: How Logic Originates In Natural Argumentative Dis...
Adpositional Argumentation: How Logic Originates In Natural Argumentative Dis...Adpositional Argumentation: How Logic Originates In Natural Argumentative Dis...
Adpositional Argumentation: How Logic Originates In Natural Argumentative Dis...Federico Gobbo
 
Complex Arguments in Adpositional Argumentation
Complex Arguments in Adpositional ArgumentationComplex Arguments in Adpositional Argumentation
Complex Arguments in Adpositional ArgumentationFederico Gobbo
 
Assessing linguistic unease to understand (socio)linguistic justice
Assessing linguistic unease to understand (socio)linguistic justiceAssessing linguistic unease to understand (socio)linguistic justice
Assessing linguistic unease to understand (socio)linguistic justiceFederico Gobbo
 
Lingua di contatto e mobilità: il caso dell'esperanto
Lingua di contatto e mobilità: il caso dell'esperantoLingua di contatto e mobilità: il caso dell'esperanto
Lingua di contatto e mobilità: il caso dell'esperantoFederico Gobbo
 
Le lingue di minoranza: il caso dell'esperanto
Le lingue di minoranza: il caso dell'esperantoLe lingue di minoranza: il caso dell'esperanto
Le lingue di minoranza: il caso dell'esperantoFederico Gobbo
 
The Religious Dimensions of the Esperanto Collective Identity
The Religious Dimensions of the Esperanto Collective IdentityThe Religious Dimensions of the Esperanto Collective Identity
The Religious Dimensions of the Esperanto Collective IdentityFederico Gobbo
 
I limiti dell'invenzione linguistica: la tipologia linguistica dall'esperanto...
I limiti dell'invenzione linguistica: la tipologia linguistica dall'esperanto...I limiti dell'invenzione linguistica: la tipologia linguistica dall'esperanto...
I limiti dell'invenzione linguistica: la tipologia linguistica dall'esperanto...Federico Gobbo
 
Sei definizioni in cerca di una disciplina - Interlinguistica tra comunicazio...
Sei definizioni in cerca di una disciplina - Interlinguistica tra comunicazio...Sei definizioni in cerca di una disciplina - Interlinguistica tra comunicazio...
Sei definizioni in cerca di una disciplina - Interlinguistica tra comunicazio...Federico Gobbo
 
Lingva Kafejo: Esperanto
Lingva Kafejo: EsperantoLingva Kafejo: Esperanto
Lingva Kafejo: EsperantoFederico Gobbo
 
Fare musica in esperanto : ieri, oggi, domani
Fare musica in esperanto : ieri, oggi, domaniFare musica in esperanto : ieri, oggi, domani
Fare musica in esperanto : ieri, oggi, domaniFederico Gobbo
 
Hollywood Languages: The Challenge of Interlinguistics in the New Millennium
Hollywood Languages: The Challenge of Interlinguistics in the New MillenniumHollywood Languages: The Challenge of Interlinguistics in the New Millennium
Hollywood Languages: The Challenge of Interlinguistics in the New MillenniumFederico Gobbo
 

Más de Federico Gobbo (20)

Open Issues of Language Contestation in Italy
Open Issues of Language Contestation in ItalyOpen Issues of Language Contestation in Italy
Open Issues of Language Contestation in Italy
 
Human-Machine Communication strategies in today’s Esperanto community of prac...
Human-Machine Communication strategies in today’s Esperanto community of prac...Human-Machine Communication strategies in today’s Esperanto community of prac...
Human-Machine Communication strategies in today’s Esperanto community of prac...
 
Esperanto as Lingua Receptiva / Esperanto Ricevema
Esperanto as Lingua Receptiva / Esperanto RicevemaEsperanto as Lingua Receptiva / Esperanto Ricevema
Esperanto as Lingua Receptiva / Esperanto Ricevema
 
L’utilizzo di lingue inventate come strumento di educazione interculturale in...
L’utilizzo di lingue inventate come strumento di educazione interculturale in...L’utilizzo di lingue inventate come strumento di educazione interculturale in...
L’utilizzo di lingue inventate come strumento di educazione interculturale in...
 
One species, many languages
One species, many languagesOne species, many languages
One species, many languages
 
Una lingua comune per l'Europa?
Una lingua comune per l'Europa?Una lingua comune per l'Europa?
Una lingua comune per l'Europa?
 
Esperanto: el Eŭropa lulilo al disvastiĝo tra la tuta mondo
Esperanto: el Eŭropa lulilo al disvastiĝo tra la tuta mondoEsperanto: el Eŭropa lulilo al disvastiĝo tra la tuta mondo
Esperanto: el Eŭropa lulilo al disvastiĝo tra la tuta mondo
 
Reflecting upon the European Day of Languages
Reflecting upon the European Day of LanguagesReflecting upon the European Day of Languages
Reflecting upon the European Day of Languages
 
Interlinguistica ed esperantologia oggi: l’esperienza di Amsterdam
Interlinguistica ed esperantologia oggi: l’esperienza di AmsterdamInterlinguistica ed esperantologia oggi: l’esperienza di Amsterdam
Interlinguistica ed esperantologia oggi: l’esperienza di Amsterdam
 
Adpositional Argumentation: How Logic Originates In Natural Argumentative Dis...
Adpositional Argumentation: How Logic Originates In Natural Argumentative Dis...Adpositional Argumentation: How Logic Originates In Natural Argumentative Dis...
Adpositional Argumentation: How Logic Originates In Natural Argumentative Dis...
 
Complex Arguments in Adpositional Argumentation
Complex Arguments in Adpositional ArgumentationComplex Arguments in Adpositional Argumentation
Complex Arguments in Adpositional Argumentation
 
Assessing linguistic unease to understand (socio)linguistic justice
Assessing linguistic unease to understand (socio)linguistic justiceAssessing linguistic unease to understand (socio)linguistic justice
Assessing linguistic unease to understand (socio)linguistic justice
 
Lingua di contatto e mobilità: il caso dell'esperanto
Lingua di contatto e mobilità: il caso dell'esperantoLingua di contatto e mobilità: il caso dell'esperanto
Lingua di contatto e mobilità: il caso dell'esperanto
 
Le lingue di minoranza: il caso dell'esperanto
Le lingue di minoranza: il caso dell'esperantoLe lingue di minoranza: il caso dell'esperanto
Le lingue di minoranza: il caso dell'esperanto
 
The Religious Dimensions of the Esperanto Collective Identity
The Religious Dimensions of the Esperanto Collective IdentityThe Religious Dimensions of the Esperanto Collective Identity
The Religious Dimensions of the Esperanto Collective Identity
 
I limiti dell'invenzione linguistica: la tipologia linguistica dall'esperanto...
I limiti dell'invenzione linguistica: la tipologia linguistica dall'esperanto...I limiti dell'invenzione linguistica: la tipologia linguistica dall'esperanto...
I limiti dell'invenzione linguistica: la tipologia linguistica dall'esperanto...
 
Sei definizioni in cerca di una disciplina - Interlinguistica tra comunicazio...
Sei definizioni in cerca di una disciplina - Interlinguistica tra comunicazio...Sei definizioni in cerca di una disciplina - Interlinguistica tra comunicazio...
Sei definizioni in cerca di una disciplina - Interlinguistica tra comunicazio...
 
Lingva Kafejo: Esperanto
Lingva Kafejo: EsperantoLingva Kafejo: Esperanto
Lingva Kafejo: Esperanto
 
Fare musica in esperanto : ieri, oggi, domani
Fare musica in esperanto : ieri, oggi, domaniFare musica in esperanto : ieri, oggi, domani
Fare musica in esperanto : ieri, oggi, domani
 
Hollywood Languages: The Challenge of Interlinguistics in the New Millennium
Hollywood Languages: The Challenge of Interlinguistics in the New MillenniumHollywood Languages: The Challenge of Interlinguistics in the New Millennium
Hollywood Languages: The Challenge of Interlinguistics in the New Millennium
 

Último

MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxMULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxAnupkumar Sharma
 
Global Lehigh Strategic Initiatives (without descriptions)
Global Lehigh Strategic Initiatives (without descriptions)Global Lehigh Strategic Initiatives (without descriptions)
Global Lehigh Strategic Initiatives (without descriptions)cama23
 
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...JhezDiaz1
 
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdfLike-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdfMr Bounab Samir
 
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxINTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxHumphrey A Beña
 
Culture Uniformity or Diversity IN SOCIOLOGY.pptx
Culture Uniformity or Diversity IN SOCIOLOGY.pptxCulture Uniformity or Diversity IN SOCIOLOGY.pptx
Culture Uniformity or Diversity IN SOCIOLOGY.pptxPoojaSen20
 
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdfVirtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdfErwinPantujan2
 
Choosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for ParentsChoosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for Parentsnavabharathschool99
 
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)lakshayb543
 
Karra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxKarra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxAshokKarra1
 
What is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPWhat is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPCeline George
 
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATIONTHEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATIONHumphrey A Beña
 
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...Postal Advocate Inc.
 
FILIPINO PSYCHology sikolohiyang pilipino
FILIPINO PSYCHology sikolohiyang pilipinoFILIPINO PSYCHology sikolohiyang pilipino
FILIPINO PSYCHology sikolohiyang pilipinojohnmickonozaleda
 
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfGrade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfJemuel Francisco
 
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTSGRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTSJoshuaGantuangco2
 
Proudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxProudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxthorishapillay1
 

Último (20)

MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxMULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
 
Global Lehigh Strategic Initiatives (without descriptions)
Global Lehigh Strategic Initiatives (without descriptions)Global Lehigh Strategic Initiatives (without descriptions)
Global Lehigh Strategic Initiatives (without descriptions)
 
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
 
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdfLike-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
 
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxINTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
 
Culture Uniformity or Diversity IN SOCIOLOGY.pptx
Culture Uniformity or Diversity IN SOCIOLOGY.pptxCulture Uniformity or Diversity IN SOCIOLOGY.pptx
Culture Uniformity or Diversity IN SOCIOLOGY.pptx
 
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdfVirtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
 
Choosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for ParentsChoosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for Parents
 
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptxYOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
 
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptxFINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
 
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
 
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
 
Karra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxKarra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptx
 
What is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPWhat is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERP
 
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATIONTHEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
 
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
 
FILIPINO PSYCHology sikolohiyang pilipino
FILIPINO PSYCHology sikolohiyang pilipinoFILIPINO PSYCHology sikolohiyang pilipino
FILIPINO PSYCHology sikolohiyang pilipino
 
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfGrade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
 
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTSGRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
 
Proudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxProudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptx
 

The epistemology of programming language paradigms

  • 1. The epistemology of programming language paradigms HaPoC 2013 F. Gobbo & M. Benini Univ. of Torino & Univ. of Insubria federico.gobbo@unito.it marco.benini@uninsubria.it $ BY: C CC 28-31 Oct, 2013 (1 of 23)
  • 2. Modern computing in terms of information hiding The whole history of modern computing can be seen in terms of information hiding (Gobbo and Benini, 2013): in the early days, there was only a machine-tailored assembler letting programmers write one-to-one machine-readable instructions; (2 of 23)
  • 3. Modern computing in terms of information hiding The whole history of modern computing can be seen in terms of information hiding (Gobbo and Benini, 2013): in the early days, there was only a machine-tailored assembler letting programmers write one-to-one machine-readable instructions; then, a fundamental LoA was introduced by Backus (1978) during the design of Fortran and its implementation via a compiler, i.e., the computer program that translates the source code into machine code: the Backus-Naur Form (BNF) abstracts over the language, allowing to compute on its structures; (2 of 23)
  • 4. Modern computing in terms of information hiding The whole history of modern computing can be seen in terms of information hiding (Gobbo and Benini, 2013): in the early days, there was only a machine-tailored assembler letting programmers write one-to-one machine-readable instructions; then, a fundamental LoA was introduced by Backus (1978) during the design of Fortran and its implementation via a compiler, i.e., the computer program that translates the source code into machine code: the Backus-Naur Form (BNF) abstracts over the language, allowing to compute on its structures; the next LoA in programming has been introduced after Böhm and Jacopini (1966), a result that permitted to hide the way the machine interprets the flow of control, and to change it to something which can be easily analysed mathematically. (2 of 23)
  • 5. The early days of Structured Programming In the end of the 1960s it became evident that computer programming ought to be more solid, both theoretically and practically. In particular: the structured program theorem by Böhm and Jacopini (1966) the j’accuse against the goto statement by Dijkstra (1968) in 1968 the NATO Science Committee introduced the concept of ‘software engineering’; in 1968 an IFIP Working Group on ‘Programming Methodology’ was established. (3 of 23)
  • 6. Why Structured Programming Software projects were becoming more complex, involving an increasing number of programmers, as for instance the IBM System/360 family and in particular the OS/360 (Brooks, 1995) [IBM] did not like the popularity of my text; it stole the term “Structured Programming” and under its auspices Harlan D. Mills trivialized the original concept to the abolishment of the goto statement. — Dijkstra (2001) Structured Programming permitted to cope with this complexity, essentially through best practices and new ad-hoc programming languages (Ceruzzi, 2003). Here, we will analyse the latter. (4 of 23)
  • 7. Programmers and their view of the machine From the point of view of a programmer, a program is the result of a work whose aim is to instruct a (given) machine to solve a given problem. Usually, the machine is not just a piece of hardware, but is also considered as an abstract machine, possibly equipped with an operative system and a number of services, like a database, graphical user interface, networking, etc. (5 of 23)
  • 8. How programmers choose a programming language To simplify terminology, we will use the term solution to identify the result of executing a program, and we will reserve the term algorithm to identify what has to be coded as a program in a programming language. The choice of the programming language defines how the way to achieve the solution is described to the machine. In this respect, the many different programming languages have been justified because of their ability to express the various problems and the ways to solve them. (6 of 23)
  • 9. The Method of Levels of Abstraction The method of LoAs (Floridi, 2008) can be used to describe programming in terms of informational organisms (inforgs): 1. the programmer is the informational agent; 2. the machine is the artificial artifact — where the Levels of Organisation (LoOs), i.e., the apparatuses, can be identified. A software project is an infosphere, including processes and mutual relations among the inforgs directed to the same goal. (7 of 23)
  • 10. Machine, solution, program From the point of view of the programmer, the machine is described by MO , a LoO which specifies what can be inspected of the machine, and MA , a LoA that provides the description of how observables in MO are organised and what instructions can be used to manipulate them. Similarly, the solution of the problem is ultimately specified by a pair SA , SO , a (partial) LoA and the corresponding (partial) LoO which should become (part of) PA and PO , the LoA and the LoO of the program to be constructed. (8 of 23)
  • 11. The program in terms of Levels of abstraction When the program will be completed, the pair formed by PO and PA will be a new abstract machine that can be used to calculate the solution of the original problem — the purpose of the programming activity. The algorithm the programmer has to devise is the mapping between the level of abstraction P and the level M, which must become an observable of M, in the form of an executable program. The presence of a mapping is what distiguishes computational-inforgs: in these inforgs, it is essential that the artifact is computational, i.e., it is able to execute a coded algorithm. (9 of 23)
  • 12. Programming as the creation of a c-inforg It is worth remarking that, in a sense, the act of programming creates a new computational inforg from an existing one: from the pair machine + programmer, the pair abstract machine + user arises thanks to the programmer’s activity. If the above cited mapping would be absent, the user would be unable to use the machine to solve the problem, thus failing to fulfill the purpose of programming! (10 of 23)
  • 13. Why levels of explanations The choice of the programming language determines the epistemological approach sustaining the programmers’ goals, which is identified as a Level of Explanation (LoE) by Floridi (2008). Unlike LoAs and LoOs, LoEs do not really pertain to the system, rather they are an epistemological lens through which the informational agent(s) approaches the goal of programming. (11 of 23)
  • 14. The epistemological priority of LoEs As an example, modular arithmetic is a LoE a machine-level programmer adopts to explain what some instructions of the central processing unit. It is worth noticing how some LoE of the would-be program are known in advance to the programmer: in fact, the purpose the program is written for is well-known to the programmer, and this forms a LoE for the program, even before it exists as a LoA/LoO pair. Thus, the LoE adopted by the programmer has an epistemological priority on the LoA/LoO pair. (12 of 23)
  • 15. A taxonomy of programming languages Paraphrasing the three-layered description of programming by Hofstadter (1979): the source code is the novel; the programmer is the novelist; the programming language is the literary genre of the novel. To these levels we can add the executable code is the book; the machine is the narrator. We can classify programming languages in various way; applying the method of LoAs, we can find only three major paradigms, according to the kind of information got hidden. (13 of 23)
  • 16. 1. The procedural paradigm Mainly because of the historical development of computational machineries, current computers can be seen as structures of von Neumann machines (Gobbo and Benini, 2013). This class of languages abstracts over the structure of von Neumann machines by allowing more data types than just computational numbers and by allowing more or different instructions than those by the bare machine. (14 of 23)
  • 17. The machine in the procedural paradigm The essential structure of the von Neumann machine is retained: an engine operating on a memory via a set of instructions from a fixed set; the code is organised as a sequence of elementary instructions each one modifying the state of the machine — the next instruction to execute chosen according to the state: most programming languages allow programs to perform actions that change the values of variables, or which have other irreversible effects (input or output, for example); we say that these actions have side-effect — White (2004) in Floridi (2004) (15 of 23)
  • 18. 2. The declarative paradigm Historically, the von Neumann machine was nothing but one of the possible models of computation introduced in the beginning of the last century. Other models, like Church’s λ-calculus, Herbrand universes, stable models, etc., where proposed and studied. To some extent, the actual evolutions of these systems are much closer to interesting problems, i.e., they allow to describe the problem almost directly in the terms of their language. Moreover, these systems have an instrinsic computational meaning, which amounts to say that the very description of the problem hides in itself the algorithm to solve it. The programming languages based on these systems are called declarative. (16 of 23)
  • 19. The machine in the declarative paradigm This class of programming languages, comprising logical languages as Prolog or Answer Set Programming, but also the functional languages as ML or Haskell, abstracts over the very structure of the von Neumann machine. In fact, each language in this class provides an abstract machine operating on a different computational model, perfectly described in mathematical terms – sometimes before von Neumann’s. The programming language contains some sort of simulator to enable the execution of the code on a standard von Neumann architecture. (17 of 23)
  • 20. 3. The object-oriented paradigm Another approach is by the introduction of the concept of object, which is conceived originally on a different LoE, philosophically based on Leibniz’s monads and the subsequent adapted notions of 20th century physics and biology (Kay, 1993). In fact, the object-oriented paradigm abstracts over the organisation of memory and state of a von Neumann architecture by putting a layered structure of abstractions over them. (18 of 23)
  • 21. The machine in the object-oriented paradigm One can consider each object-oriented class as a LoA over the memory/state of the hosting machine, which is equipped with an internal map (its implementation) and an external interface (its LoA/LoO pair). These classes are, in turn, the building blocks for further levels of abstractions whose aim is to construct the PA /PO pair, i.e., the levels of abstraction the program has to provide to fulfill its goal. (19 of 23)
  • 22. The relations between the three paradigms It should be clear that the object-oriented paradigm is orthogonal to the declarative paradigm: in fact, nothing prevents from introducing layers of abstractions over a basically different organisation of memory, like the database of clauses in Prolog, or the heap of functions in Standard ML. And, of course, this has already been done, in many different ways. Also, these paradigms can realised in a different degree by a language: for example, in LISP, the grandfather of functional languages, there is an implicit state, while in most modern functional languages, the state is explicit and very limited. (20 of 23)
  • 23. Observations Thus, the gradients of applications of the previously exposed paradigms allow to naturally place each existing programming language in a multi-dimensional space. The fact that these gradients are not necessarily of a quantitative nature is the deep reason why philosophy and not engineering is the right discipline wherein to analyse the principles of programming. When dealing with really complex problems, which happens in most contemporary software design, rarely a single language has the right features to model the whole problem. Probably, the universal language is an unreachable dream, as hiding/showing some features is essential to solve specific problems — and what to hide in a problem is exactly what one wish to expose in another one. (21 of 23)
  • 24. Essential References Backus, J. (1978), ‘The history of FORTRAN I, II, and III’, SIGPLAN Not. 13(8), 165–180. Böhm, C. and Jacopini, G. (1966), ‘Flow diagrams, turing machines and languages with only two formation rules’, Communications of the ACM 9(5), 366–371. Brooks, Jr., F. P. (1995), The mythical man-month (anniversary ed.), Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA. Ceruzzi, P. (2003), A history of modern computing, History of computing, MIT Press. Dijkstra, E. W. (1968), ‘Letters to the editor: go to statement considered harmful’, Commun. ACM 11(3), 147–148. Dijkstra, E. W. (2001), What led to "notes on structured programming". circulated privately. Floridi, L. (2008), ‘The method of levels of abstraction’, Minds Mach. 18, 303–329. Floridi, L., ed. (2004), The Blackwell guide to the philosophy of computing and information, Blackwell, London. Gobbo, F. and Benini, M. (2013), ‘From ancient to modern computing: A history of information hiding’, IEEE Annals of the History of Computing 99(PrePrints). Hofstadter, D. R. (1979), Gödel, Escher, Bach: An Eternal Golden Braid, Basic Books, New York. Kay, A. C. (1993), ‘The early history of smalltalk’, SIGPLAN Not. 28(3), 69–95. Lloyd, J. W. (1984), Foundations of logic programming, Springer-Verlag New York, Inc., New York, NY, USA. White, G. (2004), The Philosophy of Computer Languages, in Floridi (2004), chapter 18. (22 of 23)
  • 25. Thanks for your attention! Questions? For proposals, ideas & comments: federico.gobbo@unito.it & marco.benini@uninsubria.it Download & share these slides here: http:/federicogobbo.name/en/2013.html (23 of 23) $ BY: C CC Federico Gobbo & Marco Benini 2013