Włodzisław Duch, notatki do wykładów wstępnych, według książki Fascynujący świat komputerów


Informatyka i nauki komputerowe.

Czym zajmuje się informatyka?

Stara definicja encyklopedyczna głosi:

„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”.

Większość z tego, co robią informatycy nie bardzo do tej definicji pasuje.

Definicja z Wikipedii: Informatyka (ang. computer science, computing science, information technology, informatics) – dziedzina nauki i techniki zajmująca się przetwarzaniem informacji – w tym technologiami przetwarzania informacji oraz technologiami wytwarzania systemów przetwarzających informacje, pierwotnie będąca częścią matematyki, rozwinięta do osobnej dyscypliny nauki, pozostającej jednak nadal w ścisłym związku z matematyką, która dostarcza podstaw teoretycznych przetwarzania informacji.

Definicja opracowana w 1989 roku przez Association for Computing Machinery:

„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ć”.

Najważniejsze organizacje profesjonalne:

ACM, Association for Computing Machinery. Największa i najstarsza (1947) organizacja skupiająca informatyków.


IEEE Computer Society - IEEE jest największym stowarzyszeniem zawodowym na świecie.

American Society for Information Science, stowarzyszenie nauk informacyjnych.


Czym zajmuje się 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).

Złożoność: N elementów: sortowanie listy T ~ N2 lub N log N
Problemy NP-trudne, czas T > Nk  dla dowolnego k. Próby rozwiązania takich problemów przypominają troche konstruowanie perypetuum mobile.
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ć!

Struktury danych: liczby, tablice, wektory, rekordy, listy, stosy, kolejki, drzewa, liście 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, czyli to co tygrysy lubią najbardziej?
Zwykle nie zajmują się nimi informatycy.

Literatura

David Harel, Rzecz o istocie informatyki (Wyd. Naukowo-Techniczne, Warszawa 1992)
Bardzo dobry wstęp do „prawdziwej” informatyki.


Włodzisław Duch, notatki do wykładów wstępnych, według książki Fascynujący świat komputerów