Ma a funkcionális programozást fogjuk érinteni. Pontosabban, megvizsgáljuk a különbséget a deklaratív és az imperatív programozás között.
Először is nézzük gyorsan a feltételeket. Ezután összehasonlítjuk ezeket a programozási stílusokat, és megnézzük, hogyan jelennek meg a Java-ban, és hogy a nyelv támogatja-e boldog együttélésüket.
A funkcionális programozás egy olyan paradigma, ahol a függvények matematikai függvényekként értendők, nem szubrutinokként, mint a procedurális programozásban . Vagyis ebben a két paradigmában eltérően értelmezi a „funkció” szót. Emlékezzen erre, és ne keverje össze őket. A Java nem hagyja, hogy összezavarodjon, mivel az alprogramokat "metódusoknak" nevezik, míg a függvények matematikai függvényekre utalnak (és: lambda függvények vagy metódushivatkozás).
A gyakorlatban a procedurális programozásban a függvények nemcsak a bemeneti változóktól függenek, hanem külső tényezőktől is (például a funkción vagy a rendszer állapotán kívüli egyéb változóktól). Ez azt jelenti, hogy ugyanazon függvény ugyanazokkal az argumentumokkal, de más kontextusban történő meghívása eltérő eredményeket eredményezhet. A funkcionális programozásban, ha egy függvényt ugyanazokkal az argumentumokkal hívunk meg, az mindig ugyanazt az eredményt adja, mivel a függvények csak a bemeneti adatoktól függenek.
A funkcionális programozás előnyei
- Továbbfejlesztett kódmegbízhatóság
- Kényelmes egységteszt
- Kódoptimalizálási lehetőségek a fordítás során
- Az egyidejűség lehetőségei
A funkcionális programozás hátrányai
A funkcionális programozás hátrányai ezekből a tulajdonságokból fakadnak:
-
Nincsenek hozzárendelési nyilatkozatok. Ehelyett az új értékeket új változókban tárolják, ami a memória állandó lefoglalásának és automatikus felszabadításának szükségességét eredményezi. Ennek eredményeként a rendkívül hatékony szemétgyűjtés minden funkcionális programokat végrehajtó rendszer elengedhetetlen része.
-
A nem szigorú kiértékelés azt jelenti, hogy a függvényhívások sorrendje megjósolhatatlan, ami I/O problémákat okoz, amikor a műveletek sorrendje fontos.
Ezzel befejeztük a funkcionális programozás gyors áttekintését. Most térjünk át a programozási stílusokra.
Az imperatív programozás egy programozási paradigma, amelyet a következő jellemzők jellemeznek:
-
A program forráskódja utasításokból (utasításokból) áll.
-
Az utasításokat egymás után kell követni.
-
Az előző utasítások végrehajtásával előállított adatok a következő utasításokkal kiolvashatók a memóriából.
-
Az utasítás végrehajtásával kapott adatok a memóriába írhatók.
Íme a kötelező nyelvek főbb jellemzői:
- Logikai változók használata.
- A hozzárendelési operátor használata.
- Összetett kifejezések használata.
- Szubrutinok használata.
A felszólító program olyan, mint a természetes nyelveken a felszólító módban kifejezett parancsok. Más szavakkal, egy kötelező program parancsok sorozata.
A kötelező programozási nyelvek közé tartozik a C és a C++.
A deklaratív programozás egy olyan programozási paradigma, amelyben egy probléma megoldása van megadva. Vagyis a végeredmény van leírva, nem az elérési út. A HTML egy példa a deklaratív nyelvre. Amikor ezen a nyelven írunk címkéket, nem gondolunk arra, hogy az elemek hogyan lesznek megrajzolva az oldalon. Csak leírjuk, hogy nézzen ki az oldal.
Egy másik deklaratív programozási nyelv az SQL.
Hasonlítsuk össze a két programozási stílust egy valós példán keresztül: hogyan magyarázzuk el az embernek, hogyan juthat el egy bizonyos helyre?
Képzeljük el ezt a helyzetet: egy férfi jön hozzánk az utcán, és megkérdezi: "Hogyan jutok el a múzeumba?"
Kötelező megközelítéssel megadnánk neki az algoritmust, hogyan juthat el gyalogosan:
- itt fordulj meg
- sétáljon 2 háztömböt egy egyenes vonalban
- fordulj jobbra
- …
Deklaratív megközelítéssel egyszerűen megadnánk a címet, és akkor az ember magától eljutna a megfelelő helyre.
A Java jelenleg egy többparadigmás programozási nyelv . A többparadigma azt jelenti, hogy a nyelv több paradigmát támogat.
Hosszú fejlődése során a nyelv kibővítette objektum-orientált modelljét, így a felhasználók különböző eszközökkel rendelkeznek, és kiválaszthatják a legmegfelelőbbet az adott feladatukhoz.
Ennek eredményeként a Java jelenleg támogatja mind az imperatív megközelítést (például a kódírást a metódushívásokhoz), mind a deklaratív megközelítést (például a futás közben elérhető megjegyzéseket).
Összefoglaljuk:
-
Különféle programozási paradigmák léteznek.
-
Vannak deklaratív és imperatív megközelítések.
-
Azt kell kiválasztani, amelyik a legmegfelelőbb az adott feladathoz.
-
A Java egy többparadigmás nyelv, amely mindkét megközelítést támogatja.
GO TO FULL VERSION