View
293
Download
2
Category
Preview:
DESCRIPTION
Slides (in Finnish) about computer science and software engineering from the Big History course of University of Turku.
Citation preview
ì Maailmasta laskennalliseen malliin – ja takaisin
Jouni Smed Informaa/oteknologian laitos Turun yliopisto
Sisältö
I. Kuinka esi*ää ja käsitellä maailmaa symbolises3 1. Historiaa 2. Symbolinen esitystapa 3. Algoritmit
II. Kuinka 3etojenkäsi*elyä voidaan toteu*aa 4. Ohjelmoin/ 5. LaiEeisto 6. Kommunikaa/o
01001001
Symbolinen esitysmuoto
Maailma
Algoritmi
LaiEeisto
ì Kuinka esittää ja käsitellä maailmaa symbolisesti
ì 1. Historiaa
Virstanpylväitä
ì n. 2400 eaa. helmitaulu
ì n. 100 eaa. An/kythera-‐mekanismi
ì n. 1000 jaa. equatorium, astrolabi, torquetum
ì 1642 Pascaline
ì 1801 reikäkorQ
ì 1834 analyyQnen kone
ì elektroniset /etokoneet ì 1. sukupolvi: tyhjiöputket (1935–1958) ì 2. sukupolvi: transistorit (1958–1964) ì 3. sukupolvi: integroidut piirit (1964–1971) ì 4. sukupolvi: mikroprosessorit (1971– )
Helmitaulu
Antikythera-‐mekanismi
Equatorium, astrolabi ja torquetum
Pascaline
Blaise Pascal (1623–62)
Reikäkortti
Herman Hollerith (1860–1929)
Analyyttinen kone
Charles Babbage (1791–1871)
Ihmislaskenta
1. sukupolvi: tyhjiöputket (1940–1958)
2. sukupolvi: transistorit (1958–1964)
3. sukupolvi: integroidut piirit (1964–1971)
4. sukupolvi: mikroprosessorit (1971–)
ì 2. Symbolinen esitystapa
Symboleita kaikkialla
ABCDEF…
αβγδ…
01234…
♪♫♭♮…
+×÷≠∞≈…
§©™ý✚…
12)=…
NTY¶¿…
DAFGBI…
Aakkosto
ì äärellinen, ei-‐tyhjä joukko merkkejä joita käytetään kielen muodostamiseen
ì esim. kirjainaakkosto: { A, B, …, Z } ì merkkijonoja (ε, A, B, C,…, AA, AB,…, AAKKOSTO, …)
ì esim. binääriaakkosto: { 0, 1 } ì merkkijonoja (ε, 0, 1, 00, 01, 10, 11, 100, …)
Boolen algebra
ì totuusarvot 0 ja 1
ì operaa/ot ì konjunk/o∧ (AND) ì disjunk/o ∨ (OR) ì negaa/o ¬ (NOT)
ì operaa/ot voidaan toteuEaa mekaanises/ tai sähköises/ ì releet ì puolijohteet ì pneuma/ikka
George Boole (1815–64)
Totuustaulut ja Vennin diagrammit
x y x ∧ y x y x ∨ y x ¬x
0 0 0 0 0 0 0 1
0 1 0 0 1 1 1 0
1 0 0 1 0 1
1 1 1 1 1 1
Numerot binäärimuodossa
numero binääriesitys numero binääriesitys
0 0 12 1100
1 1 13 1101
2 10 14 1110
3 11 15 1111
4 100 16 10000
5 101 17 10001
6 110 18 10010
7 111 19 10011
8 1000 20 10100
9 1001 21 10101
10 1010 22 10110
11 1011 23 10111
ASCII
koodi sym-‐boli
koodi sym-‐boli
koodi sym-‐boli
koodi sym-‐boli
koodi sym-‐boli
koodi sym-‐boli
koodi sym-‐boli
koodi sym-‐boli
0 NUL 16 DLE 32 48 0 64 @ 80 P 96 ` 112 p
1 SOH 17 DC1 33 ! 49 1 65 A 81 Q 97 a 113 q
2 STX 18 DC1 34 “ 50 2 66 B 82 R 98 b 114 r
3 ETX 19 DC3 35 # 51 3 67 C 83 S 99 c 115 s
4 EOT 20 DC4 36 $ 52 4 68 D 84 T 100 d 116 t
5 ENQ 21 NAK 37 % 53 5 69 E 85 U 101 e 117 u
6 ACK 22 SYN 38 & 54 6 70 F 86 V 102 f 118 v
7 BEL 23 ETB 39 ‘ 55 7 71 G 87 W 103 g 119 w
8 BS 24 CAN 40 ( 56 8 72 H 88 X 104 h 120 x
9 HT 25 EM 41 ) 57 9 73 I 89 Y 105 i 121 y
10 LF 26 SUB 42 * 58 : 74 J 90 Z 106 j 122 z
11 VT 27 ESC 43 + 59 ; 75 K 91 [ 107 k 123 {
12 FF 28 FS 44 , 60 < 76 L 92 \ 108 l 124 |
13 CR 29 GS 45 -‐ 61 = 77 M 93 ] 109 m 125 }
14 SO 30 RS 46 . 62 > 78 N 94 ^ 110 n 126 ~
15 SI 31 US 47 / 63 ? 79 O 95 _ 111 o 127 DEL
Digitalisointi
ì reaalisen /edon muuEaminen numeeriseen muotoon
ì muunnokset ì näyEeistys (eli samplaus) ì kvan/soin/
Näytteistys
Kvantisointi
ì näytearvon pyöristys kokonaislukuun ì 8 biQä: [-‐128, +127] ì 16 biQä: [-‐32768, +32767]
Informaatioteoria
ì entropia: kuinka monta biQä tarvitaan väliEämään /eto yhdestä symbolista ì suuri entropia:
epävarmuus symbolista ì pieni entropia: varmuus
symbolista
ì käyEökohteita ì /edon /ivistäminen ì salakirjoitus ì signaalin prosessoin/
Claude E. Shannon (1916–2001)
Shannonin peli
ì aakkosto: { A, B, C, …, Å, Ä, Ö, _ }
ì tuntematon vies/
ì arvaa vies/n seuraava merkki
ì kuinka monta yritystä tarvitaan kunkin merkin kohdalla? ì merkin entropia ko. vies/ssä
Google-‐runoutta
hEp://suomi.googlepoe/cs.com
Tiedon tiivistäminen
Häviötön /ivistys ì vaihdetaan koodaus
ì ei informaa/on häviötä ì 10.0000001 ⇒ 10.0000001
Häviöllinen /ivistys ì osa informaa/osta saaEaa
hävitä ì 10.000000001 ⇒ 10
virhe
biQen lkm
Sisäinen ja ulkoinen tiivistys
Sisäinen /ivistys ì muokkaa pelkästään vies/n
omaa sisältöä
ì ei viiEaa edellisiin viesteihin
Ulkoinen /ivistys ì muokkaa vies/n sisältöä
huomioiden aikaisemmin lähetetyt vies/t ì delta-‐informaa/o
ì parempi /ivistys
ì riippuvuus vies/en välillä
ì 3. Algoritmit
Mikä on algoritmi?
ì äärellinen, askeleista koostuva vaihesarja, joka ratkaisee /etyn laskennallisen ongelman
ì käyEökohteita ì laskenta ì /edon käsiEely ì automaaQnen pääEely
Muḥammad ibn Mūsā al-‐Khwārizmī (750–850)
Laskettavuuden malli
ì Turingin kone (1936) ì laskentalaiEeen
hypoteeQnen malli
ì Churchin-‐Turingin teesi ì Turingin koneella
laskeEavissa olevien ongelmien joukko on täsmälleen sama kuin algoritmeilla laskeEavien ongelmien joukko
Alan Turing (1912–54)
Turingin kone
1. nauha ì ääretön ì koostuu symboleista (myös tyhjä)
2. pää ì symbolin luku ja kirjoitus ì siirtyy vasemmalle tai oikealle
3. /larekisteri
4. transi/otaulu ì syöte: /la ja nykyinen symboli ì tulos: poista tai kirjoita symboli ì tulos: siirrä päätä (R, L, N) ì tulos: valitse uusi /la
… B B C A A … _ C B
q2
q1, A → C, R, q3 q1, B → A, N, q2 q2, A → _, R, q4 q2, B → B, L, q1 …
Ensimmäinen ongelma: laskettavuus
ì millaisia ongelmia /etokoneilla voidaan ratkaista?
ì esimerkki: pysähtymisongelma ì ratkaise pysähtyykö syöEeeksi annetun ohjelman
suoritus vai ei? ì ei ole algoritmia, joka ratkaisisi pysähtymisongelman
kaikilla syöEeillä
Toinen ongelma: kompleksisuus
ì algoritmien analyysi (paras, pahin, keskimääräinen) ì suoritusaika ì muis//la
ì syöEeen koko n ì logaritminen: O(log n) ì lineaarinen: O(n) ì neliöllinen: O(n2) ì eksponen/aalinen: O(cn)
Esimerkki: lajittelu
menetelmä paras suoritusaika
keskimääräinen suoritusaika
huonoin suoritusaika
pikalajiEelu n log n n log n n2
lisäyslajiEelu n n2 n2
kuplalajiEelu n n2 n2
bogolajiEelu n n ·∙ n! n ·∙ n! → ∞
Esimerkki: korttipakan lajittelu
menetelmä paras suoritusaika
keskimääräinen suoritusaika
huonoin suoritusaika
pikalajiEelu 364 364 2704
lisäyslajiEelu 52 2704 2704
kuplalajiEelu 52 2704 2704
bogolajiEelu 52 8 ·∙ 1067 → ∞
Turingin testi
ì Alan Turing (1950): voivatko /etokoneet ajatella?
ì matkimispeli ì ihmistuomari (C)
keskustelee pääEeen kauEa sekä /etokoneen (A) eEä ihmisen (B) kanssa
ì kaikki osapuolet ovat erossa toisistaan
ì tuomarin on pääteEävä kumpi on kumpi
ì Kuinka toteuttaa tietojenkäsittelyä
ì 4. Ohjelmointi
Mitä on ohjelmointi?
ì luo toimintaohjeet (eli lähdekoodi) joilla /etokone voi suoriEaa /etyn tehtävän tai käyEäytyä /etyllä tavalla
ì ohjelmoinnin osa-‐alueita ì suunniEelu ì toteutus ì testaus ì debuggaus ì ylläpito
Ensimmäinen ohjelmoija
Ada Lovelace (1815–52)
Ohjelmointikielten sukupolvet
1. konekielet
2. assembly-‐kielet
3. rakenteelliset ohjelmoin/kielet
4. korkean tason kielet ja kehitysympäristöt
5. rajoite-‐ ja logiikkaohjelmoin/kielet
1. sukupolvi: konekielet
ì /etokoneen keskusyksikön suoriEamia käskyjä ì sekvenssi nollia ja ykkösiä
ì ohjelmoin/ tapahtui syöEämällä konekäskyjä binäärimuodossa suoraan paneelin kauEa
2. sukupolvi: assembly-‐kielet
ì ohjelmoijan kirjoiteEavissa ja lueEavissa ì tekstuaalinen esitystapa
konekielelle ì makrot
ì ohjelma käännetään konekielelle
ì riippuu alustasta ì eri prosessoreilla eri
konekielet
3. sukupolvi: rakenteelliset ohjelmointikielet
ì 1950-‐luvun lopulla: Fortran, ALGOL, COBOL ì ihmiskielen kaltaisia ì syntaksi
ì yhä edelleen suosiEuja: C, C#, Java, BASIC…
ì käännetään konekielelle tai ajetaan tulkin kauEa ì eivät riipu alustasta
4. sukupolvi: korkean tason kielet ja kehitysympäristöt
ì kooditon ohjelmoin/ ì ei proseduraalinen
ì raporQgeneraaEorikielet
ì CASE-‐työkalut
ì /edonhallintatyökalut
5. sukupolvi: rajoite-‐ ja logiikkaohjelmointikielet
ì ongelma kuvataan rajoiEeilla
ì deklara/ivinen ohjelmoin/
ì /etokone ratkaisee ongelman ilman ohjelmoijaa
Ohjelmistotuotanto
ì ohjelmiston tuotantovaiheita ì suunniEelu ì toteutus ì testaus ì julkaisu ì ylläpito
ì vaihejakomalleja ì vesiputousmalli ì spiraalimalli ì keEerät kehitysmenetelmät
Vesiputousmalli
Spiraalimalli
Ketterät kehitysmenetelmät: Scrum
ì 5. Laitteisto
von Neumann -‐malli
John von Neumann (1903–57)
Suoritin
ì suoriEaa konekielisiä käskyjä
ì operaa/ot ì aritmeeQset ì loogiset ì syöte/tulos
ì osat ì laskentayksikkö ì valvontayksikkö ì rekisterit
Mooren laki
ì transistoreiden määrä integroidussa piirissä kaksinkertaistuu n. kahdessa vuodessa
Gordon Moore (1929– )
Muisti
ì keskusmuis/ ì RAM-‐muis/ ì hajasaan/muis/
ì lukumuis/ ì ROM-‐muis/ ì pysyväismuis/
ì massamuis/ ì magneeQset nauhat ja
levyt ì op/set levyt
Mikä ihmeen “core”?
Apollo-‐tietokoneohjelmien arkeologiaa
ì 6. Kommunikaatio
Fyysinen alusta
ì resurssirajoitukset ì kaistanleveys ì latenssi ì verkkoliikenteen prosessoin/tarve
ì /edonsiirtotekniikat ja -‐protokollat ì täsmälähetys, ryhmälähetys, yleislähetys ì internet-‐protokolla
Verkkokommunikaatio
Kaistanleveys
Protokolla
Latenssi
LuoteEavuus
Looginen alusta
ì kommunikaa/oarkkitehtuuri ì vertaisverkko ì asiakas-‐palvelin -‐verkko ì palvelinverkko
ì /eto-‐ ja kontrolliarkkitehtuuri ì keskiteEy ì monisteEu ì hajauteEu
Kommunikaatioarkkitehtuuri
Vertaisverkko Asiakas-‐palvelin -‐verkko Palvelinverkko
Tieto-‐ ja kontrolliarkkitehtuuri
ì keskiteEy ì yksi solmu pitää yllä kaikkea /etoa
ì monisteEu ì kaikilla solmuilla on oma kopio kaikesta /edosta
ì hajauteEu ì yhdellä solmulla on osa kaikesta /edosta ì kaikki solmut yhdessä sisältävät kaiken /edon
Verkon erittäin lyhyt historia
ì 1969: ARPANET
ì 1971: sähköpos/, FTP
ì 1982: Internet
ì 1991: Word Wide Web
ì 1994: VoIP, verkkokamera, suoratoisto
ì 1998: Google
ì 2001: Wikipedia
ì 2004: Facebook
ì 2006: TwiEer
Jaetun tilan tekniikat
transportaa�o
keinotekoisuus
fyysinen
syntee:nen
paikallinen etäinen
fyysinen todellisuus
lisäEy todellisuus
etäläsnäolo
virtuaali-‐ todellisuus
ì 7. Yhteenveto
01001001
Symbolinen esitysmuoto
Maailma
Algoritmi
LaiEeisto
Recommended