top of page
  • Szerző képeZsolt Molnár

Programozz te is funkcionálisan!

Frissítve: máj. 12.

A funkcionális programozás olyan, mint a bűvészet. Olyan, ami tényleg működik! Most képzeld el, hogy egy monádpálcával kevesebb hibát varázsolhatsz a kódodba, és még a karbantartást is egyszerűbbé teheted azzal, hogy nem lesznek (nem kellenek) bugfixek. Na, ez a funkcionális programozás könnyed világa.



Mikor egy új funkciót akarsz hozzáadni, nem kell attól tartanod, hogy a kódod összeomlik, mint egy kártyavár. A funkcionális nyelvekben, mint a Haskell vagy a PureScript, a tiszta függvények használata miatt kisebb az esélye a nem várt hibáknak. És ki ne akarna kevesebb hibát? Mondjuk mindenki.


Ezek a nyelvek ráadásul zseniálisak a mai többmagos processzorokon. Valóban párhuzamosan mennek a dolgok, mégsincs összeakadás. Mintha egy jól szervezett cirkuszi előadás lenne, ahol minden artista tökéletes összhangban van, és hiányoznak a bohócok.


Természetesen szinte minden baj és bug okozóját, a null hivatkozásokkal kapcsolatos fejtörést is megoldja a funkcionális programozás. Azt szokták mondani az öreg programozók (akik amúgy nem programozók voltak, hanem még mérnök urak), hogy mióta nincs GOTO, nincs semmi baj, de amúgy van. Valójában azóta minden csak rosszabb lett, a részleteket olvasd el ebben a zseniális cikkben (ami ezt a postot is inspirálta):



Ha használod a funkcionális megoldásokat, akkor nem kell többé aggódnod amiatt, hogy a semmire mutató változók miatt elszáll a programod. Itt ugye a "Maybe" típusú konstrukciók jönnek a képbe, amelyek kiküszöbölik ezt a hibalehetőséget – egyszerűen muszáj kezelni minden esetet, így nincs többé váratlan meglepetés.


Ráadásul, miután beállítottál egy változót egy bizonyos értékre, az örökre olyan marad. Ez olyan, mint egy matematikai egyenlet – nem változtatja meg az értékét csak úgy, magától. Rengeteg fejfájástól ment meg, a hajad is megmarad, az állásod is.


És hát itt vannak a monádok (*) és társaik, amelyek a matematikai pontosságot hozzák be a képletbe. Ha valamit be tudsz rakni egy kategóriába, akkor ha megőrülsz sem fogod tudni elrontani, mert a halmazelmélet még a kreativitásodnál is sokkal erősebb.


Persze, a funkcionális programozás megtanulása nem sétagalopp. Kicsit olyan, mintha újra meg kellene (illetve, hát mondjuk ki, végre meg kellene) tanulni programozni. De hidd el, megéri! Ahogy belejössz, rájössz, hogy kevesebb a stressz és több az időd a kreatív dolgokra, mert nem kell állandóan a hibákat javítgatnod.


Talán a szükséges erőfeszítés miatt, de ami amúgy totál érthetetlen, az az ellenállás, amit sok helyen tapasztaltam a funkcionális programozással szemben. Legyen kis startup mint vagy magát komolyan vevő óriás, előfordult, hogy vérbe borultak a szemek, ha az import utasítás után megjelent az rxjs, az fp-ts a ramda, és társai, vagy ha leíródott, hogy


pipe(ez, az, amaz)

Nálunk, a Garlic Tech-nél, teljesen átálltunk a funkcionális megoldásokra még a veszélyesen élő nyelvek esetében is, mint pl a Javascript - és az eredmények magukért beszélnek. Kevesebb hiba, több új funkció, minden hamarabb megy, és ki ne akarná, hogy minden hamarabb menjen?


Szóval, ha te is szeretnél kevesebbet hibázni és többet alkotni, itt az ideje, hogy a funkcionális programozást válaszd. Nem varázslat, csak klasszikusan élvezetes programozás!


30 megtekintés0 hozzászólás

Comments


bottom of page