Imperatív programozás
A számítástechnikában az imperatív programozás olyan programozási paradigma, amely utasításokat használ, hogy egy program állapotát megváltoztassa. Nagyjából ugyanúgy, ahogy a természetes nyelvekben az imperatív hangulat parancsokat fejez ki, egy imperatív program parancsok soraival bírja a számítógépet működésre. Az imperatív programozás arra összpontosít, hogy leírja, hogy egy program hogyan működik.
A kifejezést gyakran használják a deklaratív programozással ellentétben, amely arra összpontosít, hogy a program mit érjen el, anélkül, hogy meghatározná, hogy a program hogyan érje el az eredményt.
Imperatív és procedurális programozás
[szerkesztés]A procedurális programozás az imperatív programozás egy olyan típusa, amelyben a program egy vagy több eljárásból épül fel (szubrutinoknak vagy függvényeknek is nevezik őket). A kifejezéseket gyakran szinonimaként használják, de az eljárások használata drámai hatást gyakorol arra, hogy az imperatív programok hogyan jelennek meg és hogyan épülnek fel. Az erősen procedurális programozás, amelyben az állapotváltozások az eljárásokra lokalizálódnak vagy explicit paraméterekre és az eljárásokból származó visszatérésekre korlátozódnak, a strukturált programozás egyik formája. Az 1960-as évektől kezdve a strukturált programozás és a moduláris programozás mint technikák léptek elő a kötelező programok fenntarthatóságának és általános minőségének javítására. Az objektumorientált programozás mögött álló koncepciók megkísérlik kiterjeszteni ezt a megközelítést.
A procedurális programozás a deklaratív programozás felé tett lépésnek tekinthető. Egy programozó gyakran meg tudja mondani, egyszerűen ránézve az eljárások nevére, paramétereire illetve visszatérési típusára (és a hozzá kapcsolódó megjegyzésekre), hogy mit kell tennie egy adott eljárásnak, anélkül, hogy megnézné hogyan is éri el a kívánt eredményt. Ugyanakkor a teljes program továbbra is elengedhetetlen, mivel nagymértékben rögzíti a végrehajtandó utasításokat és azok végrehajtási sorrendjét.
Az imperatív programozás alapjai és magyarázata
[szerkesztés]Majdnem minden számítógép hardveres megvalósítása imperatív. Szinte az összes számítógépes hardvert a gépi kód végrehajtására tervezték, amely őshonos a számítógépen és imperatív stílusban van megírva. Ebből kiindulva a program állapotát a memória tartalma határozza meg, az utasítások pedig instrukciók a számítógép natív gépi nyelvén. A magasabb szintű imperatív nyelvek változókat és összetettebb parancsokat használnak, de továbbra is ugyanazt a paradigmát követik. A receptek és a folyamat-ellenőrzőlisták, bár nem számítógépes programok, szintén ismert fogalmak, amelyek stílusukban hasonlítanak az imperatív programozáshoz; minden lépés egy utasítás, és a fizikai világ pedig tárolja az állapotot. Mivel az imperatív programozás alapgondolatai fogalmilag egyaránt ismerősek és közvetlenül a hardverben is megtestesülnek, a legtöbb számítógépes nyelv imperatív stílusban van.
Az értékadó utasítások imperatív paradigmában végeznek műveletet a memóriában található információkkal, és az eredményeket a memóriában tárolják későbbi felhasználás céljából. A magas szintű imperatív nyelvek emellett lehetővé teszik a komplex kifejezések kiértékelését, amelyek számtani műveletek és függvényértékelések kombinációjából állhatnak, és az így kapott értéket a memóriához rendelik. A ciklusok(mint a while ciklus, a do while ciklus és a for ciklus) lehetővé teszik egy utasítássorozat többszöri végrehajtását. A ciklusok vagy végrehajthatják az általuk megadott utasításokat előre meghatározott számú alkalommal, vagy ismételten végrehajthatják őket, amíg valamely feltétel meg nem változik. A feltételes elágazások lehetővé teszik egy utasítássorozat végrehajtását, ha valamilyen feltétel teljesül. Ellenkező esetben az utasítások kihagyásra kerülnek, és a végrehajtási sorrend folytatódik az őket követő utasítástól. A feltétel nélküli elágazási utasítások lehetővé teszik egy végrehajtási sorrend átadását a program másik részébe. Ide tartozik az ugrás (sok nyelven goto-nak hívják), a switch, az alprogram, a szubrutin vagy az eljáráshívás (amely általában a következő utasításhoz tér vissza a hívás után).
A magas szintű programozási nyelvek fejlesztésének korai szakaszában a blokk bevezetése lehetővé tette olyan programok felépítését, amelyekben a parancsok és deklarációk egy csoportja úgy kezelhető, mintha egy utasítás lenne. Ez a szubrutinok bevezetése mellett lehetővé tette a komplex struktúrák egyszerűbb eljárási struktúrákká történő hierarchikus bontással történő kifejezését.
Számos elengedhetetlen programozási nyelv (például Fortran, BASIC és C) az assembly nyelv absztrakciói.
Az imperatív és objektumorientált nyelvek története
[szerkesztés]A legkorábbi imperatív nyelvek az eredeti számítógépek gépnyelvei voltak. Ezeken a nyelveken az utasítások nagyon egyszerűek voltak, ami megkönnyítette a hardveres megvalósítást, de akadályozta az összetett programok létrehozását. A John Backus által az International Business Machines (IBM) által 1954-től kifejlesztett Fortran volt az első nagyobb programozási nyelv, amely elhárította a gépi kód által jelentett akadályokat a komplex programok létrehozásában. A FORTRAN egy olyan compiler által fordított nyelv, amely megengedte a nevesített változókat, összetett kifejezéseket, alprogramokat és sok más olyan funkciót, amely ma már elterjedt az imperatív nyelvekben. A következő két évtizedben számos más nagy, magas szintű imperatív programozási nyelv fejlődött. Az 1950-es évek végén és az 1960-as években fejlesztették ki az ALGOL-t annak érdekében, hogy a matematikai algoritmusok könnyebben kifejezhetők legyenek, sőt egyes számítógépek operációs rendszerének célnyelveként szolgálhassanak. A MUMPS (1966) az imperatív paradigmát logikai végletbe vitte azzal, hogy egyáltalán nem rendelkezett utasításokkal, pusztán parancsokra támaszkodott, az IF és az ELSE parancsok egymástól függetlenné váltak, csak egy $TEST nevű belső változó kapcsolta őket össze. A COBOL (1960) és a BASIC (1964) egyaránt kísérlet volt arra, hogy a programozási szintaxist hasonlóra alakítsák mint az angol nyelv. Az 1970-es években a Pascalt Niklaus Wirth fejlesztette ki, a C-t pedig Dennis Ritchie, miközben a Bell Laboratories-ban dolgozott. Wirth a későbbiekben a Modula-2-t és az Oberont tervezte. Az Egyesült Államok Védelmi Minisztériumának szükségleteihez Jean Ichbiah és a Honeywell egyik csapata 1978-ban kezdte meg az Ada tervezését, egy négyéves projekt során, hogy megtudják határozni a nyelv követelményeit. A specifikációt először 1983-ban, 1995-ben, 2005-ben és 2012-ben tették közzé.
Az 1980-as években gyorsan nőtt az érdeklődés az objektumorientált programozás iránt. Ezek a nyelvek stílusban imperatívak voltak, és objektumokat támogató funkciókkal egészítették ki őket. A 20. század utolsó két évtizedében sok ilyen nyelv fejlődött. Az eredetileg Alan Kay által 1969-ben megalkotott Smalltalk-80-at 1980-ban adta ki a Xerox Palo Alto Kutatóközpont (PARC). Egy másik objektumorientált nyelv - a Simula (amelyet a világ első objektumorientált programozási nyelvének tekintenek, az 1960-as években fejlesztettek ki) - Bjarne Stroustrup tervezte meg a C++ objektumorientált nyelvet a C nyelv alapján. A C++ tervezése 1979-ben kezdődött. és az első megvalósítás 1983-ban fejeződött be. Az 1980-as és 1990-es évek végén az objektumorientált koncepciókra támaszkodó figyelemre méltó nyelvek még a Perl, amelyet Larry Wall adott ki 1987-ben; a Guido van Rossum által 1990-ben kiadott Python; Visual Basic és Visual C++ (beleértve a Microsoft Foundation Class Library (MFC) 2.0-t), amelyeket a Microsoft adott ki 1991-ben, illetve 1993-ban; PHP, amelyet Rasmus Lerdorf adott ki 1994-ben; A Sun Microsystems által 1995-ben kiadott Java, a JavaScript Brendan Eich-től (Netscape) és a Ruby, Yukihiro "Matz" Matsumoto-tól, mindkettő 1995-ben jelent meg. A Microsoft .NET Framework (2002) alapvető fontosságú, valamint a fő célnyelvek, a rajta futó VB.NET és C#; azonban a Microsoft F# funkcionális nyelve is fut rajta..
Források
[szerkesztés]- Pratt, Terrence W. és Marvin V. Zelkowitz. Programming Languages: Design and Implementation, 3. kiadás, Englewood Cliffs, NJ: Prentice Hall, 1996.
- Sebesta, Robert W. Concepts of Programming Languages, 3. kiadás, Reading, Mass.: Addison-Wesley Publishing Company, 1996.
Fordítás
[szerkesztés]Ez a szócikk részben vagy egészben az Imperative programming című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.