디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

C++ 초보를 위한 강좌. 3. 컴파일타임 과 런타임

codesafer갤로그로 이동합니다. 2016.10.12 20:32:24
조회 1734 추천 7 댓글 5

우리는 C/C++ 언어라는 컴파일형 언어를 이용해

소스코드를 작성하고 컴파일러의 번역을 거쳐 실행파일을 얻게 된다.


소스코드를 바로 line by line ( 혹은 statement 단위 ) 로 실행하는

interpret 형 언어에 비해

오류없이 작성된 부분까지만이라도 실행해보는게 되지 않는 불편함은 있지만,

오류위치까지의 실행시간이 긴 경우, 조금 더 빠른 평가가 가능하다는 부분과,

실행중 해석이 적어 빠르다는 성능적 장점을 갖게되지.


과거엔 constant 즉 상수에 대한 비중이 낮았다.


const 왜 써요? 타입을 명시할 수 있어서요~

상수는 왜 써요? 컴파일러에 의해 최적화될 여지가 있어서요~

이정도로 컴파일러에 떠넘기는식,

약간의 syntactic sugar 수준으로 사용되어 왔다는 거지.


그런데 modern c++ 에서는 추가 개선된 문법들을 통해,

특히 template 을 통해 컴파일러를 좀 더 제어할 수 있게 되었다.


말하자면,

compile time 과 대비되던 실행시간 ( run time ) 이란 개념이

constant run time ( 기존의 compile time )과

dynamic run time ( 기존의 run time )

으로 개념적 변화가 생겼다는거다.


말이 조금 어렵지?


우리가 template 과 constexpr 문법을 활용하면,

컴파일러가 원하는 코드를 생성시키기 위한 프로그래밍을 할 수 있고,

이 시점에서도 순차와 조건분기와 같은 절차적 프로그래밍을 할 수 있더란 것이지.


다른 말로 표현하면,

예전의 상수는 수치에 단위와 이름을 붙이는 행위 ( labeling ) 에 불과 했고,

그 수치를 정하는 과정은 프로그래머의 머릿속 혹은 노트의 끄적거림 정도로 존재했지만,


지금은 컴파일러에게 "프로그래머의 상수 결정 과정을 프로그래밍" 할 수 있는 환경이 되었다는 것이다.

이것은 프로그래머의 생각과, 노트의 끄적거림이 재사용될 수 있는 경험이 되었다는걸 의미한다.

담을 곳 없어 버려지는 가치있는 경험의 재활용. 이것은 아주 중요한 문제다.


template 과 constexpr 문법들을 통해,

우리는 더 많은 암묵적 경험들을 명시적으로 표현할 수 있게 되었고,

비슷한 중복 코드들을 효과적으로 제거할 수 있게 되었다는걸 말한다.


대신, 그렇게 되기 위해서

우리는 다시 한 번 constant time 과 run time 의 개념을 되새길 필요가 있다.


STL 에 있는 컨테이너를 조금 들여다본 사람들은

std::array

std::vector

이 두가지가 있다는 정도는 이미 알고 있을 것이다.

전자는 크기가 고정 ( constant, 픽스드 이거 영어로 안됨 ), 후자는 크기가 가변이다.


그 말은 우리가 컴파일 타임에 결정해야 할 사안에 있어서는

std::array 를 활용할 수 있고,

std::vector 를 사용할 수는 없다는걸 말한다.


또한, 실제로 존재하는 메모리가 필요한 type cast 문법들은 사용할 수 없다.

( 사용하는 순간 run time 전용이 되어버린다 )


이러한 constant time 이 가지는 제약을 개념화해 가져가면,

여러분이 보다 편하게 이러한 문법들로 생각을 표현해나가는데 도움이 될것이라 기대한다.

추천 비추천

7

고정닉 1

5

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 며느리, 사위되면 시댁, 처가에 잘할 것 같은 스타 운영자 25/10/13 - -
AD 프로게이머가 될테야!! 운영자 25/10/01 - -
공지 프로그래밍 갤러리 이용 안내 [96] 운영자 20.09.28 47931 65
2896498 'ㅎㅂ' 윤 공주 실시간 라방킴ㄱㄱ 프갤러(175.112) 01:16 0 0
2896488 후스넘버 허위 내리는법 (106.102) 00:56 8 0
2896485 캄보디아 이거 진짜 무섭네 [4] 노력갤로그로 이동합니다. 00:54 30 0
2896484 ( ㅇ ㅅ ㅇ )a [1] 노력갤로그로 이동합니다. 00:54 13 0
2896483 냥덩아 발명도둑잡기(118.216) 00:53 8 0
2896482 지듣노 발명도둑잡기(118.216) 00:44 7 0
2896480 나르시 에이다 빠는거 보니까 예전에 클로저 빠는 아재 있었는데 [1] 박민준갤로그로 이동합니다. 00:35 27 0
2896478 패턴 매칭(Rust) vs. 직접 접근(Ada): 공정한 비교 나르시갤로그로 이동합니다. 00:30 9 0
2896477 제미니의 편향: Ada는 상대적으로 복잡한 것처럼 서술했네 ㅎㅎ 나르시갤로그로 이동합니다. 00:29 9 0
2896475 현시대는 토발즈도 1찍 짱깨편인 무서운 시대이다ㅋㅋ번식 더 해줘라 이기 타이밍뒷.통수한방(1.213) 00:28 9 0
2896473 인터넷에서 싸우지 마라 [1] 박민준갤로그로 이동합니다. 00:26 32 0
2896472 "대통령님, '소비쿠폰' 저도 할 말 있습니다" 발명도둑잡기(118.216) 00:26 14 0
2896471 제미니의 러스트 편향성: Addr.Addr_V4'Image 이거 아니잖 나르시갤로그로 이동합니다. 00:25 12 0
2896469 와.. 일본은 브라질 이겻넹 ㄷㅅㄷ ♥덩냥이♥갤로그로 이동합니다. 00:23 13 0
2896468 이재명 "홍석천도 폐업..자영업자 임대료 감면에 정부 나서 달라" 발명도둑잡기(118.216) 00:21 8 0
2896467 Rust 의 Result 가 대체 왜 편하다는 것??? 나르시갤로그로 이동합니다. 00:14 11 0
2896465 제미니마저 Rust에 편향되게 설명하네. ㅎㅎ 나르시갤로그로 이동합니다. 00:12 16 0
2896464 요즘 컴공은 next.js도 가르침? [4] ㅇㅇ(211.196) 00:08 36 0
2896463 멍유야 이것만 알아둬 [2] ♥덩냥이♥갤로그로 이동합니다. 00:04 28 0
2896460 Ada와 Rust 비교: 자료구조, 분기, 오류 처리 철학 [1] 나르시갤로그로 이동합니다. 10.14 16 0
2896458 [공지] 멍퀴벌레 신상 제보 받습니다 현상금 있음 ♥덩냥이♥갤로그로 이동합니다. 10.14 14 0
2896456 최근 영화 <추적>을 발표한 최승호 감독이 발명도둑잡기(118.216) 10.14 9 0
2896455 124.48 점마 진짜 개발지식 일천하노 ㅋㅋㅋ [1] ㅆㅇㅆ(124.216) 10.14 37 0
2896446 멍퀴벌레는 21세기 홍길동이당 By 나님 [4] ♥덩냥이♥갤로그로 이동합니다. 10.14 28 0
2896445 Ada 프로그래밍: 열거형과 선택 구조, 그리고 예외 처리 나르시갤로그로 이동합니다. 10.14 16 0
2896442 Ada 프로그래밍: 3.5 주석 (Comment) 나르시갤로그로 이동합니다. 10.14 9 0
2896439 진중권이 말하는 극좌 [2] ♥덩냥이♥갤로그로 이동합니다. 10.14 20 0
2896435 이거 강의 언제 어디서 듣나요 발명도둑잡기(118.216) 10.14 14 0
2896434 냥덩이는 털바퀴가 된당⭐+ 7화 ♥덩냥이♥갤로그로 이동합니다. 10.14 17 0
2896432 안목 유튜브 보고 스포이더로 똑같이. 넥도리아(220.74) 10.14 15 0
2896431 [공지] 나님.. 이 모든 사태에 대해 책임지고 탈갤합니당.. [1] ♥덩냥이♥갤로그로 이동합니다. 10.14 28 0
2896428 냥덩 도배 발명도둑잡기(118.216) 10.14 18 0
2896427 냥덩아 적당히해 [6] 개멍청한유라갤로그로 이동합니다. 10.14 45 0
2896424 샤미 “K-팝은 더 성장할 것…韓 아티스트 영입 검토” [1] 발명도둑잡기(118.216) 10.14 18 0
2896420 현시대는 토발즈도 1찍 짱깨편인 무서운 시대이다ㅋㅋ번식 더 해줘라 이기 타이밍뒷.통수한방(1.213) 10.14 10 0
2896418 [공지]냥덩강점기 종료~ 나님 야구 보면서 잘 놀다갑니당~ ♥덩냥이♥갤로그로 이동합니다. 10.14 26 0
2896417 비선실세 국정농단 의혹 김현지 제보 받습니당⭐ ♥덩냥이♥갤로그로 이동합니다. 10.14 28 1
2896416 와 벌써 시간 이렇게 됐네 잘 준비해야지 [2] chironpractor갤로그로 이동합니다. 10.14 23 0
2896415 김광현 ㅋㅅㅋ ♥덩냥이♥갤로그로 이동합니다. 10.14 14 0
2896414 18년인가 양현종 마무리 우승이 ㄹㅇ 소름끼쳤는데 ♥덩냥이♥갤로그로 이동합니다. 10.14 14 0
2896413 애널 야구 좀 싱겁게 끝나서 아쉽 ♥덩냥이♥갤로그로 이동합니다. 10.14 13 0
2896412 김서현도 공이 빠른건 맞긴한데 제구 구리다던데 ♥덩냥이♥갤로그로 이동합니다. 10.14 14 0
2896411 폰세 막판에 퍼진거 같던데 ♥덩냥이♥갤로그로 이동합니다. 10.14 14 0
2896410 폰세 1차 나오면 삼성 1차전은 버리려나보네 [6] ♥덩냥이♥갤로그로 이동합니다. 10.14 31 0
2896409 타자들이 투수에 익숙해지면 불리 하니까 ♥덩냥이♥갤로그로 이동합니다. 10.14 14 0
2896408 김경문 감독이 우승하려고 폰세 약팀만 보냇다네 ♥덩냥이♥갤로그로 이동합니다. 10.14 13 0
2896407 폰세가 빠따 강한팀은 일부러 빼왓다는데? ♥덩냥이♥갤로그로 이동합니다. 10.14 13 0
2896406 삼성유튜브 보니까 개웃기넹 ㅋㅅㅋ ♥덩냥이♥갤로그로 이동합니다. 10.14 17 0
2896405 큰경기에 강하고 작은경기에 약한;; ♥덩냥이♥갤로그로 이동합니다. 10.14 14 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2