Informatyka: Różnice pomiędzy wersjami

[wersja przejrzana][wersja nieprzejrzana]
Usunięta treść Dodana treść
Literówka
Znaczniki: VisualEditor Z urządzenia mobilnego Z wersji mobilnej (przeglądarkowej)
(1) Poprawiono opis teorii języków programoania na podstawie angliskiej wiki. (2) Skopiowano i przetłumaczono galerię z niej (3) Przeniesiono część linków z angielskiej strony wiki"programming language theory"
Linia 37:
{{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]].
 
==== 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 obszarmi 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 |url = http://dx.doi.org/10.1007/978-94-010-0413-8_7}}</ref> czy [[metaprogramowanie]]. Na języki programowania składa się składnia, semantyka, typy danych i [[Biblioteka standardowa|biblioteki standardowe]], zazwyczaj posiadająceposiadają 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 czynp. operacje na ciągach tekstowychznakó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_paradigms.svg|[[Paradygmat programowania|Paradygmaty programowania]]
</gallery>
==== Teoria informacji i kodowania ====
{{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ł]].
 
==== 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. 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]]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]].
 
==== 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]]. 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.