Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Čo je RedEx a ako to súvisí s hodnotením výrazov v programovacích jazykoch?

RedEx:Kľúč k hodnoteniu expresie

A Redex (skratka pre redukovateľnú expresiu ) je súčasťou výrazu v programovacom jazyku, ktorý môže byť zjednodušený alebo znížené Podľa pravidiel hodnotenia jazykov . Predstavte si to ako na sub-expresiu, ktorá je „zrelá“ na výpočet.

V podstate je redex kus kódu, kde sa môže stať ďalší výpočtový krok.

Ako sa týka hodnotenia:

Vyhodnotenie expresie zahŕňa opakovane identifikáciu a znižovanie redexov, až kým nebude expresia v „normálnej forme“ - stav, v ktorom nie sú možné žiadne ďalšie zníženia. Táto normálna forma predstavuje konečný výsledok výrazu.

Tu je rozdelenie spojenia:

1. Identifikujte redex: Proces hodnotenia sa začína skenovaním výrazu, aby sa našla sub-expresia, ktorá zodpovedá známemu pravidlu redukcie. Toto je RedEx.

2. Znížte RedEx: RedEx sa potom „zníži“ alebo „prepísaný“ pomocou zodpovedajúceho pravidla redukcie. Zvyčajne to zahŕňa výmenu RedEx jednoduchším výrazom.

3. Opakujte: Proces sa opakuje. Nová expresia (po redukcii) sa kontroluje na ďalšom RedEx. Toto pokračuje, až kým sa nenájdete žiadne redexy.

4. Normálna forma: Konečný výraz, ktorý neobsahuje žiadne redexy, sa považuje za výsledok hodnotenia. Je to „hodnota“ pôvodného výrazu.

Príklady na ilustráciu:

1. Lambda Calculus (jednoduchý model výpočtu):

* výraz: "(λx. x + 1) 5" (to predstavuje funkciu, ktorá pridáva 1 k svojmu argumentu, použité na hodnotu 5)

* RedEx: `(λx. X + 1) 5` je RedEx. Je to aplikácia funkcie Lambda na argument.

* RECONTION PRURY: Pravidlo redukcie beta (nahradenie argumentu pre parameter vo funkčnom tele).

* Redukcia: `(λx. X + 1) 5` sa redukuje na` 5 + 1`

* Next RedEx: `5 + 1`

* RECONTION PRURY: Pridanie.

* Redukcia: `5 + 1` sa redukuje na` 6`

* Normálna forma: `6` (žiadne ďalšie redexy. Toto je konečný výsledok.)

2. Aritmetický výraz:

* výraz: `(2 + 3) * 4`

* Redex (v prísnom poradí hodnotenia, ako vo väčšine jazykov): `2 + 3`

* RECONTION PRURY: Pridanie.

* Redukcia: `(2 + 3) * 4` Zníži sa na` 5 * 4`

* Next RedEx: `5 * 4`

* RECONTION PRURY: Násobenie.

* Redukcia: `5 * 4` sa redukuje na` 20`

* Normálna forma: `20"

3. Podmienené vyhlásenie (v hypotetickom jazyku):

* výraz: `Ak je to pravda, potom 10 else 20`

* RedEx: `Ak je to pravda, potom 10 else 20`

* RECONTION PRURY: Ak je podmienka pravdivá, vymeňte celý výraz vetvou „potom“.

* Redukcia: `Ak je to pravda, potom 10 Else 20` sa zníži na` 10 "

* Normálna forma: `10"

Kľúčové koncepty týkajúce sa Redexes:

* Stratégia hodnotenia: Poradie, v ktorom sú vybrané redexy na zníženie, ovplyvňuje proces hodnotenia. Bežné stratégie zahŕňajú:

* Appany Order (Eager Hodnotenie): Zhodnoťte argumenty na funkciu * pred * Aplikáciou samotnej funkcie. Toto sa často realizuje s prísnym hodnotením (rovnako ako mnoho imperatívnych jazykov ako Java, C ++, Python).

* Normálne poradie (lenivé hodnotenie): Vyhodnoťte argumenty na funkciu * iba vtedy, keď sú ich hodnoty skutočne potrebné. Používa sa v čisto funkčných jazykoch ako Haskell.

* Call-By-Name: Nahnaký argument nahrádzajte priamo do funkčného tela.

* call-by-hodnota: Vyhodnoťte argument a odovzdajte jeho hodnotu funkcii. Podobné ako v prípade uplatňovania.

* call-by-Need: Podobne ako v prípade názvu volania, ale spomína výsledok prvého hodnotenia, aby následné použitie argumentu nevyžadovalo prehodnotenie. Haskell to používa.

* Confluence: Žiaducou vlastnosťou redukčného systému je to, že bez ohľadu na poradie, v ktorom sa redexy znížia, bude konečná normálna forma (ak existuje) rovnaká. Toto je známe ako veta cirkvi-Rosser a platí pre Lambda Calculus a mnoho ďalších formálnych systémov.

Prečo sú redexy dôležité?

* Formálna sémantika: Redexy a Redukčné pravidlá poskytujú presný a formálny spôsob definovania sémantiky (význam) programovacieho jazyka.

* Optimalizácia kompilátora: Kompilátory môžu použiť identifikáciu a zníženie RedEx na optimalizáciu kódu. Napríklad konštantné skladanie (hodnotenie konštantných výrazov v čase kompilácie) je forma redukcie RedEx.

* Teoretické porozumenie: Redexes sú základom porozumenia, ako výpočet funguje na veľmi základnej úrovni. Sú základným kameňom mnohých konceptov teórie programovacieho jazyka.

* Rovnomerné zdôvodnenie: Zdôvodnenie správnosti programu pomocou pravidiel redukcie na transformáciu kódu na ekvivalentné formuláre.

Stručne povedané, koncepcia RedEx je ústredným prvkom pochopenia toho, ako sa výrazy hodnotia v programovacích jazykoch. Poskytuje rámec na definovanie, implementáciu a zdôvodnenie výpočtu. Opakovaným nájdením a znížením redexov môžeme určiť konečný výsledok výrazu.

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené