Ugrás a tartalomhoz

computer science

A Wikiszótárból, a nyitott szótárból

Főnév

computer science (tsz. computer sciences)

  1. (informatika) informatika, számítástechnika

Informatika (számítástechnika) a számítással, számítógépek működésével és alkalmazásával foglalkozó átfogó tudomány- és műszaki terület. Magában foglalja mind a számítógépek hardveres és szoftveres elemeinek tervezését, fejlesztését, mind a számítási folyamatok elméleti alapjait és gyakorlati alkalmazásait. Az alábbiakban az informatika főbb területeinek rövid áttekintése következik, lexikonszerű, enciklopédikus stílusban.

Hardver

A hardver a számítógép kézzelfogható, fizikai alkatrészeit jelenti – ide tartoznak például a központi feldolgozóegység (CPU), a memória (RAM), az alaplap, a háttértárak, a grafikus vezérlő és más kártyák, valamint a számítógépház. A hardver részeinek többsége nyomtatott áramköri lapokon elhelyezett integrált áramkörökből (IC) áll, és a rendszer működéséhez számos perifériát (mint például monitor, billentyűzet, egér, nyomtató) is csatlakoztatnak. A modern számítógépeknél jellemzőek az egylapkás rendszerek (System on a Chip, SoC) is, amelyek egy teljes számítógép komponenseit egyetlen chipen integrálják. A hardverarchitektúrák fejlődésének célja a nagyobb teljesítmény és hatékonyság elérése; ennek érdekében gyakran alkalmaznak hardvergyorsítást is – például grafikus processzorokat (GPU) vagy egyéb specializált áramköröket – bizonyos feladatok (pl. grafika, gépi tanulás) párhuzamos és gyors végrehajtására.

Számítógépes rendszerek felépítése

A számítógép-architektúra a számítógépes rendszer szerkezetének leírása, azaz annak megtervezésével és működési elveivel foglalkozik. Ez magas szinten magában foglalja a processzorok felépítését (utasításkészlet, mikroarchitektúra), a memóriahierarchiát, a buszrendszereket és az I/O-kezelést, valamint a számítógépek alapvető működési modelljét (klasszikusan a Neumann-architektúrát). A beágyazott rendszerek ennek speciális esetei: olyan célorientált számítógépek, amelyeket egy konkrét feladat vagy eszköz vezérlésére terveztek. Mivel a beágyazott rendszer feladatai már a tervezés során pontosan ismertek, a mérnökök a feladathoz igazítva optimalizálhatják a rendszert, csökkenthetik annak költségét és méretét, valamint növelhetik megbízhatóságát. Ide tartozik a rendszer-megbízhatóság és hibatűrés kérdése is: annak biztosítása, hogy a számítógépes rendszer komponensei meghibásodás vagy részleges üzemzavar esetén is fenntartsák a működőképességet. A számítógépes rendszerek felépítésének területén foglalkoznak továbbá a nagy megbízhatóságú architektúrákkal, redundáns rendszerekkel, szerverkörnyezetekkel és más speciális célú számítógép-konfigurációkkal is.

Hálózatok

A számítógép-hálózatok lehetővé teszik számítógépek csoportjai számára az adatok cseréjét és erőforrások megosztását. Egy hálózat speciális rendszer, amely a csatlakozó számítógépek egymás közötti kommunikációját biztosítja, méghozzá közös kommunikációs protokollok segítségével digitális adatkapcsolatokon keresztül. A hálózati architektúra határozza meg a hálózat felépítését és működési modelljét (például kliens-szerver modell vagy peer-to-peer hálózat; illetve a rétegek elrendezése, mint az OSI modell). A protokollok (ilyen például az internetet működtető TCP/IP protokollkészlet) szabványosítják az adatformátumot és a kommunikáció lépéseit, biztosítva az együttműködést a különböző eszközök között. A hálózatok teljesítményét olyan jellemzők írják le, mint a sávszélesség (átviteli sebesség) és a késleltetés, valamint fontos szempont a hálózati megbízhatóság és biztonság is. A számítógépes hálózatok számos szolgáltatást nyújtanak – az egyszerű fájlátviteltől és e-mail kommunikációtól kezdve a webszolgáltatásokon át az összetett felhőalapú rendszerekig – amelyek ma már az információs infrastruktúra alapját képezik.

Szoftverszervezés

A szoftverszervezés azon rendszerszoftverekre utal, amelyek a hardver és az alkalmazások között helyezkednek el, biztosítva a számítógép működtetését és a programok futtatását. Ide tartoznak elsősorban az operációs rendszerek, amelyek feladatai közé tartozik a számítógép erőforrásainak (processzoridő, memória, perifériák) kezelése és a felület biztosítása a programok futtatásához. Az operációs rendszer indításkor betöltődik, vezérli a folyamatok ütemezését, a memóriakezelést, a háttértárak elérését, eszközmeghajtókat működtet, és rendszerhívások révén szolgáltatásokat nyújt az alkalmazásoknak. A middleware (köztesréteg) az operációs rendszer és az alkalmazások között működő szoftverkomponensek összessége, mely megkönnyíti a különböző alkalmazások vagy elosztott rendszerek együttműködését (például adatbázis-kezelő rendszerek, üzenetküldő rendszerek vagy alkalmazásszerverek formájában). A szoftverszervezés része továbbá a programnyelvek futtatókörnyezete: ide tartoznak az értelmezők (interpreterek) és a virtuális gépek. Az értelmező olyan program, amely a forráskódban írt utasításokat folyamatosan veszi, átfordítja a gép saját utasításaira és azonnal végre is hajtja. Ezzel szemben a fordítóprogram (compiler) a teljes programot előre lefordítja gépi kódú utasításokká, majd az így nyert futtatható állomány már közvetlenül végrehajtható. A virtuális gép pedig egy szoftveres úton megvalósított számítógép: a fizikai gépen futó program, amely egy teljes gép működését szimulálja (beleértve a processzort, memóriát stb.), így egy virtuális számítógép segítségével más operációs rendszerek vagy környezetek futtathatók elszigetelten a gazdagépen. Mindezen rendszerszintű szoftverek együtt biztosítják, hogy a számítógép hardvere hatékonyan kihasználható legyen és a felhasználói programok gördülékenyen működjenek.

Szoftveres jelölések és eszközök

Ez a terület a programozási nyelvekre, a szoftverfejlesztés eszközeire és módszereire összpontosít. A programozási paradigmák a programozási nyelvek osztályozási módjai, a nyelvek jellemzői alapján – egy nyelv akár több paradigmába is tartozhat. Például az imperatív programozási paradigma utasítások sorozataként adja meg a feladatot, a deklaratív pedig a kívánt eredményt írja le, míg az objektumorientált paradigma az adatok és az azokhoz tartozó műveletek egységeit (objektumokat) helyezi előtérbe. A forráskód formális jelölései, a nyelvtanok és szintaxis segítségével az algoritmusok és a logika ember által leírhatók, a számítógép számára pedig értelmezhetővé válnak. E leírások feldolgozására szolgálnak a fordítóprogramok és értelmezők: a fordítók (compiler) a magas szintű forráskódból gépi kódú utasítások sorozatát állítják elő (tipikusan egy teljes programot lefordítva futtatható formába), míg az értelmezők utasításról utasításra veszik a forrásprogramot és közvetlenül végrehajtják azt. A szoftverfejlesztők munkáját számos eszköz segíti: integrált fejlesztői környezetek (IDE), amelyek egy felületen biztosítanak szerkesztőt, fordítót/értelmezőt, hibakeresőt és egyéb funkciókat; verziókezelő rendszerek a kódváltoztatások nyomon követésére; valamint kiterjedt programkönyvtárak és keretrendszerek, amelyek kész, újrahasználható építőelemeket szolgáltatnak gyakori feladatokhoz. A programozási nyelvek és eszközök fejlődése lehetővé teszi a különböző programozási paradigmák (pl. struktúrált, objektumorientált, funkcionális, logikai stb.) gyakorlati alkalmazását, megkönnyítve a szoftverek hatékony és hibamentes fejlesztését.

Szoftverfejlesztés

A szoftverfejlesztés a szoftverek tervezésének, létrehozásának és karbantartásának folyamata, amely tipikusan jól elkülöníthető szakaszokra bontható. Általában a szoftver életciklusa során több fázist különböztetünk meg: a követelményelemzés, tervezés, fejlesztés (implementáció), tesztelés, üzembe helyezés (bevezetés) és a dokumentáció, illetve az értékelés-karbantartás szakaszait. A követelményanalízis során összegyűjtik és pontosítják a fejlesztendő rendszerrel szembeni elvárásokat (funkcionális és nem-funkcionális igényeket), majd a tervezés fázisában a szoftver architektúráját és komponenseit határozzák meg. Az implementáció (kódolás) során a fejlesztők programnyelveken megírják a szoftvert, amit aztán alapos tesztelésnek vetnek alá a hibák felderítése és a minőség biztosítása érdekében. Sikeres tesztelést követően kerül sor a rendszer telepítésére vagy bevezetésére az éles környezetbe. A szoftver életciklusa azonban a telepítés után sem ér véget: a karbantartás és továbbfejlesztés folyamatos, magában foglalva a hibajavításokat, teljesítményoptimalizálást és az új igények alapján történő módosításokat. A szoftverfejlesztés területén számos módszertant alkalmaznak, például vízesés-modell (egymás után következő fázisokkal) vagy agilis fejlesztési módszerek (inkrementális, iteratív megközelítés), amelyek célja a fejlesztési folyamat hatékonyságának növelése és a jobb minőségű szoftverek létrehozása. A szoftverkészítés fontos része a dokumentáció készítése is (felhasználói és fejlesztői dokumentumok), valamint a projektszervezés és menedzsment. Az utóbbi évtizedekben nagy jelentőségre tett szert a nyílt forráskódú szoftverfejlesztés, amelynek keretében a szoftverek forráskódja szabadon elérhető. A nyílt forráskódú szoftver felhasználója nem csak futtathatja a programot, de jogosult megismerni annak forráskódját, módosíthatja, és terjesztheti is – akár változtatásokkal együtt – a szoftvert. Ez a fejlesztési modell közösségi együttműködésen alapul, és olyan sikeres projektek fűződnek hozzá, mint a Linux operációs rendszer vagy az Apache webszerver. A szoftverfejlesztés így egyszerre mérnöki tudományág (software engineering) és kreatív folyamat, amely a tervezés, kódolás, minőségbiztosítás és projektmenedzsment szoros integrációját igényli.

Számításelmélet

A számításelmélet az informatika elméleti alapjaival foglalkozó terület, a matematika egy fiatal ága, amely a számítások és információfeldolgozó gépek működésének formális, matematikai alapjait vizsgálja. Ide tartozik az automataelmélet és a formális nyelvek elmélete, amely a számítás modellezésére szolgáló absztrakt gépeket (pl. véges automaták, veremautomaták, Turing-gép) és formális nyelvtanokat tanulmányozza – ezek segítségével megérthető, milyen jellegű problémákat képes egy számítógép megoldani és milyen nyelvek (szintaxis) segítségével adhatók meg a feladatok. A számításelmélet másik fontos ága a kiszámíthatóság és számítási komplexitás elmélete: ennek keretében vizsgálják, hogy mely problémák oldhatók meg algoritmusokkal, illetve hogy mennyi erőforrás (idő, tárhely) szükséges a megoldásukhoz. Olyan alapvető fogalmak tartoznak ide, mint a P és NP problémák osztályai, a döntési problémák és a Church–Turing-tézis. További részterület a logika az informatikában, amely a formális logikai rendszerek (például predikátumlogika, lambda-kalkulus) alkalmazását jelenti a programok és számítások leírásában és ellenőrzésében. Ide kapcsolódik a programok formális szemantikája is – a programok jelentésének matematikai leírása és bizonyítása. A számításelmélet alapvető kérdése, hogy “Mi számítható ki?” és “Mennyire hatékonyan?”, és e kérdések elvi vizsgálata nagy hatással van az informatika többi ágának fejlődésére is.

Algoritmusok

Az algoritmus jól definiált lépések sorozatából álló eljárás vagy recept egy adott probléma megoldására. Informatikai értelemben az algoritmus lépései azok a megengedett műveletek, amelyeket a számítógép végre tud hajtani, és egy algoritmusnak véges sok lépés után eredményt kell szolgáltatnia. Az algoritmusok tervezése az informatika egyik központi területe: cél, hogy egy adott feladatra helyes és hatékony megoldást találjunk. Az algoritmusok helyessége azt garantálja, hogy minden lehetséges bemenet esetén a megfelelő eredményt állítják elő, míg hatékonyságuk főként a futási időben és memóriaigényben mérhető. Az algoritmusok idő- és tárigényét, skálázhatóságát a bonyolultságelmélet vizsgálja – tipikusan aszimptotikusan, a bemenet méretének függvényében adják meg az erőforrás-igényt (például futási idő). A hatékony algoritmus alapfeltétele a nagyméretű adatok és komplex problémák számítógépes kezelésének. Az algoritmus-tervezés számos módszert kínál, úgymint az oszd-meg-és-uralkodj stratégia, dinamikus programozás, mohó algoritmusok, visszalépéses keresés stb., amelyek különböző problémákra alkalmazhatók optimális vagy közel optimális megoldások érdekében. Az algoritmusok tárgyalása során fontosak még az adatstruktúrák (például listák, fák, gráfok, halmazok), hiszen egy jól megválasztott adatszerkezet nagymértékben befolyásolja az algoritmus hatékonyságát. Az algoritmusok egyik speciális alkalmazási területe a számítógépes geometria, ahol geometriai objektumok (pontok, vonalak, poligonok, testek) kezelésére fejlesztenek ki algoritmusokat – például konvex burok megtalálása ponthalmazra, legközelebbi pontpár keresése, grafikus objektumok ütközésvizsgálata stb. A geometriai és más specializált algoritmusok is az általános elvekre épülnek, de gyakran egyedi optimalizációkat igényelnek a hatékonyság érdekében. Összességében az algoritmusok elmélete és gyakorlata az informatika magját képezi, biztosítva, hogy a problémamegoldás számítógéppel eredményesen megvalósítható legyen.

Informatikai matematika

Az informatika alapját jelentős részben a matematikai módszerek adják, különösen a diszkrét matematika és a valószínűségszámítás területeiről. Gyakran mondják, hogy „a diszkrét matematika az informatika gerincét képezi”, utalva arra, hogy az informatikusok számára elengedhetetlenek a diszkrét matematikai ismeretek. Diszkrét matematika körébe tartozik minden olyan matematikai diszciplína, amely véges vagy megszámlálható halmazokkal foglalkozik: ilyen a halmazelmélet, a kombinatorika, a gráfelmélet, a számelmélet, a formális logika és a boolean algebra, valamint a formális nyelvek és automaták matematikaia. E témák adnak szilárd alapot az algoritmusok és adatszerkezetek megértéséhez (pl. gráfalgoritmusok, kombinatorikus optimalizálás) és a számítógépes rendszerek tervezéséhez. A valószínűségszámítás és a statisztika szintén kulcsfontosságú az informatikában, különösen a nagy adathalmazok elemzése, a gépi tanulás (mesterséges intelligencia) és a megbízhatósági elemzések terén. A valószínűségelméleti modellek segítenek például a hálózatok forgalmi előrejelzésében, a számítási rendszerek hibatűrésének kvantifikálásában, vagy a kriptográfiai eljárások biztonságosságának elemzésében. Az információelmélet szintén ide sorolható: ez az információ mennyiségi fogalmával, kódolásával és továbbításával foglalkozó tudományág, amely meghatározza, hogyan mérhető és milyen elvek szerint továbbítható az információ a leghatékonyabban (például a kommunikációs csatornák kapacitásának és a tömörítési algoritmusok hatékonyságának elmélete). Az informatikai matematika magában foglal továbbá olyan területeket, mint a lineáris algebra (például számítógépes grafika transzformációi vagy gépi tanulás mátrixműveletei), a differenciálszámítás és numerikus analízis (például szimulációk és optimalizáló algoritmusok esetén), valamint a kriptográfia elméleti alapjai (számelméleti feladatok, algebrai struktúrák a titkosításban). Ezek az elméleti alapok együttesen biztosítják, hogy az informatikai megoldások megalapozottak, helyesek és hatékonyak legyenek.

Információs rendszerek

Az információs rendszerek olyan komplex számítógépes rendszerek, amelyek célja az adatok gyűjtése, tárolása, feldolgozása és információvá alakítása a felhasználók számára. E fogalom alá tartoznak mindazok a szoftver- és hardverelemek, valamint eljárások, amelyek együtt kezelik egy szervezet vagy alkalmazás információit. Ide soroljuk az adatbázis-kezelő rendszereket (DBMS), amelyek strukturált módon, hatékonyan tárolják és lekérdezhetővé teszik a nagy mennyiségű adatot. Az adatbázisok lehetnek relációsak (táblázatos adatszerkezet, SQL nyelvvel történő lekérdezéssel) vagy nem-relációsak (NoSQL adatbázisok, speciális adatmodellekkel), de mindegyik központi eleme az információs rendszereknek, hiszen az adatok jelentik a szervezetek “vagyonát”. Az üzleti információs rendszerek (például vállalatirányítási rendszerek, ERP) integrált szoftvermegoldások, amelyek egy vállalat különböző folyamatait (pénzügy, gyártás, logisztika, humán erőforrás stb.) egységes keretben kezelik, támogatva a döntéshozatalt és az erőforrások optimális felhasználását. A web is az információs rendszerek egyik legjelentősebb megnyilvánulása: a világháló és a rajta működő szolgáltatások (weboldalak, keresőrendszerek, webes alkalmazások) globális információs infrastruktúrát alkotnak, melyek a kliens-szerver architektúrára és internetes protokollokra épülnek. Az adatbányászat az információs rendszerekben felhalmozott nagy adatmennyiségekben rejlő összefüggések és minták felfedezésével foglalkozik – tipikusan statisztikai módszerekkel és gépi tanulási algoritmusokkal tár fel üzleti vagy tudományos szempontból hasznos információkat (például vásárlói szokások elemzése, orvosi adatokban rejlő korrelációk, webes felhasználói viselkedésminta-elemzés). Az információs rendszerek tervezésénél kulcsfontosságú a rendszerintegráció, a korszerű adatbázis-technológiák, a felhőalapú szolgáltatások használata, valamint a felhasználói jogosultságkezelés és az adatvédelem biztosítása. Összességében az információs rendszerek az informatika gyakorlati alkalmazásának gerincét alkotják, hiszen lehetővé teszik, hogy a nyers adatokból szervezett, értelmezhető és hasznos információ legyen a végfelhasználók számára.

Biztonság

Az informatikai biztonság célja, hogy megvédje a számítógépes rendszerek adatait és erőforrásait a jogosulatlan hozzáféréstől, sérüléstől vagy megsemmisüléstől, biztosítva az adatok sérthetetlenségét (integritását), rendelkezésre állását és bizalmasságát. A terület egyik alapköve a kriptográfia, amely matematikai módszerekkel garantálja az adatok titkosságát és hitelességét. A kriptográfiai eljárások közé tartozik a titkosítás (rejtjelezés, mely biztosítja, hogy az adatot csak a megfelelő kulccsal rendelkező felek olvashassák), a dekódolás (visszafejtés a kulcs segítségével), az üzenethitelesítő kódok és digitális aláírások (amelyek az adat integritását és azonosíthatóságát garantálják), valamint a kulcskezelés (a titkos kulcsok biztonságos generálása, megosztása és tárolása). Az informatikai biztonság másik fontos aspektusa a hálózati biztonság: ide tartoznak a tűzfalak, behatolás-megelőző és -észlelő rendszerek (IDS/IPS), amelyek a hálózati forgalmat figyelik és szűrik, hogy kiszűrjék a gyanús tevékenységeket és megakadályozzák a támadásokat. Emellett az alkalmazásbiztonság is kiemelt terület, mely az egyes szoftverekben (például webalkalmazásokban) található sebezhetőségek felderítésével és kiküszöbölésével foglalkozik – ide tartozik a biztonsági tesztelés, a kódellenőrzés és a biztonságtudatos fejlesztési gyakorlatok. A behatolás-észlelés (intrusion detection) és reakció pedig biztosítja, hogy ha mégis történik támadási kísérlet vagy incidens, azt a rendszer üzemeltetői időben észleljék és megfelelő ellenintézkedéseket tehessenek. Az informatikai biztonság része továbbá a hozzáférés-szabályozás (hogy ki férhet hozzá mely adatokhoz vagy rendszerekhez), a sérülékenységvizsgálat és a biztonsági audit, valamint a katasztrófa utáni helyreállítás tervezése is. Mivel a számítógépes rendszerek átszövik a gazdaságot és a mindennapokat, az informatikai biztonság fenntartása kulcsfontosságú a bizalmas adatok védelmében, a szolgáltatások folytonosságában és a kibertámadások elleni védekezésben.

Ember–számítógép interakció

Az ember–számítógép interakció (Human–Computer Interaction, HCI) azzal a kérdéssel foglalkozik, hogyan kommunikálnak és működnek együtt az emberek és a számítógépek, és célja felhasználóbarát, hatékony felületek és élmények létrehozása. E terület interdiszciplináris jellegű: magában foglalja az informatikát (szoftverek, eszközök tervezése), a pszichológiát (felhasználói viselkedés és kognitív folyamatok megértése) és a design-t (ergonómia, vizuális tervezés) is. A HCI klasszikus témái közé tartozik a grafikus felhasználói felület (GUI) tervezése – ide értve az ablakos, ikonokra és menükre épülő interfészeket –, a parancssoros felületek, valamint az újabb interakciós formák, mint például az érintőképernyők, a hangalapú vezérlés vagy a gesztusalapú interfészek. Az interakciótervezésnél alapvető a használhatóság (usability) elve, amely szerint a rendszernek könnyen tanulhatónak, hatékonynak, emlékezetből használhatónak kell lennie, és a használat során minimális hibát szabad csak előidézzen, illetve elégedettséget kell nyújtson a felhasználónak. A HCI modern irányzatai közé tartozik a virtuális valóság (VR) és a kiterjesztett valóság (AR), amelyek új, immerszív módokat teremtenek a felhasználók és a számítógépes szimulációk interakciójára. A vizualizáció szintén fontos részterület: nagy vagy bonyolult adatok vizuális megjelenítése (grafikonok, diagramok, infografikák, 3D modellek segítségével) annak érdekében, hogy az ember könnyebben megértse az információt. Az akadálymentesítés (hozzáférhetőség) biztosítása is az ember–számítógép interakció része: célja, hogy a szoftvereket és eszközöket fogyatékkal élő felhasználók (például látássérültek, hallássérültek, mozgáskorlátozottak) is használhassák – ennek érdekében speciális interfészeket (képernyőolvasók, Braille-kijelzők, alternatív bevitel) és tervezési elveket (pl. megfelelő színkontraszt, jól strukturált felület) alkalmaznak. Összességében az ember–számítógép interakció célja a technológia és ember közötti “párbeszéd” minél természetesebbé és hatékonyabbá tétele, hogy a számítógépek az emberi felhasználók számára valóban könnyen kezelhető, hasznos eszközökké váljanak.

Párhuzamos és elosztott rendszerek

A párhuzamos és elosztott rendszerek az informatikában a több egyidejű számítás végzésének elvét és gyakorlatát vizsgálják. Párhuzamosság alatt azt értjük, hogy egy program vagy algoritmus különböző részei egymással átfedésben (sorrendtől részben függetlenül) hajthatók végre, anélkül hogy ez befolyásolná a végeredményt. A párhuzamos végrehajtás – például többmagos vagy többprocesszoros rendszerekben – jelentősen növelheti a feldolgozás sebességét és teljesítményét, mivel egyszerre több művelet halad előre. A párhuzamos rendszerek programozása azonban új kihívásokkal jár, mint a szinkronizáció (az egyidejű folyamatok vagy szálak közötti koordináció, például megosztott erőforrások esetén) és a versenyhelyzetek kezelése. A több szál (multithreading) használata egy programon belül lehetővé teszi, hogy az külön futó szálakon párhuzamosan végezzen műveleteket (például az egyik szál számításokat végez, míg egy másik a felhasználói felületet kezeli). Az elosztott számítások ezzel rokon fogalom, de itt a párhuzamosan futó feladatok több, hálózatba kapcsolt számítógépen oszlanak meg. Az elosztott rendszer csomópontjai együttműködnek egy közös probléma megoldásában, kommunikálnak egymással (tipikusan üzenetküldés útján), és így érik el a közös célt. Elosztott rendszerek például a kliens-szerver rendszerek, a peer-to-peer hálózatok, a felhőalapú számítási platformok vagy a nagy teljesítményű szuperszámítógépes klaszterek. A párhuzamos és elosztott rendszerek terén olyan technológiák és elméleti modellek alakultak ki, mint a párhuzamos programozási nyelvek (pl. OpenMP, MPI), a Petri-hálók és egyéb folyamatkalkulusok (amelyek formális alapot adnak az egyidejű folyamatok viselkedésének leírására), valamint a felhőszolgáltatások és mikroszolgáltatások modern architektúrái. A cél minden esetben az, hogy a problémákat kisebb részekre bontva, egyidőben több erőforrást kihasználva gyorsabban vagy hatékonyabban oldjuk meg, mint ahogy azt egyetlen szálon vagy gépen tehetnénk. E területen fontos kutatási téma a skálázhatóság (hogyan bír el a rendszer egyre több párhuzamos egységet vagy csomópontot), a hibatűrés (egy csomópont kiesése esetén is működőképes maradjon a rendszer) és a konzisztencia (az elosztott adatok következetessége a csomópontok között).

Mesterséges intelligencia

A mesterséges intelligencia (MI) az informatika egyik ága; olyan informatikai tudományág, melynek tárgya az emberi intelligenciájú gépek és szoftverek fejlesztése. A mesterséges intelligencia célja, hogy a számítógépek az emberéhez hasonló intellektuális képességeket mutassanak meghatározott feladatokban – például tanuljanak tapasztalataikból, következtetéseket vonjanak le, döntéseket hozzanak vagy kreatív megoldásokat javasoljanak. Számos részterületre bontható: az egyik a természetes nyelvfeldolgozás (NLP), amelynek célja, hogy a számítógépek megértsék és generálják az emberi nyelvet (beszéd- és szövegértés, gépi fordítás, beszédfelismerés stb.). Ide tartozik továbbá a tudásreprezentáció és automatizált következtetés – mely módszerek révén a gépek logikai adatbázisokból és szabályokból képesek új információkat levezetni. Fontos terület a keresés és játékok MI-ja: például algoritmusok, amelyek optimális lépéseket keresnek (mint a sakkozó programok vagy általános problémamegoldó keresőalgoritmusok gráfokban). A számítógépes látás is az MI-hez tartozik, melynek célja a digitális képek és videók tartalmának megértése (objektumfelismerés, arcazonosítás, mozgáskövetés stb.). A mesterséges intelligencia foglalkozik továbbá a robotika intelligens vezérlésével (érzékelők adatainak értelmezése, navigáció, döntéshozatal a fizikai világban). Nem utolsósorban léteznek a mesterséges intelligenciának filozófiai és etikai alapjai is: például az a kérdés, hogy mit tekinthetünk intelligensnek, tudatossá válhatnak-e a gépek, vagy hogy miként garantáljuk az MI rendszerek megbízhatóságát és azt, hogy az emberi értékekkel összeegyeztethető döntéseket hozzanak. A mesterséges intelligencia napjainkban rohamosan fejlődik – az önvezető autók, az intelligens digitális asszisztensek, a gépi fordítók vagy épp a stratégiai játékokban (pl. go, sakk) az embert legyőző programok mind azt mutatják, hogy egyre összetettebb és emberibb teljesítményre képesek a gépi intelligenciák.

Gépi tanulás

A gépi tanulás a mesterséges intelligencia egy speciális területe, amely olyan rendszerekkel foglalkozik, melyek képesek tanulni, vagyis tapasztalatokból, adatokból általánosítva új tudást szerezni. Míg a hagyományos programozás során az ember explicit módon írja le a megoldás lépéseit, addig a gépi tanulásnál a számítógépet adatpéldákon “tréningezik”, hogy felismerjen mintákat és összefüggéseket, majd ezeket alkalmazza új esetekre. A gépi tanulási rendszerek a tanulási fázisban kapott példaadatok alapján építenek fel egy modellt, amely a predikciós vagy döntési feladatokat látja el a jövőben. A gépi tanulásnak több típusa van: felügyelt tanulás esetén a rendszer előre megjelölt (címkézett) példákból tanul – például egy képfelismerő rendszer sok ezer, fajtánként címkézett fotóból megtanulja, hogyan néz ki egy macska vagy kutya, majd új képeken is felismeri ezeket. Felügyelet nélküli tanulás során a bemenő adatokhoz nem tartoznak előre megadott címkék; a rendszernek magának kell felfedeznie a rejtőző struktúrákat vagy csoportokat (pl. klaszterezés, dimenziócsökkentés segítségével – ilyen alkalmazás például ügyfelek vásárlási szokásainak csoportosítása anélkül, hogy megmondanánk, milyen csoportokat keressen). A megerősítéses tanulás ezzel szemben interakció alapú: a rendszer egy agent, amely egy környezetben cselekszik, és minden lépés után jutalmat vagy büntetést kap; célja, hogy a hosszú távú jutalmat maximalizálja. Ilyen technikával tanultak meg számítógépek kiváló szinten játszani például Atari játékokat vagy épp a Go táblajátékot. A gépi tanulás eszköztárába tartoznak a neurális hálózatok és a mélytanulás (deep learning) módszerei is, amelyek több rétegű mesterséges neurális hálózatokat alkalmazva bonyolult mintafelismerési feladatokat is képesek automatizálni (hang- és képfelismerés, nyelvi modellek stb.). A gépi tanulás gyakorlati alkalmazásai ma már számtalan területen megjelennek: az ajánlórendszerek (pl. filmes vagy termékajánlók), a prediktív karbantartás az iparban, az egészségügyi diagnosztikai rendszerek, a pénzügyi előrejelzések, mind támaszkodnak a gépitanulás-algoritmusokra. A terület egyik kihívása az általánosítás képessége – hogy a modell ne csak a megtanult példákat “magolja be”, hanem ismeretlen adatokon is jó eredményt adjon –, valamint az érthetőség és etika kérdése (például a döntések magyarázhatósága és az esetleges torzítások kiküszöbölése a tanulási adatokban).

Számítógépes grafika

A számítógépes grafika a számítógéppel előállított vagy feldolgozott vizuális tartalmak (képek, animációk, 3D modellek) létrehozásának és kezelésének tudományága. Az elmúlt évtizedekben a számítógépes grafika, animáció és képfeldolgozás fejlődése rendkívüli módon felgyorsult, mára önálló szakterületté nőtte ki magát az informatika világán belül. A számítógépes grafika két fő ága a 2D grafika (kétdimenziós ábrák, rajzok, képek kezelése) és a 3D grafika (háromdimenziós térbeli modellek és jelenetek kezelése). A gyakorlatban ide tartozik a modellezés, vagyis geometriai objektumok matematikai leírása (pontok, sokszögek, felületek segítségével definiálva egy tárgy formáját); az animáció, amely ezen objektumok időbeni mozgatását és az állapotuk változtatását jelenti (kulcskockák, in-between keretek, csontvázas animáció stb. segítségével); és a renderelés, ami a 3D jelenetekből fotorealisztikus vagy stilizált 2D képek számítását végzi (figyelembe véve a fényforrásokat, anyagokat, árnyékokat – például sugárkövetés algoritmussal). A modern grafikai rendszerek lehetővé teszik a valós idejű megjelenítést is, ami a számítógépes játékoknál, szimulációknál alapkövetelmény – itt a másodperc törtrésze alatt kell képeket generálni a folyamatos mozgás érzetéhez. A képfeldolgozás (image processing) e terület része, amely kész képek módosítását, elemzését jelenti (például szűrés, élesítés, zajcsökkentés, élkiemelés, vagy orvosi képek elemzése, arcfelismerés stb.). Külön terület a vizuális effektusok (VFX) és a digitális filmtrükkök világa, ahol a valóságos felvételeket és a számítógéppel generált tartalmat elegyítik, illetve látványos, máshogy meg nem valósítható jeleneteket alkotnak (például robbanások, füst, folyadékok szimulációja). A számítógépes grafikához tartoznak még a tervezőrendszerek (CAD), melyek mérnöki rajzok, modellek készítését támogatják, valamint a geográfiai információs rendszerek (GIS) térképi adatmegjelenítései is. A grafika fejlődésének motorja a számítástechnika növekvő teljesítménye (különösen a grafikus hardver, GPU-k fejlődése) és az egyre fejlettebb algoritmusok, melyekkel egyre realisztikusabb és összetettebb jeleneteket állíthatunk elő. A számítógépes grafika nemcsak a szórakoztatóiparban fontos (játékok, animációs filmek), hanem a tudományos vizualizációban, az orvosi képalkotásban, a virtuális prototípusok készítésében és számos más alkalmazási területen is alapvető technológia.

Alkalmazott informatika

Az alkalmazott informatika az informatika eredményeinek és eszközeinek alkalmazását jelenti különböző szakterületeken, új technológiákban és interdiszciplináris környezetekben. Ez a gyűjtőfogalom számos modern és feltörekvő területet lefed, ahol a számítástechnika tudását specifikus problémák megoldására használják fel:

  • Kvantumszámítás: az informatika és a kvantumfizika határterülete, mely kvantummechanikai jelenségeket kihasználó számítógépek építésével és algoritmusok fejlesztésével foglalkozik. A kvantumszámítógép elméletileg bizonyos feladatokat lényegesen gyorsabban képes megoldani, mint a klasszikus számítógépek (ilyen feladatok lehetnek például bizonyos nagy számok prímfelbontása, szimultán keresés adatbázisban kvantumalgoritmussal stb.). A kvantuminformatika még nagyrészt kutatási fázisban van, de jelentős áttöréseket ígér a titkosításban, szimulációkban (anyag- és kémiai molekula-szimuláció) vagy a gépi tanulás felgyorsításában.
  • Elektronikus kereskedelem (e-kereskedelem): az informatika alkalmazása a kereskedelemben és üzleti tranzakciókban. Ide tartoznak a webáruházak, online fizetési rendszerek, elektronikus piacterek, amelyek lehetővé teszik termékek és szolgáltatások adásvételét interneten keresztül. Az e-kereskedelem informatikai háttere kiterjed az adatbázisokra (termékkatalógusok, vásárlói adatok), a biztonságra (tranzakciók titkosítása, hitelesítés), a logisztikai rendszerekre és a webfejlesztésre is. Ma már a globális kereskedelem jelentős része online bonyolódik, ami nem lenne lehetséges a megbízható informatikai infrastruktúra nélkül.
  • Számítástechnikai biológia és bioinformatika: a biológia és az informatika metszete, ahol számítógépes módszerekkel dolgozzák fel és elemzik a biológiai adatokat. Például a bioinformatika a DNS/RNS szekvenciák, fehérjeszerkezetek adatainak kezelése, gének és fehérjék közötti kapcsolatok feltárása, evolúciós fák számítása stb. terén nélkülözhetetlen. Ugyanígy, az orvosi informatikában vagy egészségügyi adatelemzésben is alkalmaznak gépi tanulási algoritmusokat a diagnosztika támogatására (pl. képfelismerés MRI vagy röntgen felvételeken, járványterjedés modellezése). A számítástechnikai biológia révén jöttek létre olyan eredmények, mint az emberi genom szekvenálása, új gyógyszermolekulák számítógépes tervezése, vagy a precíziós orvoslás személyre szabott terápiáinak alapja.
  • Digitális művészet és kreatív technológiák: az informatika eszköztárát a művészetben és kreatív iparban alkalmazó terület. Ide tartozik a digitális grafika, animáció, 3D modellezés művészi alkalmazása (film, játék, design), a hangtechnológia és zenei informatikai eszközök (digitális hangszerek, zeneszerkesztő szoftverek), valamint az újmédia-művészet, ahol interaktív installációk, VR műalkotások, generatív (számítógép által algoritmikusan létrehozott) művek születnek. A számítógépes eszközök ma már szerves részét képezik a vizuális és audiovizuális művészeti alkotófolyamatoknak, új lehetőségeket nyitva a kreativitás számára.
  • Kiberhadviselés és kiberbiztonság a katonai alkalmazásokban: a modern hadászatban az informatikai rendszerek támadó és védelmi célú felhasználása. A kiberhadviselés magába foglalja az ellenség informatikai infrastruktúrája elleni támadásokat (hálózatok megbénítása, adatok megszerzése vagy megsemmisítése célzott kibertámadásokkal), valamint a védekezést az ilyen támadások ellen. A katonai informatika emellett jelent kihívásokat a titkos kommunikáció, a drónok és autonóm rendszerek vezérlése, a mesterséges intelligencia alkalmazása a felderítésben és döntéstámogatásban, valamint a szimulációs kiképző rendszerek terén is. Az információ biztonságos kezelése és a kritikus rendszerek védelme a nemzetbiztonság részévé vált, ami jól mutatja az informatika stratégiai fontosságát.
  • Videojátékok és interaktív szórakoztatás: a videojátékok fejlesztése az alkalmazott informatika különösen összetett és sokrétű ága. Egy modern videojáték létrehozása magában foglalja a számítógépes grafikát (3D modellek és animációk), a fizikai szimulációt (valósághű mozgások, ütközések, környezeti hatások), a hálózati programozást (többjátékos mód), a mesterséges intelligenciát (a játékbeli ellenfelek viselkedése), valamint a hangtechnológiát és a felhasználói interakció tervezését is. A játékipar az informatika számos innovációját ösztönözte (pl. GPU-k fejlesztése, virtuális valóság eszközök, valós idejű renderelési algoritmusok), és ma a szórakoztatóipar egyik vezető ágazata, amely erősen támaszkodik a legkorszerűbb informatikai megoldásokra.

Az alkalmazott informatika felsorolt példái csak ízelítőt adnak a terület sokszínűségéből. Lényegében mindenhol, ahol az emberi tevékenység során adatok keletkeznek vagy folyamatok automatizálhatók, az informatika alkalmazása új lehetőségeket nyit. Legyen szó akár tudományos kutatásról, ipari termelésről, oktatásról, művészetről vagy közigazgatásról, az informatika integrálásával hatékonyabbá, gyorsabbá és intelligensebbé tehetők a folyamatok. Az alkalmazott informatika így az informatika és más szakterületek közti híd szerepét tölti be, folyamatos innovációt generálva mindkét oldalon.