C++의 새로운 미래?

석사과정 때의 일이다. 시뮬레이션을 하기에 파이썬 같은 스크립트 언어는 너무 느리고, 포트란을 배우기는 좀 부담스러워서 C++을 다시 들여다본 적이 있었다. 예전에는 없던 STL이니 Boost니 하는 게 유행하길래 이건 또 뭐야 싶어서 책들을 좀 읽어봤다. 그랬더니 '함수형 프로그래밍' 이런 말이 또 자꾸 나오길래 이건 또 뭐야 싶어서 순수 함수형 언어라는 하스켈을 공부했다. 하스켈을 공부하다보니 또 모나드라는 게 나오길 래 이건 또 뭐야 싶어서(헉헉) 추상대수학의 카테고리론에 바탕을 둔 형식의미론을 공부했다. 세상에 print "hello, world!" 하나에 이렇게 복잡한 수학적 개념을 쓰는 언어는 처음 봤다. 그렇게 삼천포로 빠지다보니 어느새 석사 논문을 쓸 때가 되어버렸다. 시뮬레이션은 물 건너 갔지만 다행스럽게도 형식의미론은 컴퓨터 프로그램의 계산적 의미를 논하는 것이라 논문에 가져다 쓰기가 아주 좋았다. 게다가 카테고리론은 다이어그램을 그려놓으면 아주 예쁘다. 이런 식으로 하스켈 때문이 인생이 조금 꼬이기도 하고 풀리기도 해서 애증이 좀 있다.

류광님의 C++0x 미리보기 12, 표현식의 형식을 알려주는 decltype를 보니 C++은 이제 문법 수준에서도 점점 하스켈을 닮아가는 모양이다. 자료형 추론에 람다 함수에.. 하지만 여전히 길고 산만하다.

<template typename T, typename U> auto f(T x, U y) -> decltype(x*y) { return x*y; }

하스켈이라면 똑같은 표현을 다음과 같이 쓸 수 있다. 얼마나 쉬워. 함수 f x y는 x*y. 끝.

f x y = x*y

그리고 자료형도 컴파일러가 다음과 같이 정확히 추론한다. (Num '인터페이스'를 구현한 자료형 a에 해당하는 값 두 개를 받아 하나를 반환한다는 의미임.)

f :: (Num a) => a -> a -> a

어차피 자료형 추론 알고리듬을 다른 걸 쓰는 건 아닐테니까 C++에서도 마찬가지로 할 수 있지 않을까. 그러니까 이렇게.

f(x,y){ return x*y; }

요렇게만 해도 된다면 파이썬이고 하스켈이고 다 버리고 C++만 쓸텐데. 아무래도 어렵겠지?

이 글과 관련있는 글을 자동검색한 결과입니다 [?]

by 아이추판다 | 2009/06/27 02:23 | 트랙백 | 덧글(5)

트랙백 주소 : http://nullmodel.egloos.com/tb/1922174
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by 애기_똥풀 at 2009/06/27 04:06
그러게요. ㅋㅋ ㅜㅜ 하지만 현실은 시궁창
Commented by 홍민희 at 2009/06/27 09:14
생각해보니 functional.or.kr 운영자셨죠!;
Commented by 세리자와 at 2009/06/27 10:38
"그렇게 삼천포로 빠지다보니 어느새 석사 논문을 쓸 때가 되어버렸다." -_-;;;
Commented by 잠수 at 2009/06/27 13:29
이젠 프로그래밍을 안 하는데,
프로그래밍 언어의 진화란 것도 참 재미있네요.
Commented by happyday19 at 2009/07/03 08:29
마... 마지막 코드는 비슷한 방식으로 포트란에서 심심찮게 썼는데;;;;;
C++은 STL 하나 배우기에도 벅찬 부분이 많더군요 ㅠㅠ

언제 그런 것들 다 보게 될지;;;;;

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶