살아가는 이야기

오리타입(duck typing) 본문

컴퓨터, 풀어그림

오리타입(duck typing)

우균 2017. 5. 16. 08:46

오리타입(duck typing)이란 프로그래밍 언어에서 어떤 대상의 타입 검사를 최대한 늦추는 타입 체계를 말한다. "꽥꽥"거릴 수 있다면 "오리"라고 생각한다는 것인데, 어떤 객체(데이터)가 원하는 연산을 지원하기만 하면 그냥 타입 검사를 통과시키는 방법이다. Python이나 Ruby같은 스크립트 언어에서 주로 채택되고 있는 타입 체계로서 Python 코드 예를 보면 다음과 같다.

def sumprod(a, b, m):
    return (a + b) * m

x = sumprod(1, 2, 3)
l = sumprod([1], [2, 3], 2)
s = sumprod('one ', 'and two, ', 3)

print(x)
print(l)
print(s)

위 예에서 함수 sumprod의 인수 타입은 정해져 있지 않다. 다만 인수 a와 b는 덧셈 연산("꽥")을 지원해야 하며 (a+b)와 m은 서로 곱("꽥꽥")할 수 있어야 한다. 즉 "꽥"과 "꽥꽥"을 지원하는 어떤 객체의 조합이라도 sumprod의 인수가 될 수 있다.

이렇게 가능하면 타입 검사를 늦추는 동적 타입 체계를 오리 타입이라고 한다. 프로그래머에게는 최대한 유연성을 준다는 장점이 있지만 프로그램의 타입 검사를 컴파일 시간에 수행하는 데 한계가 있다는 단점이 있다.

Comments