| dbpprop:abstract
| - In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state. Functional programming has its roots in the lambda calculus, a formal system developed in the 1930s to investigate function definition, function application, and recursion. Many functional programming languages can be viewed as embellishments to the lambda calculus.In practice, the difference between a mathematical function and the notion of a "function" used in imperative programming is that imperative functions can have side effects, changing the value of already calculated computations. Because of this they lack referential transparency, i.e. the same language expression can result in different values at different times depending on the state of the executing program. Conversely, in functional code, the output value of a function depends only on the arguments that are input to the function, so calling a function f twice with the same value for an argument x will produce the same result f both times. Eliminating side-effects can make it much easier to understand and predict the behavior of a program, which is one of the key motivations for the development of functional programming. Functional programming languages, especially purely functional ones, have largely been emphasized in academia rather than in commercial software development. However, notable functional programming languages used in industry and commercial applications include Erlang, OCaml,Cite error: Invalid <ref> tag; refs with no name must have content Haskell, SchemeCite error: Invalid <ref> tag; refs with no name must have contentCite error: Invalid <ref> tag; refs with no name must have content and domain-specific programming languages like R, Mathematica, J and K, and XSLT . Widespread declarative domain specific languages like SQL and Lex/Yacc, use some elements of functional programming, especially in eschewing mutable values. Spreadsheets can also be viewed as functional programming languages. Cite error: Invalid <ref> tag; refs with no name must have contentProgramming in a functional style can be accomplished in languages, such as C, C++, Python, or Java, that aren't specifically designed for functional programming. (en)
- Inden for datalogien er funktionsprogrammering et programmeringsparadigme hvor man opbygger sit program af matematiske funktioner, der ikke opdatere nogen tilstand eller variable. Man siger også at funktionsprogrammering er at programmere med funktioner uden sideeffekter. Det er i modsætning til imperativ programmering. Funktionsprogrammering har sit udspring i lambdakalkyle, der blev udviklet i 1930'erne til at analysere hvad det er muligt at beregne matematisk og til at undersøge rekursive funktioner. Programmeringssprog der bygger på funktionsprogrammering kan derfor siges at være en udvidelse af lambdakalkylen. Eksempler på programmeringssprog, der bygger på funktionsprogrammering er: SML og Lisp. (da)
- La Programación funcional es un paradigma de programación declarativa basado en la utilización de funciones matemáticas. (es)
- Funktionale Programmierung ist ein Programmierparadigma. Programme bestehen hier ausschließlich aus einer Vielzahl von Funktionen, daher der Name. Das Hauptprogramm ist eine Funktion, welche die Eingabedaten als Argument erhält und die Ausgabedaten als seinen Wert zurückliefert. Diese Hauptfunktion verwendet in ihrer Definition üblicherweise weitere Funktionen, die wiederum ihrerseits weitere Funktionen verwenden, und das geht so weiter, bis irgendwann, am Boden der Aufrufhierarchie ankommend, nur noch die Grundfunktionen der Programmiersprache verwendet werden, z. B. Addition, Konkatenation etc. Die Benutzung von Funktionen in der funktionalen Programmierung unterscheidet sich von der in imperativen Sprachen dadurch, dass die Reihenfolge der Berechnungen nicht angegeben werden muss. Das Programm beschreibt lediglich Abhängigkeiten von Daten. Eine funktionale Programmiersprache ist eine Programmiersprache, die Sprachelemente zur Kombination und Transformation von Funktionen anbietet. Eine rein funktionale Programmiersprache ist eine Programmiersprache, die die Verwendung von Elementen ausschließt, die im Widerspruch zum funktionalen Programmierparadigma stehen. Einige Autoren verwenden den Ausdruck „funktionale Programmiersprache“ gleichbedeutend mit „rein funktionale Programmiersprache“. (de)
- Funktionaalinen ohjelmointi eli funktio-ohjelmointi on ohjelmointiparadigma, joka perustuu matemaattisten funktioiden käyttöön ja tarkemmin lambda-kalkyyliin. Puhtaasti funktionaalisissa ohjelmissa ei ole lainkaan tilaa eikä siten myöskään sijoituslausetta tai silmukoita: muuttujaan ei voida sijoittaa uutta arvoa, ja suuret tietomäärät käsitellään rekursion avulla. Toisin kuin imperatiivisessa ohjelmoinnissa, funktiolla ei ole sivuvaikutuksia eli sen arvo on aina sama samoilla parametreilla. Monet funktionaaliset ohjelmointikielet eivät ole puhtaasti funktionaalisia, vaan tukevat myös tilamuuttujia ja sivuvaikutuksia. Puhtaudella on joitain ongelmallisia kohtia, kuten monimutkainen syötön ja tulostuksen toteutus, joka vastaavasti on helppo toteuttaa jos sivuvaikutukset sallitaan. Silti ohjelmointikieltä pidetään funktionaalisena, mikäli sillä pääsääntöisesti ohjelmoidaan kuten puhtaasti funktionaalisilla kielillä. Yliopistoissa suosituimpia funktionaalisia ohjelmointikieliä ovat Lisp/Scheme ja Haskell sekä symboliseen matematiikkaan Mathematica. Yritysmaailmassa käytetään enemmän Common Lispiä, Erlangia, Scalaa ja XML-tiedostojen muuntamiseen tarkoitettua XSLT:tä. Lisäksi monissa imperatiivisissa kielissä on jonkinlaista tukea funktionaaliselle ohjelmoinnille: usein ainakin funktion voi antaa parametrina, ja joskus kielessä on rakenne nimettömien funktioiden luomiseen lambda-lausekkeella. Merkittävänä poikkeuksena Java ei tue suoraan oikeastaan mitään funktionaalisen ohjelmoinnin apuvälinettä. (fi)
- La programmation fonctionnelle est un paradigme de programmation qui considère le calcul en tant qu'évaluation de fonctions mathématiques et rejette le changement d'état et la mutation des données. Elle souligne l'application des fonctions, contrairement au modèle de programmation impérative qui met en avant les changements d'état. Un langage fonctionnel est donc un langage de programmation dont la syntaxe et les caractéristiques encouragent la programmation fonctionnelle. Alors que l'origine de la programmation fonctionnelle peut être trouvée dans le lambda-calcul, le langage fonctionnel le plus ancien est Lisp, créé en 1958 par McCarthy. Lisp a donné naissance à des variantes telles que Scheme et Common Lisp, qui comme Lisp ne sont pas ou peu typés. Des langages fonctionnels plus récents tels ML, Haskell, OCaml, Erlang, Clean et Oz ou CDuce sont fortement typés. (fr)
- In informatica, la programmazione funzionale è un paradigma di programmazione in cui il flusso di esecuzione del programma assume la forma di una serie di valutazioni di funzioni matematiche. Solitamente questo approccio viene usato maggiormente in ambiti accademici piuttosto che industriali. Il punto di forza principale di questo paradigma è la mancanza di effetti collaterali (side-effect) delle funzioni, il che comporta una più facile verifica della correttezza e della mancanza di bug del programma e la possibilità di una maggiore ottimizzazione dello stesso. Un uso particolare del paradigma, per l'ottimizzazione dei programmi, è quello di trasformare gli stessi per utilizzarli nella programmazione parallela. La programmazione funzionale pone maggior accento sulla definizione di funzioni, rispetto ai paradigmi procedurali e imperativi, che invece prediligono la specifica di una sequenza di comandi da eseguire. In questi ultimi, i valori vengono calcolati cambiando lo stato del programma attraverso delle assegnazioni; un programma funzionale, invece, è immutabile: i valori non vengono trovati cambiando lo stato del programma, ma costruendo nuovi stati a partire dai precedenti. (it)
- 関数型言語(かんすうがたげんご)は、純粋関数型言語と非純粋関数型言語の総称。 ラムダ計算の概念をプログラミング言語として体現したものである。すべての計算は関数の評価によって行われる。 (ja)
- Een functionele programmeertaal is een programmeertaal waarin programma's opgesteld worden in de vorm van een functie die toegepast wordt om een resultaat te vinden. Voorbeelden van functionele programmeertalen zijn APL, Erlang, Haskell, Lisp, ML, Scheme en F#. (nl)
- Programowanie funkcyjne (lub programowanie funkcjonalne) - filozofia programowania będąca odmianą programowania deklaratywnego, w której funkcje należą do wartości podstawowych, a nacisk kładzie się na wartościowanie (często rekurencyjnych) funkcji, a nie na wykonywanie poleceń. (pl)
- Programação funcional é um paradigma de programação que trata a computação como uma avaliação de funções matemáticas e que evita estados ou dados mutáveis. Ela enfatiza a aplicação de funções, em contraste da programação imperativa, que enfatiza mudanças no estado do programa. Uma função, neste sentido, pode ter ou não ter parâmetros e um simples valor de retorno. Os parâmetros são os valores de entrada da função, e o valor de retorno é o resultado da função. A definição de uma função descreve como a função será avaliada em termos de outras funções. Por exemplo, a função <math>f = x^2 + 2</math> é definida em termos de funções de exponenciação e adição. Do mesmo modo, a linguagem deve oferecer funções básicas que não requerem definições adicionais. Linguagens de programação funcionais, especialmente as puramente funcionais, tem sido mais usadas academicamente que no desenvolvimento comercial de software. Entretanto, algumas linguagens notáveis usadas na indústria e no comércio incluem Erlang, Mathematica J e K (análise financeira) e XSLT. Importantes influências na programação funcional foram o cálculo lambda, as linguagens de programação APL e Lisp, e mais recentemente ML e Haskell. (pt)
- Функциона́льное программи́рование — раздел дискретной математики и парадигм программирования, в которой процесс вычисления трактуется как вычисление значений функций в математическом понимании последних . Противопоставляется парадигме императивного программирования, которая описывает процесс вычислений как последовательность изменения состояний . Функциональное программирование не предполагает изменяемость данных (в отличие от императивного, где одной из базовых концепций является переменная).На практике отличие математической функции от понятия «функции» в императивном программировании заключается в том, что императивные функции взаимодействуют и изменяют уже определенные данные. Таким образом, в императивном программировании, при вызове одной и той же функции с одинаковыми параметрами можно получить разные данные на выходе, из-за влияния на функцию внешних факторов. А в функциональном языке при вызове функции с одними и теми же аргументами мы всегда получим одинаковый результат в обоих случаях, входные данные не могут измениться, выходные данные зависят только от них.λ-исчисления являются основой для функционального программирования, многие функциональные языки можно рассматривать как «надстройку» над ними.Наиболее известными языками функционального программирования являются:* XQuery* Haskell — чистый функциональный. Назван в честь Хаскелла Карри.* LISP .* ML .* Miranda .* Erlang — функциональный язык с поддержкой процессов.* Nemerle — гибридный функционально/императивный язык.Еще не полностью функциональные изначальные версии и Lisp и APL внесли особый вклад в создание и развитие функционального программирования. Более поздние версии Lisp, такие как Scheme, а так же различные варианты APL поддерживали все свойства и концепции функционального языка.Как правило, интерес к функциональным языкам программирования, особенно чисто функциональным, был сугубо научный, нежели коммерческий. Однако, таким примечательным языкам как Erlang, OCaml, Haskell, Scheme а так же специфическим R, Mathematica, J и K, и XSLT находили применение в индустрии коммерческого программирования. Такие широко распространенные декларативные языки как SQL и Lex/Yacc содержат некоторые элементы функционального программирования, они остерегаются использовать переменные. Языки работы с электронными таблицами также можно рассматривать как функциональные.Многие нефункциональные языки, такие как C, C++ и C# могут вести себя как функциональные при использовании указателей на функцию, в соответствие с библиотекой <functional> и λ-исчислениями. (ru)
- Funktionell programmering är en form av programmering inom vilken program konstrueras genom komposition av matematiska funktioner, och exekvering innebär att funktionerna utvärderas. Detta kan kontrasteras med proceduriell och imperativ programmering, där datorn instrueras att utföra instruktioner sekventiellt. Det finns ett flertal funktionella programspråk. Funktionell programmering har flera fördelar: Den lämpar sig väl för avancerade programmeringstekniker som funktioner av högre ordning och polymorfism. Frånvaron av sidoeffekter minskar risken för buggar och gör program mer modulära. Det blir lättare att bevisa att ett program är korrekt, dvs. gör vad det är avsett att göra. Optimeringstekniker som till exempel memoisation och lat evaluering kan tillämpas. Funktionella program lämpar sig väl för automatiserad analys. Till nackdelarna hör: Funktionella språk kan vara ineffektiva jämfört med imperativa språk, framför allt vid användning av komplicerade datastrukturer. Funktionella program använder tekniker som många programmerare finner svåra att förstå och tillämpa, som rekursion, funktioner av högre ordning och polymorfism. In- och utmatning kan bli problematiskt i funktionella språk. Funktionell programmering har sitt ursprung i Lambdakalkylen, som utvecklades på 1930-talet av Alonzo Church. Det äldsta funktionella språket är Lisp, vilket utvecklades på 1960-talet och näst Fortran är det äldsta programspråket som fortfarande används i större utsträckning. Det finns flera varianter av Lisp, däribland Common Lisp, Logo, Scheme och Dylan. Till de moderna funktionella språken hör Haskell, ML (samt versioner av detta), Erlang, Clean och Miranda. (sv)
- 函數式編程是種編程典範,它將電腦運算視為函數的計算。函數程式語言最重要的基礎是 λ 演算(lambda calculus)。而且λ演算的函數可以接受函數當作輸入(引數)和輸出(傳出值)。 和指令式編程相比,函數式編程強調函數的計算比指令的執行重要。 和過程化編程相比,函數式編程裏,函數的計算可隨時調用。 (zh)
|