๐Ÿ•ท๏ธ Crawler Inspector

URL Lookup

Direct Parameter Lookup

Raw Queries and Responses

1. Shard Calculation

Query:
Response:
Calculated Shard: 143 (from laksa152)

2. Crawled Status Check

Query:
Response:

3. Robots.txt Check

Query:
Response:

4. Spam/Ban Check

Query:
Response:

5. Seen Status Check

โ„น๏ธ Skipped - page is already crawled

๐Ÿ“„
INDEXABLE
โœ…
CRAWLED
3 days ago
๐Ÿค–
ROBOTS ALLOWED

Page Info Filters

FilterStatusConditionDetails
HTTP statusPASSdownload_http_code = 200HTTP 200
Age cutoffPASSdownload_stamp > now() - 6 MONTH0.1 months ago
History dropPASSisNull(history_drop_reason)No drop reason
Spam/banPASSfh_dont_index != 1 AND ml_spam_score = 0ml_spam_score=0
CanonicalPASSmeta_canonical IS NULL OR = '' OR = src_unparsedNot set

Page Details

PropertyValue
URLhttps://minjang.github.io/2016/03/21/talk-with-stroustrup/
Last Crawled2026-04-05 09:05:11 (3 days ago)
First Indexednot set
HTTP Status Code200
Meta Title์ŠคํŠธ๋กญ์ŠคํŠธ๋ฃน ๊ต์ˆ˜๋‹˜๊ณผ์˜ ๋Œ€ํ™”: "C++ ๋ฐฐ์šฐ๋Š”๋ฐ C๋ฅผ ๋จผ์ € ๋ฐฐ์šธ ํ•„์š” ์—†์–ด์š”" ยท /* the devil is in the detail */
Meta Descriptionnull
Meta Canonicalnull
Boilerpipe Text
2013๋…„ ์—ฌ๋ฆ„, C++์„ ๋งŒ๋“œ์‹  ๋‹น์‹œ ํ…์‚ฌ์Šค A&M(TAMU) ๊ต์ˆ˜์˜€๋˜ 1 ๋น„์•ผ๋„ค ์ŠคํŠธ๋กญ์ŠคํŠธ๋ฃน( Bjarne Stroustrup ) ๊ต์ˆ˜๋‹˜์ด ๋‚ด๊ฐ€ ์ผํ•˜๋Š” ๊ทธ๋ฃน์— ์˜ค์…”์„œ ํ˜„๋Œ€ C++์— ๋Œ€ํ•œ ๊ฐ•์˜๋ฅผ ํ•˜์…จ๋‹ค. 2 ๋ณดํ†ต ์ด๋Ÿฐ ๊ฐ•์˜๊ฐ€ ๋๋‚˜๋ฉด 30๋ถ„ ์ •๋„์˜ 1:1 ๋งŒ๋‚จ์„ ์‹ ์ฒญํ•  ์ˆ˜ ์žˆ๋‹ค. ์–ธ์ œ ๋˜ C++ ์ฐฝ์‹œ์ž๋‹˜๊ณผ ๋Œ€ํ™”๋ฅผ ๋‚˜๋ˆ ๋ณผ๊นŒ ์‹ถ์–ด์„œ ๋ƒ‰ํผ ์‹ ์ฒญํ–ˆ๊ณ  ์ด์•ผ๊ธฐ๋ฅผ ๋‚˜๋ˆด๋‹ค. ์šฐ๋ฆฌํŒ€์ด ํ•˜๊ณ  ์žˆ๋˜ ํ”„๋กœ์ ํŠธ ๊ด€๋ จ ์กฐ์–ธ์„ ์ข€ ๊ตฌํ•œ ๋’ค, ์ผ๋ฐ˜์ ์ธ ์งˆ๋ฌธ๋„ ์ข€ ๋“œ๋ ค๋ดค๋‹ค. ๋ฉ์ฒญํ•œ ์งˆ๋ฌธ์€ ์•„๋‹๊นŒ ์กฐ๋งˆ์กฐ๋งˆํ–ˆ๋‹ค. ์ฃผ๋กœ C++์—์„œ ํฌ์ธํ„ฐ ์‚ฌ์šฉ๊ณผ ์˜ฌ๋ฐ”๋ฅธ C++ ํ•™์Šต์— ๋Œ€ํ•ด ์˜๊ฒฌ์„ ๋‚˜๋ˆด๋‹ค. ์ œ๋ชฉ์ด ๋งํ•˜๋“ฏ์ด C++์„ ๋ฐฐ์šฐ๋Š”๋ฐ ๋”๋Š” C๋ฅผ ๊ฑฐ์น  ํ•„์š”๊ฐ€ ์—†๋‹ค. ์งง์•˜์ง€๋งŒ ์ด ๋Œ€ํ™” ์ดํ›„์— ๋ณด๋‹ค ๋‹ค๋ฅธ ์‹œ๊ฐ์œผ๋กœ C++์„ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค. C++์—์„œ C ํฌ์ธํ„ฐ ์‚ฌ์šฉ์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์„ธ์š”? ์ด๋Ÿฐ ์งˆ๋ฌธ์„ ๋“œ๋ ค๋ดค๋‹ค. โ€œ๊ตฌ๊ธ€์˜ C++ ์ฝ”๋”ฉ ๊ฐ€์ด๋“œ๋ผ์ธ์„ ๋ณด๋ฉด ํ•จ์ˆ˜ ์ธ์ž๋กœ ํฌ์ธํ„ฐ ์•„๋‹ˆ๋ฉด ์ƒ์ˆ˜ํ˜• ์ฐธ์กฐ์ž๋งŒ ์“ฐ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ €ํฌ ํŒ€ ์—ญ์‹œ ์ฐธ์กฐ์ž๋Š” ์ž˜ ์“ฐ์ง€ ์•Š๊ณ  ํฌ์ธํ„ฐ๋ฅผ ์ž์ฃผ ์”๋‹ˆ๋‹ค. ์ตœ์ดˆ์˜ C++์€ C๋ฅผ ๋ฐœ์ „์‹œ์ผœ์„œ ๋งŒ๋“  ํ„ฐ๋ผ C์˜ ํฌ์ธํ„ฐ๋ฅผ ๊ทธ๋Œ€๋กœ ๊ณ„์Šนํ•˜๊ณ  ์žˆ๋Š”๋ฐ์š”. ํ˜น์‹œ ํฌ์ธํ„ฐ๋ฅผ ์ข‹์•„ํ•˜์„ธ์š”? ์—ฌ์ „ํžˆ ์ฐธ์กฐ์ž๊ฐ€ ์ฒœ๋Œ€๋ฐ›๋Š” ์ฝ”๋”ฉ ๊ทœ์น™์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์„ธ์š”?โ€ ๋‚˜์˜ ์˜ˆ์ƒ์€ ํฌ์ธํ„ฐ๋ฅผ ์•„๋งˆ๋„ ์‹ซ์–ด ํ•˜์‹œ๊ฒ ์ง€๋งŒ, ์˜ํ–ฅ๋ ฅ ์žˆ๋Š” ๋ฐœ์–ธ์„ ํ•˜์‹œ๋Š” ๋ถ„์ด๋‹ˆ ๋น„ํŒ์„ ํ•˜๋”๋ผ๋„ ๋‹ค์†Œ ์™„๊ณกํ•œ ํ‘œํ˜„์„ ์“ฐ์ง€ ์•Š์„๊นŒ์˜€๋‹ค. ์•„๋‹ˆ์—ˆ๋‹ค. ํ•œ์ˆจ์„ ๋‚ด์‰ฌ๋ฉด์„œ ์ƒ๊ฐ๋ณด๋‹ค ๊ต‰์žฅํ•œ ์–ด์กฐ๋กœ ํฌ์ธํ„ฐ๋ฅผ ์‹ซ์–ดํ•œ๋‹ค๊ณ  ๋ง์”€ํ•˜์…จ๋‹ค. ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ์™€ ์ฐธ์กฐ์ž๋ฅผ ์“ธ ๊ฒƒ์„ ๊ถŒ์œ ํ•˜์…จ๋‹ค. ๋‚˜ ์—ญ์‹œ ํฌ์ธํ„ฐ๋ฅผ ๋„ˆ๋ฌด C++์—์„œ ๋‚จ์šฉํ•˜๋Š” ๊ฒƒ ๊ฐ™์•„ ์‹ซ์–ดํ–ˆ์ง€๋งŒ, ์ฃผ์š” ์ฝ”๋”ฉ ๊ทœ์น™๋“ค์ด ํฌ์ธํ„ฐ๋ฅผ ๋” ์šฐ์„ ์‹œ ํ•˜๋‹ˆ ์–ด์ฉ” ์ˆ˜๊ฐ€ ์—†์—ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, C++ ๋งŒ๋“œ์‹  ๋ถ„์กฐ์ฐจ ์ด๋ ‡๊ฒŒ ํ™•์‹คํ•œ ํƒœ๋„๋กœ ํฌ์ธํ„ฐ๋ฅผ ๋น„ํŒํ•˜์‹œ๋‹ˆ ํ•œํŽธ์œผ๋ก  ์œ„์•ˆ, ํ•œํŽธ์œผ๋ก  ํ˜ธ๋ถˆํ˜ธ๋ฅผ ๊ฑฐ์นจ์—†์ด ํ‘œํ˜„ํ•˜์‹œ๋Š” ๊ฒƒ์ด ๋ฌด์ฒ™ ํฅ๋ฏธ๋กœ์› ๋‹ค. ๋ฆฌ๋ˆ„์Šค ํˆฌ๋ฅด๋ฐœ์Šค์˜ ๊ทธ ์œ ๋ช…ํ•œ โ€œ ์—”๋น„๋””์•„, f*** you โ€ ์ •๋„๋Š” ์•„๋‹ˆ์—ˆ์ง€๋งŒ, ๋‹น์‹œ ๋‚ด ๋А๋‚Œ์€ ์ƒ๋‹นํžˆ ์‹ ์„ ํ–ˆ๋‹ค. ์ƒ๊ฐํ•ด๋ณด๋ฉด C ์Šคํƒ€์ผ์˜ ํฌ์ธํ„ฐ๋ฅผ C++์—์„œ ๊ทธ๋ ‡๊ฒŒ ์“ธ ํ•„์š”๊ฐ€ ์—†๋‹ค. ๋ฌด์—‡๋ณด๋‹ค ํฌ์ธํ„ฐ์— ๋Œ€ํ•œ ์˜คํ•ด๊ฐ€ ๋„ˆ๋ฌด ์‹ฌํ•˜๋‹ค. ํฌ์ธํ„ฐ, ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ๋ฌด์—‡์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์ฐธ์กฐํ•œ๋‹ค๋Š” ๊ฐœ๋…์€ ์ž๋ฐ”๋‚˜ ํŒŒ์ด์ฌ ๊ฐ™์€ ๋ช…์‹œ์ ์ธ ํฌ์ธํ„ฐ๊ฐ€ ์—†๋Š” ์–ธ์–ด์—๋„ ์žˆ๋‹ค. ์ด๊ฑธ ๋ชจ๋ฅด๋ฉด ์ œ๋Œ€๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ์ˆ˜ ์—†๋‹ค. C/C++๊ฐ€ ์–ด๋ ค์šด ์ด์œ ๋กœ โ€˜ํฌ์ธํ„ฐโ€™๋ฅผ ๊ผฝ๋Š” ๊ฒƒ์€ ์ž˜๋ชป๋˜์—ˆ๋‹ค. ์ •ํ™•ํžˆ ๋งํ•˜์ž๋ฉด, ๊ฐ€๋ฆฌํ‚ค๋Š” ํ–‰์œ„๊ฐ€ ์ฐธ์กฐ์ž ๊ฐ™์€ ๊ฒƒ์œผ๋กœ ์ถ”์ƒํ™”๋˜์ง€ ์•Š์•˜๊ณ , ๊ณ ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ง์ ‘ ์ฃผ์†Œ๋ฅผ ์–ป์–ด ๊ทธ ๊ฐ’์„ ๋‹ค๋ค„์•ผ ํ•˜๋‹ˆ ์–ด๋ ค์šด ๊ฒƒ์ด๋‹ค. C ์–ธ์–ด๋Š” call-by-reference๋„ ์—†๋‹ค. ์ฃผ์†Œ ๊ฐ’์„ ๋‹ด๊ณ  ์žˆ๋Š” ํฌ์ธํ„ฐ๊ฐ€ ๊ทธ๋ƒฅ call-by-value๋กœ ๋ถˆ๋ฆด ๋ฟ์ด๋‹ค. ํฌ์ธํ„ฐ๋Š” ๋ณ„ ์ด์ƒํ•œ ๋…€์„๋„ ์•„๋‹ˆ๊ณ  ๊ทธ์ € ์ฃผ์†Œ ๊ฐ’์„ ๋‹ด๊ณ  ์žˆ๋Š” ์™„๋ฒฝํ•œ ๋ณ€์ˆ˜์ด๋‹ค. C++์˜ ์ฐธ์กฐ์ž๋Š” ์ด๋Ÿฐ ํฌ์ธํ„ฐ์˜ ๋ฌธ์ œ๋ฅผ - ์™„๋ฒฝํ•˜์ง€๋Š” ์•Š์ง€๋งŒ - ์กฐ๊ธˆ์ด๋ผ๋„ ์‰ฝ๊ฒŒ ํ•œ๋‹ค. C++ ์ฐธ์กฐ์ž๋Š” ์„ ์–ธ๊ณผ ํ•จ๊ป˜ ๋ฐ˜๋“œ์‹œ ์ดˆ๊ธฐํ™”๋˜์–ด์•ผ ํ•˜๋ฉฐ, ๊ทธ๋•Œ ์ •ํ•ด์ง„ ๋Œ€์ƒ์€ ๋‚˜์ค‘์— ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋‹ค. ํฌ์ธํ„ฐ์™€ ๊ทผ๋ณธ์ ์œผ๋กœ ๋‹ค๋ฅธ ์ ์ด๋‹ค. C++ ์ฐธ์กฐ์ž๋Š” ์‹ค์ œ ๋ณ€์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ค. ์ฐธ์กฐ์ž๋ฅผ ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ์“ฐ์ง€๋งŒ, ์‹ค์ œ ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ์–ด์„œ ์ฃผ์†Œ ๊ฐ’์„ ์–ป์„ ์ˆ˜ ์—†๋‹ค. ๊ฐ€๋ฆฌํ‚ค๋Š” ๋Œ€์ƒ์ด ํฌ์ธํ„ฐ์ฒ˜๋Ÿผ ๋ฌด์ œํ•œ์ ์ด์ง€ ์•Š์•„์„œ (์•„๋งˆ๋„) ์ตœ๋Œ€ํ•œ ์ฐธ์กฐ์ž๋กœ๋งŒ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ฝ”๋“œ ์ตœ์ ํ™”ํ•˜๊ธฐ ์‰ฌ์šธ ์ˆ˜๋„ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ C๋ฅผ ๋จผ์ € ๋ฐฐ์› ๋˜ํ„ฐ๋ผ ์˜คํžˆ๋ ค C++ ์ฐธ์กฐ์ž๋ฅผ ํ—ท๊ฐˆ๋ คํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค ๋ณด๋‹ˆ ํ•จ์ˆ˜ ์ธ์ž์—์„œ ์ƒ์ˆ˜ํ˜• ์ฐธ์กฐ์ž ์™ธ์—๋Š” ์“ฐ์ง€ ๋ง๋ผ๋Š” ๊ทœ์น™์ด ํ”ํ•˜๊ฒŒ ์‚ฌ์šฉ๋œ๋‹ค. ๋‹คํ–‰ํžˆ ๋‹ค๋ฅธ ํ˜„๋Œ€ C++ ํ”„๋กœ์ ํŠธ๋Š” ์ ๊ทน์ ์œผ๋กœ ์ฐธ์กฐ์ž๋ฅผ ์“ฐ๊ณ  ์žˆ๋‹ค. LLVM์€ ์ž์œ ๋กญ๊ฒŒ ์ฐธ์กฐ์ž๋ฅผ ์“ด๋‹ค (๋ฌผ๋ก  ์—ฌ์ „ํžˆ ์ƒ์ˆ˜ํ˜• ์ฐธ์กฐ์ž + ํฌ์ธํ„ฐ ์กฐํ•ฉ์ด ํ”ํ•˜์ง€๋งŒ). Chromium์˜ Blink ํ”„๋กœ์ ํŠธ์˜ ํฌ์ธํ„ฐ์™€ ๋ ˆํผ๋Ÿฐ์Šค์— ๋Œ€ํ•œ ๊ทœ์น™ ์„ ๋ณด๋ฉด ์ฐธ์กฐ์ž์˜ ํ•จ์ˆ˜ ์ธ์ž๋กœ์„œ์˜ ์‚ฌ์šฉ์„ ๊ธˆํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค. ํŽ˜์ด์Šค๋ถ์˜ HHVM ์—ญ์‹œ ์ฐธ์กฐ์ž ์‚ฌ์šฉ ๊ธˆ์ง€ ๊ฐ™์€ ๊ฑด ์—†๋‹ค . ํฌ์ธํ„ฐ๋Š” ์ •๋ง ๋ฉ”๋ชจ๋ฆฌ ๋ฉ์–ด๋ฆฌ๋ฅผ ์ฃผ์†Œ๋กœ ์ ‘๊ทผํ•ด์•ผ ํ•  ๋•Œ๋งŒ ์“ฐ๋ฉด ๋œ๋‹ค. ๋™์  ํ• ๋‹น๋„ std::make_unique ๊ณผ std::make_shared ๋กœ๋ถ€ํ„ฐ ์–ป์€ ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ๋ฅผ ์“ฐ๋ฉด ํฌ์ธํ„ฐ ์‚ฌ์šฉ์„ ๊ทน๋‹จ์ ์œผ๋กœ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. ๊ตฌ๊ธ€ ์ฝ”๋”ฉ ๊ฐ€์ด๋“œ๋ผ์ธ ์—ญ์‹œ ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ ์‚ฌ์šฉ์„ ์ ๊ทน ์žฅ๋ คํ•˜๊ณ  ์žˆ๋‹ค . C++11์—์„œ ๋„์ž…๋œ ์šฐ์ธก๊ฐ’ ์ฐธ์กฐ์™€ ๋ฌด๋ธŒ ์‹œ๋งจํ‹ฑ์œผ๋กœ ์ปดํŒŒ์ผ ์‹œ๊ฐ„์— std::uniqe_ptr ์˜ ์ž˜๋ชป๋œ ์†Œ์œ ๊ถŒ ์ „๋‹ฌ์€ ๊ฐ€๋ ค๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ๋”์šฑ๋” ํฌ์ธํ„ฐ๋ฅผ ๋œ ์จ๋„ ๋˜๋Š” ํ™˜๊ฒฝ์ด๋‹ค. ์ŠคํŠธ๋กญ์ŠคํŠธ๋ฃน ๊ต์ˆ˜๋‹˜์€ ๊ทธ๋ž˜์„œ C++์— ๋Œ€ํ•œ ๊ต์œก ๋ฐฉ๋ฒ•๋„ ๋ฐ”๋€Œ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์—ญ์„คํ•˜์…จ๋‹ค. ์ œ๋ฐœ C++์„ C์˜ ์—ฐ์žฅ์„ ์œผ๋กœ ๊ฐ€๋ฅด์น˜์ง€ ๋ง๋ผ๊ณ . ์žฌ์งํ•˜๋˜ TAMU์—์„œ ํ•™์ƒ๋“ค์„ ํšจ๊ณผ์ ์œผ๋กœ ๊ฐ€๋ฅด์น˜๊ณ ์ž ์ฑ…๊นŒ์ง€ ์ƒˆ๋กœ ์ผ๋‹ค๊ณ  ํ•˜์…จ๋‹ค. ๋ฐ”๋กœ โ€œProgramming: Principles and Practice Using C++โ€ ์ด๋‹ค. ์ด ์ฑ…์—์„œ ํฌ์ธํ„ฐ, ๋ฉ”๋ชจ๋ฆฌ, ์ฃผ์†Œ๋Š” ์ „์ฒด 27์žฅ ์ค‘ 17์žฅ์—์„œ ์†Œ๊ฐœํ•œ๋‹ค . char* ๋Œ€์‹ ์— std::string ์„, ๋ฐฐ์—ด๋ณด๋‹ค๋Š” std::vector ๋ฅผ ๊ฐ€๋ฅด์ณ์•ผ ํ•œ๋‹ค๊ณ  ํ•˜์…จ๋‹ค. ๊ทธ ๋‹น์‹œ ์˜ค๋ž˜๋œ C ์ฝ”๋“œ์—์„œ ๋ฌธ์ž์—ด, ๋ฐฐ์—ด, ํ•ด์‹œํ…Œ์ด๋ธ”์˜ ๋ถ€์žฌ๋กœ ์—„์ฒญ ๊ณ ์ƒํ•˜๋˜ ๋‚˜๋กœ์„œ๋Š” ์ง„์‹ฌ์œผ๋กœ ์™€ ๋‹ฟ๋Š” ๋ง์”€์ด์—ˆ๋‹ค. C++๋ฅผ ์ฒ˜์Œ์œผ๋กœ ๋ฐฐ์šด๋‹ค๋ฉด C๋ฅผ ๋จผ์ € ๋ฐฐ์šธ ํ•„์š”๊ฐ€ ์ ˆ๋Œ€ ์—†์–ด์š”. ์˜คํ•ดํ•˜์ง€ ๋ง์•„์•ผ ํ•  ๊ฒƒ์€ C๊ฐ€ ํ•„์š” ์—†๋‹ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ C๊ฐ€ ํ•„์š”ํ•œ ๊ณณ๋„ ๋งŽ๋‹ค. ๋‹จ์ง€ C++์„ ๋ฐฐ์šธ ๋•Œ C๋ฅผ ๊ฑฐ์น  ํ•„์š” ์—†์ด ์ƒˆ๋กœ์šด ์–ธ์–ด๋กœ ๋ฐฐ์šฐ๋ผ๋Š” ๊ฒƒ์ด๋‹ค. 2015๋…„ cppcon (C++ ์ปจํผ๋Ÿฐ์Šค)์— ํฅ๋ฏธ๋กœ์šด ๊ฐ•์—ฐ์ด ์žˆ์—ˆ๋‹ค. ์ผ€์ดํŠธ ๊ทธ๋ ˆ๊ณ ๋ฆฌ๋ผ๋Š” ๋ถ„์ด โ€œStop Teaching Cโ€๋ผ๋Š” ์ œ๋ชฉ์œผ๋กœ ํ•œ ๊ฐ•์—ฐ์ด๋‹ค( ์Šฌ๋ผ์ด๋“œ , ๋™์˜์ƒ ). ๋‚ด๊ฐ€ ์—ฌ๊ธฐ์„œ ์ฃผ์žฅํ•˜๋Š” ๋‚ด์šฉ๊ณผ ๋น„์Šทํ•˜๋‹ค. C๋„ ์•„๋‹Œ C++๋ฅผ ๋ฐฐ์šฐ๋Š”๋ฐ ๋„ˆ๋ฌด ๋นจ๋ฆฌ ํฌ์ธํ„ฐ, char* ๊ธฐ๋ฐ˜์˜ ๋ฌธ์ž์—ด, ๋™์  ๋ฐฐ์—ด ๋“ฑ์„ ๊ฐ€๋ฅด์น  ํ•„์š”๋Š” ์—†๋‹ค. ์‹œ์ž‘์€ C++11๋ถ€ํ„ฐ ๋„์ž…๋œ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ์ ๊ทน ์จ์„œ - ๊ฑฐ์ง“๋ง ์•ฝ๊ฐ„ ๋ณดํƒœ - ํŒŒ์ด์ฌ์Šค๋Ÿฝ๊ฒŒ ๊ฐ€๋ฅด์ณ๋„ ๋œ๋‹ค. ํฌ์ธํ„ฐ๋‚˜ ๋™์  ํ• ๋‹น์€ ์ข€ ๋’ค์—์„œ ๋ฐฐ์›Œ๋„ ๊ดœ์ฐฎ๋‹ค. โ€œ์–ด๋–ป๊ฒŒ C/C++์„ ํ•˜๋ฉด์„œ ํฌ์ธํ„ฐ, ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋“ฑ์„ ์•ˆ ๊ฐ€๋ฅด์น  ์ˆ˜ ์žˆ๋ƒ!โ€๋ผ๊ณ  ๋ฐ˜๋ฐ•ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งž๋Š” ๋ง์ด๋‹ค. ํŠนํžˆ C ์–ธ์–ด์— ํ•œ์ •ํ•œ๋‹ค๋ฉด ๋”๋”์šฑ ์˜ณ๋‹ค. 21์„ธ๊ธฐ์— C ์–ธ์–ด๋Š” ๊ธฐ๊ณ„์–ด์™€ ๊ฐ€์žฅ ๊ทผ์ ‘ํ•œ ์–ธ์–ด์ด๋‹ˆ C ์–ธ์–ด์— ์žˆ์–ด ์ปดํ“จํ„ฐ/์‹œ์Šคํ…œ ๊ตฌ์กฐ ์ง€์‹์€ ํ•„์ˆ˜์ด๋‹ค. C++๋„ ์•„์ฃผ ์ž˜ ์“ฐ๋ ค๋ฉด ๊ฒฐ๊ตญ ์ €์ˆ˜์ค€๊นŒ์ง€ ๋‚ด๋ ค๊ฐ€์•ผ ํ•˜์ง€๋งŒ, ๋‚˜์˜ ์ฃผ์žฅ์€ ์‹œ์ž‘๋ถ€ํ„ฐ ๊ดœํžˆ ์ง„์ž… ์žฅ๋ฒฝ์„ ๋†’์ผ ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ฐ€๋œฉ์ด๋‚˜ ์š”์ฆ˜ ๊ฐ™์ด ์›น์ด ๋ชจ๋“  ๊ฒƒ์„ ์žก์•„๋จน์€ ์„ธ์ƒ์—์„  C++ ์กฐ์ฐจ๋„ ๋„ˆ๋ฌด๋‚˜ ์•„๋žซ๋‹จ์— ์žˆ๋‹ค. ์‹œ์•ผ๋ฅผ ์•„๋ž˜๋กœ๋งŒ ํ•œ์ •ํ•  ํ•„์š”๋Š” ์—†๋‹ค. ์•„์ง C++ ์ž…๋ฌธ์„œ ์ค‘ C ์–ธ์–ด์˜ ํ™•์žฅ์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ฑ…๋“ค์ด ๋”๋Ÿฌ ์žˆ๋‹ค. ์‹ฌ๊ฐํ•˜๊ฒŒ ๋น„ํŒํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ, ํ˜„๋Œ€ C++๋„ ๋‚˜์™”๋Š”๋ฐ ๋‹ค๋ฅธ ๊ต์Šต๋ฒ•์ด ์ด์ œ ํ•„์š”ํ•  ๋•Œ๊ฐ€ ์•„๋‹Œ๊ฐ€ ์ƒ๊ฐํ•œ๋‹ค. Yes24 ๊ธฐ์ค€์œผ๋กœ ๊ฐ€์žฅ ๋งŽ์ด ํŒ๋งค๋˜๋Š” C++ ์ž…๋ฌธ์„œ ๋ฅผ ๋ณด๋ฉด ์„œ๋‘ ๋ถ€๋ถ„์— โ€œC++์€ C์–ธ์–ด๋ฅผ ํฌํ•จํ•œ๋‹คโ€๋ผ๋Š” ๋ฌธ๊ตฌ๊ฐ€ ์žˆ๋‹ค. ์—„๋ฐ€ํžˆ ๋งํ•˜์ž๋ฉด ๊ธฐ์ˆ ์ ์œผ๋กœ ํ‹€๋ฆฐ ๋ง์ด๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๋…์ž๊ฐ€ C๋ฅผ ๊ณต๋ถ€ํ–ˆ์Œ์„ ๊ฐ€์ •ํ–ˆ์„ํ…Œ๋‹ˆ ๋ณด๋‹ค ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•˜๊ณ ์ž C ์ด์•ผ๊ธฐ๋ฅผ ๊บผ๋‚ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ์˜คํžˆ๋ ค ๋ฐฉํ•ด๋œ๋‹ค. ์ตœ๊ทผ ์ €์ˆ ๋˜๋Š” C++ ์ž…๋ฌธ์„œ๋Š” ๋น„๊ต์  C์™€ C++์˜ ์ฐจ์ด๋ฅผ ๋ถ„๋ช…ํžˆ ์ธ์ง€ํ•˜๊ณ  ๋‹ค๋ฅธ ์–ธ์–ด๋กœ์„œ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ ๊ฐ™์•„ ๋‹คํ–‰์ด๋‹ค. C++: ๊ฐ€๋ณ๊ฒŒ ์ถ”์ƒํ™”ํ•œ ์–ธ์–ด C++์˜ ์‹œ์ž‘์€ C์—์„œ ์‹œ์ž‘๋˜์—ˆ๊ณ , C++์ด ์„ฑ๊ณตํ•œ ๊ฐ€์žฅ ํฐ ์ด์œ ๋Š” ๋ถ„๋ช…ํžˆ C์™€์˜ ํ˜ธํ™˜์„ฑ ๋•Œ๋ฌธ์ด๋‹ค. ํ•˜์ง€๋งŒ ์ง€๊ธˆ์€ - ์•„๋‹ˆ ์ด๋ฏธ ์˜ค๋ž˜์ „๋ถ€ํ„ฐ - ์„œ๋กœ ๋‹ค๋ฅธ ๊ธธ์„ ๊ฐ€๊ณ  ์žˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋„๋Œ€์ฒด C++๋ฅผ ์–ด๋–ป๊ฒŒ ๋ด์•ผ ํ• ๊นŒ? ํ”ํžˆ C++์„ ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด, ๋ฉ€ํ‹ฐํŒจ๋Ÿฌ๋‹ค์ž„ ์–ธ์–ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š”๋ฐ ์žฅ๋‹˜ ์ฝ”๋ผ๋ฆฌ ๋งŒ์ง€๋“ฏ ์ผ๋ถ€๋งŒ ์งš์€ ํ‘œํ˜„์ด๋‹ค. ์ •๋‹ต์€ ์ŠคํŠธ๋กญ์ŠคํŠธ๋ฃน ๊ต์ˆ˜๋‹˜์˜ ๊ฐ•์—ฐ ๋„์ค‘ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด ๋ช…์พŒํ•˜๊ฒŒ ์ •์˜ํ•˜์˜€๋‹ค. โ€œA light-weight abstraction programming languageโ€ โ€œ๊ฐ€๋ณ๊ฒŒ ์ถ”์ƒํ™”ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ดโ€ 3 โ€œ๊ฐ€๋ณ๋‹คโ€๋ผ๋Š” ์ ์—์„œ C์™€ ์•„์ฃผ ํก์‚ฌํ•˜์ง€๋งŒ โ€œ์ถ”์ƒํ™”โ€๋ผ๋Š” ๊ด€์ ์—์„  C++์ด C์™€ ํฌ๊ฒŒ ๋‹ค๋ฅด๋‹ค. ํŠนํžˆ ํ˜„๋Œ€ C++์— ์ถ”๊ฐ€๋œ ๊ธฐ๋Šฅ์€ ์ด ์ฒ ํ•™์„ ์ถฉ์‹คํžˆ ์ง€ํ‚ค๋ฏ€๋กœ ๋”์šฑ ๋ฉ‹์ง„ ์ •๋ฆฌ์ด๋‹ค. C++์„ ๋ฐฐ์šธ ๋•Œ๋„, ๊ฐ€๋ฅด์น  ๋•Œ๋„, ์ด ์ฒ ํ•™์„ ์ƒ๊ธฐํ•˜๋ฉด ์ข‹์ง€ ์•Š์„๊นŒ ์ƒ๊ฐํ•œ๋‹ค. . . . . . . . . . ์‹œ๊ฐ„์ด ๋‹ค ๋  ๋ฌด๋ ต, โ€œThe C++ Programming Languageโ€ ์ฑ…์— ์‚ฌ์ธ์„ ๋ฐ›์œผ๋ฉด์„œ ๋งˆ์ง€๋ง‰์œผ๋กœ ์งง์€ ์งˆ๋ฌธ์„ ๋“œ๋ ธ๋‹ค. โ€œ์™œ ์“ฐ์‹  ์ฑ…์˜ ์ฝ”๋”ฉ ํฐํŠธ๊ฐ€ ๊ณ ์ • ํญ์ด ์•„๋‹ˆ๋ผ ๊ฐ€๋ณ€ ํญ์œผ๋กœ ํ•˜์…จ์–ด์š”?โ€ โ€œ์•„, ๊ทธ๊ฑด ๊ฐ€๋ณ€ ํญ์œผ๋กœ ํ•˜๋‹ˆ ํ•œ ์ค„์— ๋” ๋งŽ์ด ์“ธ ์ˆ˜ ์žˆ์–ด์„œ ๊ทธ๋ ‡๊ฒŒ ํ–ˆ์–ด์š”.โ€ ์ง€๊ธˆ์€ ๋‰ด์š•์˜ ๋ชจ๊ฑด ์Šคํƒ ๋ฆฌ์— ์žฌ์ง ์ค‘.ย  โ†ฉ ๊ฐ™์€ ๋‚ด์šฉ์œผ๋กœ ํ•œ ๊ฐ•์˜๋ฅผ ์—ฌ๊ธฐ์„œ , ์Šฌ๋ผ์ด๋“œ๋Š” ์—ฌ๊ธฐ์„œ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.ย  โ†ฉ ์˜์–ด ๊ทธ๋Œ€๋กœ โ€œ๊ฐ€๋ฒผ์šด ์ถ”์ƒํ™” ์–ธ์–ดโ€๋ผ๊ณ  ์“ฐ๋ฉด ์ข€ ๋ชจํ˜ธํ•˜๋‹ค. ์–ผํ• โ€œ์ถ”์ƒํ™”๋œโ€์œผ๋กœ ์˜ฎ๊ฒจ์•ผํ•  ๊ฒƒ ๊ฐ™์•˜๋Š”๋ฐ, ๋” ์ƒ๊ฐํ•ด๋ณด๋‹ˆ C++์€ ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋Šฅ์„ ๊ฐ€๋ณ๊ฒŒ ์ถ”์ƒํ™” ํ–ˆ์œผ๋ฏ€๋กœ โ€œ์ถ”์ƒํ™”ํ•œโ€์ด ๋” ๋งค๋„๋Ÿฌ์šด ์šฐ๋ฆฌ๋ง ํ‘œํ˜„์ผ ๋“ฏ ํ•˜๋‹ค.ย  โ†ฉ
Markdown
๊น€๋ฏผ์žฅ์˜ ๋ธ”๋กœ๊ทธ \| Minjang Kim's Blog [์ฒ˜์Œ์œผ๋กœ \| Home](https://minjang.github.io/) [์†Œ๊ฐœ \| About](https://minjang.github.io/about/) [๊ธ€๋ชฉ๋ก \| Archive](https://minjang.github.io/archive/) [๊ตฌ๋… \| Feed](https://minjang.github.io/feed.xml) [GitHub project](https://github.com/minjang/minjang.github.io) ยฉ 2019 Minjang Kim [/\* the devil is in the detail \*/](https://minjang.github.io/ "Home") [์†Œ๊ฐœ](https://minjang.github.io/about) [About](https://minjang.github.io/about) [๊ธ€๋ชฉ๋ก](https://minjang.github.io/archive) [Archive](https://minjang.github.io/archive) [๊ตฌ๋…](https://minjang.github.io/feed.xml) [Feed](https://minjang.github.io/feed.xml) ## ์ŠคํŠธ๋กญ์ŠคํŠธ๋ฃน ๊ต์ˆ˜๋‹˜๊ณผ์˜ ๋Œ€ํ™”: "C++ ๋ฐฐ์šฐ๋Š”๋ฐ C๋ฅผ ๋จผ์ € ๋ฐฐ์šธ ํ•„์š” ์—†์–ด์š”" 2016๋…„ 3์›” 21์ผ \| [๋Œ“๊ธ€ 13๊ฐœ](https://minjang.github.io/2016/03/21/talk-with-stroustrup/#disqus_thread) 2013๋…„ ์—ฌ๋ฆ„, C++์„ ๋งŒ๋“œ์‹  ๋‹น์‹œ ํ…์‚ฌ์Šค A\&M(TAMU) ๊ต์ˆ˜์˜€๋˜[1](https://minjang.github.io/2016/03/21/talk-with-stroustrup/#fn:bs) ๋น„์•ผ๋„ค ์ŠคํŠธ๋กญ์ŠคํŠธ๋ฃน([Bjarne Stroustrup](https://en.wikipedia.org/wiki/Bjarne_Stroustrup)) ๊ต์ˆ˜๋‹˜์ด ๋‚ด๊ฐ€ ์ผํ•˜๋Š” ๊ทธ๋ฃน์— ์˜ค์…”์„œ ํ˜„๋Œ€ C++์— ๋Œ€ํ•œ ๊ฐ•์˜๋ฅผ ํ•˜์…จ๋‹ค.[2](https://minjang.github.io/2016/03/21/talk-with-stroustrup/#fn:talk) ๋ณดํ†ต ์ด๋Ÿฐ ๊ฐ•์˜๊ฐ€ ๋๋‚˜๋ฉด 30๋ถ„ ์ •๋„์˜ 1:1 ๋งŒ๋‚จ์„ ์‹ ์ฒญํ•  ์ˆ˜ ์žˆ๋‹ค. ์–ธ์ œ ๋˜ C++ ์ฐฝ์‹œ์ž๋‹˜๊ณผ ๋Œ€ํ™”๋ฅผ ๋‚˜๋ˆ ๋ณผ๊นŒ ์‹ถ์–ด์„œ ๋ƒ‰ํผ ์‹ ์ฒญํ–ˆ๊ณ  ์ด์•ผ๊ธฐ๋ฅผ ๋‚˜๋ˆด๋‹ค. ์šฐ๋ฆฌํŒ€์ด ํ•˜๊ณ  ์žˆ๋˜ ํ”„๋กœ์ ํŠธ ๊ด€๋ จ ์กฐ์–ธ์„ ์ข€ ๊ตฌํ•œ ๋’ค, ์ผ๋ฐ˜์ ์ธ ์งˆ๋ฌธ๋„ ์ข€ ๋“œ๋ ค๋ดค๋‹ค. ๋ฉ์ฒญํ•œ ์งˆ๋ฌธ์€ ์•„๋‹๊นŒ ์กฐ๋งˆ์กฐ๋งˆํ–ˆ๋‹ค. ์ฃผ๋กœ C++์—์„œ ํฌ์ธํ„ฐ ์‚ฌ์šฉ๊ณผ ์˜ฌ๋ฐ”๋ฅธ C++ ํ•™์Šต์— ๋Œ€ํ•ด ์˜๊ฒฌ์„ ๋‚˜๋ˆด๋‹ค. ์ œ๋ชฉ์ด ๋งํ•˜๋“ฏ์ด C++์„ ๋ฐฐ์šฐ๋Š”๋ฐ ๋”๋Š” C๋ฅผ ๊ฑฐ์น  ํ•„์š”๊ฐ€ ์—†๋‹ค. ์งง์•˜์ง€๋งŒ ์ด ๋Œ€ํ™” ์ดํ›„์— ๋ณด๋‹ค ๋‹ค๋ฅธ ์‹œ๊ฐ์œผ๋กœ C++์„ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค. ### C++์—์„œ C ํฌ์ธํ„ฐ ์‚ฌ์šฉ์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์„ธ์š”? ์ด๋Ÿฐ ์งˆ๋ฌธ์„ ๋“œ๋ ค๋ดค๋‹ค. > โ€œ๊ตฌ๊ธ€์˜ C++ ์ฝ”๋”ฉ ๊ฐ€์ด๋“œ๋ผ์ธ์„ ๋ณด๋ฉด [ํ•จ์ˆ˜ ์ธ์ž๋กœ ํฌ์ธํ„ฐ ์•„๋‹ˆ๋ฉด ์ƒ์ˆ˜ํ˜• ์ฐธ์กฐ์ž๋งŒ ์“ฐ๋ผ๊ณ ](https://google.github.io/styleguide/cppguide.html#Reference_Arguments) ํ•ฉ๋‹ˆ๋‹ค. ์ €ํฌ ํŒ€ ์—ญ์‹œ ์ฐธ์กฐ์ž๋Š” ์ž˜ ์“ฐ์ง€ ์•Š๊ณ  ํฌ์ธํ„ฐ๋ฅผ ์ž์ฃผ ์”๋‹ˆ๋‹ค. ์ตœ์ดˆ์˜ C++์€ C๋ฅผ ๋ฐœ์ „์‹œ์ผœ์„œ ๋งŒ๋“  ํ„ฐ๋ผ C์˜ ํฌ์ธํ„ฐ๋ฅผ ๊ทธ๋Œ€๋กœ ๊ณ„์Šนํ•˜๊ณ  ์žˆ๋Š”๋ฐ์š”. ํ˜น์‹œ ํฌ์ธํ„ฐ๋ฅผ ์ข‹์•„ํ•˜์„ธ์š”? ์—ฌ์ „ํžˆ ์ฐธ์กฐ์ž๊ฐ€ ์ฒœ๋Œ€๋ฐ›๋Š” ์ฝ”๋”ฉ ๊ทœ์น™์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์„ธ์š”?โ€ ๋‚˜์˜ ์˜ˆ์ƒ์€ ํฌ์ธํ„ฐ๋ฅผ ์•„๋งˆ๋„ ์‹ซ์–ด ํ•˜์‹œ๊ฒ ์ง€๋งŒ, ์˜ํ–ฅ๋ ฅ ์žˆ๋Š” ๋ฐœ์–ธ์„ ํ•˜์‹œ๋Š” ๋ถ„์ด๋‹ˆ ๋น„ํŒ์„ ํ•˜๋”๋ผ๋„ ๋‹ค์†Œ ์™„๊ณกํ•œ ํ‘œํ˜„์„ ์“ฐ์ง€ ์•Š์„๊นŒ์˜€๋‹ค. ์•„๋‹ˆ์—ˆ๋‹ค. ํ•œ์ˆจ์„ ๋‚ด์‰ฌ๋ฉด์„œ ์ƒ๊ฐ๋ณด๋‹ค ๊ต‰์žฅํ•œ ์–ด์กฐ๋กœ ํฌ์ธํ„ฐ๋ฅผ ์‹ซ์–ดํ•œ๋‹ค๊ณ  ๋ง์”€ํ•˜์…จ๋‹ค. ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ์™€ ์ฐธ์กฐ์ž๋ฅผ ์“ธ ๊ฒƒ์„ ๊ถŒ์œ ํ•˜์…จ๋‹ค. ๋‚˜ ์—ญ์‹œ ํฌ์ธํ„ฐ๋ฅผ ๋„ˆ๋ฌด C++์—์„œ ๋‚จ์šฉํ•˜๋Š” ๊ฒƒ ๊ฐ™์•„ ์‹ซ์–ดํ–ˆ์ง€๋งŒ, ์ฃผ์š” ์ฝ”๋”ฉ ๊ทœ์น™๋“ค์ด ํฌ์ธํ„ฐ๋ฅผ ๋” ์šฐ์„ ์‹œ ํ•˜๋‹ˆ ์–ด์ฉ” ์ˆ˜๊ฐ€ ์—†์—ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, C++ ๋งŒ๋“œ์‹  ๋ถ„์กฐ์ฐจ ์ด๋ ‡๊ฒŒ ํ™•์‹คํ•œ ํƒœ๋„๋กœ ํฌ์ธํ„ฐ๋ฅผ ๋น„ํŒํ•˜์‹œ๋‹ˆ ํ•œํŽธ์œผ๋ก  ์œ„์•ˆ, ํ•œํŽธ์œผ๋ก  ํ˜ธ๋ถˆํ˜ธ๋ฅผ ๊ฑฐ์นจ์—†์ด ํ‘œํ˜„ํ•˜์‹œ๋Š” ๊ฒƒ์ด ๋ฌด์ฒ™ ํฅ๋ฏธ๋กœ์› ๋‹ค. ๋ฆฌ๋ˆ„์Šค ํˆฌ๋ฅด๋ฐœ์Šค์˜ ๊ทธ ์œ ๋ช…ํ•œ โ€œ[์—”๋น„๋””์•„, f\*\*\* you](https://www.youtube.com/watch?v=_36yNWw_07g)โ€ ์ •๋„๋Š” ์•„๋‹ˆ์—ˆ์ง€๋งŒ, ๋‹น์‹œ ๋‚ด ๋А๋‚Œ์€ ์ƒ๋‹นํžˆ ์‹ ์„ ํ–ˆ๋‹ค. ์ƒ๊ฐํ•ด๋ณด๋ฉด C ์Šคํƒ€์ผ์˜ ํฌ์ธํ„ฐ๋ฅผ C++์—์„œ ๊ทธ๋ ‡๊ฒŒ ์“ธ ํ•„์š”๊ฐ€ ์—†๋‹ค. ๋ฌด์—‡๋ณด๋‹ค ํฌ์ธํ„ฐ์— ๋Œ€ํ•œ ์˜คํ•ด๊ฐ€ ๋„ˆ๋ฌด ์‹ฌํ•˜๋‹ค. ํฌ์ธํ„ฐ, ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ๋ฌด์—‡์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์ฐธ์กฐํ•œ๋‹ค๋Š” ๊ฐœ๋…์€ ์ž๋ฐ”๋‚˜ ํŒŒ์ด์ฌ ๊ฐ™์€ ๋ช…์‹œ์ ์ธ ํฌ์ธํ„ฐ๊ฐ€ ์—†๋Š” ์–ธ์–ด์—๋„ ์žˆ๋‹ค. ์ด๊ฑธ ๋ชจ๋ฅด๋ฉด ์ œ๋Œ€๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ์ˆ˜ ์—†๋‹ค. C/C++๊ฐ€ ์–ด๋ ค์šด ์ด์œ ๋กœ โ€˜ํฌ์ธํ„ฐโ€™๋ฅผ ๊ผฝ๋Š” ๊ฒƒ์€ ์ž˜๋ชป๋˜์—ˆ๋‹ค. ์ •ํ™•ํžˆ ๋งํ•˜์ž๋ฉด, ๊ฐ€๋ฆฌํ‚ค๋Š” ํ–‰์œ„๊ฐ€ ์ฐธ์กฐ์ž ๊ฐ™์€ ๊ฒƒ์œผ๋กœ ์ถ”์ƒํ™”๋˜์ง€ ์•Š์•˜๊ณ , ๊ณ ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ง์ ‘ ์ฃผ์†Œ๋ฅผ ์–ป์–ด ๊ทธ ๊ฐ’์„ ๋‹ค๋ค„์•ผ ํ•˜๋‹ˆ ์–ด๋ ค์šด ๊ฒƒ์ด๋‹ค. C ์–ธ์–ด๋Š” call-by-reference๋„ ์—†๋‹ค. ์ฃผ์†Œ ๊ฐ’์„ ๋‹ด๊ณ  ์žˆ๋Š” ํฌ์ธํ„ฐ๊ฐ€ ๊ทธ๋ƒฅ call-by-value๋กœ ๋ถˆ๋ฆด ๋ฟ์ด๋‹ค. ํฌ์ธํ„ฐ๋Š” ๋ณ„ ์ด์ƒํ•œ ๋…€์„๋„ ์•„๋‹ˆ๊ณ  ๊ทธ์ € ์ฃผ์†Œ ๊ฐ’์„ ๋‹ด๊ณ  ์žˆ๋Š” ์™„๋ฒฝํ•œ ๋ณ€์ˆ˜์ด๋‹ค. C++์˜ ์ฐธ์กฐ์ž๋Š” ์ด๋Ÿฐ ํฌ์ธํ„ฐ์˜ ๋ฌธ์ œ๋ฅผ - ์™„๋ฒฝํ•˜์ง€๋Š” ์•Š์ง€๋งŒ - ์กฐ๊ธˆ์ด๋ผ๋„ ์‰ฝ๊ฒŒ ํ•œ๋‹ค. C++ ์ฐธ์กฐ์ž๋Š” ์„ ์–ธ๊ณผ ํ•จ๊ป˜ ๋ฐ˜๋“œ์‹œ ์ดˆ๊ธฐํ™”๋˜์–ด์•ผ ํ•˜๋ฉฐ, ๊ทธ๋•Œ ์ •ํ•ด์ง„ ๋Œ€์ƒ์€ ๋‚˜์ค‘์— ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋‹ค. ํฌ์ธํ„ฐ์™€ ๊ทผ๋ณธ์ ์œผ๋กœ ๋‹ค๋ฅธ ์ ์ด๋‹ค. C++ ์ฐธ์กฐ์ž๋Š” ์‹ค์ œ ๋ณ€์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ค. ์ฐธ์กฐ์ž๋ฅผ ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ์“ฐ์ง€๋งŒ, ์‹ค์ œ ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ์–ด์„œ ์ฃผ์†Œ ๊ฐ’์„ ์–ป์„ ์ˆ˜ ์—†๋‹ค. ๊ฐ€๋ฆฌํ‚ค๋Š” ๋Œ€์ƒ์ด ํฌ์ธํ„ฐ์ฒ˜๋Ÿผ ๋ฌด์ œํ•œ์ ์ด์ง€ ์•Š์•„์„œ (์•„๋งˆ๋„) ์ตœ๋Œ€ํ•œ ์ฐธ์กฐ์ž๋กœ๋งŒ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ฝ”๋“œ ์ตœ์ ํ™”ํ•˜๊ธฐ ์‰ฌ์šธ ์ˆ˜๋„ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ C๋ฅผ ๋จผ์ € ๋ฐฐ์› ๋˜ํ„ฐ๋ผ ์˜คํžˆ๋ ค C++ ์ฐธ์กฐ์ž๋ฅผ ํ—ท๊ฐˆ๋ คํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค ๋ณด๋‹ˆ ํ•จ์ˆ˜ ์ธ์ž์—์„œ ์ƒ์ˆ˜ํ˜• ์ฐธ์กฐ์ž ์™ธ์—๋Š” ์“ฐ์ง€ ๋ง๋ผ๋Š” ๊ทœ์น™์ด ํ”ํ•˜๊ฒŒ ์‚ฌ์šฉ๋œ๋‹ค. ๋‹คํ–‰ํžˆ ๋‹ค๋ฅธ ํ˜„๋Œ€ C++ ํ”„๋กœ์ ํŠธ๋Š” ์ ๊ทน์ ์œผ๋กœ ์ฐธ์กฐ์ž๋ฅผ ์“ฐ๊ณ  ์žˆ๋‹ค. LLVM์€ [์ž์œ ๋กญ๊ฒŒ ์ฐธ์กฐ์ž๋ฅผ ์“ด๋‹ค](https://github.com/llvm-mirror/llvm/blob/master/include/llvm/Pass.h#L135)(๋ฌผ๋ก  ์—ฌ์ „ํžˆ ์ƒ์ˆ˜ํ˜• ์ฐธ์กฐ์ž + ํฌ์ธํ„ฐ ์กฐํ•ฉ์ด ํ”ํ•˜์ง€๋งŒ). Chromium์˜ Blink ํ”„๋กœ์ ํŠธ์˜ [ํฌ์ธํ„ฐ์™€ ๋ ˆํผ๋Ÿฐ์Šค์— ๋Œ€ํ•œ ๊ทœ์น™](https://www.chromium.org/blink/coding-style#TOC-Pointers-and-References)์„ ๋ณด๋ฉด ์ฐธ์กฐ์ž์˜ ํ•จ์ˆ˜ ์ธ์ž๋กœ์„œ์˜ ์‚ฌ์šฉ์„ ๊ธˆํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค. ํŽ˜์ด์Šค๋ถ์˜ HHVM ์—ญ์‹œ [์ฐธ์กฐ์ž ์‚ฌ์šฉ ๊ธˆ์ง€ ๊ฐ™์€ ๊ฑด ์—†๋‹ค](https://github.com/facebook/hhvm/blob/master/hphp/doc/coding-conventions.md). ํฌ์ธํ„ฐ๋Š” ์ •๋ง ๋ฉ”๋ชจ๋ฆฌ ๋ฉ์–ด๋ฆฌ๋ฅผ ์ฃผ์†Œ๋กœ ์ ‘๊ทผํ•ด์•ผ ํ•  ๋•Œ๋งŒ ์“ฐ๋ฉด ๋œ๋‹ค. ๋™์  ํ• ๋‹น๋„ `std::make_unique`๊ณผ `std::make_shared`๋กœ๋ถ€ํ„ฐ ์–ป์€ ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ๋ฅผ ์“ฐ๋ฉด ํฌ์ธํ„ฐ ์‚ฌ์šฉ์„ ๊ทน๋‹จ์ ์œผ๋กœ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. ๊ตฌ๊ธ€ ์ฝ”๋”ฉ ๊ฐ€์ด๋“œ๋ผ์ธ ์—ญ์‹œ [์Šค๋งˆํŠธ ํฌ์ธํ„ฐ ์‚ฌ์šฉ์„ ์ ๊ทน ์žฅ๋ คํ•˜๊ณ  ์žˆ๋‹ค](https://google.github.io/styleguide/cppguide.html#Ownership_and_Smart_Pointers). C++11์—์„œ ๋„์ž…๋œ ์šฐ์ธก๊ฐ’ ์ฐธ์กฐ์™€ ๋ฌด๋ธŒ ์‹œ๋งจํ‹ฑ์œผ๋กœ ์ปดํŒŒ์ผ ์‹œ๊ฐ„์— `std::uniqe_ptr`์˜ ์ž˜๋ชป๋œ ์†Œ์œ ๊ถŒ ์ „๋‹ฌ์€ ๊ฐ€๋ ค๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ๋”์šฑ๋” ํฌ์ธํ„ฐ๋ฅผ ๋œ ์จ๋„ ๋˜๋Š” ํ™˜๊ฒฝ์ด๋‹ค. ์ŠคํŠธ๋กญ์ŠคํŠธ๋ฃน ๊ต์ˆ˜๋‹˜์€ ๊ทธ๋ž˜์„œ C++์— ๋Œ€ํ•œ ๊ต์œก ๋ฐฉ๋ฒ•๋„ ๋ฐ”๋€Œ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์—ญ์„คํ•˜์…จ๋‹ค. ์ œ๋ฐœ C++์„ C์˜ ์—ฐ์žฅ์„ ์œผ๋กœ ๊ฐ€๋ฅด์น˜์ง€ ๋ง๋ผ๊ณ . ์žฌ์งํ•˜๋˜ TAMU์—์„œ ํ•™์ƒ๋“ค์„ ํšจ๊ณผ์ ์œผ๋กœ ๊ฐ€๋ฅด์น˜๊ณ ์ž ์ฑ…๊นŒ์ง€ ์ƒˆ๋กœ ์ผ๋‹ค๊ณ  ํ•˜์…จ๋‹ค. ๋ฐ”๋กœ [โ€œProgramming: Principles and Practice Using C++โ€](http://www.stroustrup.com/programming.html)์ด๋‹ค. ์ด ์ฑ…์—์„œ ํฌ์ธํ„ฐ, ๋ฉ”๋ชจ๋ฆฌ, ์ฃผ์†Œ๋Š” ์ „์ฒด 27์žฅ ์ค‘ [17์žฅ์—์„œ ์†Œ๊ฐœํ•œ๋‹ค](http://www.stroustrup.com/PPP2_TOC.pdf). `char*` ๋Œ€์‹ ์— `std::string`์„, ๋ฐฐ์—ด๋ณด๋‹ค๋Š” `std::vector`๋ฅผ ๊ฐ€๋ฅด์ณ์•ผ ํ•œ๋‹ค๊ณ  ํ•˜์…จ๋‹ค. ๊ทธ ๋‹น์‹œ ์˜ค๋ž˜๋œ C ์ฝ”๋“œ์—์„œ ๋ฌธ์ž์—ด, ๋ฐฐ์—ด, ํ•ด์‹œํ…Œ์ด๋ธ”์˜ ๋ถ€์žฌ๋กœ ์—„์ฒญ ๊ณ ์ƒํ•˜๋˜ ๋‚˜๋กœ์„œ๋Š” ์ง„์‹ฌ์œผ๋กœ ์™€ ๋‹ฟ๋Š” ๋ง์”€์ด์—ˆ๋‹ค. ### C++๋ฅผ ์ฒ˜์Œ์œผ๋กœ ๋ฐฐ์šด๋‹ค๋ฉด C๋ฅผ ๋จผ์ € ๋ฐฐ์šธ ํ•„์š”๊ฐ€ ์ ˆ๋Œ€ ์—†์–ด์š”. ์˜คํ•ดํ•˜์ง€ ๋ง์•„์•ผ ํ•  ๊ฒƒ์€ C๊ฐ€ ํ•„์š” ์—†๋‹ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ C๊ฐ€ ํ•„์š”ํ•œ ๊ณณ๋„ ๋งŽ๋‹ค. ๋‹จ์ง€ C++์„ ๋ฐฐ์šธ ๋•Œ C๋ฅผ ๊ฑฐ์น  ํ•„์š” ์—†์ด ์ƒˆ๋กœ์šด ์–ธ์–ด๋กœ ๋ฐฐ์šฐ๋ผ๋Š” ๊ฒƒ์ด๋‹ค. 2015๋…„ cppcon (C++ ์ปจํผ๋Ÿฐ์Šค)์— ํฅ๋ฏธ๋กœ์šด ๊ฐ•์—ฐ์ด ์žˆ์—ˆ๋‹ค. ์ผ€์ดํŠธ ๊ทธ๋ ˆ๊ณ ๋ฆฌ๋ผ๋Š” ๋ถ„์ด โ€œStop Teaching Cโ€๋ผ๋Š” ์ œ๋ชฉ์œผ๋กœ ํ•œ ๊ฐ•์—ฐ์ด๋‹ค([์Šฌ๋ผ์ด๋“œ](https://github.com/CppCon/CppCon2015/blob/master/Presentations/Stop%20Teaching%20C/Stop%20Teaching%20C%20-%20Kate%20Gregory%20-%20CppCon%202015.pptx), [๋™์˜์ƒ](https://www.youtube.com/watch?v=YnWhqhNdYyk)). ๋‚ด๊ฐ€ ์—ฌ๊ธฐ์„œ ์ฃผ์žฅํ•˜๋Š” ๋‚ด์šฉ๊ณผ ๋น„์Šทํ•˜๋‹ค. C๋„ ์•„๋‹Œ C++๋ฅผ ๋ฐฐ์šฐ๋Š”๋ฐ ๋„ˆ๋ฌด ๋นจ๋ฆฌ ํฌ์ธํ„ฐ, `char*` ๊ธฐ๋ฐ˜์˜ ๋ฌธ์ž์—ด, ๋™์  ๋ฐฐ์—ด ๋“ฑ์„ ๊ฐ€๋ฅด์น  ํ•„์š”๋Š” ์—†๋‹ค. ์‹œ์ž‘์€ C++11๋ถ€ํ„ฐ ๋„์ž…๋œ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ์ ๊ทน ์จ์„œ - ๊ฑฐ์ง“๋ง ์•ฝ๊ฐ„ ๋ณดํƒœ - ํŒŒ์ด์ฌ์Šค๋Ÿฝ๊ฒŒ ๊ฐ€๋ฅด์ณ๋„ ๋œ๋‹ค. ํฌ์ธํ„ฐ๋‚˜ ๋™์  ํ• ๋‹น์€ ์ข€ ๋’ค์—์„œ ๋ฐฐ์›Œ๋„ ๊ดœ์ฐฎ๋‹ค. โ€œ์–ด๋–ป๊ฒŒ C/C++์„ ํ•˜๋ฉด์„œ ํฌ์ธํ„ฐ, ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋“ฑ์„ ์•ˆ ๊ฐ€๋ฅด์น  ์ˆ˜ ์žˆ๋ƒ!โ€๋ผ๊ณ  ๋ฐ˜๋ฐ•ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งž๋Š” ๋ง์ด๋‹ค. ํŠนํžˆ C ์–ธ์–ด์— ํ•œ์ •ํ•œ๋‹ค๋ฉด ๋”๋”์šฑ ์˜ณ๋‹ค. 21์„ธ๊ธฐ์— C ์–ธ์–ด๋Š” ๊ธฐ๊ณ„์–ด์™€ ๊ฐ€์žฅ ๊ทผ์ ‘ํ•œ ์–ธ์–ด์ด๋‹ˆ C ์–ธ์–ด์— ์žˆ์–ด ์ปดํ“จํ„ฐ/์‹œ์Šคํ…œ ๊ตฌ์กฐ ์ง€์‹์€ ํ•„์ˆ˜์ด๋‹ค. C++๋„ ์•„์ฃผ ์ž˜ ์“ฐ๋ ค๋ฉด ๊ฒฐ๊ตญ ์ €์ˆ˜์ค€๊นŒ์ง€ ๋‚ด๋ ค๊ฐ€์•ผ ํ•˜์ง€๋งŒ, ๋‚˜์˜ ์ฃผ์žฅ์€ ์‹œ์ž‘๋ถ€ํ„ฐ ๊ดœํžˆ ์ง„์ž… ์žฅ๋ฒฝ์„ ๋†’์ผ ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ฐ€๋œฉ์ด๋‚˜ ์š”์ฆ˜ ๊ฐ™์ด ์›น์ด ๋ชจ๋“  ๊ฒƒ์„ ์žก์•„๋จน์€ ์„ธ์ƒ์—์„  C++ ์กฐ์ฐจ๋„ ๋„ˆ๋ฌด๋‚˜ ์•„๋žซ๋‹จ์— ์žˆ๋‹ค. ์‹œ์•ผ๋ฅผ ์•„๋ž˜๋กœ๋งŒ ํ•œ์ •ํ•  ํ•„์š”๋Š” ์—†๋‹ค. ์•„์ง C++ ์ž…๋ฌธ์„œ ์ค‘ C ์–ธ์–ด์˜ ํ™•์žฅ์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ฑ…๋“ค์ด ๋”๋Ÿฌ ์žˆ๋‹ค. ์‹ฌ๊ฐํ•˜๊ฒŒ ๋น„ํŒํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ, ํ˜„๋Œ€ C++๋„ ๋‚˜์™”๋Š”๋ฐ ๋‹ค๋ฅธ ๊ต์Šต๋ฒ•์ด ์ด์ œ ํ•„์š”ํ•  ๋•Œ๊ฐ€ ์•„๋‹Œ๊ฐ€ ์ƒ๊ฐํ•œ๋‹ค. Yes24 ๊ธฐ์ค€์œผ๋กœ ๊ฐ€์žฅ ๋งŽ์ด ํŒ๋งค๋˜๋Š” [C++ ์ž…๋ฌธ์„œ](http://www.yes24.com/24/viewer/preview/3816661)๋ฅผ ๋ณด๋ฉด ์„œ๋‘ ๋ถ€๋ถ„์— โ€œC++์€ C์–ธ์–ด๋ฅผ ํฌํ•จํ•œ๋‹คโ€๋ผ๋Š” ๋ฌธ๊ตฌ๊ฐ€ ์žˆ๋‹ค. ์—„๋ฐ€ํžˆ ๋งํ•˜์ž๋ฉด ๊ธฐ์ˆ ์ ์œผ๋กœ ํ‹€๋ฆฐ ๋ง์ด๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๋…์ž๊ฐ€ C๋ฅผ ๊ณต๋ถ€ํ–ˆ์Œ์„ ๊ฐ€์ •ํ–ˆ์„ํ…Œ๋‹ˆ ๋ณด๋‹ค ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•˜๊ณ ์ž C ์ด์•ผ๊ธฐ๋ฅผ ๊บผ๋‚ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ์˜คํžˆ๋ ค ๋ฐฉํ•ด๋œ๋‹ค. ์ตœ๊ทผ ์ €์ˆ ๋˜๋Š” C++ ์ž…๋ฌธ์„œ๋Š” ๋น„๊ต์  C์™€ C++์˜ ์ฐจ์ด๋ฅผ ๋ถ„๋ช…ํžˆ ์ธ์ง€ํ•˜๊ณ  ๋‹ค๋ฅธ ์–ธ์–ด๋กœ์„œ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ ๊ฐ™์•„ ๋‹คํ–‰์ด๋‹ค. ### C++: ๊ฐ€๋ณ๊ฒŒ ์ถ”์ƒํ™”ํ•œ ์–ธ์–ด C++์˜ ์‹œ์ž‘์€ C์—์„œ ์‹œ์ž‘๋˜์—ˆ๊ณ , C++์ด ์„ฑ๊ณตํ•œ ๊ฐ€์žฅ ํฐ ์ด์œ ๋Š” ๋ถ„๋ช…ํžˆ C์™€์˜ ํ˜ธํ™˜์„ฑ ๋•Œ๋ฌธ์ด๋‹ค. ํ•˜์ง€๋งŒ ์ง€๊ธˆ์€ - ์•„๋‹ˆ ์ด๋ฏธ ์˜ค๋ž˜์ „๋ถ€ํ„ฐ - ์„œ๋กœ ๋‹ค๋ฅธ ๊ธธ์„ ๊ฐ€๊ณ  ์žˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋„๋Œ€์ฒด C++๋ฅผ ์–ด๋–ป๊ฒŒ ๋ด์•ผ ํ• ๊นŒ? ํ”ํžˆ C++์„ ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด, ๋ฉ€ํ‹ฐํŒจ๋Ÿฌ๋‹ค์ž„ ์–ธ์–ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š”๋ฐ ์žฅ๋‹˜ ์ฝ”๋ผ๋ฆฌ ๋งŒ์ง€๋“ฏ ์ผ๋ถ€๋งŒ ์งš์€ ํ‘œํ˜„์ด๋‹ค. ![](https://minjang.github.io/assets/2016/what-is-cpp-1.png) ์ •๋‹ต์€ ์ŠคํŠธ๋กญ์ŠคํŠธ๋ฃน ๊ต์ˆ˜๋‹˜์˜ ๊ฐ•์—ฐ ๋„์ค‘ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด ๋ช…์พŒํ•˜๊ฒŒ ์ •์˜ํ•˜์˜€๋‹ค. > **โ€œA light-weight abstraction programming languageโ€** > โ€œ๊ฐ€๋ณ๊ฒŒ ์ถ”์ƒํ™”ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ดโ€[3](https://minjang.github.io/2016/03/21/talk-with-stroustrup/#fn:translation) ![](https://minjang.github.io/assets/2016/what-is-cpp-2.png) โ€œ๊ฐ€๋ณ๋‹คโ€๋ผ๋Š” ์ ์—์„œ C์™€ ์•„์ฃผ ํก์‚ฌํ•˜์ง€๋งŒ โ€œ์ถ”์ƒํ™”โ€๋ผ๋Š” ๊ด€์ ์—์„  C++์ด C์™€ ํฌ๊ฒŒ ๋‹ค๋ฅด๋‹ค. ํŠนํžˆ ํ˜„๋Œ€ C++์— ์ถ”๊ฐ€๋œ ๊ธฐ๋Šฅ์€ ์ด ์ฒ ํ•™์„ ์ถฉ์‹คํžˆ ์ง€ํ‚ค๋ฏ€๋กœ ๋”์šฑ ๋ฉ‹์ง„ ์ •๋ฆฌ์ด๋‹ค. C++์„ ๋ฐฐ์šธ ๋•Œ๋„, ๊ฐ€๋ฅด์น  ๋•Œ๋„, ์ด ์ฒ ํ•™์„ ์ƒ๊ธฐํ•˜๋ฉด ์ข‹์ง€ ์•Š์„๊นŒ ์ƒ๊ฐํ•œ๋‹ค. . . . . . . . . . ์‹œ๊ฐ„์ด ๋‹ค ๋  ๋ฌด๋ ต, โ€œThe C++ Programming Languageโ€ ์ฑ…์— ์‚ฌ์ธ์„ ๋ฐ›์œผ๋ฉด์„œ ๋งˆ์ง€๋ง‰์œผ๋กœ ์งง์€ ์งˆ๋ฌธ์„ ๋“œ๋ ธ๋‹ค. > โ€œ์™œ ์“ฐ์‹  ์ฑ…์˜ ์ฝ”๋”ฉ ํฐํŠธ๊ฐ€ ๊ณ ์ • ํญ์ด ์•„๋‹ˆ๋ผ ๊ฐ€๋ณ€ ํญ์œผ๋กœ ํ•˜์…จ์–ด์š”?โ€ > โ€œ์•„, ๊ทธ๊ฑด ๊ฐ€๋ณ€ ํญ์œผ๋กœ ํ•˜๋‹ˆ ํ•œ ์ค„์— ๋” ๋งŽ์ด ์“ธ ์ˆ˜ ์žˆ์–ด์„œ ๊ทธ๋ ‡๊ฒŒ ํ–ˆ์–ด์š”.โ€ 1. ์ง€๊ธˆ์€ ๋‰ด์š•์˜ ๋ชจ๊ฑด ์Šคํƒ ๋ฆฌ์— ์žฌ์ง ์ค‘. [โ†ฉ](https://minjang.github.io/2016/03/21/talk-with-stroustrup/#fnref:bs) 2. ๊ฐ™์€ ๋‚ด์šฉ์œผ๋กœ ํ•œ ๊ฐ•์˜๋ฅผ [์—ฌ๊ธฐ์„œ](https://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Keynote-Bjarne-Stroustrup-Cpp11-Style), ์Šฌ๋ผ์ด๋“œ๋Š” [์—ฌ๊ธฐ์„œ](https://parasol.tamu.edu/people/bs/622-GP/C++11-style.pdf) ๋ณผ ์ˆ˜ ์žˆ๋‹ค. [โ†ฉ](https://minjang.github.io/2016/03/21/talk-with-stroustrup/#fnref:talk) 3. ์˜์–ด ๊ทธ๋Œ€๋กœ โ€œ๊ฐ€๋ฒผ์šด ์ถ”์ƒํ™” ์–ธ์–ดโ€๋ผ๊ณ  ์“ฐ๋ฉด ์ข€ ๋ชจํ˜ธํ•˜๋‹ค. ์–ผํ• โ€œ์ถ”์ƒํ™”๋œโ€์œผ๋กœ ์˜ฎ๊ฒจ์•ผํ•  ๊ฒƒ ๊ฐ™์•˜๋Š”๋ฐ, ๋” ์ƒ๊ฐํ•ด๋ณด๋‹ˆ C++์€ ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋Šฅ์„ ๊ฐ€๋ณ๊ฒŒ ์ถ”์ƒํ™” ํ–ˆ์œผ๋ฏ€๋กœ โ€œ์ถ”์ƒํ™”ํ•œโ€์ด ๋” ๋งค๋„๋Ÿฌ์šด ์šฐ๋ฆฌ๋ง ํ‘œํ˜„์ผ ๋“ฏ ํ•˜๋‹ค. [โ†ฉ](https://minjang.github.io/2016/03/21/talk-with-stroustrup/#fnref:translation) Please enable JavaScript to view the [comments powered by Disqus.](https://disqus.com/?ref_noscript) Copyright 2016 Minjang Kim
Readable Markdown
2013๋…„ ์—ฌ๋ฆ„, C++์„ ๋งŒ๋“œ์‹  ๋‹น์‹œ ํ…์‚ฌ์Šค A\&M(TAMU) ๊ต์ˆ˜์˜€๋˜[1](https://minjang.github.io/2016/03/21/talk-with-stroustrup/#fn:bs) ๋น„์•ผ๋„ค ์ŠคํŠธ๋กญ์ŠคํŠธ๋ฃน([Bjarne Stroustrup](https://en.wikipedia.org/wiki/Bjarne_Stroustrup)) ๊ต์ˆ˜๋‹˜์ด ๋‚ด๊ฐ€ ์ผํ•˜๋Š” ๊ทธ๋ฃน์— ์˜ค์…”์„œ ํ˜„๋Œ€ C++์— ๋Œ€ํ•œ ๊ฐ•์˜๋ฅผ ํ•˜์…จ๋‹ค.[2](https://minjang.github.io/2016/03/21/talk-with-stroustrup/#fn:talk) ๋ณดํ†ต ์ด๋Ÿฐ ๊ฐ•์˜๊ฐ€ ๋๋‚˜๋ฉด 30๋ถ„ ์ •๋„์˜ 1:1 ๋งŒ๋‚จ์„ ์‹ ์ฒญํ•  ์ˆ˜ ์žˆ๋‹ค. ์–ธ์ œ ๋˜ C++ ์ฐฝ์‹œ์ž๋‹˜๊ณผ ๋Œ€ํ™”๋ฅผ ๋‚˜๋ˆ ๋ณผ๊นŒ ์‹ถ์–ด์„œ ๋ƒ‰ํผ ์‹ ์ฒญํ–ˆ๊ณ  ์ด์•ผ๊ธฐ๋ฅผ ๋‚˜๋ˆด๋‹ค. ์šฐ๋ฆฌํŒ€์ด ํ•˜๊ณ  ์žˆ๋˜ ํ”„๋กœ์ ํŠธ ๊ด€๋ จ ์กฐ์–ธ์„ ์ข€ ๊ตฌํ•œ ๋’ค, ์ผ๋ฐ˜์ ์ธ ์งˆ๋ฌธ๋„ ์ข€ ๋“œ๋ ค๋ดค๋‹ค. ๋ฉ์ฒญํ•œ ์งˆ๋ฌธ์€ ์•„๋‹๊นŒ ์กฐ๋งˆ์กฐ๋งˆํ–ˆ๋‹ค. ์ฃผ๋กœ C++์—์„œ ํฌ์ธํ„ฐ ์‚ฌ์šฉ๊ณผ ์˜ฌ๋ฐ”๋ฅธ C++ ํ•™์Šต์— ๋Œ€ํ•ด ์˜๊ฒฌ์„ ๋‚˜๋ˆด๋‹ค. ์ œ๋ชฉ์ด ๋งํ•˜๋“ฏ์ด C++์„ ๋ฐฐ์šฐ๋Š”๋ฐ ๋”๋Š” C๋ฅผ ๊ฑฐ์น  ํ•„์š”๊ฐ€ ์—†๋‹ค. ์งง์•˜์ง€๋งŒ ์ด ๋Œ€ํ™” ์ดํ›„์— ๋ณด๋‹ค ๋‹ค๋ฅธ ์‹œ๊ฐ์œผ๋กœ C++์„ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค. ### C++์—์„œ C ํฌ์ธํ„ฐ ์‚ฌ์šฉ์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์„ธ์š”? ์ด๋Ÿฐ ์งˆ๋ฌธ์„ ๋“œ๋ ค๋ดค๋‹ค. > โ€œ๊ตฌ๊ธ€์˜ C++ ์ฝ”๋”ฉ ๊ฐ€์ด๋“œ๋ผ์ธ์„ ๋ณด๋ฉด [ํ•จ์ˆ˜ ์ธ์ž๋กœ ํฌ์ธํ„ฐ ์•„๋‹ˆ๋ฉด ์ƒ์ˆ˜ํ˜• ์ฐธ์กฐ์ž๋งŒ ์“ฐ๋ผ๊ณ ](https://google.github.io/styleguide/cppguide.html#Reference_Arguments) ํ•ฉ๋‹ˆ๋‹ค. ์ €ํฌ ํŒ€ ์—ญ์‹œ ์ฐธ์กฐ์ž๋Š” ์ž˜ ์“ฐ์ง€ ์•Š๊ณ  ํฌ์ธํ„ฐ๋ฅผ ์ž์ฃผ ์”๋‹ˆ๋‹ค. ์ตœ์ดˆ์˜ C++์€ C๋ฅผ ๋ฐœ์ „์‹œ์ผœ์„œ ๋งŒ๋“  ํ„ฐ๋ผ C์˜ ํฌ์ธํ„ฐ๋ฅผ ๊ทธ๋Œ€๋กœ ๊ณ„์Šนํ•˜๊ณ  ์žˆ๋Š”๋ฐ์š”. ํ˜น์‹œ ํฌ์ธํ„ฐ๋ฅผ ์ข‹์•„ํ•˜์„ธ์š”? ์—ฌ์ „ํžˆ ์ฐธ์กฐ์ž๊ฐ€ ์ฒœ๋Œ€๋ฐ›๋Š” ์ฝ”๋”ฉ ๊ทœ์น™์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์„ธ์š”?โ€ ๋‚˜์˜ ์˜ˆ์ƒ์€ ํฌ์ธํ„ฐ๋ฅผ ์•„๋งˆ๋„ ์‹ซ์–ด ํ•˜์‹œ๊ฒ ์ง€๋งŒ, ์˜ํ–ฅ๋ ฅ ์žˆ๋Š” ๋ฐœ์–ธ์„ ํ•˜์‹œ๋Š” ๋ถ„์ด๋‹ˆ ๋น„ํŒ์„ ํ•˜๋”๋ผ๋„ ๋‹ค์†Œ ์™„๊ณกํ•œ ํ‘œํ˜„์„ ์“ฐ์ง€ ์•Š์„๊นŒ์˜€๋‹ค. ์•„๋‹ˆ์—ˆ๋‹ค. ํ•œ์ˆจ์„ ๋‚ด์‰ฌ๋ฉด์„œ ์ƒ๊ฐ๋ณด๋‹ค ๊ต‰์žฅํ•œ ์–ด์กฐ๋กœ ํฌ์ธํ„ฐ๋ฅผ ์‹ซ์–ดํ•œ๋‹ค๊ณ  ๋ง์”€ํ•˜์…จ๋‹ค. ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ์™€ ์ฐธ์กฐ์ž๋ฅผ ์“ธ ๊ฒƒ์„ ๊ถŒ์œ ํ•˜์…จ๋‹ค. ๋‚˜ ์—ญ์‹œ ํฌ์ธํ„ฐ๋ฅผ ๋„ˆ๋ฌด C++์—์„œ ๋‚จ์šฉํ•˜๋Š” ๊ฒƒ ๊ฐ™์•„ ์‹ซ์–ดํ–ˆ์ง€๋งŒ, ์ฃผ์š” ์ฝ”๋”ฉ ๊ทœ์น™๋“ค์ด ํฌ์ธํ„ฐ๋ฅผ ๋” ์šฐ์„ ์‹œ ํ•˜๋‹ˆ ์–ด์ฉ” ์ˆ˜๊ฐ€ ์—†์—ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, C++ ๋งŒ๋“œ์‹  ๋ถ„์กฐ์ฐจ ์ด๋ ‡๊ฒŒ ํ™•์‹คํ•œ ํƒœ๋„๋กœ ํฌ์ธํ„ฐ๋ฅผ ๋น„ํŒํ•˜์‹œ๋‹ˆ ํ•œํŽธ์œผ๋ก  ์œ„์•ˆ, ํ•œํŽธ์œผ๋ก  ํ˜ธ๋ถˆํ˜ธ๋ฅผ ๊ฑฐ์นจ์—†์ด ํ‘œํ˜„ํ•˜์‹œ๋Š” ๊ฒƒ์ด ๋ฌด์ฒ™ ํฅ๋ฏธ๋กœ์› ๋‹ค. ๋ฆฌ๋ˆ„์Šค ํˆฌ๋ฅด๋ฐœ์Šค์˜ ๊ทธ ์œ ๋ช…ํ•œ โ€œ[์—”๋น„๋””์•„, f\*\*\* you](https://www.youtube.com/watch?v=_36yNWw_07g)โ€ ์ •๋„๋Š” ์•„๋‹ˆ์—ˆ์ง€๋งŒ, ๋‹น์‹œ ๋‚ด ๋А๋‚Œ์€ ์ƒ๋‹นํžˆ ์‹ ์„ ํ–ˆ๋‹ค. ์ƒ๊ฐํ•ด๋ณด๋ฉด C ์Šคํƒ€์ผ์˜ ํฌ์ธํ„ฐ๋ฅผ C++์—์„œ ๊ทธ๋ ‡๊ฒŒ ์“ธ ํ•„์š”๊ฐ€ ์—†๋‹ค. ๋ฌด์—‡๋ณด๋‹ค ํฌ์ธํ„ฐ์— ๋Œ€ํ•œ ์˜คํ•ด๊ฐ€ ๋„ˆ๋ฌด ์‹ฌํ•˜๋‹ค. ํฌ์ธํ„ฐ, ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ๋ฌด์—‡์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์ฐธ์กฐํ•œ๋‹ค๋Š” ๊ฐœ๋…์€ ์ž๋ฐ”๋‚˜ ํŒŒ์ด์ฌ ๊ฐ™์€ ๋ช…์‹œ์ ์ธ ํฌ์ธํ„ฐ๊ฐ€ ์—†๋Š” ์–ธ์–ด์—๋„ ์žˆ๋‹ค. ์ด๊ฑธ ๋ชจ๋ฅด๋ฉด ์ œ๋Œ€๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ์ˆ˜ ์—†๋‹ค. C/C++๊ฐ€ ์–ด๋ ค์šด ์ด์œ ๋กœ โ€˜ํฌ์ธํ„ฐโ€™๋ฅผ ๊ผฝ๋Š” ๊ฒƒ์€ ์ž˜๋ชป๋˜์—ˆ๋‹ค. ์ •ํ™•ํžˆ ๋งํ•˜์ž๋ฉด, ๊ฐ€๋ฆฌํ‚ค๋Š” ํ–‰์œ„๊ฐ€ ์ฐธ์กฐ์ž ๊ฐ™์€ ๊ฒƒ์œผ๋กœ ์ถ”์ƒํ™”๋˜์ง€ ์•Š์•˜๊ณ , ๊ณ ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ง์ ‘ ์ฃผ์†Œ๋ฅผ ์–ป์–ด ๊ทธ ๊ฐ’์„ ๋‹ค๋ค„์•ผ ํ•˜๋‹ˆ ์–ด๋ ค์šด ๊ฒƒ์ด๋‹ค. C ์–ธ์–ด๋Š” call-by-reference๋„ ์—†๋‹ค. ์ฃผ์†Œ ๊ฐ’์„ ๋‹ด๊ณ  ์žˆ๋Š” ํฌ์ธํ„ฐ๊ฐ€ ๊ทธ๋ƒฅ call-by-value๋กœ ๋ถˆ๋ฆด ๋ฟ์ด๋‹ค. ํฌ์ธํ„ฐ๋Š” ๋ณ„ ์ด์ƒํ•œ ๋…€์„๋„ ์•„๋‹ˆ๊ณ  ๊ทธ์ € ์ฃผ์†Œ ๊ฐ’์„ ๋‹ด๊ณ  ์žˆ๋Š” ์™„๋ฒฝํ•œ ๋ณ€์ˆ˜์ด๋‹ค. C++์˜ ์ฐธ์กฐ์ž๋Š” ์ด๋Ÿฐ ํฌ์ธํ„ฐ์˜ ๋ฌธ์ œ๋ฅผ - ์™„๋ฒฝํ•˜์ง€๋Š” ์•Š์ง€๋งŒ - ์กฐ๊ธˆ์ด๋ผ๋„ ์‰ฝ๊ฒŒ ํ•œ๋‹ค. C++ ์ฐธ์กฐ์ž๋Š” ์„ ์–ธ๊ณผ ํ•จ๊ป˜ ๋ฐ˜๋“œ์‹œ ์ดˆ๊ธฐํ™”๋˜์–ด์•ผ ํ•˜๋ฉฐ, ๊ทธ๋•Œ ์ •ํ•ด์ง„ ๋Œ€์ƒ์€ ๋‚˜์ค‘์— ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋‹ค. ํฌ์ธํ„ฐ์™€ ๊ทผ๋ณธ์ ์œผ๋กœ ๋‹ค๋ฅธ ์ ์ด๋‹ค. C++ ์ฐธ์กฐ์ž๋Š” ์‹ค์ œ ๋ณ€์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ค. ์ฐธ์กฐ์ž๋ฅผ ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ์“ฐ์ง€๋งŒ, ์‹ค์ œ ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ์–ด์„œ ์ฃผ์†Œ ๊ฐ’์„ ์–ป์„ ์ˆ˜ ์—†๋‹ค. ๊ฐ€๋ฆฌํ‚ค๋Š” ๋Œ€์ƒ์ด ํฌ์ธํ„ฐ์ฒ˜๋Ÿผ ๋ฌด์ œํ•œ์ ์ด์ง€ ์•Š์•„์„œ (์•„๋งˆ๋„) ์ตœ๋Œ€ํ•œ ์ฐธ์กฐ์ž๋กœ๋งŒ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ฝ”๋“œ ์ตœ์ ํ™”ํ•˜๊ธฐ ์‰ฌ์šธ ์ˆ˜๋„ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ C๋ฅผ ๋จผ์ € ๋ฐฐ์› ๋˜ํ„ฐ๋ผ ์˜คํžˆ๋ ค C++ ์ฐธ์กฐ์ž๋ฅผ ํ—ท๊ฐˆ๋ คํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค ๋ณด๋‹ˆ ํ•จ์ˆ˜ ์ธ์ž์—์„œ ์ƒ์ˆ˜ํ˜• ์ฐธ์กฐ์ž ์™ธ์—๋Š” ์“ฐ์ง€ ๋ง๋ผ๋Š” ๊ทœ์น™์ด ํ”ํ•˜๊ฒŒ ์‚ฌ์šฉ๋œ๋‹ค. ๋‹คํ–‰ํžˆ ๋‹ค๋ฅธ ํ˜„๋Œ€ C++ ํ”„๋กœ์ ํŠธ๋Š” ์ ๊ทน์ ์œผ๋กœ ์ฐธ์กฐ์ž๋ฅผ ์“ฐ๊ณ  ์žˆ๋‹ค. LLVM์€ [์ž์œ ๋กญ๊ฒŒ ์ฐธ์กฐ์ž๋ฅผ ์“ด๋‹ค](https://github.com/llvm-mirror/llvm/blob/master/include/llvm/Pass.h#L135)(๋ฌผ๋ก  ์—ฌ์ „ํžˆ ์ƒ์ˆ˜ํ˜• ์ฐธ์กฐ์ž + ํฌ์ธํ„ฐ ์กฐํ•ฉ์ด ํ”ํ•˜์ง€๋งŒ). Chromium์˜ Blink ํ”„๋กœ์ ํŠธ์˜ [ํฌ์ธํ„ฐ์™€ ๋ ˆํผ๋Ÿฐ์Šค์— ๋Œ€ํ•œ ๊ทœ์น™](https://www.chromium.org/blink/coding-style#TOC-Pointers-and-References)์„ ๋ณด๋ฉด ์ฐธ์กฐ์ž์˜ ํ•จ์ˆ˜ ์ธ์ž๋กœ์„œ์˜ ์‚ฌ์šฉ์„ ๊ธˆํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค. ํŽ˜์ด์Šค๋ถ์˜ HHVM ์—ญ์‹œ [์ฐธ์กฐ์ž ์‚ฌ์šฉ ๊ธˆ์ง€ ๊ฐ™์€ ๊ฑด ์—†๋‹ค](https://github.com/facebook/hhvm/blob/master/hphp/doc/coding-conventions.md). ํฌ์ธํ„ฐ๋Š” ์ •๋ง ๋ฉ”๋ชจ๋ฆฌ ๋ฉ์–ด๋ฆฌ๋ฅผ ์ฃผ์†Œ๋กœ ์ ‘๊ทผํ•ด์•ผ ํ•  ๋•Œ๋งŒ ์“ฐ๋ฉด ๋œ๋‹ค. ๋™์  ํ• ๋‹น๋„ `std::make_unique`๊ณผ `std::make_shared`๋กœ๋ถ€ํ„ฐ ์–ป์€ ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ๋ฅผ ์“ฐ๋ฉด ํฌ์ธํ„ฐ ์‚ฌ์šฉ์„ ๊ทน๋‹จ์ ์œผ๋กœ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. ๊ตฌ๊ธ€ ์ฝ”๋”ฉ ๊ฐ€์ด๋“œ๋ผ์ธ ์—ญ์‹œ [์Šค๋งˆํŠธ ํฌ์ธํ„ฐ ์‚ฌ์šฉ์„ ์ ๊ทน ์žฅ๋ คํ•˜๊ณ  ์žˆ๋‹ค](https://google.github.io/styleguide/cppguide.html#Ownership_and_Smart_Pointers). C++11์—์„œ ๋„์ž…๋œ ์šฐ์ธก๊ฐ’ ์ฐธ์กฐ์™€ ๋ฌด๋ธŒ ์‹œ๋งจํ‹ฑ์œผ๋กœ ์ปดํŒŒ์ผ ์‹œ๊ฐ„์— `std::uniqe_ptr`์˜ ์ž˜๋ชป๋œ ์†Œ์œ ๊ถŒ ์ „๋‹ฌ์€ ๊ฐ€๋ ค๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ๋”์šฑ๋” ํฌ์ธํ„ฐ๋ฅผ ๋œ ์จ๋„ ๋˜๋Š” ํ™˜๊ฒฝ์ด๋‹ค. ์ŠคํŠธ๋กญ์ŠคํŠธ๋ฃน ๊ต์ˆ˜๋‹˜์€ ๊ทธ๋ž˜์„œ C++์— ๋Œ€ํ•œ ๊ต์œก ๋ฐฉ๋ฒ•๋„ ๋ฐ”๋€Œ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์—ญ์„คํ•˜์…จ๋‹ค. ์ œ๋ฐœ C++์„ C์˜ ์—ฐ์žฅ์„ ์œผ๋กœ ๊ฐ€๋ฅด์น˜์ง€ ๋ง๋ผ๊ณ . ์žฌ์งํ•˜๋˜ TAMU์—์„œ ํ•™์ƒ๋“ค์„ ํšจ๊ณผ์ ์œผ๋กœ ๊ฐ€๋ฅด์น˜๊ณ ์ž ์ฑ…๊นŒ์ง€ ์ƒˆ๋กœ ์ผ๋‹ค๊ณ  ํ•˜์…จ๋‹ค. ๋ฐ”๋กœ [โ€œProgramming: Principles and Practice Using C++โ€](http://www.stroustrup.com/programming.html)์ด๋‹ค. ์ด ์ฑ…์—์„œ ํฌ์ธํ„ฐ, ๋ฉ”๋ชจ๋ฆฌ, ์ฃผ์†Œ๋Š” ์ „์ฒด 27์žฅ ์ค‘ [17์žฅ์—์„œ ์†Œ๊ฐœํ•œ๋‹ค](http://www.stroustrup.com/PPP2_TOC.pdf). `char*` ๋Œ€์‹ ์— `std::string`์„, ๋ฐฐ์—ด๋ณด๋‹ค๋Š” `std::vector`๋ฅผ ๊ฐ€๋ฅด์ณ์•ผ ํ•œ๋‹ค๊ณ  ํ•˜์…จ๋‹ค. ๊ทธ ๋‹น์‹œ ์˜ค๋ž˜๋œ C ์ฝ”๋“œ์—์„œ ๋ฌธ์ž์—ด, ๋ฐฐ์—ด, ํ•ด์‹œํ…Œ์ด๋ธ”์˜ ๋ถ€์žฌ๋กœ ์—„์ฒญ ๊ณ ์ƒํ•˜๋˜ ๋‚˜๋กœ์„œ๋Š” ์ง„์‹ฌ์œผ๋กœ ์™€ ๋‹ฟ๋Š” ๋ง์”€์ด์—ˆ๋‹ค. ### C++๋ฅผ ์ฒ˜์Œ์œผ๋กœ ๋ฐฐ์šด๋‹ค๋ฉด C๋ฅผ ๋จผ์ € ๋ฐฐ์šธ ํ•„์š”๊ฐ€ ์ ˆ๋Œ€ ์—†์–ด์š”. ์˜คํ•ดํ•˜์ง€ ๋ง์•„์•ผ ํ•  ๊ฒƒ์€ C๊ฐ€ ํ•„์š” ์—†๋‹ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ C๊ฐ€ ํ•„์š”ํ•œ ๊ณณ๋„ ๋งŽ๋‹ค. ๋‹จ์ง€ C++์„ ๋ฐฐ์šธ ๋•Œ C๋ฅผ ๊ฑฐ์น  ํ•„์š” ์—†์ด ์ƒˆ๋กœ์šด ์–ธ์–ด๋กœ ๋ฐฐ์šฐ๋ผ๋Š” ๊ฒƒ์ด๋‹ค. 2015๋…„ cppcon (C++ ์ปจํผ๋Ÿฐ์Šค)์— ํฅ๋ฏธ๋กœ์šด ๊ฐ•์—ฐ์ด ์žˆ์—ˆ๋‹ค. ์ผ€์ดํŠธ ๊ทธ๋ ˆ๊ณ ๋ฆฌ๋ผ๋Š” ๋ถ„์ด โ€œStop Teaching Cโ€๋ผ๋Š” ์ œ๋ชฉ์œผ๋กœ ํ•œ ๊ฐ•์—ฐ์ด๋‹ค([์Šฌ๋ผ์ด๋“œ](https://github.com/CppCon/CppCon2015/blob/master/Presentations/Stop%20Teaching%20C/Stop%20Teaching%20C%20-%20Kate%20Gregory%20-%20CppCon%202015.pptx), [๋™์˜์ƒ](https://www.youtube.com/watch?v=YnWhqhNdYyk)). ๋‚ด๊ฐ€ ์—ฌ๊ธฐ์„œ ์ฃผ์žฅํ•˜๋Š” ๋‚ด์šฉ๊ณผ ๋น„์Šทํ•˜๋‹ค. C๋„ ์•„๋‹Œ C++๋ฅผ ๋ฐฐ์šฐ๋Š”๋ฐ ๋„ˆ๋ฌด ๋นจ๋ฆฌ ํฌ์ธํ„ฐ, `char*` ๊ธฐ๋ฐ˜์˜ ๋ฌธ์ž์—ด, ๋™์  ๋ฐฐ์—ด ๋“ฑ์„ ๊ฐ€๋ฅด์น  ํ•„์š”๋Š” ์—†๋‹ค. ์‹œ์ž‘์€ C++11๋ถ€ํ„ฐ ๋„์ž…๋œ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ์ ๊ทน ์จ์„œ - ๊ฑฐ์ง“๋ง ์•ฝ๊ฐ„ ๋ณดํƒœ - ํŒŒ์ด์ฌ์Šค๋Ÿฝ๊ฒŒ ๊ฐ€๋ฅด์ณ๋„ ๋œ๋‹ค. ํฌ์ธํ„ฐ๋‚˜ ๋™์  ํ• ๋‹น์€ ์ข€ ๋’ค์—์„œ ๋ฐฐ์›Œ๋„ ๊ดœ์ฐฎ๋‹ค. โ€œ์–ด๋–ป๊ฒŒ C/C++์„ ํ•˜๋ฉด์„œ ํฌ์ธํ„ฐ, ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋“ฑ์„ ์•ˆ ๊ฐ€๋ฅด์น  ์ˆ˜ ์žˆ๋ƒ!โ€๋ผ๊ณ  ๋ฐ˜๋ฐ•ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งž๋Š” ๋ง์ด๋‹ค. ํŠนํžˆ C ์–ธ์–ด์— ํ•œ์ •ํ•œ๋‹ค๋ฉด ๋”๋”์šฑ ์˜ณ๋‹ค. 21์„ธ๊ธฐ์— C ์–ธ์–ด๋Š” ๊ธฐ๊ณ„์–ด์™€ ๊ฐ€์žฅ ๊ทผ์ ‘ํ•œ ์–ธ์–ด์ด๋‹ˆ C ์–ธ์–ด์— ์žˆ์–ด ์ปดํ“จํ„ฐ/์‹œ์Šคํ…œ ๊ตฌ์กฐ ์ง€์‹์€ ํ•„์ˆ˜์ด๋‹ค. C++๋„ ์•„์ฃผ ์ž˜ ์“ฐ๋ ค๋ฉด ๊ฒฐ๊ตญ ์ €์ˆ˜์ค€๊นŒ์ง€ ๋‚ด๋ ค๊ฐ€์•ผ ํ•˜์ง€๋งŒ, ๋‚˜์˜ ์ฃผ์žฅ์€ ์‹œ์ž‘๋ถ€ํ„ฐ ๊ดœํžˆ ์ง„์ž… ์žฅ๋ฒฝ์„ ๋†’์ผ ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ฐ€๋œฉ์ด๋‚˜ ์š”์ฆ˜ ๊ฐ™์ด ์›น์ด ๋ชจ๋“  ๊ฒƒ์„ ์žก์•„๋จน์€ ์„ธ์ƒ์—์„  C++ ์กฐ์ฐจ๋„ ๋„ˆ๋ฌด๋‚˜ ์•„๋žซ๋‹จ์— ์žˆ๋‹ค. ์‹œ์•ผ๋ฅผ ์•„๋ž˜๋กœ๋งŒ ํ•œ์ •ํ•  ํ•„์š”๋Š” ์—†๋‹ค. ์•„์ง C++ ์ž…๋ฌธ์„œ ์ค‘ C ์–ธ์–ด์˜ ํ™•์žฅ์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ฑ…๋“ค์ด ๋”๋Ÿฌ ์žˆ๋‹ค. ์‹ฌ๊ฐํ•˜๊ฒŒ ๋น„ํŒํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ, ํ˜„๋Œ€ C++๋„ ๋‚˜์™”๋Š”๋ฐ ๋‹ค๋ฅธ ๊ต์Šต๋ฒ•์ด ์ด์ œ ํ•„์š”ํ•  ๋•Œ๊ฐ€ ์•„๋‹Œ๊ฐ€ ์ƒ๊ฐํ•œ๋‹ค. Yes24 ๊ธฐ์ค€์œผ๋กœ ๊ฐ€์žฅ ๋งŽ์ด ํŒ๋งค๋˜๋Š” [C++ ์ž…๋ฌธ์„œ](http://www.yes24.com/24/viewer/preview/3816661)๋ฅผ ๋ณด๋ฉด ์„œ๋‘ ๋ถ€๋ถ„์— โ€œC++์€ C์–ธ์–ด๋ฅผ ํฌํ•จํ•œ๋‹คโ€๋ผ๋Š” ๋ฌธ๊ตฌ๊ฐ€ ์žˆ๋‹ค. ์—„๋ฐ€ํžˆ ๋งํ•˜์ž๋ฉด ๊ธฐ์ˆ ์ ์œผ๋กœ ํ‹€๋ฆฐ ๋ง์ด๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๋…์ž๊ฐ€ C๋ฅผ ๊ณต๋ถ€ํ–ˆ์Œ์„ ๊ฐ€์ •ํ–ˆ์„ํ…Œ๋‹ˆ ๋ณด๋‹ค ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•˜๊ณ ์ž C ์ด์•ผ๊ธฐ๋ฅผ ๊บผ๋‚ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ์˜คํžˆ๋ ค ๋ฐฉํ•ด๋œ๋‹ค. ์ตœ๊ทผ ์ €์ˆ ๋˜๋Š” C++ ์ž…๋ฌธ์„œ๋Š” ๋น„๊ต์  C์™€ C++์˜ ์ฐจ์ด๋ฅผ ๋ถ„๋ช…ํžˆ ์ธ์ง€ํ•˜๊ณ  ๋‹ค๋ฅธ ์–ธ์–ด๋กœ์„œ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ ๊ฐ™์•„ ๋‹คํ–‰์ด๋‹ค. ### C++: ๊ฐ€๋ณ๊ฒŒ ์ถ”์ƒํ™”ํ•œ ์–ธ์–ด C++์˜ ์‹œ์ž‘์€ C์—์„œ ์‹œ์ž‘๋˜์—ˆ๊ณ , C++์ด ์„ฑ๊ณตํ•œ ๊ฐ€์žฅ ํฐ ์ด์œ ๋Š” ๋ถ„๋ช…ํžˆ C์™€์˜ ํ˜ธํ™˜์„ฑ ๋•Œ๋ฌธ์ด๋‹ค. ํ•˜์ง€๋งŒ ์ง€๊ธˆ์€ - ์•„๋‹ˆ ์ด๋ฏธ ์˜ค๋ž˜์ „๋ถ€ํ„ฐ - ์„œ๋กœ ๋‹ค๋ฅธ ๊ธธ์„ ๊ฐ€๊ณ  ์žˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋„๋Œ€์ฒด C++๋ฅผ ์–ด๋–ป๊ฒŒ ๋ด์•ผ ํ• ๊นŒ? ํ”ํžˆ C++์„ ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด, ๋ฉ€ํ‹ฐํŒจ๋Ÿฌ๋‹ค์ž„ ์–ธ์–ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š”๋ฐ ์žฅ๋‹˜ ์ฝ”๋ผ๋ฆฌ ๋งŒ์ง€๋“ฏ ์ผ๋ถ€๋งŒ ์งš์€ ํ‘œํ˜„์ด๋‹ค. ![](https://minjang.github.io/assets/2016/what-is-cpp-1.png) ์ •๋‹ต์€ ์ŠคํŠธ๋กญ์ŠคํŠธ๋ฃน ๊ต์ˆ˜๋‹˜์˜ ๊ฐ•์—ฐ ๋„์ค‘ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด ๋ช…์พŒํ•˜๊ฒŒ ์ •์˜ํ•˜์˜€๋‹ค. > **โ€œA light-weight abstraction programming languageโ€** > โ€œ๊ฐ€๋ณ๊ฒŒ ์ถ”์ƒํ™”ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ดโ€[3](https://minjang.github.io/2016/03/21/talk-with-stroustrup/#fn:translation) ![](https://minjang.github.io/assets/2016/what-is-cpp-2.png) โ€œ๊ฐ€๋ณ๋‹คโ€๋ผ๋Š” ์ ์—์„œ C์™€ ์•„์ฃผ ํก์‚ฌํ•˜์ง€๋งŒ โ€œ์ถ”์ƒํ™”โ€๋ผ๋Š” ๊ด€์ ์—์„  C++์ด C์™€ ํฌ๊ฒŒ ๋‹ค๋ฅด๋‹ค. ํŠนํžˆ ํ˜„๋Œ€ C++์— ์ถ”๊ฐ€๋œ ๊ธฐ๋Šฅ์€ ์ด ์ฒ ํ•™์„ ์ถฉ์‹คํžˆ ์ง€ํ‚ค๋ฏ€๋กœ ๋”์šฑ ๋ฉ‹์ง„ ์ •๋ฆฌ์ด๋‹ค. C++์„ ๋ฐฐ์šธ ๋•Œ๋„, ๊ฐ€๋ฅด์น  ๋•Œ๋„, ์ด ์ฒ ํ•™์„ ์ƒ๊ธฐํ•˜๋ฉด ์ข‹์ง€ ์•Š์„๊นŒ ์ƒ๊ฐํ•œ๋‹ค. . . . . . . . . . ์‹œ๊ฐ„์ด ๋‹ค ๋  ๋ฌด๋ ต, โ€œThe C++ Programming Languageโ€ ์ฑ…์— ์‚ฌ์ธ์„ ๋ฐ›์œผ๋ฉด์„œ ๋งˆ์ง€๋ง‰์œผ๋กœ ์งง์€ ์งˆ๋ฌธ์„ ๋“œ๋ ธ๋‹ค. > โ€œ์™œ ์“ฐ์‹  ์ฑ…์˜ ์ฝ”๋”ฉ ํฐํŠธ๊ฐ€ ๊ณ ์ • ํญ์ด ์•„๋‹ˆ๋ผ ๊ฐ€๋ณ€ ํญ์œผ๋กœ ํ•˜์…จ์–ด์š”?โ€ > โ€œ์•„, ๊ทธ๊ฑด ๊ฐ€๋ณ€ ํญ์œผ๋กœ ํ•˜๋‹ˆ ํ•œ ์ค„์— ๋” ๋งŽ์ด ์“ธ ์ˆ˜ ์žˆ์–ด์„œ ๊ทธ๋ ‡๊ฒŒ ํ–ˆ์–ด์š”.โ€ 1. ์ง€๊ธˆ์€ ๋‰ด์š•์˜ ๋ชจ๊ฑด ์Šคํƒ ๋ฆฌ์— ์žฌ์ง ์ค‘. [โ†ฉ](https://minjang.github.io/2016/03/21/talk-with-stroustrup/#fnref:bs) 2. ๊ฐ™์€ ๋‚ด์šฉ์œผ๋กœ ํ•œ ๊ฐ•์˜๋ฅผ [์—ฌ๊ธฐ์„œ](https://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Keynote-Bjarne-Stroustrup-Cpp11-Style), ์Šฌ๋ผ์ด๋“œ๋Š” [์—ฌ๊ธฐ์„œ](https://parasol.tamu.edu/people/bs/622-GP/C++11-style.pdf) ๋ณผ ์ˆ˜ ์žˆ๋‹ค. [โ†ฉ](https://minjang.github.io/2016/03/21/talk-with-stroustrup/#fnref:talk) 3. ์˜์–ด ๊ทธ๋Œ€๋กœ โ€œ๊ฐ€๋ฒผ์šด ์ถ”์ƒํ™” ์–ธ์–ดโ€๋ผ๊ณ  ์“ฐ๋ฉด ์ข€ ๋ชจํ˜ธํ•˜๋‹ค. ์–ผํ• โ€œ์ถ”์ƒํ™”๋œโ€์œผ๋กœ ์˜ฎ๊ฒจ์•ผํ•  ๊ฒƒ ๊ฐ™์•˜๋Š”๋ฐ, ๋” ์ƒ๊ฐํ•ด๋ณด๋‹ˆ C++์€ ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋Šฅ์„ ๊ฐ€๋ณ๊ฒŒ ์ถ”์ƒํ™” ํ–ˆ์œผ๋ฏ€๋กœ โ€œ์ถ”์ƒํ™”ํ•œโ€์ด ๋” ๋งค๋„๋Ÿฌ์šด ์šฐ๋ฆฌ๋ง ํ‘œํ˜„์ผ ๋“ฏ ํ•˜๋‹ค. [โ†ฉ](https://minjang.github.io/2016/03/21/talk-with-stroustrup/#fnref:translation)
Shard143 (laksa)
Root Hash2566890010099092343
Unparsed URLio,github!minjang,/2016/03/21/talk-with-stroustrup/ s443