Expresivita (programování)

Expresivita programovacího jazyka je kvalita jazyka, která ukazuje, jak rozmanité jsou nápady, které lze v tomto jazyce implementovat, a jak snadno se dají číst [1] .

Například jazyk webové ontologie (OWL2 EL) postrádá mnoho funkcí, které jsou přítomné v OWL2 RL. OWL2 EL je tedy méně expresivní než OWL2 RL. Tato omezení umožňují efektivnější ( polynomiální čas ) implementace v OWL2 EL než v OWL2 RL. [2]

Popis

Termín "expresivita" může být použit v několika významech. To může znamenat šíři myšlenek implementovaných v tomto jazyce [1] :

Teoretická expresivita je metrika, která měří, kolik myšlenek lze vyjádřit v jazyce bez ohledu na to, jak složitý se jazykový konstrukt stává [3] . Praktická expresivita je metrika, která ukazuje, jak čtivé jsou myšlenky, které jsou formulovány v daném jazyce [4] .

První smysl se používá častěji v různých oblastech matematiky a logiky, které se zabývají formálním popisem jazyků a jejich významem, jako je teorie formálních jazyků , matematická logika a procesní počet [5] .

V neformálních diskusích se termín častěji odkazuje na druhý význam, například při diskuzi o programovacích jazycích [6] Byly učiněny pokusy formalizovat tato neformální použití termínu. [7] .

Koncept expresivity vždy odkazuje na konkrétní typ myšlenky implementované v daném programovacím jazyce a termín se běžně používá při srovnávání jazyků, které sdílejí stejná paradigmata .

Příklady

V teorii formálních jazyků

Teorie formálních jazyků studuje hlavně formalismy pro popis souborů řetězců , jako jsou bezkontextové gramatiky a regulární výrazy . Každá instance formalismu, jako je každá gramatika a každý regulární výraz, popisuje určitou sadu řetězců. V tomto kontextu je expresivita formalismu množinou množin řetězců, které popisují jeho instance , a srovnání vyjadřovací síly je srovnáním těchto množin.

Důležitým kritériem pro popis relativní expresivity formalismů v této oblasti je Chomského hierarchie . V něm mají například regulární výrazy, nedeterministické konečné automaty a regulární gramatiky stejnou vyjadřovací sílu, zatímco bezkontextové gramatiky mají více. To znamená, že množiny řetězcových množin popsaných v prvních třech formalismech jsou si rovny a jsou správnou podmnožinou množiny řetězcových množin popsaných bezkontextovými gramatikami.

V této oblasti je ústředním tématem výzkumu míra expresivity.

U výraznějších formalismů může být tento problém obtížný až neřešitelný. Pro Turingův úplný formalismus, jako jsou libovolné formální gramatiky, je nejen tento problém, ale jakákoliv netriviální vlastnost s ohledem na soubor řetězců, který popisují, nerozhodnutelný. Toto tvrzení je známé jako Riceův teorém .

Existují také některé výsledky týkající se stručnosti; například nedeterministické automaty a regulární gramatiky jsou stručnější než regulární výrazy v tom smyslu, že regulární výrazy mohou být přeloženy do prvního bez zvětšení velikosti, zatímco obráceně to není možné.

Podobné úvahy platí pro formalismy, které nepopisují sadu řetězců, ale sadu stromů (jako je značkovací jazyk XML ), grafy nebo jiné datové struktury.

Literatura

Poznámky

  1. 1 2 Farmář, 2007 , str. jeden.
  2. Bernardo Grau, Ian Horrocks, Boris Motik, Bijan Parsia, Peter Patel-Schneider, Ulrike Sattler. OWL 2: Další krok pro OWL  // Web Semantics: Science, Services and Agents on the World Wide Web. - 2008. - V. 6 , č. 4 . — S. 309–322 . — ISSN 1570-8268 .
  3. Farmář, 2007 , str. 1: "Teoretická expresivita logiky je mírou toho, jaké myšlenky mohou být vyjádřeny v logice bez ohledu na to, jak jsou myšlenky vyjádřeny.".
  4. Farmář, 2007 , str. 1: "Praktická expresivita logiky je mírou toho, jak snadno lze v logice vyjádřit myšlenky."
  5. Farmář, 2007 .
  6. Harold Abelson, Gerald Jay Sussman. Struktura a interpretace počítačových programů . — 1996.
  7. Matthias Felleisen. O vyjadřovací síle programovacích jazyků . Získáno 21. 8. 2018. Archivováno z originálu 20. 7. 2008.