Keresés

Új hozzászólás Aktív témák

  • ddekany

    veterán

    válasz tocsa #29 üzenetére

    "A LISP-nek és a tiszta funkcionális nyelveknek annyi értelme lehet, hogy a kód helyessége könnyebben bizonyítható."

    Ez így úgy hangzik, mintha gyakorlati értelme nem lenne, mert nem sűrűn állunk le program helyességet bizonyítani (a tesztelés nem bizonyítás, általában). Valójában a nemmódosítható-adatstruktúrák használata rengeteg gyakorlati előnnyel jár (bár a kizárólagos használatuk nekem igen meredeknek tűnik). Sokszor karbantarthatóbb kódot adnak, meg akár áttekinthetőbbet is, pláne ha konkurens (sok szálas) programot írsz. Aztán hatékonyabbak lehetnek, ha sok konkurens szálad van, mert nem kell (annyiszor) zárolni, meg a tranzakciós memóriakezelés is könnyebben elérhetővé válhat (lásd Clojure-ban alap is). Másfelől persze, vannak feladatok, amiket elég megterhelő tisztán funkcionálisan megírni (legalábbis legtöbbünknek biztosan...), vagy épp lassú lesz az eredmény. Így mostanában van egy ilyen törekvés, hogy az imperatív nyelvek ill. azok standard API-ja támogassa a nemmódosítható-adatstruktúrákat (ill. a final változókra is újabb nyelveben sokszor kényelmes, sőt néha kényelmesebb szintaxis van, mint hagyományosakra). Így azt a módszert választod adott részfeladathoz, ami odaillik. Persze ebben az a kompromisszumos, hogy innentől nem igazán látható át, hogy mi az ami teljes mélységében tényleg állapot nélküli (mert nem pure functional a cucc), ami neked is rossz lehet, meg a fordító kezét is megköti.

    Mellékesen szerintem akit érdekel a programozói szakma, az jól teszi ha Clojure-vel vagy Haskell-el (vagy egyéb tisztán funkcionális nyelvet) próbálkozik. Nem mintha reális esély lenne arra, hogy munkában használni fogod ezeket, de vannak jó szokások/meglátások ezekben a nyelvekben, meg másfajta alapműveletek (pl. mapping, left/right folding, stb.), amik átragadnak rád és az imperatív nyelvekben is használni fogod őket. Mellékesen megtudhatod velük, hogy mennyire béna vagy még rekurzióból. :)

    Hasonlóképpen, a Scala arra jó, hogy megtudd, mennyire hülye vagy még típusokból (mi minek az alosztálya, stb). Már a Java generics is remek interview kérdések forrása lehet ;], de kutya f*sza ahhoz képest, mint ami Scala-ban van.

Új hozzászólás Aktív témák