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.