Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

함수

함수는 어떤 집합의 모든 원소에 대해 또 다른 집합의 단 하나의 원소가 짝지어져 있는 관계를 가리킨다. 벤다이어그램으로 그려보면 의미가 화악 와 닿는다.

attachment:function.png

함수라는 용어와 함수를 상징하는 f(x) 기호를 처음 사용한 것은 수학자 오일러 이다. 그 이전에도 라이프니치가 함수라는 용어를 사용하긴 했지만 오일러가 정의한 함수(:12)의 개념이 더 널리 사용되고 있다. 이는 아마 수학개념의 정의에서의 차이 때문인것으로 생각된다. 최근의 수학자들은 집합론에 기반 - 그 전의 수학은 기하학을 기반으로 하고 있었다 - 해서 수학적 개념을 정의하는 데, 오일러의 함수개념이 이에 더 부합했기 때문이다.

프로그래밍 언어와 함수

프로그래밍언어에서의 함수는 오일러의 함수 개념을 그대로 따르고 있다. 상징까지도 오일러 함수의 모습을 따른다. 아래는 프로그래밍언어에서 사용되는 전형적인 함수의 모습으로 거의 모든 프로그래밍 언어가 이 모양을 따르고 있다. 객체지향(:12)언어의 메서드도 함수와 동일한 선에서 보았다.
type function_name(arguments) 

함수형 언어와 절차형 언어

산업현장? 에서 주로 사용되는 언어들 그러니까 C(:12), C++, Perl(:12), Java(:12), PHP(:12)는 절차형언어 혹은 객체지향언어라고 한다. 반면, 함수형 언어라고 불리우는 프로그래밍 언어들도 있다. 어떤 프로그래밍(:12) 언어이든지 간에 함수의 사용이 가장 중요한데 왜 ? 함수형 언어라는게 따로 있을까라는 생각을 해볼 수도 있을 것 같다.

함수형 언어로 분류되지 않는 언어들은 데이터의 흐름을 제어하기 위한 별도의 상징기호를 가진다. 함수와 함수사이에서의 데이터의 흐름을 제어하기 위해서 이러한 상징기호들을 이용한 절차를 밟아야 된다. 즉 이들 언어들은 함수가 주요한 구성요소이기는 하지만 수학의 그것 처럼 함수의 조합으로 프로그램이 작동되는게 아니다. 순수하게 함수 -기호- 만으로 작동하는 수학을 생각해보라. 절자형언어에서 함수는 특정동작을 담당할 뿐이다. 어떤 일을 수행하기 위해서 절차를 압축해놓은것을 함수라고 볼 수 있을 것이다.

반면 함수형 언어는 수학처럼 모든걸 함수단위로 처리한다.

함수형 언어와 절차형 언어에 대한 생각은 Erlang에 약간 정리해 둔게 있다.

관련글

  1. 라이브러리(:12)
  2. Erlang 언어