함수는 어떤 집합의 모든 원소에 대해 또 다른 집합의 단 하나의 원소가 짝지어져 있는 관계를 가리킨다. 벤다이어그램으로 그려보면 의미가 화악 와 닿는다.
attachment:function.png
함수라는 용어와 함수를 상징하는 f(x) 기호를 처음 사용한 것은 수학자 오일러 이다. 그 이전에도 라이프니치가 함수라는 용어를 사용하긴 했지만 오일러가 정의한 함수(:12)의 개념이 더 널리 사용되고 있다. 이는 아마 수학개념의 정의에서의 차이 때문인것으로 생각된다. 최근의 수학자들은 집합론에 기반 - 그 전의 수학은 기하학을 기반으로 하고 있었다 - 해서 수학적 개념을 정의하는 데, 오일러의 함수개념이 이에 더 부합했기 때문이다.
프로그래밍 언어와 함수
프로그래밍언어에서의 함수는 오일러의 함수 개념을 그대로 따르고 있다. 상징까지도 오일러 함수의 모습을 따른다. 아래는 프로그래밍언어에서 사용되는 전형적인 함수의 모습으로 거의 모든 프로그래밍 언어가 이 모양을 따르고 있다. 객체지향(:12)언어의 메서드도 함수와 동일한 선에서 보았다.
type function_name(arguments)
함수형 언어와 절차형 언어
산업현장? 에서 주로 사용되는 언어들 그러니까 C(:12), C++, Perl(:12), Java(:12), PHP(:12)는 절차형언어 혹은 객체지향언어라고 한다. 반면, 함수형 언어라고 불리우는 프로그래밍 언어들도 있다. 어떤 프로그래밍(:12) 언어이든지 간에 함수의 사용이 가장 중요한데 왜 ? 함수형 언어라는게 따로 있을까라는 생각을 해볼 수도 있을 것 같다.
함수형 언어로 분류되지 않는 언어들은 데이터의 흐름을 제어하기 위한 별도의 상징기호를 가진다. 함수와 함수사이에서의 데이터의 흐름을 제어하기 위해서 이러한 상징기호들을 이용한 절차를 밟아야 된다. 즉 이들 언어들은 함수가 주요한 구성요소이기는 하지만 수학의 그것 처럼 함수의 조합으로 프로그램이 작동되는게 아니다. 순수하게 함수 -기호- 만으로 작동하는 수학을 생각해보라. 절자형언어에서 함수는 특정동작을 담당할 뿐이다. 어떤 일을 수행하기 위해서 절차를 압축해놓은것을 함수라고 볼 수 있을 것이다.
반면 함수형 언어는 수학처럼 모든걸 함수단위로 처리한다.
함수형 언어와 절차형 언어에 대한 생각은 Erlang에 약간 정리해 둔게 있다.
함수
프로그래밍 언어와 함수
함수형 언어와 절차형 언어
관련글
Recent Posts
Archive Posts
Tags