Software Engineering -
A philosophical activity
Tom Enden
endentom@gmail.com
Software Engineering -
A philosophical activity
???
Science vs. Humanities
Science vs. Humanities
Science vs. Humanities
Binary Thinking
Black White
“The computer may serve as a force to break down the line
between the two cultures.”
Pappert
A developer:
metaphysician with creation power
The Development Process
Where do
you start?
Requirement
Production
Goalstart design
What entities exist
in our system?
What are their
properties?
What do they do?
What is the
relationship
between them?
What is the correct
way to use them?
The Development Process
Goalstart design
Solve a problem
What entities exist?
What are their
properties?
What do they do?
What is the relationship
between them?
What is the correct way
to talk about them?
How did they come to
be?
The Philosophical Process
Goalstart METAPHYSICS
Provide a universal
understanding of
the world
Need to provide
answers
Philosopher Vs. Developer
Asks questions
about the world
Decides what
the world is
Scope: the World Scope: the Product
So… we ask the same questions.
Do we answer them
the same?
The problem of universals
The problem of universals
The problem of universals
The problem of universals
Plato’s Ideas
SANDWICHNESS REDNESS
Plato’s Ideas
1. There exist Ideas and Things
2. Ideas are eternal
3. Things can be created and destroyed
4. Things depend on Ideas
5. Ideas are models for Things
6. One Idea corresponds to many Things
7. The Ideas form a hierarchy
8. There is exactly one Idea which is at the top of the hierarchy
Object Oriented Programming
Car Class
Car Objects
Red
Ford
Mustang
Gasoline
Green
Toyota
Prius
Electricity
Blue
Volkswagen
Golf
Diesel
Plato’s Ideas
1. There exist Ideas and Things
2. Ideas are eternal
3. Things can be created and destroyed
4. Things depend on Ideas
5. Ideas are models for Things
6. One Idea corresponds to many Things
7. The Ideas form a hierarchy
8. There is exactly one Idea which is at the top of the hierarchy
1. There exist Classes and Objects
2. Classes are eternal
3. Objects can be created and destroyed
4. Objects depend on Classes
5. Classes are models for Objects
6. One Class corresponds to many Objects
7. The Classes form a hierarchy
8. There is exactly one Class which is at the top of the hierarchy
Object Oriented Programming
Source:
Did Plato Foresee
object oriented
programming? By
Wojciech Tylman
Nominalism
1. Universals aren’t real
2. There are only objects
Prototype-based OOP
1. There are no classes, only objects
2. Objects are created
a. Ex-nihilo
b. cloning
Source:
Did Plato Foresee
object oriented
programming? By
Wojciech Tylman
The Development Process
Goalstart design Test
TESTS
Setup
Exercise
Verify
Tractatus Logico-Philosophicus (L.Wittgenstein)
World
Language Thought
Tractatus (L.Wittgenstein)
“The world is the totality of facts,
not of things”
“The logical picture of the facts is
the thought”
“Propositions are truth-functions”
TESTS
Exercise
Proposition
FACT
Set the stage
The Development Process
Goalstart design Test Code
“Learn at least one new language every year.
Different languages solve the same problems in
different ways. By learning several different
approaches, you can help broaden your thinking”
The Pragmatic Programmer, Tip #8
Tractatus (L.Wittgenstein)
“The limits of my language mean
the limits of my world”
“The limits of our programming
languages mean the limit of our
imagination”
Harrison Ainsworth
Tractatus (L.Wittgenstein)
World
Language Thought
Ainsworth
“What can be designed at all can be designed precisely.
What is unknown we must leave uncoded”
Tractatus (L.Wittgenstein)
“What can be said at all can be said clearly;
and whereof one cannot speak thereof one must be silent”
Summary
The philosophical development Process
Goalstart design Test Code
Metaphysics
+ creation
power
PICTURES
+propositions
Solving a
problem
Within
limitations
Summary
- Software Engineering and philosophy are not mutually exclusive
- Software is limited
- Philosophy can inspire new ideas in software
Thank You!
tom_enden endenTom@gmail.com
1. Tractatus Logico-Philosophicus
2. Wittgenstein for programmers
3. Did Plato foresee OOP?
4. Hammock-driven-development
Sources
Icons
Math by hunotika from the Noun Project
learning tools by Cuby Design from the Noun Project
Guitar by parkjisun from the Noun Project
Football by David from the Noun Project
happy face by Ilaria Bernareggi from the Noun Project
painter by faisalovers from the Noun Project

Software engineering as a Philosophical activity