The power of Swift

"...For me, functional programming is just another tool in the toolbox. It’s a very powerful tool that changed the way I think about programming. It can be extremely useful when solving problems. For most problems, object-oriented programming is great. But for others, solving the problem functionally might save you massive amounts of time and energy.

Getting started with functional programming might be a bit painful. For one, you have to let go of old patterns. Because a lot of us spent years thinking in an object-oriented way, this is very difficult. In functional programming, you think of immutable data structures and functions that convert them. In object-oriented programming, you think about objects that send messages to each other. If you don’t immediately get functional programming, it’s a good sign. Your brain is probably deeply wired to think of solving problems in the object-oriented way..."

Hozzászólások

Nagyon jó az idézet!

For most problems, object-oriented programming is great.

Amíg nem ismered az FP-t, addig azt gondolod, hogy az OO a legjobb programozási paradigma.
Amint elkezded megismerni és megérteni az FP-t, úgy egyre inkább látod, hogy milyen bajok vannak az OO-val.
Van aki megáll ezen a szinten, mint a cikk írója, hogy ~"a legtöbb problémára nagyszerű eszköz az OO", van aki odáig megy, hogy tűzzel-vassal kellene irtani.

Felteszem én is, hogy ortogonálist akartál írni.

Az nehéz kérdés, hogy pontosan mit is nevezünk programozási paradigmának.
A blog témájához is kapcsolódik a Swift Is Not Functional című cikk.
A cikk írója szerint egy paradigmának a lényege, hogy milyen gondolkodásmóddal építjük fel a programot, nem pedig az, hogy milyen nyelvi konstrukciók vannak benne.

Ha a nyelvi konstrukciókat nézzük, akkor a Scala egyértelműen OOP és FP nyelv is, hiszen mind a két paradigma nyelvi konstrukcióinak nagyon nagy részét tartalmazza.
Ha a gondolkodásmódot nézzük, akkor külön-külön OOP-vel és FP-vel is összeállíthatjuk a programunkat. Bármelyik gondolkodásmóddal is építjük fel a programunkat, a másik nyelvi elemeit felhasználhatjuk. Pl. az alap adatszerkezetek (List, Option, ...) FP szemléletűek, mégis OOP nyelvi elemekkel épülnek fel. Tehát a Scala bizonyítja, hogy a két paradigma megfér egymás mellett és használható együtt. Az más kérdés, hogy szerencsés-e a kettő szemléletet keverni.
Itt megint csak azt tudom mondani, hogy a vélemények egyik végletén az áll, hogy teljesen jó így, az OO bizonyos funkciói javítanak az FP-n (ez Odersky véleménye is), a másik végleté az, hogy az OO része csak rontja az FP tudását.

Kicsit furcsa, az Either használata Swift-nél. Pont fordítottja, mint másutt.
Swift-ben bal oldalon van a helyes érték és jobb oldalon van a hiba, másutt fordítva.
Bár elsőre talán a Swift-es tűnik logikusabbnak, de ha belegondolunk, hogy a Right helyeset is jelent, akkor már tudjuk máshol miért került jobbra a helyes érték.