비주얼 C++ 개발자에게 F12는 무척 특수한 의미를 갖는 단축키이다. 커서가 가리키고 있는 명칭(함수, 변수, 클래스 등~)이 선언되어 있는 위치로 바로 이동해 주는 기능이기 때문이다. Find in Files와 더불어 복잡한 소스 코드를 분석할 때 없어서는 안 되는 기능이다.

또한 Alt+F12는 Symbol 탐색기이다. 무수히 많은 파일들을 무식하게 문자 단위로 검색하는 게 아니라 최적화된 symbol 데이터베이스만을 뒤지기 때문에, 명칭만의 출처를 아주 빠르고 똑똑하게 찾을 수 있다.

사실 이 기능은 비주얼 C++ 6.0에도 있었고, 심지어 더 이전 버전도 갖추고 있었다. 그러나 그때는 이 기능이 활발하게 활용되지는 못했다.
이런 고급 기능을 사용하려면 프로그램의 전체 빌드를 Browse 정보를 남겨 놓는 방법으로 특수하게 다시 해야 했기 때문이다. 그리고 매번 빌드할 때마다 그 Browse 정보도 업데이트해야 했다. 그러므로 빌드 시간도 증가.

원래 C/C++이라는 언어 자체가 빌드 속도가 느린 데다, obj, pch, ncb 등 온갖 잡다한 output을 많이 남기는 걸로 악명 높은 언어이다. 언어의 범용성 보장이라든가 강력한 네이티브 코드 생성을 위해서 어쩔 수 없는 면모도 물론 있긴 하나, 현대의 언어들과 비교했을 때 생산성이 무척 떨어지는 건 사실. 그런데 그것도 모자라서 빌드 오버헤드까지 감수하면서 별도의 Browse 정보를 생성해야 한다니. Browse 기능을 쓰는 사람이 많을 수가 없었다.

내 말이 믿기지 않으면, 비주얼 C++ 6 갖고 계신 분은 프로젝트 하나 만들어서 아무 명칭에다 대고 F12를 눌러 보라. Browse 정보를 생성할 건지 묻는 질문부터 먼저 뜨는 걸 볼 수 있을 것이다.

그러다가 비주얼 C++ .NET이 출시되면서 장족의 발전이 이뤄졌다. 별도의 Browse 정보를 만들 필요가 없이, 빌드 한 번만 하고 나면 명칭 조회와 탐색이 아무 프로젝트에서나 가능해진 것이다. 굉장히 편리해졌다.

사실 이건 어찌 보면 자연스러운 귀결인 게, 비주얼 C++ 6.0부터는 어차피 인텔리센스 기능이 초보적인 수준이나마 추가됐기 때문이다. 함수의 원형이 마우스의 풍선 도움말로 뜨고 명칭을 자동 완성해 주는 기능은 Browse 기능과 성격이 상당수 비슷하지 않은가?

기술적으로 어떻게 변했는지 정확하게는 모르지만, 본인 생각에는, 둘이 서로 따로 DB를 구축하면서 따로 놀던 게 닷넷부터는 동일한 인텔리센스 데이터를 공유하면서 명칭 조회 기능과 인텔리센스가 모두 동작하도록 바뀌었지 싶다. 그래서 그런지, 편리해진 대신에 닷넷 초창기 버전은 과거의 6.0에는 있던 기능이 잠시 사라진 것도 있었다.

바로 함수에 대해서 Caller/Called by 그래프를 그려 주는 기능이다. 이 함수가 또 어떤 함수를 호출하는지 쭉쭉~ 아니면 이 함수를 사용하는 함수는 무엇이 있는지 쭉쭉~

그런데 인텔리센스 정도 구현하는 데는 명칭 자체에 대한 DB만 구축하면 되지, 명칭과 명칭 사이의 각종 인과관계를 따질 필요는 없지 않은가. 그래서 비주얼 C++ 2003(닷넷)에는 잘 살펴보면 저 기능을 어디에도 찾을 수 없다. 본인의 가설을 뒷받침하는 증거 중 하나이다.

잠시 없어졌던 그 기능은 비주얼 C++ 2005부터 완전히 부활했다. 인텔리센스 자체가 버전업을 거듭하면서 굉장히 강력해졌기 때문이다. 2003부터는 #define 심볼과 템플릿도 지원되기 시작했고, 2005/2008부터는 함수 포인터도 지원되기 시작했다. 예전에는 프로젝트를 별도로 빌드해서 파일로 조회를 해야 했던 정보가, 지금은 컴퓨터가 좋아진 덕분에 실시간 업데이트와 조회가 가능한 존재로 바뀌었다.

비주얼 C++ 2010은 듣자하니 인텔리센스 엔진이 또 완전히 바뀌었고, C#이나 베이직 같은 ‘쉬운 언어’에서나 지원되던... 빨간 선 기능(워드 프로세서의 맞춤법 검사기처럼.. 문법에 틀린 부분)이 흠좀무스럽게도 C++에도 도입되었다고 하더라.

인간의 프로그램 개발 환경의 생산성 개선을 위한 노력은 오늘날에도 계속되고 있다. ㄲㄲ

Posted by 사무엘

2011/06/07 19:10 2011/06/07 19:10
Response
No Trackback , 9 Comments
RSS :
http://moogi.new21.org/tc/rss/response/522

Trackback URL : http://moogi.new21.org/tc/trackback/522

Comments List

  1. ???????????? 2011/06/09 21:19 # M/D Reply Permalink

    그리고 이제 Windows 8엔 '종래의 프로그래밍'을 새 웹 기술의 파동에 맞추어 대체한다니, 미래는 어떻게 되는 걸까요...

    1. 사무엘 2011/06/09 23:31 # M/D Permalink

      닷넷하고 지금의 C 기반 윈도우 API의 지위가 서로 맞바뀌는 날이겠군요. 그런데 그게 과연 호락호락 쉽게 가능할까 싶습니다.
      과거에 64비트 컴퓨터가 처음 등장했을 때 언론에서 온갖 호들갑을 떨던 시절이 생각나는 건 왜일까요..;;

    2. ???????????? 2011/06/10 07:41 # M/D Permalink

      아뇨, 닷넷도 그 종래의 프로그래밍에 포함되고, 앞으로는 HTML/javascript로 프로그래밍을 하게 된다고 하는군요. 실제 시연된 것들도 HTML로 만들어졌다고 말했고...

  2. 삼각형 2011/06/09 22:40 # M/D Reply Permalink

    저렇게 개발의 난이도, 진입장벽은 낮아졌지만 그만큼 프로그램들의 덩치가 장난이 아니게 되었죠.

    아직도 비주얼 스튜디오 6이 쓰이는건 단순히 귀찮아서나 비용 문제가 아니라 언어 자체가 좋아질 필요성은 더이상 못느껴서 일 겁니다.

    비주얼 스튜디오가 나아가는 방향을 보자면 MS의 네거티브 프로그램을 퇴출하고 전부 .net framework 기반으로 만들겠다는 야심찬 프로젝트가 보입니다. 그러면 진입장벽은 거의 지금의 HTML 배우기 수준으로 낮아질지도 모릅니다.

    그거에 성공한게 스마트폰의 어플리케이션들이죠. 스마트폰에는 시스템 소프트웨어 그런거 없잖아요. (이런저런 꼼수가 좀 있기는 하지만) 구체적 내용은 모르지만 각각의 어플이 가상화가 아주 잘 되어 돌아가는 것 같습니다. 그래서 고딩이 어플 계발으로 대박을 첬다는 등의 신화 같은 일이 일어날 수 있는거고요. (신뢰도는 과연?)

    1. 사무엘 2011/06/09 23:31 # M/D Permalink

      비주얼 스튜디오 IDE가 지금까지 알게 모르게 정말 엄청나게 무거워져 왔죠. -_-
      하지만 VC6에 대한 생각은 저는 좀 다릅니다. "귀찮아서 + 초기의 돈과 시간 투자 부담" 때문밖에 다른 이유가 없습니다. ^^;;
      물론, x86 아키텍처와 NT 커널이 존재하는 한, 네이티브 C/C++ 환경은 여타 언어나 기술에 비해 유행을 굉장히 안 타는 건 사실입니다만,
      이제 VC6은 단순히 IDE가 구린 정도가 아니라 언어 차원의 이질감도 오늘날의 200x와는 상당히 벌어져 있습니다.
      지금 <날개셋> 한글 입력기의 코드도 VC6에서는 이제 빌드되지 않습니다(단순히 플랫폼 SDK의 버전 차이 때문이 아니라). 언어의 개선의 여지는 지금까지 굉장히 많았지요.

      또한, 당연한 말이지만, 프로그래밍 툴에 대한 진입 장벽이 낮아진다고 해서 유능한 프로그래머가 꼭 알아야 할 자료 구조와 알고리즘, 수학과 논리력 감각에 대한 필요가 없어질 일은 없겠죠.

  3. 주의사신 2011/06/10 08:35 # M/D Reply Permalink

    1. 학교에서는 Windows Vista에도 Visual C++ 6을 깔아 놓는답니다. 이제는 안녕 할 때도 되었는데, 예전에 교육용으로 사용하던 Turbo C도 20년 정도 사용했다고 합니다. 따라서 VC++6은 1998년에 나왔으니 한 20년 쓰면, 2018년까지 쓰지 않을까 하는 생각도 해 봅니다.

    2. Visual C++ 2010에는 빨간 줄 기능이 추가되었는데요. "이런 헤더 파일 없거든요. 괄호 짝 좀 잘 맞추세요. 세미 콜론 빠졌습니다. 이건 아무리 봐도 형(type)이 안 맞는데요" 같은 것들을 찾아 줍니다. 많이 편리합니다.

    3. 아무리 프로그래밍이 쉬워져도 기본에 대한 중요성은 아무리 강조해도 지나치지 않습니다. 아무리 열심히 추상화를 해도 결국에는 추상화가 깨지는 지점이 존재하니까요. 전에 얘기했던 이스라엘 공수부대 출신 개발자님께서 이런 글을 쓰셨습니다. http://www.joelonsoftware.com/articles/LeakyAbstractions.html 허술한 추상화의 법칙이라는 내용인데요. 요약을 하자면, 내부 구조를 모르고서는 할 수 없는 일이 많다는 것입니다.

    4. F12가 뭐였지 안 써 보던 건가? 생각을 하다가, 다시 생각을 해 보니, 매일 쓰던 거더라고요. Go to Definition 메뉴요... 2010부터는 단축키가 context menu에 추가되었습니다.

    1. 사무엘 2011/06/10 16:17 # M/D Permalink

      공감합니다.

      VC6도 모자라서 아직까지 터보 C를!! ㅠㅠㅠ 그저 묵념입니다.
      요즘은 C도 필요없고 기초 프로그래밍 용도로는 차라리 파이썬 같은 게 훨씬 낫지요.

      VC에서 F12 없으면 이제 불편해서 프로그램 못 짭니다. 특히 남이 짠 코드를 분석하는 건..;;
      Find in files와 더불어 개발자에게 최고로 필요한 기능이 아닐까 합니다.

  4. 김 기윤 2011/06/10 23:03 # M/D Reply Permalink

    1. Visual C++ 2010 의 빨간 줄 기능은 편리하기는 한데, (특히 MFC르 쓸땔)오작동할 때가 많습니다. 분명히 맞는데, 빨간줄이 써 있어서 이상하다 생각하다가도, 컴파일을 하면 제대로 된다던가 하는 경우가 있습니다. (...) 아직까지는 맹신할 수준까지는 아닌 듯 합니다.

    2. 남이 짜던 코드를 볼때 F12 를 미친듯이 누르던 게 생각납니다. 정말 유용한 기능이죠. ㄲㄲㄲ. 그나저나 정말 어쩌다가 6.0 으로 남이 짜던 코드를 볼 때 이 기능을 못쓴다는건 정말이지 좌절스런 상황이죠.. orz

    3. IDE 도 점점 무거워지고, 기본적인 실행 파일도 점점 무거워지고 있지만, PC 스펙 또한 점점 증가하고 있으므로, 결국 개발자의 편의성이 증가한다면 괜찮지 않을까, 생각합니다.

    1. 사무엘 2011/06/11 11:17 # M/D Permalink

      아.. 인텔리센스가 오작동하는 것처럼 빨간 줄도 오작동도 하는군요.
      그럼 그렇지, 그 복잡한 C++ 소스를 실시간으로 일일이 다 파싱하는 건 아니고 약간의 휴리스틱도 동원하는가 봅니다.

      윈도우 비스타부터는 가벼운 프로그램의 상징인 메모장조차도 실행 파일 크기가 <날개셋> 편집기 EXE보다 더 커졌습니다. 물론, 그 덩치의 상당수를 차지하는 건 아이콘 이미지이지요. -_-
      여담입니다만, 메모장은 이례적으로 윈도우 NT 계열엔 동일한 EXE가 윈도우 디렉터리와 시스템 디렉터리에 모두 있습니다. 호환성 때문인 것 같네요.

Leave a comment
« Previous : 1 : ... 1150 : 1151 : 1152 : 1153 : 1154 : 1155 : 1156 : 1157 : 1158 : ... 1608 : Next »

블로그 이미지

철도를 명절 때에나 떠오르는 4대 교통수단 중 하나로만 아는 것은, 예수님을 사대성인· 성인군자 중 하나로만 아는 것과 같다.

- 사무엘

Archives

Authors

  1. 사무엘

Calendar

«   2020/04   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    

Site Stats

Total hits:
1353240
Today:
132
Yesterday:
527