Informatyka: Różnice pomiędzy wersjami

[wersja przejrzana][wersja przejrzana]
Usunięta treść Dodana treść
m WP:SK, drobne techniczne
w dotychczasowej formie kontraproduktywne
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 '''[[Dane|danymi''']] i które mogą być reprezentowane jako dane w postaci '''[[Program komputerowy|programów''']]. Umożliwia wykorzystanie '''algorytmów'''[[algorytm]]ów do '''manipulowania, przechowywania i przesyłania informacji''' cyfrowych, bada teorię obliczeń i praktykę projektowania '''[[System komputerowy|systemów komputerowych''']]. Według [[Peter Denning|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]]ów''' rozwinęła się do odrębnej dyscypliny. Informatyka teoretyczna pozostaje jednak nadal z nią w ścisłej relacji, wykorzystując do opisu język matematyczny.
{{Spis treści}}
 
Linia 21:
W języku polskim termin ''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.
 
Określenie ''informatyka'' nie ma jednoznacznego odpowiednika w języku angielskim. Najczęściej jest tłumaczona jako ''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„Uniwersytet Zielonogórski"Zielonogórski” – Miesięcznik Społeczności Akademickiej|język=|data dostępu=2017-07-15}}</ref>. Stąd proponowanych jest wiele alternatywnych nazw jak ''information technology'' (IT), ''information scienc''e, ''information engineering'', ''information and computing technology, computing'' czy ''informatics''. Obecnie pojęcia te są często używane zamiennie, w istocie obejmują ten sam obszar wiedzy, choć niekiedy z 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}}</ref>.
 
Określenie ''computer science'' odnosi się przede wszystkim do informatyki rozumianej jako nauka ścisła, obejmującej informatykę teoretyczną i jej naukowe zastosowania, podczas gdy informatyka techniczna skupiająca się warstwie sprzętowej systemów komputerowych jest najczęściej tłumaczona jako ''computer engineering'', podobnie jak niemiecka ''Teschnishe Informatik rozumiana jako nauka inżynierska''. Natomiast określenie ''information technology'' jest najczęściej spotykane w kontekście na tworzenia systemów komputerowych w kontekście biznesowym (nienaukowym). Określenie software engineering dawaniej odnosiło się ogólnie do programowania, lecz obecnie jest coraz częściej używane w kontekście zarządzania procesem wytwarzania oprogrogramowania.
 
== Przegląd dyscyplin informatycznych ==
Jako dyscyplina informatyka obejmuje szereg tematów, od teoretycznych badań nad [[algorytm]]ami 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]], [[Interakcjainterakcja 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>.
 
== Informatyka teoretyczna ==
Linia 32:
 
==== Algorytmika ====
{{Osobny artykuł|Algorytmika}}Algorytmika zajmuje się projektowaniem i analizą [[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.
 
==== Teoria obliczeń i automatów ====
{{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ć<ref>{{Cytuj |tytuł = Computational Complexity: A Modern Approach / Sanjeev Arora and Boaz Barak |data dostępu = 2020-03-27 |opublikowany = theory.cs.princeton.edu |url = http://theory.cs.princeton.edu/complexity/}}</ref><ref>[[:en:Introduction to the Theory of Computation]].</ref>. Jednym z ważniejszych jej obszarów jest [[teoria automatów]]. Przykładowymi zagadnieniami są [[Maszyna Turinga]] czy [[Hipoteza Churcha-Turinga]].
<gallery class="center" heights="100" widths="200">
Wang tiles.svg|[[Teoria obliczalności]]
DFAexample.svg|[[Teoria automatów]]
Plik:Maquina.png|[[Teoria obliczeń]]
Complexity_subsets_pspaceComplexity subsets pspace.svg|[[Hipoteza Churcha-Turinga]]
</gallery>
 
==== Teoria języków programowania ====
{{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<ref>{{Cytuj |autor = List |tytuł = Classic Papers in Programming Languages and Logic |data = |url = https://www.cs.cmu.edu/~crary/819-f09/}}</ref>. Przykładowymi obszarmiobszarami PLT są [[Semantyka formalna (informatyka)|semantyki formalne]] (ang. ''formal semantics''), [[teoria typów]] (ang. ''type theory'')<ref>{{Cytuj |autor = Robert L. Constable |tytuł = Naïve Computational Type Theory |data = 2002 |data dostępu = 2020-03-27 |isbn = 978-1-4020-0608-1 |miejsce = Dordrecht |wydawca = Springer Netherlands |s = 213–259 |doi=10.1007/978-94-010-0413-8_7}}</ref> czy [[metaprogramowanie]]. Na języki programowania składa się składnia, semantyka i [[Biblioteka standardowa|biblioteki standardowe]], zazwyczaj posiadają 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 np. operacje na ciągach znaków. Ważnym obszarem PLT jest też [[Kompilator|teoria kompilacji]], na której proces składa się wykonanie poleceń [[preprocesor]]a, [[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]]<ref>{{Cytuj |tytuł = Overview of the four main programming paradigms |data dostępu = 2020-03-27 |opublikowany = people.cs.aau.dk |url = http://people.cs.aau.dk/~normark/prog3-03/html/notes/paradigms_themes-paradigm-overview-section.html}}</ref><ref>{{Cytuj |autor = KrishnamurthiShriram |tytuł = Teaching programming languages in a post-linnaean age |czasopismo = ACM SIGPLAN Notices |data = 2008-11-30 |data dostępu = 2020-03-27 |doi = 10.1145/1480828.1480846 |url = https://dl.acm.org/doi/abs/10.1145/1480828.1480846 |język = en}}</ref>.
<gallery class="center" heights="200" widths="200">
Logic.svg|[[Teoria typów]]
Compiler.svg|[[Kompilator|Budowa kompilatorów]]
Python add5 syntax.svg|[[Język programowania|Języki programowania]]
Programming_paradigmsProgramming paradigms.svg|[[Paradygmat programowania|Paradygmaty programowania]]
</gallery>
 
==== Teoria informacji i kodowania ====
{{Osobny artykuł|Teoria informacji}}
{{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 wprowadza 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ł]].
 
==== Obliczenia równoległe ====
Linia 59 ⟶ 60:
 
==== Informatyka kwantowa ====
{{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]]<ref>{{Cytuj |autor = Nielsen, Michael A.; Chuang, Isaac L. |tytuł = Quantum Computation and Quantum Information (10th anniversary ed.) |data = June 2012 |isbn = 9780511992773}}</ref>. 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]], a na targach CES w 2018 roku amerykańskie przedsiębiorstwo informatyczne [[IBM]] zaprezentowała swój działający, 50-kubitowy komputer kwantowy<ref>{{Cytuj |tytuł = IBM zaprezentuje najpotężniejszy na świecie 53-kubitowy komputer kwantowy - NeeWS - GeekWeek.pl |data dostępu = 2020-03-27 |opublikowany = www.geekweek.pl |url = https://www.geekweek.pl/news/2019-09-21/ibm-zaprezentuje-najpotezniejszy-na-swiecie-53-kubitowy-komputer-kwantowy/}}</ref>.
<gallery class="center" heights="150" widths="200">
Bloch_sphereBloch sphere.svg|[[Sfera Blocha]]
Toffoli_gateToffoli gate.svg|[[Bramka kwantowa|Bramki kwantowe]]
DWave_128chipDWave 128chip.jpg|[[Komputer kwantowy|Teoria obliczeń kwantowych]]
Teleportation.svg|[[Kwantowa teleportacja|Protokół kwantowej teleportacji]]
</gallery>
 
==== 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]]u). 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]].
 
==== 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.
 
== Informatyka techniczna ==
Linia 77 ⟶ 78:
 
==== 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]]ów, co z punktu widzenia techniki cyfrowej jest równoważne kilku milionom [[Bramka logiczna|bramek logicznych]]<ref>{{Cytuj |tytuł = TC Moduł 12 - Studia Informatyczne |data dostępu = 2020-03-28 |opublikowany = wazniak.mimuw.edu.pl |url = http://wazniak.mimuw.edu.pl/index.php?title=TC_Modu%C5%82_12}}</ref><ref>{{Cytuj |tytuł = TC Moduł 12 - Studia Informatyczne |data dostępu = 2020-03-28 |opublikowany = wazniak.mimuw.edu.pl |url = http://wazniak.mimuw.edu.pl/index.php?title=TC_Modu%C5%82_12}}</ref>.
<gallery class="center" heights="150" widths="200">
Nand-gate-en.svg|[[Bramka logiczna|Bramki logiczne]]
Schemat_funkcjonalny_układów_sekwencyjnych_Schemat funkcjonalny układów sekwencyjnych (ubt).svg|[[Układ sekwencyjny|Układy sekwencyjne]]
Cache,associative-read.svg|[[Rejestr procesora|Rejestry]]
Xilinx_ZynqXilinx Zynq-7000_AP_SoC7000 AP SoC.jpg|[[Programowalna macierz logiczna|Programowalne macierze logiczne]]
</gallery>
 
==== 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]]<ref>{{Cytuj |autor = |tytuł = Architektura komputerów, wykłady |data = |url = https://www.wsti.pl/files/przedmioty/ARH.pdf}}</ref>. 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]]. Przykładowe zagadniania to [[Direct Memory Access|DMA]] czy [[Kontroler (informatyka)|kontroler]]<ref>{{Cytuj |autor = P. Metzger, A. Jełowiecki |tytuł = Anatomia PC |data = 2000 |wydawca = Helion}}</ref><ref>{{Cytuj |autor = J. Biernat |tytuł = Architektura komputerów |data = 2002 |wydawca = Wydawnictwo Politechniki Wrocławskiej}}</ref>.
<gallery class="center" heights="150" widths="200">
ABasicComputer.gif|[[Bramka logiczna|Architektura procesora]]
Z80_archZ80 arch.svg|[[Model programowy procesora]]
Computer_storage_typesComputer storage types.svg|[[Pamięć komputerowa]]
IntelProcessorRoadmap-4v.svg|[[Mikroarchitektura procesora]]
</gallery>
 
==== 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]]ó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ń]].
 
==== Systemy komputerowe ====
{{Osobny artykuł|System komputerowy}}
{{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]].<gallery class="center" heights="150" widths="200">
IBM_PC_Motherboard_IBM PC Motherboard (1981).jpg|[[Płyta główna]]
Computer_storage_typesComputer storage types.svg|[[Pamięć operacyjna]]
Medical_Econet_PalmCare_Medical Econet PalmCare -_CPU_module_ CPU module -_Ramtron_FM18L08 Ramtron FM18L08-70-SG-5631.jpg|[[Ferroelektryczna pamięć o dostępie swobodnym|FRAM]]
Intel_core_i7_940_bottom_R7309480_wp.jpg|[[Procesor]]
Intel core i7 940 bottom R7309480 wp.jpg|[[Procesor]]
</gallery>
 
==== Sieci komputerowe ====
{{Osobny artykuł|Sieć komputerowa}}
{{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]]u wyróżnia się warstwy aplikacji, transportową, internetową i dostępu do sieci.
 
==== Cyfrowe przetwarzanie sygnałów ====
Linia 115 ⟶ 120:
== Systemy informatyczne ==
==== 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]]ze (lub [[mikrokontroler]]ze) 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]].
 
==== 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 zze 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.
 
==== Systemy baz danych ====
Linia 127 ⟶ 132:
 
==== Systemy mobilne ====
{{Osobny artykuł|Systemy mobilne}}Od komputerów mobilnych (np. ''[[smartfon]]y, [[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 '''''[[przetwarzenieprzetwarzanie 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}}
{{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]].
 
==== Bezpieczeństwo komputerowe ====
{{Osobny artykuł|Bezpieczeństwo komputerowe}}Bezpieczeństwo komputerowe to obszerna dziedzina zajmująca 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]]ów czy [[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.]]<ref>{{Cytuj |autor = Daniel Schatz, Rabih Bashroush, Julie Wall |tytuł = Towards a More Representative Definition of Cyber Security |czasopismo = Journal of Digital Forensics, Security and Law |data = 2017-06-30 |data dostępu = 2020-03-28 |issn = 1558-7215 |wolumin = 12 |numer = 2 |doi = 10.15394/jdfsl.2017.1476 |url = https://commons.erau.edu/jdfsl/vol12/iss2/8}}</ref><ref>{{Cytuj |autor = Nikola Zlatanov |tytuł = Computer Security and Mobile Security Challenges |data = December 2015 |url = https://www.researchgate.net/publication/298807979_Computer_Security_and_Mobile_Security_Challenges}}</ref>
<gallery class="center" heights="150" widths="200">
Virus_BlasterVirus Blaster.jpg|[[Wirus komputerowy|Wirusy komputerowe]]
Rkhunter_on_Mac_OS_XRkhunter on Mac OS X.png|[[Sniffer]]y i [[Rootkit]]y
SHA-1.svg|[[Funkcja skrótu|Funkcje skrótu]]
CPU_ring_schemeCPU ring scheme.svg|[[Obrona w głąb (informatyka)|Obrona w głąb]]
</gallery>
 
==== 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.
 
== 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]]
Linia 161 ⟶ 167:
 
==== 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]].
 
==== Programowanie gier ====
{{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]]a) 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]]ach, telefonach komórkowych oraz innych urządzeniach mobilnych .
 
==== Symulacje komputerowe ====
Linia 173 ⟶ 179:
 
==== 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 ====
{{Osobny artykuł|Programowanie webowe}}Tworzenie stron internetowych to praca związana z tworzeniem [[Strona internetowa|strony internetowej]]. Tworzenie stron internetowych może rozciągać się od opracowania prostej pojedynczej statycznej strony [[HTML]] zwykłego tekstu po złożone [[Aplikacja internetowa|aplikacje internetowe]] np. [[Serwis społecznościowy|serwisy społecznościowe]].
 
==== 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]].
 
== Sztuczna inteligencja ==
Linia 185 ⟶ 191:
 
==== Uczenie maszynowe ====
{{Osobny artykuł|Uczenie maszynowe}}Uczenie maszynowe (także ''systemy uczące się,'' ang. ''machine learning'') to systemy posiadające zdolność do samouczenia się. Proces uczenia maszynowe polega na zbieraniu danych przez systemy komputerowe. Dane te następnie są wykorzystywane przez ten sam system to ulepszania własnego działania<ref>{{Cytuj odcinek|tytuł=UCZENIE MASZYNOWE W 90 SEKUND - DZIEWCZYNY TŁUMACZĄ!|url=https://www.youtube.com/watch?v=jBXfkxZRDPY|data dostępu=2020-01-19}}</ref>. Wyróżnia się [[uczenie nienadzorowane]] oraz [[uczenie nadzorowane]].
<!--
 
==== Reinforcement i multi-task learning ====
{{Osobny artykuł|Reinforcement learning|Multi-task learning}} -->
 
==== Deep learning (głębokie sieci neuronowe) ====
Linia 201 ⟶ 207:
==== Rozpoznawanie mowy ====
{{Osobny artykuł|Rozpoznawanie mowy}}
 
== Przetwarzanie i 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.
 
==== Eksploracja danych (data mining) ====
{{Osobny artykuł|Eksploracja danych}}
 
==== Big data ====
{{Osobny artykuł|Big data}}Big data to 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.
Linia 212 ⟶ 220:
{{Osobny artykuł|Bioinformatyka}}Bioinformatyka to interdyscyplinarna dziedzina nauki łącząca [[Biologia|biologię]] z informatyką. Bioinformatyka obejmuje rozwój metod obliczeniowych służących do badania struktury, funkcji i ewolucji [[gen]]ów, [[genom]]ów i [[Białka|białek]]. Ponadto odpowiada za rozwój metod wykorzystywanych do zarządzania i analizy informacji biologicznej gromadzonej w toku badań genomicznych oraz badań prowadzonych z zastosowaniem wysokoprzepustowych technik eksperymentalnych. Z bioinformatyką powiązane są: [[genomika]], [[proteomika]], [[metabolomika]], [[transkryptomika]] i [[konektom]]ika<ref>{{Cytuj |autor = Paul G. Higgs, Teresa K. Attwood |tytuł = Bioinformatics and Molecular Evolution |data = 2004-12-15 |data dostępu = 2020-03-28 |doi = 10.1002/9781118697078}}</ref><ref>{{Cytuj |autor = prof. dr hab. inż. Jacek Błażewicz |tytuł = Bioinformatyka i jej perspektywy |data = 2011 |url = http://www2.cs.put.poznan.pl/wp-content/uploads/2011/11/wyklad_inauguracyjny_2011.pdf}}</ref>.
<gallery class="center" heights="150" widths="200">
Genome_viewer_screenshot_smallGenome viewer screenshot small.png|[[Genomika]]
Rothemund-DNA-SierpinskiGasket.jpg|[[Komputer DNA]]
WPP_domain_alignmentWPP domain alignment.PNG|[[Dopasowanie sekwencji]]
The_protein_interaction_network_of_Treponema_pallidumThe protein interaction network of Treponema pallidum.png|[[Molecular interaction networks]]
</gallery>
 
==== Informatyka chemiczna ====
{{Osobny artykuł|Informatyka chemiczna}}Informatyka chemiczna, także chemioinformatyka - nauka zajmująca się wykorzystaniem informatyki do rozwiązywania różnorodnych problemów chemicznych jak np. teoria grafów chemicznych czy badania [[przestrzeń chemiczna|przestrzeni chemicznej]]<ref>{{Cytuj |autor = Gasteiger J.(Editor), Engel T.(Editor) |tytuł = Chemoinformatics : A Textbook |data = 2004 |isbn = 3-527-30681-1}}</ref><ref>{{Cytuj |autor = A.R. Leach, V.J. Gillet |tytuł = An Introduction to Chemoinformatics |data = |isbn = 1-4020-1347-7}}</ref>. Te techniki, nazywane często metodami ''in silico'', wykorzystywane są do przeprowadzania obliczeń w blisko związanej z nią [[Chemia obliczeniowa|chemii obliczeniowej]] oraz w [[Chemia kwantowa|chemii kwantowej]] i procesie projektowania leków. Nauka ta znajduje zastosowanie w wielu gałęziach [[Przemysł chemiczny|przemysłu chemicznego]] do analizy i przetwarzania danych chemicznych.
 
==== Geoinformatyka ====
{{Osobny artykuł|Geoinformatyka}}Geoinformatyka - obszar wiedzy łączący geografię z informatyką
 
==== Informatyka afektywna ====
Linia 228 ⟶ 236:
 
==== 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 ====
Linia 237 ⟶ 245:
== Zobacz też ==
{{Siostrzane projekty
|commons = Category:Computer science
|słownik = informatyka
|źródła = Kategoria:Informatyka
|cytaty = Informatyka
|news = Portal:Informatyka
|books = Kategoria:Informatyka
|species =
|wikiwerek =
}}
* [[technika informatyczna]]
Linia 251 ⟶ 259:
== Przypisy ==
{{Przypisy}}
 
__notoc__
__BEZSPISU__
 
{{Nauki przyrodnicze i ścisłe}}