1.15k likes | 1.38k Views
Podstawy Informatyk i. Definicje. Informatyka - nazwa powstała w 1968 roku, stosowana w Europie =dział matematyki Computer science , czyli nauki komputerowe , USA =działy nauki stosujące wyrafinowane metody komputerowe (np. chemia czy ekonomia komputerowa).
E N D
Definicje • Informatyka - nazwa powstała w 1968 roku, stosowana w Europie • =dział matematyki • Computer science, czyli nauki komputerowe, USA • =działy nauki stosujące wyrafinowane metody komputerowe (np. chemia czy ekonomia komputerowa). • Computational science, nauki obliczeniowe, Kanada • Information science - nauki o informacji • = zastosowania komputerów do zarządzania informacją.
Definicje • Definicja encyklopedyczna: • „Informatyka zajmuje się całokształtem przechowywania, przesyłania, przetwarzania i interpretowania informacji. Wyróżnia się w niej dwa działy, dotyczące sprzętu i oprogramowania”. • Nowsza definicja, opracowana w 1989 roku przez Association for Computing Machinery (ACM), mówi: • „Informatyka to systematyczne badanie procesów algorytmicznych, które charakteryzują i przetwarzają informację, teoria, analiza, projektowanie, badanie efektywności, implementacja i zastosowania procesów algorytmicznych. Podstawowe pytanie informatyki to: co można (efektywnie) zalgorytmizować”.
Organizacje informatyków • ACM, Association for Computing Machinery. Największa i najstarsza (1947) organizacja skupiająca informatyków. • IEEE Computer Society – IEEE (The Institute of Electrical and Electronics Engineers) jest największym stowarzyszeniem zawodowym na świecie. • American Society for Information Science, stowarzyszenie nauk informacyjnych. • Polska Izba Informatyki i Telekomunikacji
Czym się zajmuje informatyka • Algorytmika - fundament informatyki, wiedza o sposobach rozwiązywania zagadnień, czyli konstruowaniu algorytmów. • Zadania algorytmiczne - czyli zadania, dla których znamy sposób rozwiązania. • Algorytmy efektywne - czyli takie, które dają rozwiązanie przed końcem świata. • Złożoność obliczeniowa algorytmów - ocena, ile trzeba będzie wykonać obliczeń. • Testowanie i dowodzenie poprawności algorytmów. • Algorytmy heurystyczne: metody bez gwarancji na znalezienie rozwiązania (sztuczna inteligencja).
Czym się zajmuje informatyka • Złożoność: N elementów: sortowanie listy T ~ N2 lub N log N Problemy NP-trudne, czas T > Nk dla dowolnego k. Problem wędrującego komiwojażera: jak znaleźć najkrótszą drogę, łączącą N miast odwiedzając każde tylko jeden raz? • T ~ N! = N(N-1)(N-2)... 3·2·1 rośnie bardzo szybko, np. 100! ~10158 • Klasy złożoności problemów i problemy „NP-zupełne”: wszystkie można by rozwiązać w łatwy sposób, gdyby chociaż jeden dał się łatwo rozwiązać!
Czym się zajmuje informatyka Porównanie czasów realizacji algorytmu wykładniczego na dwóch komputerach
Czym się zajmuje informatyka • Struktury danych: liczby, tablice, wektory, rekordy, listy, stosy, kolejki, drzewa, węzły potomne, grafy, diagramy. • Teoria języków programowania: specyfikacja, procesory, automaty skończone (automaty Turinga). • Organizacja i architektury systemów komputerowych, systemów operacyjnych i sieci komputerowych, teoria baz danych. • Zastosowania komputerów - zwykle nie zajmują się nimi informatycy.
Nauki komputerowe • Murray Gell-Mann (Nobel 1969 za teorię kwarków), przemawiając w czasie „Complex Systems Summer School” w Santa Fe, powiedział: Transformacja społeczeństwa przez rewolucję naukową XIX i XX wieku zostanie wkrótce przyćmiona przez jeszcze dalej idące zmiany, wyrastające z naszych rosnących możliwości zrozumienia złożonych mechanizmów, które leżą w centrum zainteresowania człowieka. Bazą technologiczną tej nowej rewolucji będą niewyobrażalnie potężne komputery razem z narzędziami matematycznymi i eksperymentalnymi oraz oprogramowaniem, które jest niezbędne by zrozumieć układy złożone... Przykładami adaptujących się, złożonych systemów jest ewolucja biologiczna, uczenie się i procesy neuronalne, inteligentne komputery, chemia białek, znaczna część patologii i medycyny, zachowanie się ludzi i ekonomia.
Nauki komputerowe • Nauki: teoretyczne i doświadczalne. • Prawidłowości, poszukiwane przez nauki przyrodnicze czy społeczne, są algorytmami określającymi zachowanie się systemów. Programy komputerowe pozwalają na zbadanie konsekwencji zakładanych praw, symulację rozwoju skomplikowanych systemów i określanie własności systemów. • Komputery pozwalają na robienie doświadczeń w sytuacjach zbyt skomplikowanych, by możliwa była uproszczona analiza teoretyczna.
Nauki komputerowe • CTI Centres Primary Contacts, czyli lista centrów kompetencji zastosowań komputerów w różnych gałęziach nauki w Wielkiej Brytanii
Matematyka komputerowa • K. Appel i W. Haken za pomocą intensywnych obliczeń komputerowych udowodnili twierdzenie o czterech barwach. • Dowody przeprowadzone przy pomocy komputera są często znacznie pewniejsze niż dowody klasyczne. • Np. w tablicach całek programy do algebry symbolicznej znajdowały od 10 do 25% błędów lub przeoczeń. • Projekt QED (od ,,Quod Erant Demonstratum”) zmierza on do zbudowania komputerowego systemu, w którym zgromadzona zostanie cała wiedza ludzkości o matematyce • Teoria liczb naturalnych - poszukiwania największych liczb pierwszych na komputerach osobistych rozproszonych po całym świecie.
Matematyka komputerowa • np. fraktale
Fizyka komputerowa • Pisma naukowe z fizyki komputerowej od 30 lat: Computers in Physics, Computer Physics Communications, Computer Physics Reports, Journal of Computational Physics ... • We wrześniu 1990 na konferencji w Amsterdamie stwierdzono: „Fizyka komputerowa to fizyka teoretyczna studiowana metodami eksperymentalnymi” • Astrofizyka, Geofizyka, Meteorologia - to działy fizyki, w których symulacje pełnią podstawową rolę.
Chemia komputerowa • Rozwój teorii i oprogramowania chemii kwantowej w latach 60. i 70. W latach 80. coraz szerzej stosowana w chemii. • Wiele gotowych pakietów programów, dokładności obliczeń własności małych (kilkuatomowych) cząsteczek są na poziomie danych doświadczalnych a można je uzyskać znacznie łatwiej. Chemicy komputerowi znacznie lepiej znają się na programach i komputerach niż na robieniu doświadczeń czy rozwijaniu teorii. • Modelowanie molekularne, farmakologia kwantowa pozwalają na projektowanie nowych leków.
Biologia i biocybernetyka komputerowa • Symulacje na poziomie makroskopowym: ekologia, przepływ substancji i energii w przyrodzie, biologia populacyjna. • Symulacje na poziomie molekularnym, w genetyce i biologii molekularnej, w szczególności problemy powstania życia i kodu genetycznego. • Struktura przestrzenna białek decyduje o ich własnościach. Metody eksperymentalne określania struktury są bardzo kosztowne. Metody komputerowe określają strukturę na podstawie sekwencji aminokwasów. • Projekt mapowania ludzkiego genomu: 3 mld par, ogromne bazy danych, ich analiza może zająć kilkadziesiąt lat. • Próba rekonstrukcji drzewa ewolucji.
Biologia i biocybernetyka komputerowa • Symulacje działania komórek nerwowych i fragmentów układu nerwowego, funkcji mózgu. • Biologia komputerowa przechodzi w komputerową medycynę. Opracowuje się symulacje działania całych narządów! Symulacje cykli biochemicznych pozwalają śledzić na komputerowym modelu co dzieje się w organizmie z podawanym lekiem czy innymi substancjami.
Nauki o poznaniu, cognitive science • Od 1975 roku z połączenia psychologii, sztucznej inteligencji, badań nad mózgiem, lingwistyki, filozofii, powstała nowa gałąź nauki, określana jako „nauki o poznaniu”, „nauki kognitywne” lub „kognitywistyka”. Cel: zrozumienie, w jaki sposób człowiek postrzega i poznaje świat, w jaki sposób reprezentowana jest w naszym umyśle informacja kształtująca nasz obraz świata. • Lingwistyka komputerowa: analiza i synteza mowy, tłumaczenie maszynowe, modele problemów z mową. • Psychologia i symboliczne modele umysłu oraz modele koneksjonistyczne. • Psychiatria komputerowa - modele syndromów neuropsychologicznych i chorób psychicznych, zrozumienie reakcji organizmu na leki psychotropowe. • Neuronauki kognitywne (cognitive computational neuroscience), czyli jak komputerowe symulacje funkcji mózgu wyjaśniają zachowanie.
Ekonomia komputerowa • Nagrody Nobla z ekonomii przyznawane są często za modele matematyczne zagadnień ekonomicznych. • Realistyczne modele w makroskali lub w skali całego globu wymagają złożonych modeli komputerowych. • Modele ekonometryczne pozwalają na dość dokładne przewidywania sytuacji ekonomicznej w wybranych dziedzinach na rok z góry.
Nauki humanistyczne • Humanistic informatics, czyli informatyka humanistyczna, to coraz częściej używany termin. • Kliometria, nauka zajmująca się ilościowymi (statystycznymi) metodami w historii. Wkrótce wszystkie informacje historyczne będą natychmiast dostępne badaczom i zamiast szperać po starych dokumentach historycy będą spędzali całe dnie przed monitorem. • Rekonstrukcje znanych zabytków, np. kompleksu Borobodur na Jawie, wymaga dopasowania setek tysięcy fragmentów kamiennych. Graficzne bazy danych obiektów archeologicznych rozproszonych po wielu muzeach.
Nauki humanistyczne • Geografia komputerowa: migracje, geografia społeczna. Kartografia, mapy cyfrowe. Wizualizacja danych systemów informacji geograficznej (Geographic Information Systems). • Stylometria, czyli badanie stylu literackiego metodami ilościowymi. Możliwa dzięki wprowadzeniu komputerowych metod klasyfikacji i dostępności tekstów w formie elektronicznej. • Pozwala rozstrzygnąć sporne kwestie dotyczące autorstwa dzieł literackich, np. na początku lat 90. rozstrzygnięto kwestię autorstwa ostatniego z dzieł przypisywanych Szekspirowi (The two noble kinsmen), napisanego wspólnie z Johnem Fletcherem.
Nauki humanistyczne • Informatyka prawnicza, zajmująca się głównie bazami danych dla potrzeb prawa. • Wyszukiwanie sprzeczności wewnętrznych w zbiorach przepisów. Systemy ekspertowe przewidujące podziału majątku przez sędziego w procesach rozwodowych. • Na konferencji „Large scale analysis and modeling” sponsorowanej przez IBM, nagrodzono pracę o oddzielaniu informacji genetycznej od środowiskowej dla krów mlecznych. • Uwzględniono informację od wszystkich spokrewnionych krów - wymagało to nie tylko ogromnej bazy danych, ale rozwiązania układu równań o wymiarze 10 milionów! • Symulacje ekologiczne, np. dokładny model przepływu energii w społeczeństwie zbieracko-pasterskim.
Czyste nauki komputerowe • Część teorii systemów złożonych, symulacje układów dynamicznych, teoria automatów komórkowych • Do czego zaliczyć grafikę komputerową? Potrzebna jest wiedza o matematycznym modelowaniu rzeczywistości, psychologii percepcji, teksturach fraktalnych, technikach animacji + artystyczny talent.
Reprezentacja informacji w komputerze • Komputer liczy a człowiek myśli? Poziom molekularny: te same atomy, różne cząsteczki, ale jakościowo podobnie • Podstawowe elementy: bramki logiczne, komórki pamięci <-> neurony, synapsy • Neurony przetwarzają impulsy, obwody scalone przetwarzają impulsy. • Poziom symboliczny: mózgi i komputery przetwarzają informację.
Reprezentacja informacji w komputerze • Informacja - pojęcie abstrakcyjne • szybkość samochodu wynosi 160 km/h=100 mil/h=44.4 m/sek, zapisana alfabetem arabskim, pismem Brailla itd. • Dane: konkretna reprezentacja informacji • Wybór reprezentacji informacji jest bardzo ważny dla wygody przetwarzania danych; np. dzielenie liczb zapisanych rzymskimi cyframi • Typy danych • Dane typu logicznego: „tak” lub „nie” Dane alfanumeryczne (tekstowe – litery, cyfry, znaki interpunkcyjne) Dane numeryczneDane typu data i czas Dane graficzne Dane muzyczne Dane złożone o ustalonej strukturze (rekordy),
Reprezentacja informacji w komputerze • Bit = binary unit, czyli jednostka dwójkowa, tak/nie. Ciąg bitów wystarczy by przekazać dowolną wiadomość: np. za pomocą tam-tamów czy telegrafu. Alfabet polski ma 35 liter, uwzględniając małe i duże litery + znaki specjalne mamy prawie 100 znaków. • Bramki tranzystorowe przyjmują tylko dwa stany: przewodzą lub nie, są binarne. • 1 bit: 0, 1, rozróżnia 2 znaki.2 bity: 00, 01, 10, 11, rozróżniają 4 znaki.3 bity: 000, 001, 010, 011, 100, 101, 110, 111, rozróżniają 8 znaków.4 bity: 0000 ... 1111, rozróżniają 16 znaków.8 bitów pozwala odróżnić 28 = 16 x 16 = 256 znaków. • Ciąg 8 bitów = 1 bajt, wygodna jednostka do pamiętania podstawowych symboli.
Reprezentacja informacji w komputerze • Wielkość danych 210=1024=1K, kilobajt, typowa strona tekstu to kilka KB;220=1024K=1M, megabajt, książka bez grafiki lub minuta muzyki;230=1024M=1G, gigabajt, film cyfrowy, sporo grafiki, ludzki genom;240=1024G=1T, terabajt, duża biblioteka, szerokoekranowy film w kinie;250=1024T=1P, petabajt, ludzka pamięć Biblioteka Kongresu USA zawiera około 20 TB informacji tekstowej, ale filmy i informacja graficzna dużo więcej. Eksperymenty naukowe dostarczają terabajtów danych dziennie. • Rozróżnienie B i b:B=bajty, KB=kilobajty, MB=megabajty, GB=gigabajty b=bity, Kb=kilobity, Mb-megabity .... • Słowo: ilość bitów – np. 8, 16, 32, 48, 64, 128, 256, na których wykonywana jest jednocześnie operacja.
Reprezentacja informacji w komputerze • Standardy reprezentowania (kodowania) znaków alfanumerycznych: • Kod alfanumeryczny - przypisuje kolejne liczby naturalne znakom z określonego zbioru • Kody alfanumeryczne stosowane w komputerach i internecie • ASCII • rozszerzony standard ASCII • ANSI • Code Page • Unicode
Reprezentacja informacji w komputerze • ASCII - American Standard Code for Information Exchange, używa 7 bitów. • Zawiera 128 pozycji ze względu na kodowanie na 7-bitowej liczbie (27=128) • Jedynie 94 znaki to znaki posiadające reprezentację graficzną (litery łacińskie, cyfry, znaki przestankowe, znaki specjalne) • Pierwsze 32 znaki są znakami sterującymi (np. znak końca wiersza, końca linii, wysuw papieru do końca strony)
Reprezentacja informacji w komputerze • Rozszerzony standard ASCII: 8 bitów, czyli 256 znaków. • Znaki między 128 a 255 służą do: • sterowania drukarek • stosowania w DOS narodowych znaków • do tworzenia na wydruku i ekranie prymitywnej grafik, w tym ramek tabel (tzw. semigrafika) • Fakt rozmieszczenia w jednym przedziale kodów do trzech różnych zastosowań owocuje „kolizjami”, np. stare drukarki traktowały niektóre z kodów z tego zakresu jako znaki sterujące krojem czcionki, przesuwem papieru itp. • ANSI • odmiana kodów ASCII - brak znaków semigraficznych i sterujących drukarką oraz innym umieszczeniem znaków narodowych
Reprezentacja informacji w komputerze • Code Page - strona kodowa • zestaw rozszerzonych znaków ASCII zawierający znaki narodowe • informacja o narodowym sposobie zapisu waluty, daty i czasu oraz separatorów dziesiętnych i tysięcznych • klawiatura narodowa • Organizacja ISO stworzyła strony kodowe m.in. dla krajów Europu Wschodniej, Rosji, krajów Dalekiego Wschodu; ISO-8859-x (2 to numer strony kodowej Polski) • Jeszcze inne standardy kodowania polskich liter: CP 852 (latin2), Mazovia, DHN, CSK, Cyfromat (http://www.agh.edu.pl/ogonki/)
Reprezentacja informacji w komputerze • (A) (C) (E) (L) (N) (O) (S) (X) (Z) (a) (c) (e) (l) (n) (o) (s) (x) (z) ˇ Ć Ę Ł Ń Ó ¦ ¬ Ż ± ć ę ł ń ó ¶ Ľ ż • ----------------------------------------------------------------------------------------------------------------------------------------------------------------- • ISO-8859-2 161 198 202 163 209 211 166 172 175 177 230 234 179 241 243 182 188 191 • Windows-EE 165 198 202 163 209 211 140 143 175 185 230 234 179 241 243 156 159 191 • IBM (CP852) 164 143 168 157 227 224 151 141 189 165 134 169 136 228 162 152 171 190 • Mazovia 143 149 144 156 165 163 152 160 161 134 141 145 146 164 162 158 166 167 • CSK 128 129 130 131 132 133 134 136 135 160 161 162 163 164 165 166 168 167 • Cyfromat 128 129 130 131 132 133 134 136 135 144 145 146 147 148 149 150 152 151 • DHN 128 129 130 131 132 133 134 136 135 137 138 139 140 141 142 143 145 144 • IINTE-ISIS 128 129 130 131 132 133 134 135 136 144 145 146 147 148 149 150 151 152 • IEA-Swierk 143 128 144 156 165 153 235 157 146 160 155 130 159 164 162 135 168 145 • Logic 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 • Microvex 143 128 144 156 165 147 152 157 146 160 155 130 159 164 162 135 168 145 • Ventura 151 153 165 166 146 143 142 144 128 150 148 164 167 145 162 132 130 135 • ELWRO-Junior 193 195 197 204 206 207 211 218 217 225 227 229 236 238 239 243 250 249 • Mac 132 140 162 252 193 238 229 143 251 136 141 171 184 196 151 230 144 253 • AmigaPL 194 202 203 206 207 211 212 218 219 226 234 235 238 239 243 244 250 251 • TeXPL 129 130 134 138 139 211 145 153 155 161 162 166 170 171 243 177 185 187 • Atari-Calamus 193 194 195 196 197 198 199 200 201 209 210 211 212 213 214 215 216 217 • CorelDraw! 197 242 201 163 209 211 255 225 237 229 236 230 198 241 243 165 170 186 • ATM 196 199 203 208 209 211 214 218 220 228 231 235 240 241 243 246 250 252 • Unicode 0x0104 0x0106 0x0118 0x0141 0x0143 0x00D3 0x015A 0x0179 0x017B 0x0105 0x0107 0x0119 0x0142 0x0144 0x00F3 0x015B 0x017A 0x017C
Reprezentacja informacji w komputerze • Od 1992 roku standard Unicode, 2 bajty/znak. • W jednym pliku można zapisać 162=65536 znaków, w tym około 3000 znaków definiowalnych przez użytkownika. • Unicode jest używany w systemach operacyjnych Windows XP, NT, 98 Novell Netware, pakiecie Office. Widać to po wielkości plików.
Reprezentacja informacji w komputerze • Kody liczbowe • Pozycyjne i niepozycyjne systemy liczenia • zapis niepozycyjny (liczby rzymskie) MCMXCIX • zapis pozycyjny 1999 - o znaczeniu cyfry w zapisie liczby świadczy jej pozycja • Pozycyjne systemy liczenia • system dziesiętny 17(10)=1*101+7*100 • system dwójkowy 10001(2)= 1*24+0*23+0*22+0*21+1*20 • system ósemkowy 21(8) = 2*81+1*80 • system szesnastkowy 11(16) = 1*161+1*160
Reprezentacja informacji w komputerze • Kody liczbowe • naturalny kod binarny - liczba całkowita bez znaku (dodatnia) • kod dwójkowo-dziesiętny (BCD) - liczba całkowita bez znaku (dodatnia) • kod uzupełnień do dwóch (U2) - liczba całkowita ze znakiem • liczba stałopozycyjna • liczba zmiennopozycyjna • Naturalny kod binarny 0111 1001 1000(2) = 1944(10) • Kod BCD 0111 1001 1000(BCD) = 798(10)
Reprezentacja informacji w komputerze • Kod U2 - najbardziej znaczący bit określa znak liczby (0-dodatnia, 1-ujemna). • Jeżeli bit ten =0, to liczba jest dodatnia i zapis w kodzie U2 nie różni się od zapisu NKB. • Zmianę znaku liczby uzyskuje się przez zamianę wszystkich bitów na przeciwne i dodanie 1 do bitu najmniej znaczącego • Dodawanie liczb binarnych 0+0=0 0+1=1 1+0=1 1+1=0 przeniesienie 1
Reprezentacja informacji w komputerze • Kod U2 • A =00010111 = 23(10) • Aneg =11101000 • Aneg+1 =11101001=-23(10) • Uwaga: odejmowanie liczb binarnych A - B=A+Bneg+1 • jeżeli przeniesienie=1 to A>=B • jeżeli przeniesienie=0 to A<B
Reprezentacja informacji w komputerze II • mnożenie liczby dziesiętnej przez 2 - przesunięcie odpowiadającej liczby binarnej o jedną pozycję w lewo i wpisanie 0 w bit najmniej znaczący 3(10) = 0011 6(10) = 0110 • dzielenie liczby dziesiętnej parzystej przez 2 odpowiada przesunięcie binarnej liczby o jedną pozycję w prawo i wpisanie 0 w bit najbardziej znaczący 8(10) = 1000 4(10) = 0100
Reprezentacja informacji w komputerze • przepełnienie arytmetyczne - przekroczenie przez wynik operacji dodawania lub odejmowania liczby bitów dla niego zarezerwowanych 7(10) = 0111(U2) + 5(10) = 0101(U2) ------------------------- 12(10) =? 1100(U2) = -4(10)
Reprezentacja informacji w komputerze • Podstawowe operacje na danych binarnych: • porównanie • przesunięcie • arytmetyczne • logiczne
Architektura komputera I • Maszyna Turinga
Architektura komputera • Maszyna von Neumanna • Koncepcja przechowywanego programu • Pamięć główna przechowuje dane i programy • Jednostka arytmetyczno-logiczna (ALU) działa na danych binarnych • Jednostka sterująca interpretuje oraz wykonuje rozkazy z pamięci • Urządzeniami we/wy steruje jednostka sterująca • Princeton Institute for Advanced Studies (IAS komputer ukończony w 1952)
Program maszynowy • (np. dodawanie dwóch liczb zapisanych w pamięci operacyjnej) • ... • 150 Instrukcja 1 (np. LDA - pobierz dane z pamięci i zapamiętaj w akumulatorze) • 151 argument (np. 233 - adres danych do pobrania) • 152 Instrukcja 2 (np. ADDA - pobierz dane z pamięci i dodaj do zawartości akumulatora) • 153 argument (np. 234 - adres danych do pobrania) • 154 Instrukcja 3 (np. STA pobierz dane z akumulatora i zapisz do pamięci) • 155 argument (adres pod którym zapisane zostaną dane, np. 235)