Kevin Dominic의 Studying Rock Drill~

C++의 새로운 표준 C++0x 본문

이야기거리/개발자 뒷담화

C++의 새로운 표준 C++0x

Kevin Dominic 2010. 7. 18. 12:38
  제가 C++를 처음 알았던 때는 중학생 때였으니 C++를 알아온지도 벌써 10여년이 훌쩍 넘어버렸습니다.
사실 C++의 기본 근원인 C언어의 연세(?)를 따지고 본다면 저와 띠동갑이신(?) 셈인데, 꽤나 오래된 언어인 셈이지요. 지금쯤이면 불혹을 바라보는 연세이실텐데요^^;;
  프로그래밍 언어는 종류도 다양하고, 목적도 다양하기 마련입니다. 어떤 수단을 써서든지 컴퓨터가 알아들을 수 있는 기계어로만 번역해 준다면 그것으로 끝이거든요. 공식적인 자료는 아니지만(중요한 것은 아니니 출처는 캐묻지 마시길^^) 지구(?)상에 존재하고 있는 프로그래밍 언어는 1000여가지 정도 된다고 합니다. 이 통계는 스크립트 언어까지 포함했을 가능성이 높지만, 어쨌든 인간의 표현방식이 어느정도까지 다양해 질 수 있는지 생각해 볼만한 이야기라고 생각합니다.

  사실 오늘 포스팅하는 내용하고는 다소 관련없는(?) 서두를 붙였습니다만, 이 문서를 보시다 보면 서두에 붙였던 말도 아주 조금은 연관성이 있지 않을까 싶기도 합니다.
파일 받기
원본 출처 : download.microsoft.com

   인터넷 서핑(?)을 가장한 무작위 키워드 검색(!)을 하던 중 재미있는 문서를 발견했습니다. 이른바 C++의 새로운 표준으로 제시된 C++0x 에 관련된 문서였는데요. 이 문서의 저자는 C++가 상당히 오래되고 낡았으며 다양한 기능을 만들기에는 불편한(?) 언어라고 말씀을 하십니다. 
  개발자의 입장에서 자신이 쓰고 있는 주 언어에 대한 비판은 그리 달가운 것은 아닙니다만, 사실 맞는말이기도 합니다. 그래서 windows 이후 통합 환경(IDE)이 보편화되면서 수많은 DLL들(?)이 탄생하게 되었고, 결국 MFC와 같은 것들은 MS에서 자신있게(!) 제시하는 .Net Framework의 밑바탕이 되어준 것이니까요.
(사실 .Net Framework는 Sun의 Java VM에 대항하기 위해 만든 것입니다만, C++에서도 .Net Framework를 쓸 수 있다는 점은, .Net Framework의 발전에 MFC도 한몫 단단히 거들었을 것이라는 생각을 해봅니다)

  위 문서에서 가장 눈여겨 본 것은 "auto" 라는 키워드입니다. 사실 이 키워드는 C언어 때부터 예약어로 지정되어 있던 키워드입니다. 원래의 목적은 전역변수와 함수 내부에서의 지역변수를 구분하기 위해서 쓰였던 것으로 알고 있습니다. 그러니까 우리가 흔히
void main()
{
    int a;
    ...
}
  이런 식으로 변수 a를 선언했다면 원래 선언은 auto int a; 라고 선언했어야 한다는 것이지요. 그런데 실상 프로그래밍을 할 때에는 아무도 auto 키워드를 쓰질 않습니다. 생략이 가능했기 때문이지요.
  그러자 아무도 안 쓰는 이 비운(?)의 키워드를 C++0x 표준안에서 구제를 해 주고 싶었나봅니다. 흔히 Visual Basic 같은 경우 명시적으로 변수를 지정한 경우가 아니면(as 키워드를 이용해서) 문자나 숫자를 원하는 대로 변수에 집어넣을 수가 있습니다. php나 perl, 스크립트 언어 대부분 이런 변환을 허용해 주고 있지요. C++0x에서도 auto 키워드를 사용하게 되면 이러한 묵시적 변환을 해주는가 봅니다(아직 실제로 써보지 않아서 검증은 못해봤습니다.^^;;)

이밖에도 RValue Reference 등의 내용이 있으나, 분량이 많은관계로 일일히 소개해 드릴 순 없고, 프로그래밍 하시다가 쉬는 짬짬이 읽으시면 재미있는 내용이 될것 같습니다.