본문 바로가기
프로그래밍

컴퓨터 과학, First Class Functions/Citizens/Objects 의 개념

by K-인사이터 2024. 2. 15.
반응형

안녕하세요

K-IN 입니다. 

 

 

프로그래밍 언어를 배우다보면 컴퓨터 과학(Computer Science)에서 사용되는 용어들이 나오는 경우가 있습니다.

 

예를 들어, 아래와 같은 단어들이 주로 보입니다. 

  • First Class Functions
  • First Class Citizens
  • First Class Objects 

우선 First Class Citizens 에 대해서 이해해야 나머지 용어들을 이해할 수 있습니다. 

위키 피디아에서 제공하는 정의를 통해 핵심을 파악해 봅니다. (출처)

In a given programming language design, a first-class citizen[a] is an entity which supports all the operations generally available to other entities. These operations typically include being passed as an argument, returned from a function, and assigned to a variable.[1]

 

요약하면 First Class Citizen 이란 다른 엔티티들이 일반적으로 수행하는 모든 연산들을 지원하는 엔티티를 말합니다. 

여기서 일반적으로 수행하는 모든 연산이란 아래의 연산들을 말합니다.

  • First Class Citizen 엔티티는 인자로서 전달 가능 (being passed as argument)
  • First Class Citizen 엔티티는 함수로부터 리턴이 가능 (being returned from a function)
  • First Class Citizen 엔티티는 변수에 할당이 가능 (being assigned to a variable)

자 그렇다면, 여기에 First Class Functions 를 대입해서 각각의 의미를 파악해보겠습니다. 

  1. 함수 엔티티가 인자로 전달이 가능 
  2. 함수 엔티티가 함수로부터 리턴이 가능
  3. 함수 엔티티가 변수에 할당이 가능 

우선, 클로저(Closure)의 개념을 통해 함수가 일급 시민에 해당하는지 확인할 수 있습니다.

대표적인 파이썬 코드를 보면서 이해할 수 있습니다. 

  • 클로저는 함수가 선언된 환경을 함께 기억하는 개념입니다. 즉, 함수 내부에서 함수를 선언하며 선언된 함수를 리턴이 가능합니다. 
  • 이 때 함수 내의 함수는 외부 함수의 변수에 접근할 수 있습니다.
  • 즉, 파이썬에서 함수는 변수에 할당이 가능(3)하며, 함수로부터 리턴이 가능(2)한 특성을 만족합니다. 
def outer_function(x):
    def inner_function(y):
        return x + y
    return inner_function

add_five = outer_function(5)
result = add_five(3)  # 결과: 8

 

  • 또한, 함수가 다른 함수에 인자로 전달이 가능한 특성 또한 아래의 예시를 통해서도 확인이 가능합니다. 
def operation(x, y, func):
    return func(x, y)

def add(x, y):
    return x + y

def subtract(x, y):
    return x - y

result = operation(5, 3, add)
print(result)  # 출력: 8

result = operation(5, 3, subtract)
print(result)  # 출력: 2

 

따라서, 파이썬 언어에서 함수는 일급 시민(First Class Citizens)에 속하며 First Class Functions 라고 부릅니다. 

이처럼 일급 시민의 개념을 대입하여 프로그래밍 언어에서 특정 엔티티가 First Class 인지를 확인해 볼 수 있는 개념적 도구를 획득하셨습니다. 이를 활용하여 클로저, 람다함수 등의 개념을 잘 파악할 수 있습니다. 
 
이상입니다.
K-IN 올림. 
반응형