Kihagyás

Alapfogalmak

Programozási nyelvek, paradigmák

Amikor programot írunk, akkor tulajdonképpen nem csinálunk mást, mint megpróbáljuk valahogy leírni a számítógép számára, hogy az adott feladatot hogyan oldja meg. Általában maga a megoldandó probléma, illetve annak megoldása sok esetben kijelöli, hogy mely programozási nyelven érdemes azt megoldani. A különböző programozási paradigmák, amelyek bizonyos tulajdonságok figyelembe vételével osztályozzák a programozási nyelveket, segítenek abban, hogy adott esetben eldöntsük, mely programnyelv a legalkalmasabb az adott feladat elvégzésére.

A programozási nyelveket általában két nagy kategóriára osztják, amelyeket ezután további alkategóriákra oszthatunk. Az imperatív nyelvek azokat a programozási nyelveket foglalják össze, amelyekben a programozó lépésről lépésre megadja azt az utasítássorozatot, amelyet a program végigjár, közben változtatva az állapotát (adatainak értékét), a dekleratív nyelvek közé pedig azok a nyelvek kerülnek, amelyben a kívánt eredmény tulajdonságait rögzíti a programozó, nem azt, hogyan is kell azt elérni.

Általában nem igaz, hogy egy programozási nyelv 100%-osan megvalósít egy programozási paradigmát. Sokszor ezek keveredhetnek egy-egy nyelvben. A legtöbb nyelv többnyire több paradigma jellemzőit is szándékosan viseli. Ez nem véletlen, hiszen nagyon sokszor egy-egy újabb nyelv épül egy korábbi, az adott paradigmát képviselő nyelv szabályaira, ugyanakkor átvesz olyan tulajdonságokat is, amiket vele párhuzamosan fejlődő nyelvek valósítanak meg:

kep

A kurzus a C programozási nyelven keresztül az imperatív nyelvek felépítésébe vezeti be a hallgatót. Ez a nyelv egy olyan általános célú programozási nyelv, amely szorosan kapcsolódik a UNIX operációs rendszerhez, mivel azt is, sőt a hozzá kapcsolódó kis programokat is ezen a nyelven írták. A legtöbb alapötletét a nyelv a BCPL nyelvből örökölte B nyelven keresztül. A BCPL és B nyelvek még típus nélküli nyelvek voltak azonban, a C viszont már számos adattípussal rendelkezik. Ezen felül tartalmazza a strukturált programozáshoz szükséges vezérlési szerkezeteket is.

Programozási alapfogalmak

A programozás nem más, mint a valós problémák számítógépes megoldása. Persze az, hogy mit tekintünk számítógépnek egyre inkább kérdéses, hiszen egy mobiltelefont, egy okos tévét éppúgy tekinthetünk annak, mint a laptopokat, asztali számítógépeket. A közös ezekben az egyre általánosabb célokat megvalósító eszközökben, hogy programjukat minden külső beavatkozás nélkül képesek végrehajtani elektronikusan, ahol az áramköri kapcsolatok nem mechanikusak, illetve állapotaikat digitális formában, azaz két érték segítségével (0, 1) jól elkülöníthetően írják le.

Maguk a számítógépek működése kicsit tükrözi az emberi gondolkodást, és megpróbálja leutánozni azt, ahogy például az ember számol. Azaz olvassa az utasításokat, értelmezi azokat, majd végrehajtás után rátér a következő utasításra.

A számítógépek alap modelljét 1945. június 30-án publikálta Neumann János társaival. Ebben az architektúrában a számítógép része egy aritmetikai és logikai egység, amely a vezérlő egységgel együtt a számítógép kulcsszereplője. Ezekhez csatlakozik egy operatív tároló, amely tartalmazza az adatokat, illetve a végrehajtandó utasításokat (program), valamint ehhez kapcsolódik a háttértár és az adatok különböző be- és kiviteli eszközei.

kep

Ahhoz, hogy a számítógép számára utasításokat tudjunk adni, kell egy nyelv, amely mellőzi a nyelvi többértelműséget (ezáltal biztosítva a program egyértelműségét), amely mondandója nem függ a szövegkörnyezettől, illetve amelyben adott a szemantika, azaz az, hogy mi is a jelentése a nyelvben található szavaknak.

Ha adott a nyelv, akkor azzal definiálhatjuk azt a tevékenységsorozatot, amit a számítógépnek végre kell hajtania. Alapvetően azt kell megmondani a számítógépnek, hogy milyen adatokon milyen műveleteket végezzen el. Ez lesz az algoritmus, amely nem más, mint adott típusú összes feladat megoldására vonatkozó pontos előírás, amely megmondja, hogy a kezdeti adatokon milyen műveleteket milyen sorrendben kell elvégezni.

Egy algoritmus legfőbb tulajdonságai, hogy legyen meghatározott, azaz véges módon leírható úgy, hogy ugyanazon bemeneti adatokra mindig ugyanazt eredményezze. Legyen széleskörű, azaz egész feladatosztályra vonatkozzon, illetve legyen véges, azaz véges számú lépésben fejeződjön be. És persze az sem baj, ha potenciálisan megvalósítható is. Igazolt tény, hogy nincs olyan algoritmus, amelyik el tudja dönteni, hogy egy tetszőleges program a kezdőadatokkal végrehajtva véges lépés után megáll-e.

A programozási nyelv egy olyan nyelv, amely szintaktikai és szemantikai szabályok összessége által egy problémát megoldó algoritmus leírására szolgál. Ha ez a nyelv közel áll az emberi nyelvekhez, akkor magas szintű, ha inkább a számítógép megvalósításához áll közel, akkor alacsony szintű nyelvről beszélünk.

Egy adott algoritmus adott programozási nyelven vett leírása lesz a program.

Hardver környezet

A számítást végző fizikai-technikai rendszert hardvernek nevezzük. Bár nagyon sokféle hardver létezhet, ezek felépítése általában nagyon hasonló (ld. Neumann-architektúra). A hardver magját a központi feldolgozó egység adja (CPU, processzor). Felépítés alapján ez lehet CISC (Complex Instruction Set Computer = teljes utasításkészlettel rendelkező számítógép), vagy RISC (Reduced Instruction Set Computer = csökkentett utasításkészletű számítógép). A CISC processzorok bonyolultabb műveletvégzéseket tudnak megvalósítani, akár többet egyszerre, ahol az utasítások hossza is különböző lehet. Ezzel szemben a RISC processzorokban minden utasítás ugyanolyan hosszú, a memóriát csak a load és store utasításokkal lehet elérni, címzésre egyszerű módok adottak nagy számú általános regiszter használata mellett. A processzorok egyéb jellemzője a sebessége (MHz, Ghz) és a magok száma.

A memóriának két fajtáját különböztetjük meg. A RAM (Random Access Memory) az írható és olvasható memóriamodulok elnevezése. Jellemzőjük a tárolókapacitás (annak a mértéke, hogy a programok mennyi adatot tárolhatnak el itt) és a sebesség (azaz milyen gyorsan tudjuk írni és olvasni). A RAM tartalma eltűnik, amikor a tápfeszültség megszűnik. Ezzel szemben a ROM (Read Only Memory) egy csak olvasható memória modult tartalmaz, amelyen levő adatok a felhasználó által nem változtathatóak, általában egyszer, a gyártás során írnak rá. (Újabb technológiáknál, EPROM és EEPROM esetében ezek az adatok is törölhetőek, és módosíthatóak, de az aktuálisan beprogramozott értékek megmaradnak.)

Háttértárak esetében is széles a választék. A régebbi rendszerekben használt HDD (Hard Disk Drive) esetében egy mechanikusan mozgó fej olvassa le az adatokat. Egy motor forgatja a benne levő tányérokat nagy sebességgel, egy másik motor pedig mozgatja a fejet, ami a megfelelő pozíción írja vagy olvassa az adatokat. Az SSD (Solid State Drive) esetében nincs mozgó alkatrész, az egész memóriát egyben kezeli, gyakorlatilag a sebessége 6-7-szer gyorsabb a HDD-nél, hisz nem kell a fejet pozícionálnia, illetve könnyebb is valamivel. Az előbbi háttértáraknál kevesebb adat tárolására szolgálnak a különböző lemezek (CD, DVD, BD, flash kártyák), amelyek olvasásához (esetleg írásához) külön perifériák csatlakoztatása szükséges.

A hardveres környezet nélkülözhetetlen elemei ezeken kívül a felhasználót a géppel összekötő eszközök, mint amilyen a billentyűzet, egér, monitor, nyomtató és egyéb eszközök.

Szoftver környezet

A hardvert működtető programok és parancsok összessége a szoftver. Maga a szoftver környezet egy hierarchikus felépítésű programrendszer, amelynek a felhasználó szemszögéből 4 szintjét különítjük el:

kep

A gépi alapszoftver, BIOS (Basic Input Output System) a hardver alapvető működését biztosítja, ezt általában a ROMba beégetve tárolják. Ennek a legfőbb funkciói a hardver tesztelése, az operációs rendszer betöltése és indítása, valamint a gépi szintű be- és kimenet megvalósítása, amely feladatot a modern operációs rendszerek az elindításuk után részben, vagy teljesen átvesznek.

Az operációs rendszer az a programrendszer, amely közvetítő szerepet tölt be a számítógép hardver erőforrásai és a felhasználó között. Főbb funkciói a programok betöltése és végrehajtása, az erőforrások elosztása, input és output műveletek elvégzése, a háttértárakon tárolt adatrendszerek kezelése, a felhasználók által kiadott parancsok értelmezése és végrehajtása, valamint a működés közben fellépett hibák kezelése.

A programfejlesztő rendszerek olyan számítógépes programok, amelyek segítik a programok, programrendszerek létrehozását, módosítását, végrehajtását. Segítségükkel a programfejlesztéshez szükséges minden lépés elvégezhető, így fájljainkat megfelelően tudjuk kezelni, létrehozni, szerkeszteni, a megírt programot fordítani és futtatni tudjuk bennük, szükség esetén pedig lehetőséget ad a benne levő hibák megtalálására.

Minden egyéb program a felhasználói programrendszer része, amely valamilyen probléma számítógépes megoldását szolgáltatja.


Utolsó frissítés: 2020-11-02 09:35:35