드디어 기다리고 기다리던 Visual Studio 2010이 출시되었다.
C/C++ 기반 개발자들에게 무엇보다 반가운 것은 C++0x의 지원에, PPL(Parallel Pattern Library) 지원이 추가된 것이다. MFC 지원 강화는 사실 BCG 소프트웨어의 리본 툴킷을 가져온 것이고, MFC는 아직 현역이긴 하지만 설계 구조가 시대에 한참 뒤떨어져 있어 Visual C++이 점점 입지가 약화되는게 아닌가 우려가 많았다. 보다 근본적으로 C/C++ 강화가 절실했는데, 이번 Visual Studio 2010은 C/C++ 개발자들에게 환영할만한 선물이 될 것으로 보인다.
C++0x 지원은 사실 새로운 것은 아니다. Visual Studio 2008에서도 tr1 라이브러리를 지원하고 있었기 때문이다. 보다 근본적인 변화는 rvalue reference와 같은 새롭게 추가된 C++ 언어 강화 요소이다. 이것은 실로 대단하고 밖에 말할 수 없다. 특히 주목할만한 것은, STL에 rvalue reference가 응용되어 STL의 복사 오버헤드를 극적으로 감소시킨 것이다. 이것으로 인해 얻어지는 성능 향상은 어마어마하다. 특히, 벡터의 복사 오버헤드를 피하려는 기존의 코드들을 한순간에 무력화할 정도로, vector의 성능 향상은 엄청나다. 기존의 코드를 재컴파일하는 것만으로도 엄청난 성능 향상을 얻을 수 있다.
이외에도 람다(lamda) 함수, 클로저(closure)의 도입으로, STL 알고리즘을 쓰기 위해 함수자를 작성하던 귀찮음에서 드디어 벗어날 수 있게 되었다. 또, auto 키워드의 용도 변경은 템플릿을 다루는데 있어 더 많은 가능성을 열어준다.
여기에 인텔리센스의 재탄생도 눈에 띈다. 과거의 인텔리센스는, 구문적인 정합성만 검사했기 때문에 컴파일이 되더라도 의도한대로 작동하는지 확신할 수 없었는데, Visual Studio 2010의 C/C++ 인텔리센스는 컴파일러와 동일한 수준의 검사를 해주기 때문에 보다 정확한 코드를 작성할 수 있게 되었다.
Visual Studio 2005에서 2008로의 변화는, Visual Studio .NET에서 Visual Studio 2005로의 변화만큼 크지는 않았다. Visual Studio 2005가 나오면서 비로소 구닥다리 Visual C++ 6.0을 버린 개발자가 많았던 것처럼, Visual Studio 2010은 Visual Studio 2008을 건너뛰고 바로 Visual Studi 2005 개발자들을 끌어들일만큼 대단하다. 특히, MS의 다른 언어들에 눌려 그동안 설움을 받았던 C/C++ 개발자들이 반가워할만한 요소가 대단히 많다. 프리프로세서(preprocessor)에 의존하는 OpenMP 대신 템플릿을 기반으로 하는 멋진 라이브러리 PPL, C++0x의 적극적인 수용과 그에 맞게 새롭게 만들어진 Dinkumware의 STL은 놀라움을 선사할 것이다.
과연, MS에서 이야기한대로, 다음 10년을 위한 새로운 Visual Studio라고 할 수 있을 것 같다. 다만, UI는 그렇게 변하지는 않았지만 말이다. :)
Happy New Start!