Function-level programování

Function-level programování odkazuje na jeden ze dvou kontrastních paradigmat 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ů:

Programovací paradigmata

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í.

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

Function-level program je bez proměnných, jelikož programové proměnné, které jsou potřebné ve 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

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 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

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

Související články

editovat