FunctionalProgramming ¶
'함수형프로그래밍'으로 흔히... 프로그램을 수학에서와 유사한 함수의 개념을 사용하여 구성하는 방법. CLanguage, CppLanguage, JavaLanguage등 ImperativeProgramming이 단순히 실행하고자 하는 명령어의 순서에 의거한 나열이라면, 함수형프로그래밍은 프로그램의 코드를 선언적으로 구성할 수 있게 해준다. 프로그램을 작성할 때에 컴퓨터보다 사람이 이해할 수 있도록 그 로직에 집중할 수 있도록 표현력에 집중하였다.
LispLanguage, OcamlLanguage, HaskellLanguage등 유명한 함수형언어들이 있으며, Microsoft의 닷넷환경을 위한 FSharpLanguage등등 의외로 많고, 많이질 전망이다.
함수형프로그래밍언어들의 공통적인 특징으로는 부수효과(SideEffect)가 없다. 이는 대입연산, 입출력과 같은 부수효과를 관리할 수 있음을 뜻한다. HaskellLanguage에서의 Monad 등의 개념을 도입하여 부수효과가 필요한 부분과 그렇지 않은 부분을 구분하여 프로그램 할 수 있으며, 이로 인해 각각의 함수들은 그 입출력이 보장 받으므로 문제를 최소화할 수 있다.
함수를 FirstOrderValue로서 취급하여 다른 값들과 동일하게 다룰 수 있으며, 최근의 언어들에서 유행하고 있는 Closure나 CppLanguage의 FunctorClass들처럼 자료구조뿐만이 아니라 알고리즘 또한 재사용할 수 있으며, 훨씬 유연한 프로그래밍을 가능하게 한다.
종종 DomainSpecificLanguage 분류에 속하거나 SqlLanguage나 심지어 스프레드시트 안에서의 표현식도 함수형언어로 볼 수 있다고도 한다.
LispLanguage, OcamlLanguage, HaskellLanguage등 유명한 함수형언어들이 있으며, Microsoft의 닷넷환경을 위한 FSharpLanguage등등 의외로 많고, 많이질 전망이다.
함수형프로그래밍언어들의 공통적인 특징으로는 부수효과(SideEffect)가 없다. 이는 대입연산, 입출력과 같은 부수효과를 관리할 수 있음을 뜻한다. HaskellLanguage에서의 Monad 등의 개념을 도입하여 부수효과가 필요한 부분과 그렇지 않은 부분을 구분하여 프로그램 할 수 있으며, 이로 인해 각각의 함수들은 그 입출력이 보장 받으므로 문제를 최소화할 수 있다.
함수를 FirstOrderValue로서 취급하여 다른 값들과 동일하게 다룰 수 있으며, 최근의 언어들에서 유행하고 있는 Closure나 CppLanguage의 FunctorClass들처럼 자료구조뿐만이 아니라 알고리즘 또한 재사용할 수 있으며, 훨씬 유연한 프로그래밍을 가능하게 한다.
종종 DomainSpecificLanguage 분류에 속하거나 SqlLanguage나 심지어 스프레드시트 안에서의 표현식도 함수형언어로 볼 수 있다고도 한다.