Informatyka: Różnice pomiędzy wersjami

[wersja przejrzana][wersja przejrzana]
Usunięta treść Dodana treść
dodano kilka dyscyplin
Szeroka rozbudowa przeglądu dyscyplin. Zdecydowana większość informacji pochodzi z angielskiej wersji strony, lecz także z niemieckiej i różnych stron polskiej wikipedii. Niektóre rozdziały wymagają jeszcze poszerzenia. Brakuje jeszcze także przeniesienia większości rysunków i źródeł.
Linia 13:
</div>
</div>
'''Informatyka''' – dziedzina [[nauki ścisłe|nauk ścisłych]] i [[technika|techniki]] zajmująca się [[przetwarzanie informacji|'''przetwarzaniem informacji''']], w tym metodami ich przetwarzania oraz [[technologia]]mi wytwarzania układów je przetwarzających. Zajmuje się badaniem procesów, które wchodzą w interakcje z '''danymi''' i które mogą być reprezentowane jako dane w postaci '''programów'''. Umożliwia wykorzystanie '''algorytmów''' do '''manipulowania, przechowywania i przesyłania informacji''' cyfrowych, bada teorię obliczeń i praktykę projektowania '''systemów komputerowych'''. Według Petera Denninga podstawowym pytaniem leżącym u podstaw informatyki jest: „Co można (skutecznie) zautomatyzować?”<ref>{{Cytuj |tytuł = Wayback Machine |data = 2006-05-25 |data dostępu = 2020-01-15 |opublikowany = web.archive.org |url = https://web.archive.org/web/20060525195404/http://www.idi.ntnu.no/emner/dif8916/denning.pdf}}</ref>.
 
Początkowo stanowiła część matematyki, później wraz z powstaniem [[Komputer|'''komputerów''']] rozwinęła się do odrębnej dyscypliny. Informatyka teoretyczna pozostaje jednak nadal z nią w ścisłej relacji z matematyką, którawykorzystując dostarczado jejopisu podstawjęzyk teoretycznychmatematyczny.
 
== NazewnictwoEtymologia ==
Określenie ''informatyka'' ma swój odpowiednik w języku angielskim: ''computer science'' – dosłownie: ''nauka o komputerze'' – co może być mylące i dlatego jest krytykowane w środowiskach akademickich i informatycznych<ref>{{cytuj stronę|url=http://miesiecznik.uz.zgora.pl/wydawnictwo/miesiecznik11-2002/17.pdf|tytuł=Informatyka – nauka, sztuka, czy rzemiosło?|autor=Marian Adamski|data=2002-09-30|data dostępu=2017-07-15|opublikowany="Uniwersytet Zielonogórski" – Miesięcznik Społeczności Akademickiej|język=}}</ref>. Stąd proponowanych jest wiele alternatywnych nazw jak ''information technology'' (IT), ''information scienc''e, ''information engineering'', ''information and computing technology'' czy ''informatics''. Obecnie pojęcia te są często używane zamiennie, w istocie obejmują ten sam obszar wiedzy, choć niekiedy z lekko różnym podejściem<ref>{{Cytuj |tytuł = Difference Between Computer Science & Information Technology {{!}} King |data dostępu = 2020-01-16 |opublikowany = King University Online |url = https://online.king.edu/news/difference-between-a-computer-science-information-technology-degree/ |język = en-US}}</ref>.
 
W języku polskim termin ten''informatyka'' zaproponował w październiku 1968 [[Romuald Marczyński]] (w Zakopanem, na ogólnopolskiej konferencji poświęconej maszynom matematycznym), na wzór francuskiego ''informatique'' i niemieckiego ''Informatik''. Branża informatyczna jest często określana jako branża IT.
 
== Przegląd dyscyplin informatycznych ==
Jako dyscyplina informatyka obejmuje szereg tematów, od teoretycznych badań nad [[Algorytm|algorytmami]] i [[Teoria obliczalności|teorią obliczalności]] po praktyczne zagadnienia związane z implementowaniem systemów obliczeniowych zarówno w [[Sprzęt komputerowy|warstwie sprzętowej]] jak i [[Oprogramowanie|oprogramowaniu]].<ref>{{Cytuj |tytuł = Computer Science as a Profession |data = 2008-06-17 |data dostępu = 2020-01-14 |opublikowany = web.archive.org |url = https://web.archive.org/web/20080617030847/http://www.csab.org/comp_sci_profession.html}}</ref><ref>{{Cytuj |autor = National Research Council |tytuł = Computer Science: Reflections on the Field, Reflections from the Field |data = 2004-10-04 |data dostępu = 2020-01-14 |isbn = 978-0-309-09301-9 |url = https://www.nap.edu/catalog/11106/computer-science-reflections-on-the-field-reflections-from-the-field |język = en}}</ref> CSAB, dawniej zwana ''Computing Sciences Accreditation Board'' - w skład której wchodzą przedstawiciele ''Association for Computing Machinery'' (ACM) oraz ''IEEE Computer Society'' (IEEE CS)<ref>{{Cytuj |tytuł = CSAB, Inc. |data dostępu = 2020-01-14 |opublikowany = www.csab.org |url = http://www.csab.org/}}</ref> - identyfikuje cztery obszary, które uważa za kluczowe dla informatyki: [[teoria obliczeń]], [[Algorytmika|algorytmy]] i [[Struktura danych|struktury danych]], [[Język programowania|języki]] i metodologia [[Programowanie|programowania]] oraz [[Inżynieria komputerowa|budowa]] i [[Architektura komputera|architektura komputerów]]. Oprócz tych czterech podstawowych obszarów, CSAB identyfikuje również takie dziedziny, jak [[inżynieria oprogramowania]], [[sztuczna inteligencja]], [[Sieć komputerowa|sieci komputerowe]] i [[telekomunikacja]], [[Baza danych|systemy baz danych]], [[obliczenia równoległe]], [[obliczenia rozproszone]], [[Interakcja człowiek–komputer|interakcja człowiek-komputer]], [[grafika komputerowa]], [[System operacyjny|systemy operacyjne]] oraz [[Metoda numeryczna|metody numeryczne]] i symboliczne jako będące ważnymi dziedzinami informatyki<ref>{{Cytuj |tytuł = Computer Science as a Profession |data = 2008-06-17 |data dostępu = 2020-01-14 |opublikowany = web.archive.org |url = https://web.archive.org/web/20080617030847/http://www.csab.org/comp_sci_profession.html}}</ref>.
Współczesna informatyka jest obecnie bardzo szeroką dziedziną. Stanowi [[dyscyplina naukowa|dyscyplinę naukową]] (jak fizyka czy chemia), a także jest mocno powiązana z [[Działalność gospodarcza|działalnością gospodarczą]] i wieloma innymi aspektami życia.
 
=== Informatyka teoretyczna ===
Bardziej znane i popularne działy informatyki to przede wszystkim (kolejność alfabetyczna):
Teoretyczna informatyka ma ducha matematycznego i abstrakcyjnego, ale motywację czerpie z praktycznych i codziennych obliczeń. Jej celem jest zrozumienie natury obliczeń, w konsekwencji czego wprowadza ich coraz bardziej efektywne metody. Wśród jej głównych obszarów wyróżnia się:
 
==== Algorytmika ====
* [[:Kategoria:Administracja sieciowa|administracja sieciowa]] – zarządzanie [[sieć komputerowa|siecią komputerową]]
{{Osobny artykuł|Algorytmika}}Algorytmika zajmuje się projektowaniem i analizą [[Algorytm|algorytmów]] i [[Struktura danych|struktur danych]]. Jest najstarszą i jedną z najważniejszych dziedzin informatyki. Wśród jej ważniejszych dyscyplin można wymienić projektowanie i [[Analiza algorytmów|analizę algorytmów]], [[optymalizację kombinatoryczną]], [[Logika algorytmiczna|logiką algorytmiczną]] czy [[Geometria obliczeniowa|geometrię obliczeniową]]. Historycznie podstawowymi zagadnieniami są algorytmy [[Sortowanie|sortowania]], [[Kompresja (informatyka)|kompresji]], [[Przeszukiwanie drzewa|przeszukiwania]] czy [[Szyfrowanie danych|szyfrowania]] oraz [[Metoda numeryczna|metody numeryczne]], m.in [[Aproksymacja|aproksymacji]], [[Interpolacja (matematyka)|interpolacji]] i [[Całkowanie numeryczne|całkowania numerycznego]]. Algorytmy podlegają klasyfikacji, wyróżniając np. [[Algorytm zachłanny|algorytmy zachłanne]] jak [[algorytm Dijkstry]] czy [[algorytm Kruskala]], [[:Kategoria:Generowanie liczb losowych|metody generowania liczb losowych]], [[:Kategoria:Metody optymalizacji|metody optymalizacji]] itd. Do podstawowych struktur danych danych należą [[Struktura (programowanie)|rekord]], [[Tablica (informatyka)|tablica]], [[Stos (informatyka)|stos]], [[lista]], [[Kolejka (informatyka)|kolejka]], [[Drzewo (informatyka)|drzewa]] czy [[Graf (matematyka)|grafy]]. Próbą połączenia idei struktur danych i algorytmów jest paradygmat [[Programowanie obiektowe|programowania obiektowego]]. Algorytmika stanowi trzon dla bardzo wielu innych gałęzi informatyki jak chociażby grafika komputerowa, uczenie maszynowe czy przetwarzanie obrazów.
* [[:Kategoria:Administracja systemem|administracja systemem]] – zarządzanie [[System informatyczny|systemem informatycznym]]
 
* [[:Kategoria:Algorytmika|algorytmika]] – tworzenie i analizowanie [[algorytm]]ów, najstarsza dyscyplina informatyki
==== Teoria obliczeń i automatów ====
*[[Data scientist|analiza danych]] - analizowanie danych tak zwanych "big data"
{{Osobny artykuł|Teoria obliczeń|Teoria automatów}}Teoria obliczeń – dział informatyki dzielący się na [[Teoria obliczalności|teorię obliczalności]] dostarczającą podstaw teoretycznych do odpowiedzi na pytanie czy dany problem jest możliwy do rozwiązania przy użyciu komputerów oraz na [[Złożoność obliczeniowa|złożoność obliczeniową]] w uproszczeniu mówiącą jak szybko i jakim kosztem czasowym i pamięciowym da się to policzyć. Jednym z ważniejszych jej obszarów jest [[teoria automatów]]. Przykładowymi zagadnieniami są [[Maszyna Turinga]] czy [[Hipoteza Churcha-Turinga]].
* [[:Kategoria:Architektury procesorów|architektura procesorów]] – projektowanie [[procesor]]ów, bez których nie byłoby komputerów
 
* [[:Kategoria:Bezpieczeństwo komputerowe|bezpieczeństwo komputerowe]] – dyscyplina łącząca informatykę z [[telekomunikacja|telekomunikacją]] w celu zapewnienia [[Poufność|poufności]] i [[Bezpieczeństwo teleinformatyczne|bezpieczeństwa danych]]
==== Teoria informacji i kodowania ====
* [[:Kategoria:Grafika komputerowa|grafika komputerowa]] – wykorzystuje technikę komputerową w celu [[Wizualizacja (informatyka)|wizualizacji]] rzeczywistości
{{Osobny artykuł|Teoria informacji|Teoria kodowania}}Teoria informacji zajmuje się problematyką informacji, w tym teorią przetwarzania i przesyłania informacji, np. w celu ich [[Transmisja|transmisji]] lub [[Kompresja (informatyka)|kompresji]]. Przykładowo prowadza takie pojęcia jak [[komunikat]], [[Entropia (teoria informacji)|entropia]], [[ciało skończone]] czy [[bit]] będący podstawową jednostką w informatyce. [[Teoria kodowania]] zajmuje się tworzeniem i analizą [[:Kategoria:Komputerowe reprezentacje danych|reprezentacji danych w komputerze]]. Wyróżnia się m.in. [[Zestaw znaków|kodowanie znaków]] czy [[kodowanie transportowe]], do których należą np. [[kod stałopozycyjny]], [[kod uzupełnieniowy]], [[kod Hamminga]], [[kod Graya]] czy [[kod znak-moduł]].
* [[informatyka afektywna]] – budowa systemów rozpoznających emocje użytkowników oraz reagujących na nie
 
* [[informatyka kwantowa]] - gałąź informatyki łącząca ją z mechaniką kwantową, w której do przetwarzania informacji wykorzystywane są własności układów kwantowych
==== Teoria języków programowania ====
* [[informatyka medyczna]] – metoda tworzenia systemów przetwarzających informacje wykorzystywane w opiece zdrowotnej
{{Osobny artykuł|Teoria jezyków programowania}}Teoria języków programowania - (''ang. Programming language theory, PLT'') to dziedzina informatyki zajmująca się projektowaniem, wdrażaniem, analizą, charakteryzacją i klasyfikacją [[Język programowania|języków programowania]] oraz ich indywidualnymi cechami. Na języki programowania składa się składnia, semantyka, typy danych i [[Biblioteka standardowa|biblioteki standardowe]] zazwyczaj posiadające co najmniej obsługę [[Urządzenie wejścia-wyjścia|wejścia-wyjścia]], obsługę [[Plik danych|plików]], obsługę [[Wielowątkowość|wielowątkowości]], zarządzanie [[Pamięć operacyjna|pamięcią operacyjną]], podstawowe typy danych, funkcje do zarządzania nimi czy operacje na ciągach tekstowych. Ważnym obszarem PLT jest [[Kompilator|teoria kompilacji]], na której proces składa się wykonanie poleceń [[Preprocesor|preprocesora]], [[analiza leksykalna]], [[analiza składniowa]], [[analiza semantyczna]], [[optymalizacja kodu wynikowego]] i [[generacja kodu]]. Języki klasyfikuje się według poziomu abstrakcji na którym operują na [[Język niskiego poziomu|języki niskiego poziomu]] oraz [[Język wysokiego poziomu|języki wysokiego poziomu]], wyróżnia się także wiele [[Paradygmat programowania|paradygmatów programowania]].
* [[informatyka śledcza]] – dostarczająca cyfrowych środków dowodowych dotyczących przestępstw popełnionych cyfrowo lub przy użyciu systemów elektronicznych
 
* [[:Kategoria:Inżynieria oprogramowania|inżynieria oprogramowania]] – produkcja [[Oprogramowanie|oprogramowania]]
==== Informatyka kwantowa ====
* [[:Kategoria:Języki programowania|języki programowania]] – tworzenie języków programowania, podstawowa dyscyplina informatyki
{{Osobny artykuł|Informatyka kwantowa}}Informatyka kwantowa - gałąź informatyki łącząca ją z [[Mechanika kwantowa|mechaniką kwantową]], w której do przetwarzania informacji wykorzystywane są własności [[Układ kwantowy|układów kwantowych]]. Elementarnym nośnikiem [[Informacja kwantowa|informacji kwantowej]] jest [[kubit]], kwantowy odpowiednik bitu. Stan kubitu opisany jest przez dowolną [[Kombinacja liniowa|kombinację liniową]] stanów bazowych. W najbardziej popularnym modelu kwantowego przetwarzania informacji, operacje na kubitach są reprezentowane za pomocą [[Bramka kwantowa|bramek kwantowych]]. Najbardziej spektakularny sukces informatyki kwantowej to [[Kryptologia kwantowa|kwantowa kryptografia]]. Natomiast najbardziej obiecującym kierunkiem badań są prace dotyczące idei [[Komputer kwantowy|kwantowego komputera]]. Dynamiczy rozwój technologii w ostatnich latach spowodwał że gałąź ta wyłamuje się poza czysto-teoryczne rozważania. Stworzono pewne realizacje [[Bramka kwantowa|bramek kwantowych]]<nowiki/>a na targach CES w 2018 roku amerykańskie przedsiębiorstwo informatyczne [[IBM]] zaprezentowała swój działający, 50-kubitowy komputer kwantowy.
* [[kryptologia]] - dyscyplina zajmująca się szyfrowaniem tj. przekazywaniem i przechowywaniem informacji w sposób zabezpieczony przed niepowołanym dostępem
{| style="border:1px solid #ccc; text-align:center; margin:auto;" cellspacing="15"
* [[programowanie komputerów]] – czyli tworzenie [[kod źródłowy|kodu źródłowego]] programów komputerowych, najpopularniejsza dyscyplina informatyki
|-
* [[:Kategoria:Sprzęt komputerowy|sprzęt komputerowy]] – komputery i ich [[Urządzenie peryferyjne|urządzenia peryferyjne]]
| [[File:DFAexample.svg|96px]]
* [[symulacja komputerowa]] – komputerowa [[symulacja]] z wykorzystaniem [[Modelowanie matematyczne|modelowania matematycznego]]
| [[File:Wang tiles.svg|96px]]
* [[:Kategoria:Systemy informatyczne|systemy informatyczne]] – tworzenie systemów informatycznych w celach użytkowych
| '''P = NP?'''
* [[:Kategoria:Sztuczna inteligencja|sztuczna inteligencja]] – komputerowe symulowanie inteligencji
| '''GNITIRW-TERCES'''
* [[:Kategoria:Teoria informacji|teoria informacji]] – dyscyplina zajmująca się problematyką informacji, w tym teorią przetwarzania i przesyłania informacji
| [[File:Blochsphere.svg|96px]]
* [[teoria obliczeń]] – dział informatyki dostarczający podstaw teoretycznych do odpowiedzi na pytanie czy dany problem jest możliwy do rozwiązania przy użyciu komputerów
|-
* [[:Kategoria:Webmastering|webmastering]] – projektowanie, programowanie i publikacja [[serwis internetowy|serwisów internetowych]].
| [[Teoria automatów]]
| [[Teoria obliczalności]]
| [[Złożoność obliczeniowa]]
| [[Kryptografia]]
| [[Komputer kwantowy|Teoria obliczeń kwantowych]]
|}
 
==== Metody formalne ====
{{Osobny artykuł|Metody formalne}}Metody formalne - tworzenie specyfikacji, projektowania i weryfikacji [[Oprogramowanie|oprogramowania]] lub [[System informatyczny|systemów informatycznych]] w języku matematycznym. Metody formalne najlepiej opisać jako zastosowanie dość szerokiej gamy podstaw teoretycznych informatyki, w szczególności [[Rachunek zdaniowy|rachunku logicznego]], [[Język formalny|języków formalnych]], teorii automatów, systemu dynamiki zdarzeń dyskretnych i semantyki programów, a także systemów typów i [[Typ danych|typów danych]] algebraicznych do specyfikacji i weryfikacji problemów w oprogramowaniu i sprzęcie.
 
==== Kryptologia ====
{{Osobny artykuł|Kryptologia}}Kryptologia zajmuje się szyfrowaniem tj. przekazywaniem i przechowywaniem informacji w sposób zabezpieczony przed niepowołanym dostępem. Dzieli się na kryptografię czyli czyli gałąź wiedzy o utajnianiu wiadomości oraz [[Kryptoanaliza|kryptoanalizę]] czyli gałąź wiedzy o przełamywaniu zabezpieczeń oraz o deszyfrowaniu wiadomości przy braku klucza lub innego wymaganego elementu schematu szyfrowania ([[Szyfr|szyfru]]). Jest ściśle związana bezpieczeństwem komputerowym, jej ważniejsze metody to przykładowo [[Atak brute force|metoda brute force]] czy [[kryptoanaliza liniowa]]. Kryptologię wykorzystuje się ją np. w rozwiązaniach zapewniających bezpieczeństwo [[Bankomat|kart bankomatowych]], [[Klucz (kryptografia)|haseł komputerowych]] i [[Handel elektroniczny|handlu internetowego]].
=== Systemy komputerowe ===
{{Osobny artykuł|System komputerowy}}System komputerowy to układ współdziałania dwóch składowych: [[Sprzęt komputerowy|sprzętu komputerowego]] oraz [[Oprogramowanie|oprogramowania]], działających coraz częściej również w ramach sieci komputerowej. Można mówić o następujących poziomach takiego systemu: sprzęt komputerowy, system operacyjny (oprogramowanie systemowe), oprogramowanie narzędziowe, oprogramowanie użytkowe (aplikacje). W pełni zautomatyzowany system komputerowy może działać bez udziału człowieka. Systemy komputerowe stanowią lub są jedną z części [[System informatyczny|systemu informatycznego]].
 
==== Technika cyfrowa ====
{{Osobny artykuł|Technika cyfrowa}}Współczesna technika cyfrowa obejmuje [[Układ cyfrowy|układy logiczne]], syntezę logiczną i odwzorowanie technologiczne<ref name=":0">{{Cytuj |tytuł = TC Moduł 1 - Studia Informatyczne |data dostępu = 2020-01-15 |opublikowany = wazniak.mimuw.edu.pl |url = http://wazniak.mimuw.edu.pl/index.php?title=TC_Modu%C5%82_1}}</ref>. Jej zagadnienia kształtowane z jednej strony przez [[Język opisu sprzętu|języki opisu sprzętu]]''',''' a z drugiej przez [[Programowalny sterownik logiczny|programowalne moduły logiczne]]<ref name=":0" />. Stanowi pomost łączący sprzęt z oprogramowaniem. Rozwój techniki cyfrowej jest bezpośrednio związany z rozwojem [[Mikroelektronika|technologii mikroelektronicznych]]. Technologia dostarcza konstruktorom układów cyfrowych [[Specjalizowany układ scalony|specjalizowane układy scalone]] (''ang. Application Specific Integrated Circuits'') o zasobach sprzętowych rzędu kilkudziesięciu milionów [[Tranzystor|tranzystorów]], co z punktu widzenia techniki cyfrowej jest równoważne kilku milionom [[Bramka logiczna|bramek logicznych]].
 
==== Architektura komputerów ====
{{Osobny artykuł|Architektura komputera}}Architektura komputerów - zajmuje się projektowaniem i podstawową strukturą systemów komputerowych oraz budową i organizacją ich podzespołów. Szczególna uwaga jest poświęcana [[Architektura procesora|architekturze procesorów]] na który składa się [[model programowy procesora]] oraz [[mikroarchitektura procesora]]. Architektura komputerów koncentruje się przede wszystkim na sposobie, w jaki [[procesor]] wykonuje instrukcje i uzyskuje dostęp do adresów w [[Pamięć komputerowa|pamięci]].
 
'''Inżynieria komputerowa'''{{Osobny artykuł|Inżynieria komputerowa}}Inżynieria komputerowa także zajmuje się budową i organizacją podzespołów systemów komputerowych. Skupia się na organizacji elementów sprzętowych, ich doboru i łączenia w celu stworzenia systemów komputerów spełniających określone cele funkcjonalne, wydajnościowe i kosztowe. Inżynierowie komputerowi są zaangażowani w wiele ważnych aspektów informatyki, od projektowania pojedynczych [[Obwód elektroniczny|obwodów elektronicznych]] i [[Procesor|procesorów]] po [[Komputer osobisty|komputery osobiste]] i [[Superkomputer|superkomputery]].
 
'''Systemy operacyjne'''{{Osobny artykuł|Systemy operacyjne}}System operacyjny to [[oprogramowanie]] zarządzające [[System komputerowy|systemem komputerowym]], tworzące [[środowisko]] do uruchamiania i kontroli [[Zadanie (informatyka)|zadań]]. Najważnieszym elementem systemu operacyjnych jest jego [[Jądro systemu operacyjnego|jądro]] wykonujące i kontrolujące zadania m.in [[Algorytm szeregowania|planisty]] czasu procesora, ustalającego które zadanie i jak długo będzie wykonywane czy przełącznika zadań, odpowiedzialnego za przełączanie pomiędzy uruchomionymi zadaniami. System operacyjny posiada także swoją [[Powłoka systemowa|powłokę]] czyli specjalny [[Oprogramowanie|program]] komunikujący użytkownika z systemem operacyjnym oraz [[system plików]] – sposób ustrukturyzowanego zapisu danych na [[Nośnik danych|nośniku]]. Osoby [[:Kategoria:Administracja systemem|administracjuące systememami]] nazwywa się administratorami (pot. adminami). Współcześnie najważniejszą rodziną systemów operacyjnych jest [[GNU/Linux]] oraz [[Microsoft Windows|Windows]].
 
==== Systemy wbudowane ====
{{Osobny artykuł|Systemy wbudowane}}Systemy wbudowane to systemy komputerowe specjalnego przeznaczenia, który staje się integralną częścią obsługiwanego przez niego [[Sprzęt komputerowy|sprzętu komputerowego]] (''hardware''). System wbudowany musi spełniać określone wymagania ściśle zdefiniowane pod kątem zadań, które ma wykonywać. Każdy system wbudowany oparty jest na [[Mikroprocesor|mikroprocesorze]] (lub [[Mikrokontroler|mikrokontrolerze]]) zaprogramowanym do wykonywania ograniczonej liczby zadań lub nawet wyłącznie do jednego zadania. W systemach wbudowanych najpopularniejszymi [[Model programowy procesora|modelemi programowymi]] procesorów są [[RISC]] oparte na zasadach [[Architektura harwardzka|architektury harvardzkiej]] lub [[Architektura ARM|ARM]].
 
==== Przetwarzanie współbierzne i systemy rozproszone ====
{{Osobny artykuł|Przetwarzanie współbieżne}}[[Przetwarzanie współbieżne|Współbieżność]] jest właściwością systemów, w których obliczenia wykonuje się jednocześnie i potencjalnie korzystają ze wspólnych zasobów i/lub wchodzą w interakcje ze sobą. Opracowano wiele modeli matematycznych do ogólnych obliczeń równoległych, w tym [[Sieć Petriego|sieci Petriego,]] [[rachunek procesowy]] (''ang.process calculus'') i [[model maszyny dostępu równoległego]] (''ang.parallel random-access machine, PRAM''). Kiedy wiele komputerów jest podłączonych do sieci podczas korzystania z współbieżności, jest to nazywane [[System rozproszony|systemem rozproszonym]]. w którym to komputery mają własną pamięć, a informacje są wymieniane, by osiągnąć wspólne cele.
 
==== Sieci komputerowe ====
{{Osobny artykuł|Sieci komputerowe}}Sieci komputerowe - gałąź informatyki mająca na celu projektowanie i [[:Kategoria:Administracja sieciowa|administrowanie sieciami]] między komputerami na całym świecie. Sieć komputerowa to cyfrowa sieć komunikacyjna, która umożliwia węzłom współdzielenie zasobów. W sieciach komputerowych urządzenia komputerowe wymieniają się danymi za pomocą połączeń ([[Warstwa łącza danych|łączy danych]]) między węzłami. Te łącza danych są ustanawiane za pomocą mediów kablowych, takich jak [[skrętka]] lub [[Kabel światłowodowy|kable światłowodowe]], oraz mediów bezprzewodowych, takich jak np. [[Wi-fi|Wi-Fi]]. Współczesne sieci składają się z warstw, w [[Model OSI|modelu OSI]] wyróżnia się warstwę aplikacji, prezentacji, sesji, tansportową, sieciową, [[Warstwa łącza danych|łącza danych]] i fizyczną a w [[Model TCP/IP|modelu TCP/IP]] będący podstawą struktury [[Internet|internetu]] wyróżnia się warstwy aplikacji,transportową, internetową i dostępu do sieci.
 
//algorym nagla
 
==== Bezpieczeństwo komputerowe ====
{{Osobny artykuł|Bezpieczeństwo komputerowe}}Bezpieczeństwo komputerowe zajmuje się zapewnieniem [[Poufność|poufności]] i [[Bezpieczeństwo teleinformatyczne|bezpieczeństwa danych]]. Osoby posiadające szeroką i zaawansowaną wiedzę informatyczną lecz nieetycznie z niej korzystający nazywani są [[Haker (bezpieczeństwo komputerowe)|hakerami]]. Ich szczególnym zainteresowaniem jest wyszukiwanie luk (dziur) w systemach operacyjnych, programach, sieciach komputerowych czy urządzeniach do niej podłączonych w celu przejęcia nad nimi zdalnej kontroli. Wyróżnia się wiele klasycznych [[:Kategoria:Ataki komputerowe|ataków komputerowych]] takich jak na przykład [[DDoS]], [[HTTP Flood]], [[UDP flood]], [[Smurf attack]], [[Session hijacking]], [[UDP flood]] a także wiele rodzai [[Wirus komputerowy|wirusów komputerowych]], [[Koń trojański (informatyka)|trojanów]], [[Sniffer|snifferów]] czy [[Rootkit|rootkitów]]. W odpowiedzi powstało wiele technik obrony systemów informatycznych - np. [[Obrona w głąb (informatyka)|obrona w głąb]], [[security through obscurity]] czy [[Głębokie ukrycie|głębokie ukrycie.]]
 
==== Systemy baz danych ====
{{Osobny artykuł|Bazy danych}}Baza danych to zorganizowany zbiór danych, ogólnie przechowywanych i dostępnych z systemu komputerowego. Tam, gdzie bazy danych są bardziej złożone, często są opracowywane przy użyciu formalnych technik projektowania i modelowania. [[System zarządzania bazą danych]] (DBMS) to oprogramowanie, które współdziała z użytkownikami końcowymi, aplikacjami i samą bazą danych w celu przechwytywania i analizy danych. Oprogramowanie DBMS obejmuje dodatkowo podstawowe narzędzia do zarządzania bazą danych. Często termin baza danych jest również używany do luźnego odniesienia do dowolnego DBMS, systemu bazy danych lub aplikacji powiązanej z bazą danych. Wyróżnia się bazy proste do których należy [[Kartotekowa baza danych|kartotekowe]] i hierarchiczne, w tym [[Sieciowa baza danych|sieciowe]] oraz złożone, przede wszystkim [[Model relacyjny|relacyjne]], [[Obiektowa baza danych|obiektowe]], relacyjno-obiektowe, [[Strumieniowa baza danych|strumieniowe]], [[Temporalna baza danych|temporalne]] czy [[NoSQL|nierelacyjne]].
 
==== Systemy mobilne ====
{{Osobny artykuł|Systemy mobilne}}Od komputerów mobilnych (np. ''[[Smartfon|smartfony]], [[Tablet (komputer)|tablety]]'') oczekuje się że mogą być swobodnie transportowane podczas normalnego użytkowania, oraz pozwalają na przesyłanie danych, głosu i wideo. ''System mobilny'', także [[Przetwarzenie mobilne|'''''przetwarzenie mobilne''''']] (''ang. mobile computing'') obejmuje komunikację mobilną oraz [[Urządzenie mobilne|sprzęt i oprogramowanie mobilne]] . Kwestie komunikacyjne obejmują [[Sieć ad hoc|sieci ad hoc]], infrastrukturę sieci, a także właściwości komunikacyjne, [[Protokół sieciowy|protokoły]], formaty danych i konkretne technologie. Typowy sprzęt mobilny zawiera często różne [[Czujnik|sensory]], np. [[Przyspieszeniomierz|akcelerometry]] które są w stanie wykrywać i odbierać sygnały. Najważniejsze mobilne systemy operacyjne to [[iOS]] oraz [[Android (system operacyjny)|Android Linux]].
 
==== Chmury obliczeniowe ====
{{Osobny artykuł|Chmura obliczeniowa}}Chmura obliczeniowa, także '''przetwarzanie w chmurze''' (ang. ''cloud computing'') to model [[Elektroniczne przetwarzanie danych|przetwarzania danych]] oparty na użytkowaniu [[Usługi|usług]] dostarczonych przez zewnętrznego usługodawcę. Zasada działania polega na przeniesieniu całego ciężaru świadczenia usług IT (danych, oprogramowania lub mocy obliczeniowej) na serwer i umożliwienie stałego dostępu poprzez komputery klienckie. Dzięki temu ich bezpieczeństwo nie zależy od tego, co stanie się z komputerem klienckim, a szybkość procesów wynika z mocy obliczeniowej serwera. Pojęcie chmury nie jest jednoznaczne, w szerokim znaczeniu przetwarzanym w chmurze jest wszystko co jest przetwarzane na zewnątrz [[Zapora sieciowa|zapory sieciowej]].
 
==== Interakcje człowiek-komputer ====
{{Osobny artykuł|Interakcja człowiek–komputer}}Interakcją człowiek–komputer nazywa się wzajemne [[oddziaływanie]] między człowiekiem a komputerem zachodzące poprzez [[interfejs użytkownika]] czyli część oprogramowania zajmującą się obsługą urządzeń wejścia-wyjścia przeznaczonych dla interakcji z użytkownikiem. Istniej wiele rodzai interfejsów, są to m.in. [[wiersz poleceń]], [[interfejs tekstowy]] czy [[Graficzny interfejs użytkownika|interfejs graficzny]]. Obecnie prowadzone są intensywne badania nad [[Rzeczywistość wirtualna|wirtualną rzeczywistością]] a także [[Interfejs mózg–komputer|interfejsami mózg-komputer]].
 
==== Analiza wydajności obliczeniowej ====
{{Osobny artykuł|Analiza wydajości obliczeniowej}}Analiza wydajności obliczeniowej - badania przepływu danych przez komputery, której ogólnym celem jest poprawa [[Przepustowość|przepustowośc]]<nowiki/>i, kontrola czasu odpowiedzi, efektywne wykorzystanie zasobów, eliminacja wąskich gardeł i szacowanie wydajności przy przewidywanych obciążeniach szczytowych. Podstawową metodą jest [[testowanie wzorcowe]] (pot. benchmarki), które służy do porównywania miedzy sobą [[Moc obliczeniowa|mocy obliczeniowych]] systemów zawierających różne układy scalone i/lub różne architektury systemów.
 
==== Informatyka medyczna ====
{{Osobny artykuł|Informatyka medyczna}}Informatyka medyczna zajmuje się przetwarzaniem, przechowywaniem, przesyłaniem oraz metodami tworzenia systemów przetwarzających informacje wykorzystywane w [[Opieka zdrowotna|opiece zdrowotnej]]. Obejmuje między innymi przetwarzanie i analizę sygnałów medycznych (np. [[Elektrokardiografia|EKG]]), przetwarzanie i analizę obrazów medycznych, oprogramowanie aparatury medycznej czy standardy wymiany informacji [[HL7]], [[DICOM]] czy systemy wspomagania diagnostyki (np. ''IBM Watson for Oncology'').
 
==== Informatyka śledcza ====
{{Osobny artykuł|Informatyka śledcza}}Informatyka śledcza dostarcza cyfrowych środków dowodowych dotyczących przestępstw popełnionych cyfrowo lub przy użyciu systemów elektronicznych. Jej zadaniami są: zbieranie, [[Odzyskiwanie danych|odzyskiwanie]], analiza i prezentacja cyfrowych danych, znajdujących się na różnego rodzaju nośnikach ([[Dysk twardy|dyski twarde]] [[Komputer|komputerów]], [[Dyskietka|dyskietki]], [[Płyta kompaktowa|płyty CD]], [[Pamięć komputerowa|pamięci]] przenośne, [[Serwer|serwery]], [[Telefon komórkowy|telefony komórkowe]] itp.), oraz w coraz popularniejszych ostatnio systemach i serwisach zdalnego gromadzenia, przechowywania i przetwarzania danych, takich jak [[Serwis społecznościowy|serwisy społecznościowe]], [[Chmura obliczeniowa|przestrzeń dyskowa w chmurze]] czy [[Wyszukiwarka internetowa|wyszukiwarki internetowe]].
 
=== Programowanie komputerów ===
{{Osobny artykuł|Programowanie komputerów}}Programowanie komputerów to proces projektowania, tworzenia, testowania i utrzymywania [[Kod źródłowy|'''kodu źródłowego''']] [[Program komputerowy|programów komputerowych]] w tym dla urządzeń [[Mikroprocesor|mikroprocesorowych]] ([[Mikrokontroler|mikrokontrolery]]). Kod źródłowy jest napisany w [[Język programowania|języku programowania]], z użyciem określonych reguł, może on być modyfikacją istniejącego programu lub czymś zupełnie nowym. Programowanie wymaga wiedzy i doświadczenia w wielu dziedzinach, jak projektowanie aplikacji, [[algorytmika]], [[Struktura danych|struktury danych]], [[Język programowania|języki programowania]] i narzędzia programistyczne, [[Kompilator|kompilatory]], czy sposób działania podzespołów komputera. Między programistami trwają debaty, czy programowanie komputerów jest sztuką, rzemiosłem czy procesem inżynieryjnym. Bezpośrednią formą sztuki w tej dziedzinie jest [[demoscena]]. Programowanie komputerów jest bardzo szeroką i obecnie najpopularniejszą dziedziną informatyki, można w jego obrębie wyróżnić następujące obszary:
 
==== Podstawy programowania ====
Istnieje wiele gałęzi rozwoju technik programowania, jednak wszystkie z nich bazują na wspólnych podstawach. Niezależnie czy to będzie aplikacja webowa w [[JavaScript|Javascript]], gra komputerowa w [[C++]] czy program mikrokontrolera w [[C (język programowania)|C]], używają one podstawowych konstrukcji programistycznych. Podstawymi pojęciami od których zaczyna się nauke programowania są między innymi [[Zmienna (informatyka)|zmienne]], [[Tablica (informatyka)|tablice]], [[Instrukcja warunkowa|instrukcje warunkowe]], [[Pętla (informatyka)|pętle]] czy [[Wskaźnik (informatyka)|wskaźniki]], [[Tekstowy typ danych|łańcuchy]], [[Funkcja (informatyka)|funkcje]], [[debugowanie]] czy [[Biblioteka (informatyka)|biblioteki]].
 
==== Programowanie obiektowe ====
{{Osobny artykuł|Programowanie obiektowe}}Większość nowoczesnych języków programowania jest [[Programowanie obiektowe|obiektowa]] tzn. programy w nich definiuje się za pomocą [[Obiekt (programowanie obiektowe)|obiektów]] – elementów łączących ''stan'' (czyli [[dane]], nazywane najczęściej [[Pole (informatyka)|polami]]) i ''zachowanie'' (czyli procedury, tu: [[Metoda (programowanie obiektowe)|metody]]). Obiektowy program komputerowy wyrażony jest jako zbiór takich obiektów, komunikujących się pomiędzy sobą w celu wykonywania zadań. Podstawowe mechanizmy programowania obiektowego to [[Klasa (programowanie obiektowe)|klasy]], klasy pochodne, [[Dziedziczenie (programowanie)|dziedziczenie]], [[Polimorfizm (informatyka)|polimorfizm]] czy [[Hermetyzacja (informatyka)|hermetyzacja]]. Istnieje także wiele innych [[Paradygmat programowania|paradygmatów programownia]] np. [[Programowanie funkcyjne|funkcyjne]], [[Programowanie imperatywne|imperatywne]] czy [[Programowanie logiczne|logiczne]].
 
==== Modelowanie i symulacja komputerowa ====
{{Osobny artykuł|Symulacja komputerowa}}Symulacja komputerowa to [[symulacja]] z wykorzystaniem [[Modelowanie matematyczne|modelu matematycznego]], zapisanego w postaci programu komputerowego. Techniki symulacyjne są szczególnie przydatne tam, gdzie [[Analiza matematyczna|analityczne]] wyznaczenie rozwiązania byłoby zbyt pracochłonne, a niekiedy nawet niemożliwe, co często ma miejsce w [[System złożony|systemach złożonych]]. Symulacje komputerowe można podzielić ze względu na przewidywalność zdarzeń na [[Proces stochastyczny|stochastyczne]] i deterministyczne. Ze względu na sposób upływu czasu dzielą się na te z czasem ciągłym oraz [[Próbkowanie|dyskretnym]]. Ze względu na formę danych wyjściwych dzielą się na dynamicze i statyczne, a ze względu na liczę użytych komputerów na lokalne i rozproszone.
 
==== Inżynieria oprogramowania ====
{{Osobny artykuł|Inżynieria oprogramowania}}Inżynieria oprogramowania zajmuje się nie tyle tworzeniem samego programowania lecz koncentruje się nad ogólnym przebiegiem jego tworzenia od strony biznesowej. Wyróżnia fazy produkcji oprogramwania: specyfikacji, projektowania, implementacji, integracji i ewoluacji, a także dostarcza systematycznych metodyk jego tworzenia jak m.in [[model kaskadowy]], [[Model prototypowy|prototypowy]] czy [[Programowanie zwinne|zwinny]], w tym [[scrum]]. Wprowadza takie pojęcia jak np. [[cykl życia programu]] czy [[metryka oprogramowania]].
 
==== Technika mikroprocesorowa ====
{{Osobny artykuł|Technika mikroprocesorowa}}Techniką mikroprocesorową nazywana jest gałąź informatyki skupiająca się na tworzeniu systemów przetwarzających informacje z wykorzystaniem [[Mikrokontroler|'''mikrokontrolerów''']] czyli mikrokomputerów jednoukładowych, μC. Ze względu na ich stosunkowo niewielkie rozmiary i pobór mocy są stosowane do sterowania różnymi urządzeniami np. silnikami samochodowymi tworząc systemy wbudowane. Programowane są najczęściej w językach z rodziny [[C (język programowania)|C]]. Zagadnienia techniki mikroprocesorowej obejmują zarówno wewnętrzną architekturę, ich programowanie jak i zastosowanie mikrokontrolerów - do typowych zadań należy przykładowo obsługa kontrolerów transmisji szeregowej (m.in [[Universal Asynchronous Receiver and Transmitter|UART]], [[Serial Peripheral Interface|SPI]], [[I²C|I2C]]), obsługa [[Przetwornik analogowo-cyfrowy|przetworników analogowo-cyfrowych]] czy wykorzystywanie w programie timerów μC, w tym tworząc wektory ich [[Przerwanie|przerwań]].
 
==== Programowanie gier komputerowych ====
{{Osobny artykuł|Programista gier komputerowych}}Gry komputerowe to rodzaj [[Program komputerowy|oprogramowania komputerowego]] przeznaczonego do celów rozrywkowych bądź edukacyjnyco i wymagającego od użytkownika ([[Gracz|gracza]]) rozwiązywania zadań logicznych lub zręcznościowych. Gry komputerowe mogą być uruchamiane na komputerach osobistych, [[Automat do gry|specjalnych automatach]], [[Konsola gier wideo|konsolach do gry]], [[Telewizor|telewizorach]], telefonach komórkowych oraz innych urządzeniach mobilnych .
 
==== Programowanie robotów ====
{{Zobacz też|Algorytmy sterowania|Kategoria:Algorytmy w robotyce|bez kropki=}}[[Robotyka]] to inderdyscyplinalna dziedzina nauki na styku wielu dziedzin inżynierii. W informatyce koncentruje się głównie na algorytmach i programach komputerowych używanych do sterowania robotami. W związku z tym informatyka skupia się przede wszystkim na robotach autonomicznych, mobilnych i probabilistycznych. Główne obszary badane przez informatyków obejmują [[Teoria sterowania|kontrolę]], [[Widzenie komputerowe|postrzeganie]], [[SLAM]] (''ang. Simultaneous localization and mapping'') i [[Planowanie trasy robotów mobilnych|planowanie ruchu]].
 
Programowanie webowe
 
==== Obliczenia równoległe ====
{{Osobny artykuł|Obliczenia równoległe}}Programowanie równoległe polega na napisaniu programu tak, aby można go było uruchomić na wielu procesorach równocześnie. Dokonuje się tego zazwyczaj przez modyfikację istniejącego kodu przeznaczonego pierwotnie na jeden procesor (mówimy wtedy o ''zrównoleglaniu'' kodu). Zrównoleglając program należy szukać fragmentów, które mogą wykonywać się niezależnie od siebie. W przypadku obliczeń numerycznych, tego rodzaju równoległość związana jest zazwyczaj z występującymi w kodzie pętlami<ref>{{Cytuj |tytuł = Programowanie równoległe - Centrum Obliczeniowe, ICM Uniwersytet Warszawski |data dostępu = 2020-01-16 |opublikowany = kdm.icm.edu.pl |url = https://kdm.icm.edu.pl/kdm/Programowanie_r%C3%B3wnoleg%C5%82e}}</ref>.
 
=== Grafika komputerowa ===
{{Osobny artykuł|Grafika komputerowa}}Grafika komputerowa - dział informatyki zajmujący się wykorzystaniem technik komputerowych do celów [[Wizualizacja (informatyka)|wizualizacji]] artystycznej oraz wizualizacji rzeczywistości. Ze względu na reprezentację danych dzieli się na [[Grafika rastrowa|grafikę rastrową]] i [[Grafika wektorowa|wektorową]], a ze względu na charakter danych na [[Grafika dwuwymiarowa|grafikę dwuwymiarową]], [[Grafika 3D|trójwymiarową]] i [[Animacja komputerowa|ruchomą]]. Jest to obecnie jednym z głównych kierunków rozwoju informatyki. Ważniejsze obszary grafiki komputerowej:
 
* [[Grafika rastrowa]]
* [[Grafika wektorowa]]
* [[Grafika 3D|Grafika trójwymiarowa]]
* [[Renderowanie]]
* [[Animacja komputerowa]]
 
=== Cyfrowe przetwarzanie sygnałów ===
{{Osobny artykuł|Cyfrowe przetwarzanie sygnałów}}Cyfrowe przetwarzanie sygnałów (ang. Digital Signal Processing, DSP) polega na wykonywaniu pewnych operacji na [[Sygnał cyfrowy|sygnałach cyfrowych]] oraz interpretacją tychże sygnałów z wykorzystaniem komputerów lub innych układów przetwarzania informacji. Ważniejsze obszary DSP:
 
* [[Cyfrowe przetwarzanie obrazów]], w tym [[Segmentacja obrazu|segmentacja obrazów]]
* [[Cyfrowe przetwarzanie dźwięku]]
* [[Przetwarzanie mowy|Cyfrowe przetwarzanie mowy]]
* [[Kompresja (informatyka)|Kompresja dźwięku i mowy]]
 
=== Sztuczna inteligencja ===
{{Osobny artykuł|Sztuczna inteligencja}}Sztuczna inteligencja (SI)– dział informatyki zajmujący się [[Inteligencja|inteligencją]] – tworzeniem modeli zachowań inteligentnych oraz programów komputerowych symulujących te zachowania. Szczególnym zainteresowaniem darzy się problemy które nie są efektywnie algorytmizowalne jak [[rozpoznawanie obrazów]], [[tłumaczenie maszynowe]] czy [[rozpoznawanie mowy]]. Dział ten obejmuje m.in. [[Logika rozmyta|logikę rozmytą]], [[Algorytm ewolucyjny|obliczenia ewolucyjne]], [[Sieć neuronowa|sieci neuronowe]] i [[sztuczne życie]]. Ważniejsze obszary SI:
 
* [[Uczenie maszynowe]]
* [[Sieć neuronowa|Sieci neuronowe]]
* [[Rozpoznawanie wzorców|Rozpoznawania wzorcow]]
* [[Rozpoznawanie obrazów]]
* [[Rozpoznawanie mowy]]
 
=== Analiza danych ===
{{Osobny artykuł|Analiza danych}}Analiza danych (ang. data analysis) - proces [[Przetwarzanie danych|przetwarzania danych]] w celu uzyskania na ich podstawie użytecznych informacji i wniosków. W zależności od rodzaju danych i stawianych problemów, może to oznaczać użycie metod [[Statystyka|statystycznych]], [[Eksploracyjna analiza danych|eksploracyjnych]] i innych. Ważniejsze obszary:
 
* [[Big data|'''Big data''']] - termin odnoszący się do dużych, zmiennych i różnorodnych [[Zbiór danych|zbiorów danych]], których przetwarzanie i analiza jest trudna, ale jednocześnie wartościowa
* [[Informatyka afektywna]] – dział informatyki zajmujący się metodami i narzędziami rozpoznawania, analizy, interpretacji i symulacji stanów emocjonalnych użytkowników komputerów.
* [[Bioinformatyka]] – interdyscyplinarna dziedzina nauki wykorzystująca metody i narzędzia informatyczne do rozwiązywania problemów z nauk biologicznych.
* [[Informatyka chemiczna]] - nauka zajmująca się wykorzystaniem [[Informatyka|informatyki]] do rozwiązywania różnorodnych problemów [[Chemia|chemicznych]].
 
<br />{{Zobacz też|Informatyka ekonomiczna|Informatyka społeczna|Informatyka prawnicza|bez kropki=}}
 
== Zobacz też ==