SlideShare a Scribd company logo
1 of 26
Download to read offline
Εισαγωγή στον Υπολογισμό
Μια ιστορική αναδρομή
Τσαγκατάκης Γιάννης
Msc in Informatics & Multimedia
Department of Informatics Engineering TEI of Crete
Τι είναι η
Επιστήμη Υπολογιστών
Computer Science ?
3
Τι είναι επιστήμη των υπολογιστών ?
Lecture 1A | MIT 6.001 Structure and Interpretation, 1986
SICP Videos
Δεν έχει να κάνει με υπολογιστές
It’s not about the computers
Δεν έχει να κάνει με επιστήμη
It’s not about Science
Δεν έχει να κάνει με υπολογιστές με την
ίδια έννοια που η Γεωμετρία δεν έχει
σχέση με τοπογραφικά όργανα.
And it's not about computers in the same sense that
geometry is not really about using surveying
instruments.
Η λέξη γεωμετρία σημαίνει ακριβώς
αυτό μέτρηση της γης με τοπογραφικά
όργανα, δηλαδή τοπογραφία .
In fact, there's a lot of commonality between
computer science and geometry. Geometry, first of
all, is another subject with a lousy name. The name
comes from Gaia, meaning the Earth, and metron,
meaning to measure. Geometry originally meant
measuring the Earth or surveying.
4
What is Computer Science ?
Lecture 1A | MIT 6.001 Structure and Interpretation, 1986
SICP Videos
Τώρα ο λόγος που πιστεύουμε ότι η
επιστήμη των υπολογιστών έχει να
κάνει με υπολογιστές, είναι ο ίδιος
λόγος για τον οποίο οι αρχαίοι
Αιγύπτιοι πίστευαν ότι η γεωμετρία
έχει να κάνει με τοπογραφικά όργανα.
Now, the reason that we think
computer science is about computers
is pretty much the same reason that
the Egyptians thought geometry was
about surveying instruments.
Δείτε το video
Δεν έχει να κάνει με υπολογιστές
It’s not about the computers
Δεν έχει να κάνει με επιστήμη
It’s not about Science
Τι είναι ένας
Υπολογιστής
(Computer)
?
6
Ο μηχανισμός των Αντικυθύρων
Antikythera mechanism
Είμαι ένας υπολογιστής;
7
Υπολογιστές με νερό
Water Computation
Bill Phillips Moniac Economic Analog Computer
Making Money Flow: The MONIAC
Bill Phillips Moniac Economic Analog Computer
Created in 1949
Ο MONIAC
(Monetary National
Income Analogue
Computer) ήταν
ένας αναλογικός
υπολογιστής που
χρησιμοποιούσε
fluidic logic για
προσομοίωση
οικονομικών
μοντέλων.
Δείτε το video
8
Εμβαδόμετρα και ολοκληρωτές
Planimeters and Integrators
1944
1937
9
Βιολογικοί Υπολογιστές Biological Computers
Φυσικοί Υπολογιστές Physical Computers
Slime Mold and
Tokyo Subway system
Tide prediction Machine
Αλλά αυτά λύνουν
μόνο συγκεκριμένα
Προβλήματα ?
11
Αναλογικά Μοντέλα
Analogical models
Analog Computers
"The same equations have the same solutions."
"Οι ίδιες εξισώσεις έχουν και τις ίδιες λύσεις." Richard Feynman
Τι είναι
Υπολογισμός ;
What is
Computation ?
13
3 Μαθηματικοί
Κουρτ Γκέντελ
Kurt Friedrich Gödel
1906 - 1978
Αλόνζο Τσερτς
Alonzo Church
1903 - 1995
Άλαν Τουρινγκ
Alan Turing
1912 - 1954
14
Ψηφιακοί υπολογιστές
Digital Computers
Programmable
Generic
Computation
Machines
Προγραμματιζόμενες
Γενικές
Υπολογιστικές
Μηχανές
Γενικές μηχανές ?
Πώς ?
16
Οι γλώσσες προγραμματισμού
Programming Languages
Fortran
● 1953
● John W. Backus
●
Αριθμητικοί Υπολογισμοί
Numerical Computation
● Linear Algebra
Γραμμική Άλγεβρα
●
Απλό μοντέλο μνήμης
Simple memory model
Lisp
● 1955
● John McCarthy
●
Συμβολικος Υπολογισμός
Symbolic Computation
● If/then/else, closures (κλειστότητες)
, functional programming
(συναρτησιακός προγραμματισμός)
, garbage collection
(σκουπιδοσυλογή)
17
Η “τελευταία” τάση
Συναρτησιακός Προγραμματισμός
O Συναρτησιακός
προγραμματισμός είναι ένα
προγραμματιστικό παράδειγμα
που αντιμετωπίζει τον
υπολογισμό ως την αποτίμηση
μαθηματικών συναρτήσεων και
αποφεύγει την κατάσταση
προγράμματος και τα
μεταβλητά δεδομένα.
●
Lisp, Scheme, Logo, Racket
●
Ocaml, ML, Alice
●
Erlang, Elixir (2011), LFE
●
Haskel (1990), Elm (2012)
●
R, Mathematica
●
Julia (2012)
●
Kotlin (2011), Groovy (2003)
●
Scala (2004), Clojure (2007)
●
F# (2005)
●
Javascript
●
Java 8, C++ 11, Python 3, Ruby, Rust, ….
●
...
https://en.wikipedia.org/wiki/Category:Functional_languages
Μπορούν να
αντικαταστήσουν
τους αναλογικούς
υπολογιστές;
19
Οι απαρχές
Institute for Numerical Analysis, early 1950s, UCLA.
20
LINPACK / EISPACK / LAPACK
●
LINPACK 1970
●
EISPACK 1972
●
Matlab 1983
●
LAPACK 1992
●
Mathworks 1984
●
Mathematica 1988
●
Gnu Octave 1988
●
Numpy 1995
●
Scipy 2001
The authors of LINPACK: Jack Dongarra,
Cleve Moler, Pete Stewart, and Jim Bunch
in 1978.
21
Γραμμική Άλγεβρα (Linear Algebra)
Προγραμματισμός
● Χωρίς Ολοκληρωτικό και
Διαφορικό λογισμό;
● Γίνεται*
●
Χωρίς Διακριτά μαθηματικά;
●
Γίνεται*
● Χωρίς Γραμμική Άλγεβρα;
●
Πίνακες
●
Graph Theory
●
Cryptography
●
Computer
Graphics
●
Network Models
●
Finite Element
Method
●
...
!
Δεν Γίνεται
* Αλλά δεν είναι άχρηστα (πολυμέσα, κρυπτογραφία, ...)
Εφαρμογές Γραμμικής Άλγεβρας
● Linear
Programming
●
Computer
Vision
●
Deep Learning
●
Markov Chains
● Coding Theory
● ...
22
Λογισμικό για μαθηματικούς
Software for Mathematics
Lisp
● 1955
Fortran
● 1953
GNU Octave
23
Programming Languages
Software Environments
● Python
●
Numpy, scipy, mathplotlib, …
https://www.python.org/
● R (programming language)
●
Statistics
https://www.r-project.org/
● Julia
https://julialang.org/
● Scilab
http://www.scilab.org/
●
Mathematica (commercial)
http://www.wolfram.com
●
Maple (commercial)
http://www.maplesoft.com
●
Sage
http://www.sagemath.org/
●
Maxima
http://maxima.sourceforge.net/
●
Gnu Plot
http://www.gnuplot.info/
●
Tex / (Xe)LaTeX
24
Jupyter Notebook
● Julia
● Python
●
(e)R
●
Octave
● Javascript
● C/C++ !!
● Everything else
https://github.com/jupyter/jupyter/wiki/a-gallery-of-interesting-jupyter-notebooks
https://www.anaconda.com/download
25
Octave vs Matlab
● Εμπορικό προϊόν
Ελεύθερο λογισμικό
● Συμβατά ως προς την γλώσσα
προγραμματισμού
● Λιγότερες δυνατότητες,
άρα ευκολότερο στην εκμάθηση
● Ευκαιρία για πτυχιακές εργασίες !
● Παιδαγωγικά ορθότερο
● Εργαλείο κατάλληλο για το μάστορα
● Το εργαλείο δεν κάνει τον μάστορα
● Κουλτούρα διαμοιρασμού
Κουλτούρα αντιγραφής
Είμαστε επαγγελματίες της πληροφορικής!
26
Install Octave
Installers for Linux, Mac OS,
Windows, BSD, Android
Free (as in beer)
Open Source (as in freedom)
● Install Octave
●
Find the docs
●
Visit Octave Forge
Debian, Linux Mint, Ubuntu:
$ apt search octave
$ apt install octave
https://www.gnu.org/software/octave/

More Related Content

More from jtsagata

Advanced Notes on Pointers
Advanced Notes on PointersAdvanced Notes on Pointers
Advanced Notes on Pointersjtsagata
 
GPGPU Computation
GPGPU ComputationGPGPU Computation
GPGPU Computationjtsagata
 
Eισαγωγή στο TDD
Eισαγωγή στο TDDEισαγωγή στο TDD
Eισαγωγή στο TDDjtsagata
 
Παιγνίδια με Πίνακες και Δείκτες
Παιγνίδια με Πίνακες και ΔείκτεςΠαιγνίδια με Πίνακες και Δείκτες
Παιγνίδια με Πίνακες και Δείκτεςjtsagata
 
Linux and C
Linux and CLinux and C
Linux and Cjtsagata
 
Greek utf8
Greek utf8Greek utf8
Greek utf8jtsagata
 
Function pointers in C
Function pointers in CFunction pointers in C
Function pointers in Cjtsagata
 
Why computers can' compute
Why computers can' computeWhy computers can' compute
Why computers can' computejtsagata
 
IEEE 754 Floating point
IEEE 754 Floating pointIEEE 754 Floating point
IEEE 754 Floating pointjtsagata
 
Η Τέχνη του TeX/LaTeX
Η Τέχνη του TeX/LaTeXΗ Τέχνη του TeX/LaTeX
Η Τέχνη του TeX/LaTeXjtsagata
 
Unikernels
UnikernelsUnikernels
Unikernelsjtsagata
 
FPGA on the Cloud
FPGA on the Cloud FPGA on the Cloud
FPGA on the Cloud jtsagata
 
Evolutionary keyboard Layout
Evolutionary keyboard LayoutEvolutionary keyboard Layout
Evolutionary keyboard Layoutjtsagata
 
Το εργαλείο
Το εργαλείοΤο εργαλείο
Το εργαλείοjtsagata
 

More from jtsagata (17)

Advanced Notes on Pointers
Advanced Notes on PointersAdvanced Notes on Pointers
Advanced Notes on Pointers
 
C locales
C localesC locales
C locales
 
GPGPU Computation
GPGPU ComputationGPGPU Computation
GPGPU Computation
 
Eισαγωγή στο TDD
Eισαγωγή στο TDDEισαγωγή στο TDD
Eισαγωγή στο TDD
 
Παιγνίδια με Πίνακες και Δείκτες
Παιγνίδια με Πίνακες και ΔείκτεςΠαιγνίδια με Πίνακες και Δείκτες
Παιγνίδια με Πίνακες και Δείκτες
 
Linux and C
Linux and CLinux and C
Linux and C
 
Git intro
Git introGit intro
Git intro
 
Greek utf8
Greek utf8Greek utf8
Greek utf8
 
Function pointers in C
Function pointers in CFunction pointers in C
Function pointers in C
 
Why computers can' compute
Why computers can' computeWhy computers can' compute
Why computers can' compute
 
IEEE 754 Floating point
IEEE 754 Floating pointIEEE 754 Floating point
IEEE 754 Floating point
 
Η Τέχνη του TeX/LaTeX
Η Τέχνη του TeX/LaTeXΗ Τέχνη του TeX/LaTeX
Η Τέχνη του TeX/LaTeX
 
Unikernels
UnikernelsUnikernels
Unikernels
 
FPGA on the Cloud
FPGA on the Cloud FPGA on the Cloud
FPGA on the Cloud
 
Evolutionary keyboard Layout
Evolutionary keyboard LayoutEvolutionary keyboard Layout
Evolutionary keyboard Layout
 
Omilia
OmiliaOmilia
Omilia
 
Το εργαλείο
Το εργαλείοΤο εργαλείο
Το εργαλείο
 

Τι είναι υπολογισμός

  • 1. Εισαγωγή στον Υπολογισμό Μια ιστορική αναδρομή Τσαγκατάκης Γιάννης Msc in Informatics & Multimedia Department of Informatics Engineering TEI of Crete
  • 2. Τι είναι η Επιστήμη Υπολογιστών Computer Science ?
  • 3. 3 Τι είναι επιστήμη των υπολογιστών ? Lecture 1A | MIT 6.001 Structure and Interpretation, 1986 SICP Videos Δεν έχει να κάνει με υπολογιστές It’s not about the computers Δεν έχει να κάνει με επιστήμη It’s not about Science Δεν έχει να κάνει με υπολογιστές με την ίδια έννοια που η Γεωμετρία δεν έχει σχέση με τοπογραφικά όργανα. And it's not about computers in the same sense that geometry is not really about using surveying instruments. Η λέξη γεωμετρία σημαίνει ακριβώς αυτό μέτρηση της γης με τοπογραφικά όργανα, δηλαδή τοπογραφία . In fact, there's a lot of commonality between computer science and geometry. Geometry, first of all, is another subject with a lousy name. The name comes from Gaia, meaning the Earth, and metron, meaning to measure. Geometry originally meant measuring the Earth or surveying.
  • 4. 4 What is Computer Science ? Lecture 1A | MIT 6.001 Structure and Interpretation, 1986 SICP Videos Τώρα ο λόγος που πιστεύουμε ότι η επιστήμη των υπολογιστών έχει να κάνει με υπολογιστές, είναι ο ίδιος λόγος για τον οποίο οι αρχαίοι Αιγύπτιοι πίστευαν ότι η γεωμετρία έχει να κάνει με τοπογραφικά όργανα. Now, the reason that we think computer science is about computers is pretty much the same reason that the Egyptians thought geometry was about surveying instruments. Δείτε το video Δεν έχει να κάνει με υπολογιστές It’s not about the computers Δεν έχει να κάνει με επιστήμη It’s not about Science
  • 6. 6 Ο μηχανισμός των Αντικυθύρων Antikythera mechanism Είμαι ένας υπολογιστής;
  • 7. 7 Υπολογιστές με νερό Water Computation Bill Phillips Moniac Economic Analog Computer Making Money Flow: The MONIAC Bill Phillips Moniac Economic Analog Computer Created in 1949 Ο MONIAC (Monetary National Income Analogue Computer) ήταν ένας αναλογικός υπολογιστής που χρησιμοποιούσε fluidic logic για προσομοίωση οικονομικών μοντέλων. Δείτε το video
  • 9. 9 Βιολογικοί Υπολογιστές Biological Computers Φυσικοί Υπολογιστές Physical Computers Slime Mold and Tokyo Subway system Tide prediction Machine
  • 10. Αλλά αυτά λύνουν μόνο συγκεκριμένα Προβλήματα ?
  • 11. 11 Αναλογικά Μοντέλα Analogical models Analog Computers "The same equations have the same solutions." "Οι ίδιες εξισώσεις έχουν και τις ίδιες λύσεις." Richard Feynman
  • 13. 13 3 Μαθηματικοί Κουρτ Γκέντελ Kurt Friedrich Gödel 1906 - 1978 Αλόνζο Τσερτς Alonzo Church 1903 - 1995 Άλαν Τουρινγκ Alan Turing 1912 - 1954
  • 16. 16 Οι γλώσσες προγραμματισμού Programming Languages Fortran ● 1953 ● John W. Backus ● Αριθμητικοί Υπολογισμοί Numerical Computation ● Linear Algebra Γραμμική Άλγεβρα ● Απλό μοντέλο μνήμης Simple memory model Lisp ● 1955 ● John McCarthy ● Συμβολικος Υπολογισμός Symbolic Computation ● If/then/else, closures (κλειστότητες) , functional programming (συναρτησιακός προγραμματισμός) , garbage collection (σκουπιδοσυλογή)
  • 17. 17 Η “τελευταία” τάση Συναρτησιακός Προγραμματισμός O Συναρτησιακός προγραμματισμός είναι ένα προγραμματιστικό παράδειγμα που αντιμετωπίζει τον υπολογισμό ως την αποτίμηση μαθηματικών συναρτήσεων και αποφεύγει την κατάσταση προγράμματος και τα μεταβλητά δεδομένα. ● Lisp, Scheme, Logo, Racket ● Ocaml, ML, Alice ● Erlang, Elixir (2011), LFE ● Haskel (1990), Elm (2012) ● R, Mathematica ● Julia (2012) ● Kotlin (2011), Groovy (2003) ● Scala (2004), Clojure (2007) ● F# (2005) ● Javascript ● Java 8, C++ 11, Python 3, Ruby, Rust, …. ● ... https://en.wikipedia.org/wiki/Category:Functional_languages
  • 19. 19 Οι απαρχές Institute for Numerical Analysis, early 1950s, UCLA.
  • 20. 20 LINPACK / EISPACK / LAPACK ● LINPACK 1970 ● EISPACK 1972 ● Matlab 1983 ● LAPACK 1992 ● Mathworks 1984 ● Mathematica 1988 ● Gnu Octave 1988 ● Numpy 1995 ● Scipy 2001 The authors of LINPACK: Jack Dongarra, Cleve Moler, Pete Stewart, and Jim Bunch in 1978.
  • 21. 21 Γραμμική Άλγεβρα (Linear Algebra) Προγραμματισμός ● Χωρίς Ολοκληρωτικό και Διαφορικό λογισμό; ● Γίνεται* ● Χωρίς Διακριτά μαθηματικά; ● Γίνεται* ● Χωρίς Γραμμική Άλγεβρα; ● Πίνακες ● Graph Theory ● Cryptography ● Computer Graphics ● Network Models ● Finite Element Method ● ... ! Δεν Γίνεται * Αλλά δεν είναι άχρηστα (πολυμέσα, κρυπτογραφία, ...) Εφαρμογές Γραμμικής Άλγεβρας ● Linear Programming ● Computer Vision ● Deep Learning ● Markov Chains ● Coding Theory ● ...
  • 22. 22 Λογισμικό για μαθηματικούς Software for Mathematics Lisp ● 1955 Fortran ● 1953 GNU Octave
  • 23. 23 Programming Languages Software Environments ● Python ● Numpy, scipy, mathplotlib, … https://www.python.org/ ● R (programming language) ● Statistics https://www.r-project.org/ ● Julia https://julialang.org/ ● Scilab http://www.scilab.org/ ● Mathematica (commercial) http://www.wolfram.com ● Maple (commercial) http://www.maplesoft.com ● Sage http://www.sagemath.org/ ● Maxima http://maxima.sourceforge.net/ ● Gnu Plot http://www.gnuplot.info/ ● Tex / (Xe)LaTeX
  • 24. 24 Jupyter Notebook ● Julia ● Python ● (e)R ● Octave ● Javascript ● C/C++ !! ● Everything else https://github.com/jupyter/jupyter/wiki/a-gallery-of-interesting-jupyter-notebooks https://www.anaconda.com/download
  • 25. 25 Octave vs Matlab ● Εμπορικό προϊόν Ελεύθερο λογισμικό ● Συμβατά ως προς την γλώσσα προγραμματισμού ● Λιγότερες δυνατότητες, άρα ευκολότερο στην εκμάθηση ● Ευκαιρία για πτυχιακές εργασίες ! ● Παιδαγωγικά ορθότερο ● Εργαλείο κατάλληλο για το μάστορα ● Το εργαλείο δεν κάνει τον μάστορα ● Κουλτούρα διαμοιρασμού Κουλτούρα αντιγραφής Είμαστε επαγγελματίες της πληροφορικής!
  • 26. 26 Install Octave Installers for Linux, Mac OS, Windows, BSD, Android Free (as in beer) Open Source (as in freedom) ● Install Octave ● Find the docs ● Visit Octave Forge Debian, Linux Mint, Ubuntu: $ apt search octave $ apt install octave https://www.gnu.org/software/octave/