Funkcionální programování: Porovnání verzí

Smazaný obsah Přidaný obsah
→‎Simulování stavu: <s>?Hoareho logika
Řádek 112:
=== Záležitosti efektivity ===
 
Funkcionální programovací jazyky mají automatické spravování paměti s [[garbage collection]], v kontrastu se staršími programovacími jazyky jako je [[C (programovací jazyk)|C]] a [[Pascal (programovací jazyk)|Pascal]], které používají explicitní spravování paměti. Funkcionální programovací jazyky jsou náročnější na systémové prostředky. Nicméně spousta imperativních programovacích jazyků jako [[Java (programovací jazyk)|Java]], [[Perl]], [[Python]], [[Ruby (programovací jazyk)|Ruby]] mají také automatickou správu paměti a taky jsou náročné na systémové prostředky.
 
Efektivita funkcionálních programovací jazyků se v poslední době zlepšila. Programy, které provádí náročné numerické výpočty ve funkcionálních jazycích jako OCaml a Clean, jsou stejně rychlé jako v C. Pro programy, které pracují s velkými maticemi a vícerozměrnými databázemi, byly vymyšleny a rychlostně optimalizovány array-funkcionální jazyky (jako J a K). Přestože [[čistě funkcionální]] jazyky jsou obecně považovány za pomalejší, jakýkoliv imperativní algoritmus se dá vyjádřit v těchto jazycích, přinejhorším s (asymptotickým) logaritmickým zpomalením. Navíc neměnnost dat může v mnoha případech vést k větší efektivitě díky tomu, že [[Překladač|kompilátor]] může používat předpoklady, které by byly v imperativních jazycích nejisté.
 
Obecně, když voláte zkompilované knihovny, tak je skoro jedno, z čeho.
 
=== Programovací styly ===