Function-level programování

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

Function-level programování odkazuje na jeden ze dvou kontrastních poaradigmů zjištěnými Johnem Backusem v jeho práci o programech na které se dívá jako na matematické objekty. Roku 1977 Backus představil důvody proč je podle něj potřeba změnit filozofii vytváření programovacích jazyků.

Zdá se že programovací jazyky na tom nejsou zrovna nejlépe. Každý další jazyk přidává, s malými úpravami, všechny možnosti jeho předchůdců plus několik dalších [.]. Každý nový jazyk se chlubí novými a moderními funkcemi, ale faktem je, že jen několik málo jazyků dělají programování dostatečně levné a nebo jsou schopny omluvit cenu vývoje a jejich učení.

Navrhnul FP což je první programovací jazyk, který speciálně podporuje function-level programovací styl.

function-level program je bez proměnných, jelikož programové proměnné, které jsou potřebné v value-level definicích nejsou potřebné ve function-level

V function-level programovacím stylu, je program postaven přímo z programů, které dostaneme na začátku. Jejich kombinováním za použití operací vytvářejících program nebo funkce. Na rozdíl od value-level přístupu, který volá dané programy k hodnotám tak aby vytvořil sled hodnot, který vyvrcholí v požadovaný výsledek. Functional-level přístup aplikuje operace vytvářející program, na dané programy aby vytvořil sled programu, který vede k požadovanému výsledku.

Rozdíl od funkcionálního programování[editovat | editovat zdroj]

Backus studoval a zveřejnil jeho functional-level styl programování, jeho zpráva byla většinou špatně pochopena, tak že podporoval tradiční funkcionální jazyky (jako například Lisp popřípadě Haskell) místo jeho vlastního FP a následovníka FL.

Backus nazýval funkcionální programování funkčně orientovaným jazykem; jeho functional-level programování je částečně vynucený typ funkčně orientovaného programování.

Klíčový rozdíl oproti Lispu a jiným funkcionálním jazykům že Backusův jazyk má následující typy hierarchie:

  • atomy
  • funkce, které dělají atomy atomy
  • Higher – order funkce (které on nazývá „functional forms”), které přijmou z jednu nebo dvě funkce do funkce.

…a jedinou cestou k generování nových funkcí je použití functional forms, které jsou neměnné: nemůžete si vytvořit vlastní functional forms (alespoň ne v FP; jde to ve FFP (formát FP))

Tyto omezení znamenají že funkce ve FP jsou moduly (generované vestavěnými funkcemi) přes algebru k functional forms, a proto jsou algebraicky stopovatelné. Například hlavní otázka rovnosti dvou funkcí, je ekvivalentní halting problému, a je neřešitelná, ale rovnost dvou funkcí ve FP je jenom rovnost v algebře proto je jednodušší.

Dokonce dnes si spousta uživatelů lambda style jazyků špatně vyloží Backusův functional-level přístup, jako omezující variantu lambda styku, který je de facto value-level styl. Backus by s nimi souhlasil co se týče slova omezený, argumentoval by že to bylo přesně uzpůsobeno takovým omezením aby dobře formované matematické místo mohlo vyniknout.

Příklady jazyků[editovat | editovat zdroj]

Základním functional-level programovacím jazykem je FP. Další zahrnují FL aj.

Odkazy[editovat | editovat zdroj]