POLITECHNIKA KRAKOWSKA - WIEiK - KATEDRA AUTOMATYKI Technologie Informacyjne www.pk.edu.pl/~zk/TI_HP.html Wykładowca: dr inż. Zbigniew Kokosiński [email protected] Wykład 1: Wprowadzenie do TI • • • • • • • • • Starożytne początki technologii informacyjnych Babilon – pierwsze procedury i algorytmy Egipt – podrecznik algebry i geometrii Ahmesa Algorytmy Greków Pierwsza maszyna licząca i język programowania Model komputera i modele obliczeń Pierwsze komputery elektronowe Dualizm sprzętu i oprogramowania Prognozy rozwoju sprzętu i oprogramowania Cokolwiek raz uczynione zostało, uczynione zostanie. A nie masz nic nowego pod słońcem. Kto otworzy usta i powie: patrz, to jest nowe ? To już działo się w wiekach, które były przed nami. Nie zostaje pamięć o ludziach dawnych. Ani o tych, którzy po nich nastali, pamiętać będą później urodzeni. Księga Eklezjasty 1, 9-11 (300-200 p.n.e. ), tłum. Cz. Miłosz Nośniki danych i obrazów • Tusz, toner – ~5000 p.n.e. Chiny tusz (sadza+piżmo, węgiel drzewny, spalony lak) – ~2630 p.n.e. Egipt tusz (sadza z oleju palmowego + woda/klej) • Papier – ~3000 p.n.e. Egipt papirus (std: 0.4m x 0.4m) – pergamin (skóra zwierzęca) 263 p.n.e. Pergamon Pismo, systemy liczbowe I • Pismo – ~4000 p.n.e. Mezopotamia pismo, zapis liczb, odciski kamyków w glinie, znaki alfanumeryczne Pismo, systemy liczbowe II • Systemy liczbowe – ~2780 p.n.e. Indie, Egipt, Sumer cyfra 0 – Indie ; system dziesiętny – Indie, Egipt ; systemy sześdziesiatkowy - Babilończycy. Pismo, systemy liczbowe III • Kamień z Rosetty – 196 p.n.e. opis koronacji Ptolemeusza V w trzech językach : hieroglificznym, demotycznym i greckim – znalezienie kamienia w Egipcie w XIX w. przez wojska napoleońskie umożliwiło odczytanie pisma hieroglificznego Druk I • Wydruki grafiki – ~900 p.n.e. Meksyk dekoracja tkanin i skóry (ceramiczne pieczątki płaskie, cylindryczne) – 593 pierwsze drzeworyty ilustr. (stemple drewniane) n.e. Chiny Druk II • Druk dokumentów stronicowanych – 868 n.e. Chiny pierwsza drukowana książka (buddyjska sutra) • Druk dokumentów składanych z czcionek – 1040 n.e. Chinyskład drukarski - czcionki wypalane (alchemik Pi Cheng) – 1447 n.e. Europa kalendarz Gutenberga– czcionki odlewane – 1455 n.e. Europa Biblia Gutenberga (185 egz., 1282 strony) Druk III : Pelplińska biblia Gutenberga • Ślad przewróconej czcionki na 46 stronie I tomu biblii Gutenberga (25x7 mm, margines pod lewą szpaltą) Katalogi: starożytne biblioteki – Biblioteka Aleksandryjska, biblioteka Pergamońska – organizacja zbiorów: systemy katalogów, etykiety • 2002, Egipt, Bibliotheka Alexandrina Początki informatyki – procedury administracyjne ~2340-2000 Mezopotamia - procedury administracyjne w okresie III dynastii babilońskiej, pierwsze algorytmy ~IX w. p.n.e. Kartagina – legendarna założycielka miasta i jego pierwsza królowa Dydona, wytyczyła obszar o największej powierzchni (w kształcie koła) mając do jego wyznaczenia jedynie wołową skórę Współczesne narzędzia: 1. procedury przetwarzania danych, 2. procedury numeryczne, 3. optymalizacja, badania operacyjne Początki informatyki – algorytm babiloński – Algorytm oblicza wielkość pól I i II, mając daną sumę gruntów 30, zbiór 20 z 30 jednostek pola I, zbiór 15 z 30 jednostek pola II oraz nadwyżkę zbioru 8 i 1/3 z pola I. Algorytm babiloński - współczesny program Wejście: S – suma gruntów; Z1 – zbiór z 30 jednostek pola I; Z2 – zbiór z 30 jednostek pola II; NW – nadwyżka zbioru z pola I. Wyjście: P1 – wielkość pola I; P2 – wielkość pola II. 1. wczytaj S=30; Z1=20; Z2=15; NW=8 1/3; 2. PS=S/2; // oblicz połowę S 3. OS=1/S; // oblicz odwrotność S 4. ZW1=OS*Z1; // oblicz zbiór na jednostkę pola I 5. ZG1=ZW1*PS; // oblicz zbiór z pierwszej połowy pola S 6. ZW2=OS*Z2; // oblicz zbiór na jednostkę pola II 7. ZG2=ZW2*PS; // oblicz zbiór z drugiej połowy pola S 8. R=ZG1-ZG2; // oblicz różnicę zbiorów 9. R: RZ=NW-R; // oblicz różnicę nadwyżki NW i różnicy R 10. SP=ZW1+ZW2; // oblicz sumę zbiorów na jednostkę 11. X=RZ/SP; // oblicz X 12. P1=PS+X; // oblicz P1 13. P2=PS-X; // oblicz P2 14. wyprowadź P1,P2. Ogólne cechy algorytmów babilońskich 1. Generalne procedury rozwiazywania całych klas problemów, głownie o charakterze użytkowym. 2. Konkretne liczby są podane jako pomoc w wyjaśnieniu ogólnej metody (w wyjątkowych przypadkach ogólne zagadnienie jest rozwiązywane bez przykładu). 3. Występują osobliwości takie jak tworzenie kopii tej samej liczby, która w trakcie wykonywania operacji została jako argument zniszczona, zachowywanie wyniku w pamięci oraz wielokrotne obliczanie tej samej wartości. 4. Algorytmy przypominają współczesne programy komputerowe. Kończą się zwrotem: “Taki jest przepis”. 5. Twórcy algorytmów umożliwili zautomatyzowane i powtarzalne wykonywanie tych użytecznych procedur ludziom o różnych kwalifikacjach i doświadczeniu. 6. Mamy do czynienia z podobną standaryzacją i powtarzalnością jak w przypadku procedur administracyjnych. 7. Sześćdziesiątkowy system pozycyjny odgrywał rolę analogiczną do współczesnego systemu binarnego. 8. Zestaw tablic z algorytmami to odpowiednik biblioteki programów. Egipski podręcznik algebry i geometrii ~1750 p.n.e. Pisarz Ahmes (Ahmose) wyjaśnia obliczanie pól powierzchnii zamknietych i objętości (np. piramid i spichlerzy, pisze o ułamkach, ciągach arytmetycznych (np. 2,4,6,8,10, ...) i geometrycznych (np. 2,4,8,16,32, ...), rozwiązuje równania z jedną niewiadomą. Przebieg typowego obliczenia wykonanego przez Ahmesa: “[Problem] Kiedy wiadomo, że kawałek ziemi ma formę uciętego trójkąta (trapez) z dwoma bokami o długości 20 khet, podstawę o długości 6 khet, a przekatną o długości 4 khet, to jaka jest jego powierzchnia? [Rozwiazanie] Dodaj przekątną do podstawy. Otrzymasz 10. Weź połowę z tego, będzie to 5. Pomnóż 5x20. Wynik 100 kwadratowych khetów.” Algorytmy Greków: algorytm Euklidesa (twórca: Eudoksos z Knidos) Algorytm Euklidesa (metoda kolejnych dzieleń) to algorytm znajdowania największego wspólnego dzielnika (NWD) dwóch różnych liczb naturalnych. Nie wymaga rozkładania liczb na czynniki pierwsze. Przebieg algorytmu Euklidesa obliczania NWD liczb a i b: 1. oblicz c jako resztę z dzielenia a przez b 2. zastąp a przez b, zaś b przez c 3. jeżeli b = 0, to szukane NWD = a, w przeciwnym wypadku przejdź do 1. Algorytmy Greków: algorytm Eratostenesa Sito Eratostenesa to algorytm kolejnego wybierania liczb pierwszych z ciągu liczb naturalnych.. Przebieg algorytmu „sito Eratostenesa”: 1. Ze zbioru liczb naturalnych większych od jedności wybieramy najmniejszą i wykreślamy wszystkie jej wielokrotności większe od niej samej. 2. Powtarzamy krok 1 dla kolejnych liczb która nie zostały wykreślone. 3. Liczby niewykreślone w danym przedziale stanowią rozwiązanie. Algorytm Eratostenesa - animacja Pierwsza maszyna licząca i język programowania Charles Babbage (1791-1871) koncepcja komputera mechanicznego - „maszyny analitycznej” Ada Lovelace (1815-1852) pierwszy program komputerowy obliczanie liczb Bernoulliego w maszynie Babbage’a Model komputera von Neumanna – Komunikacja pomiędzy pamiecią danych a wejściem i wyjściem komputera do poprzez ALU (wąskie gardło) John von Neumann (1903-1957) ENIAC - elektroniczna maszyna licząca 1945, USA, Uniwersytet Pensylwania konstruktorzy: J.P. Eckert i J.W. Maulchy 18 000 lamp, 1 500 przekaźników, zużycie mocy 150 kW 30 ton, 140 m kw. Realizacja programów częściowo sprzętowa (kable) Modele obliczeń - maszyna Turinga • Alan Turing (1912-1954) Modele obliczeń - maszyna Turinga Modele obliczeń - maszyna RAM Modele obliczeń - maszyna RAM Dualizm programowo-sprzętowy Systemy komputerowe składają się ze sprzętu (hardware) i oprogramowania (software). Komputery ogólnego przeznaczenia posiadają procesory z ustaloną listą rozkazów. W procesorach RISC (Reduced Instruction Set) lista rozkazów jest uproszczona do minimum. Powoduje to w konsekwencji konieczność budowy bardziej złożonych programów. W procesorach CISC (Complex Instruction Set) lista rozkazów jest rozbudowana. Powoduje to w konsekwencji skrócenie i uproszczenie programów. Generalnie wszystko co w komputerach ogólnego przeznaczenia może być zrealizowane programowo, może też być również zrealizowane sprzętowo (np. przez szybkie procesory grafiki, procesory specjalizowane, itp.). Języki i środowiska programowania Język niskiego poziomu – asambler procesora. Języki wysokiego poziomu – Basic, Fortran, Pascal, C, C++, Java, itp. Języki opisu sprzętu – Abel, VHDL, Verilog Środowiska obliczeń matematycznych i inżynierskich Mathematica, Statistica, Maple, Matlab Środowiska projektowania układów programowalnych Foundation ISE, Webpack ISE (Xilinx), (Altera) Prognozy rozwoju informatyki I I think there is a world market for maybe 5 computers. Thomas Watson, chairman of IBM, 1943 Towards the one-and-a-half ton computer. The Sunday Times, 12th November 1945, by Christopher Lloyd Computers in the future will weight no more than 1.5 tons. Popular Mechanics, 1949 .I have travelled the length and breath of this country and talked with the best people, and I can assure you that data processing is a fad that won' t last out the year. Editor in charge of business books for Prentice Hall, 1957 But what ... is it good for? Engineer at the Advanced Computing Systems Division of IBM, commenting on the microchip, 1968 Prognozy rozwoju informatyki II There is no reason why anyone would want to have a computer in their home. Ken Olson, president, chairman and founder of Digital Equipment Corporation, 1977 So we went to Atari and said, "We've got this amazing thing, even built with some of your parts and what do you think about funding us? Or we'll give it to you. We just want to do it. Pay our salary, we'll come work for you." They said "No". Then we went to Hewlett-Packard; they said, “We don't need you. You haven't got through college yet”. Apple Computer founder Steve Jobs on attempts to get Atari and HP interested in his and Steve Wozniak's personal computer 640k ought to be enough for anybody. Bill Gates of Microsoft, 1981.