Maailmasta laskennalliseen malliin ja takaisin - Big History -kalvot 2012

504 views
385 views

Published on

Slides (in Finnish) about computer science and software engineering from the Big History course of University of Turku.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
504
On SlideShare
0
From Embeds
0
Number of Embeds
74
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Maailmasta laskennalliseen malliin ja takaisin - Big History -kalvot 2012

  1. 1. ì   Maailmasta  laskennalliseen  malliin   –  ja  takaisin   Jouni  Smed     Informaa/oteknologian  laitos   Turun  yliopisto  
  2. 2. Sisältö   I.   Kuinka  esi*ää  ja  käsitellä  maailmaa  symbolises3   1.  2.  3.  II.  Historiaa   Symbolinen  esitystapa   Algoritmit    Kuinka  3etojenkäsi*elyä  voidaan  toteu*aa   4.  5.  6.  Ohjelmoin/   LaiEeisto   Kommunikaa/o  
  3. 3. Maailma   LaiEeisto   01001001   Symbolinen     esitysmuoto   Algoritmi  
  4. 4. Kuinka  esittää  ja  käsitellä  maailmaa   symbolisesti   ì  
  5. 5. 1.  Historiaa   ì  
  6. 6. 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–  )  
  7. 7. Helmitaulu  
  8. 8. Antikythera-­‐mekanismi  
  9. 9. Equatorium,  astrolabi  ja  torquetum  
  10. 10. Pascaline   Blaise  Pascal  (1623–62)  
  11. 11. Reikäkortti   Herman  Hollerith  (1860–1929)  
  12. 12. Analyyttinen  kone   Charles  Babbage  (1791–1871)  
  13. 13. Ihmislaskenta  
  14. 14. 1.  sukupolvi:  tyhjiöputket  (1940–1958)  
  15. 15. 2.  sukupolvi:  transistorit  (1958–1964)  
  16. 16. 3.  sukupolvi:  integroidut  piirit  (1964–1971)  
  17. 17. 4.  sukupolvi:  mikroprosessorit  (1971–)  
  18. 18. 2.  Symbolinen  esitystapa   ì  
  19. 19. Symboleita  kaikkialla   ABCDEF…   αβγδ…   01234…   ♪♫♭♮… +×÷≠∞≈…   §©™ý✚…   12)=… NTY¶¿… DAFGBI…
  20. 20. 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,  …)  
  21. 21. 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)  
  22. 22. 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  
  23. 23. 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  
  24. 24. 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  
  25. 25. Digitalisointi   ì  reaalisen  /edon   muuEaminen  numeeriseen   muotoon   ì  muunnokset   ì  näyEeistys  (eli  samplaus)   ì  kvan/soin/  
  26. 26. Näytteistys  
  27. 27. Kvantisointi   ì  näytearvon  pyöristys  kokonaislukuun   ì  8  biQä:  [-­‐128,  +127]     ì  16  biQä:  [-­‐32768,  +32767]  
  28. 28. 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)  
  29. 29. 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ä  
  30. 30. Google-­‐runoutta   hEp://suomi.googlepoe/cs.com  
  31. 31. Tiedon  tiivistäminen   Häviötön  /ivistys   ì  osa  informaa/osta  saaEaa   hävitä   ì  ei  informaa/on  häviötä   ì  10.0000001  ⇒  10.0000001     ì  10.000000001  ⇒  10     virhe   ì  vaihdetaan  koodaus   Häviöllinen  /ivistys   biQen  lkm  
  32. 32. 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ä  
  33. 33. 3.  Algoritmit   ì  
  34. 34. 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)  
  35. 35. 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)  
  36. 36. Turingin  kone   1.  nauha   ì  ì  2.  ääretön   koostuu  symboleista  (myös  tyhjä)   …   B   A   C   A   B   C   _   B   …   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   q2   q1,  A  →  C,  R,  q3     q1,  B  →  A,  N,  q2     q2,  A  →  _,  R,  q4     q2,  B  →  B,  L,  q1     …  
  37. 37. 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ä  
  38. 38. 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)  
  39. 39. Esimerkki:  lajittelu   menetelmä   paras   suoritusaika   keskimääräinen   huonoin   suoritusaika   suoritusaika   pikalajiEelu   n  log  n   n  log  n   n2   lisäyslajiEelu   n   n2   n2   kuplalajiEelu   n   n2   n2   bogolajiEelu   n   n  ·∙  n!   n  ·∙  n!  →  ∞        
  40. 40. Esimerkki:  korttipakan  lajittelu   menetelmä   paras   suoritusaika   keskimääräinen   huonoin   suoritusaika   suoritusaika   pikalajiEelu   364   364   2704   lisäyslajiEelu   52   2704   2704   kuplalajiEelu   52   2704   2704   bogolajiEelu   52   8  ·∙  1067   →  ∞        
  41. 41. 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  
  42. 42. Kuinka  toteuttaa  tietojenkäsittelyä   ì  
  43. 43. 4.  Ohjelmointi   ì  
  44. 44. 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  
  45. 45. Ensimmäinen  ohjelmoija   Ada  Lovelace  (1815–52)      
  46. 46. Ohjelmointikielten  sukupolvet   1.  konekielet   2.  assembly-­‐kielet   3.  rakenteelliset  ohjelmoin/kielet   4.  korkean  tason  kielet  ja  kehitysympäristöt     5.  rajoite-­‐  ja  logiikkaohjelmoin/kielet  
  47. 47. 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  
  48. 48. 2.  sukupolvi:  assembly-­‐kielet   ì  ohjelmoijan  kirjoiteEavissa   ja  lueEavissa   ì  tekstuaalinen  esitystapa   konekielelle   ì  makrot   ì  ohjelma  käännetään   konekielelle   ì  riippuu  alustasta   ì  eri  prosessoreilla  eri   konekielet  
  49. 49. 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  
  50. 50. 4.  sukupolvi:  korkean  tason  kielet  ja   kehitysympäristöt     ì  kooditon  ohjelmoin/   ì  ei  proseduraalinen   ì  raporQgeneraaEorikielet   ì  CASE-­‐työkalut   ì  /edonhallintatyökalut  
  51. 51. 5.  sukupolvi:  rajoite-­‐  ja   logiikkaohjelmointikielet   ì  ongelma  kuvataan   rajoiEeilla   ì  deklara/ivinen  ohjelmoin/   ì  /etokone  ratkaisee   ongelman  ilman  ohjelmoijaa  
  52. 52. Ohjelmistotuotanto   ì  ohjelmiston  tuotantovaiheita   ì  suunniEelu   ì  toteutus   ì  testaus   ì  julkaisu   ì  ylläpito   ì  vaihejakomalleja   ì  vesiputousmalli   ì  spiraalimalli   ì  keEerät  kehitysmenetelmät  
  53. 53. Vesiputousmalli  
  54. 54. Spiraalimalli  
  55. 55. Ketterät  kehitysmenetelmät:  Scrum  
  56. 56. 5.  Laitteisto   ì  
  57. 57. von  Neumann  -­‐malli   John  von  Neumann  (1903–57)  
  58. 58. Suoritin   ì  suoriEaa  konekielisiä  käskyjä   ì  operaa/ot     ì  aritmeeQset   ì  loogiset   ì  syöte/tulos     ì  osat   ì  laskentayksikkö   ì  valvontayksikkö   ì  rekisterit  
  59. 59. Mooren  laki   ì  transistoreiden  määrä   integroidussa  piirissä   kaksinkertaistuu  n.  kahdessa   vuodessa   Gordon  Moore  (1929–  )  
  60. 60. Muisti   ì  keskusmuis/   ì  RAM-­‐muis/     ì  hajasaan/muis/   ì  lukumuis/   ì  ROM-­‐muis/   ì  pysyväismuis/   ì  massamuis/   ì  magneeQset  nauhat  ja   levyt   ì  op/set  levyt  
  61. 61. Mikä  ihmeen  “core”?  
  62. 62. Apollo-­‐tietokoneohjelmien  arkeologiaa  
  63. 63. 6.  Kommunikaatio   ì  
  64. 64. Fyysinen  alusta   ì  resurssirajoitukset   ì  kaistanleveys   ì  latenssi   ì  verkkoliikenteen  prosessoin/tarve   ì  /edonsiirtotekniikat  ja  -­‐protokollat   ì  täsmälähetys,  ryhmälähetys,  yleislähetys   ì  internet-­‐protokolla  
  65. 65. Verkkokommunikaatio   Latenssi            Kaistanleveys   Protokolla   LuoteEavuus  
  66. 66. Looginen  alusta   ì  kommunikaa/oarkkitehtuuri   ì  vertaisverkko   ì  asiakas-­‐palvelin  -­‐verkko   ì  palvelinverkko   ì  /eto-­‐  ja  kontrolliarkkitehtuuri   ì  keskiteEy   ì  monisteEu   ì  hajauteEu  
  67. 67. Kommunikaatioarkkitehtuuri   Vertaisverkko   Asiakas-­‐palvelin  -­‐verkko   Palvelinverkko  
  68. 68. 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  
  69. 69. 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  
  70. 70. Jaetun  tilan  tekniikat   syntee:nen   lisäEy   todellisuus   virtuaali-­‐   todellisuus   fyysinen   todellisuus   etäläsnäolo   paikallinen   etäinen   keinotekoisuus   fyysinen   transportaa‚o  
  71. 71. 7.  Yhteenveto   ì  
  72. 72. Maailma   LaiEeisto   01001001   Symbolinen     esitysmuoto   Algoritmi  

×