Mi a funkcionális programozás verem túlcsordulás az orosz
Funkcionális programozás - rendezésének módja számítási feltétel nélkül. Szigorúan véve, ilyen állapotban a program természetesen ott van - az összessége keretében minden funkciója. De: a legfőbb problémája az állam a bonyolult identitás és a változás, hogy bevezetésével a feladat, meg kell tenni, hogy a számítógépes modellek a koncepció az idő (idő). Mielőtt nem volt egy feladat, a program időfüggő - abban az értelemben, hogy minden kifejezést van értelme, mindig ugyanaz volt a jelentése.
A gyakorlatban az OP megy az egyszerűtől az összetett: szervez függőségi viszonyok, átalakítás és a funkció összetételét. Módja van rá - a lényege az OP módszertan. A funkciók a vosnovnom „tiszta” nem mutáció a külső környezet, és ezek eredményeként csak attól függ a paraméterek át. OP teljesen kiküszöböli a lehetőségét, hogy egy egész osztály hibák (lásd. SICP H. Abelson, D. D. Sassman. Ch. "Csapdák imperatív programozási").
Ez nem csak a szuper-magas szintű nyelven lehet írni egy funkcionális stílusban mesterséges intelligencia helyett a fordító. Természetesen ez lehet tenni bármilyen programozási nyelv, amely magasabb rendű funkciókat. Sőt, a mechanikai jellemzők - az alapja minden a tolmács és ez a mechanizmus nagyon egyszerű, de a fogalmának bevezetése változók és mutációk nagyban megnehezíti a készülék shell.
FI engedélyezi a PFSZ vosnovnom mert az ellenkező irányba egy hullám HYIP létrehozott idején körül Java és C ++. Kiderült, hogy a sablon könyvtár és a többszintű objektumok hierarchiáját nem oldotta meg a problémát, éppen ellenkezőleg, az újakat. Még ellenőrizhetetlenül növekvő komplexitása szoftver rendszerek, és ennek következtében azok értékét. Itt látunk egy racionális fellebbezést ipar alapjait, azzal a céllal, hogy csökkentsék az entrópia.
Válaszol szeptember 10 '15 at 20:38
A felszólító megközelítés (és a PFSZ lehet nekik, és általában ez), a programozó festékek pontosan hogyan kell elvégezni a programot.
A funkcionális megközelítés, a programozó írja, „mit kell csinálni”, de hogyan kell csinálni, oldja a fordító vagy fordító.
Bármilyen lambda, térkép / csökkentése nem csinál funkcionális programozás.
Van valójában egy átfogó megközelítés. Például egy kényszerítő stílus döntési változékony változók (igen, a tautológia), és a funkcionális design készült használatra megváltoztathatatlan változók és tiszta funkciók (tiszta függvény olyan függvény, melynek eredménye attól függ, csak a bemeneti paraméterek és nem függ semmi mást. Azt is nem változtatja meg a környezetet. De mivel együtt nem függ a külső paramétereket, ezek eredményét lehet tárolt vagy zökkenőmentesen számítani párhuzamosan).
A kötelező megközelítésre van szükség, hogy festeni részletesen minden egyes lépés, és a megfelelő sorrendben. Funkcionálisan egyszerű - kiszámítani mindez, itt egy funkciót. És a futási maga kitalálni, hogy pontosan ezzel számolva, ez lehetséges átrendezése egyes számítások helyeken. „Lazy” megközelítés is széles körben használják a funkcionális megközelítés, ahol bizonyos funkciók nem számítható, amíg azok nem igazán kell. És ha például a futásidejű látja, hogy szükség van, hogy értékelje a kifejezést slozhnaya_funktsiya (1.2) / slozhnaya_funktsiya (1.2). egyszerűen írta 1, és nem is számítani -, mert nincs értelme. A felszólító megközelítés fordító elméletileg ezt optimalizálás, de ehhez meg kell elemezni a funkció és ellenőrizze, hogy nincs mellékhatása, és hasonlók.
Válaszol április 20 '15 at 08:16
A válasz jó, köszönöm. Ie funkcionális programozás - az aktív használata funkciók, mint a paramétereket és az eredményeket a DR funkciók és megváltoztathatatlan változók, nem igaz? Ui és a „mi a teendő” és „munkát ki, itt van egy funkció” - ez a varázslat, hanem programozás, a legjobb, ha szerkeszteni a választ. - hardsky április 20 '15 at 08:39