โน๏ธ Skipped - page is already crawled
| Filter | Status | Condition | Details |
|---|---|---|---|
| HTTP status | PASS | download_http_code = 200 | HTTP 200 |
| Age cutoff | PASS | download_stamp > now() - 6 MONTH | 0.1 months ago |
| History drop | PASS | isNull(history_drop_reason) | No drop reason |
| Spam/ban | PASS | fh_dont_index != 1 AND ml_spam_score = 0 | ml_spam_score=0 |
| Canonical | PASS | meta_canonical IS NULL OR = '' OR = src_unparsed | Not set |
| Property | Value |
|---|---|
| URL | https://minjang.github.io/2016/03/21/talk-with-stroustrup/ |
| Last Crawled | 2026-04-05 09:05:11 (3 days ago) |
| First Indexed | not set |
| HTTP Status Code | 200 |
| Meta Title | ์คํธ๋กญ์คํธ๋ฃน ๊ต์๋๊ณผ์ ๋ํ: "C++ ๋ฐฐ์ฐ๋๋ฐ C๋ฅผ ๋จผ์ ๋ฐฐ์ธ ํ์ ์์ด์" ยท /* the devil is in the detail */ |
| Meta Description | null |
| Meta Canonical | null |
| 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++์ ๊ฐ์ฒด์งํฅ ์ธ์ด, ๋ฉํฐํจ๋ฌ๋ค์ ์ธ์ด๋ผ๊ณ ๋ถ๋ฅด๋๋ฐ ์ฅ๋ ์ฝ๋ผ๋ฆฌ ๋ง์ง๋ฏ ์ผ๋ถ๋ง ์ง์ ํํ์ด๋ค.

์ ๋ต์ ์คํธ๋กญ์คํธ๋ฃน ๊ต์๋์ ๊ฐ์ฐ ๋์ค ์ฐพ์ ์ ์์๋ค. ์๋์ ๊ฐ์ด ๋ช
์พํ๊ฒ ์ ์ํ์๋ค.
> **โA light-weight abstraction programming languageโ**
> โ๊ฐ๋ณ๊ฒ ์ถ์ํํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ดโ[3](https://minjang.github.io/2016/03/21/talk-with-stroustrup/#fn:translation)

โ๊ฐ๋ณ๋คโ๋ผ๋ ์ ์์ 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++์ ๊ฐ์ฒด์งํฅ ์ธ์ด, ๋ฉํฐํจ๋ฌ๋ค์ ์ธ์ด๋ผ๊ณ ๋ถ๋ฅด๋๋ฐ ์ฅ๋ ์ฝ๋ผ๋ฆฌ ๋ง์ง๋ฏ ์ผ๋ถ๋ง ์ง์ ํํ์ด๋ค.

์ ๋ต์ ์คํธ๋กญ์คํธ๋ฃน ๊ต์๋์ ๊ฐ์ฐ ๋์ค ์ฐพ์ ์ ์์๋ค. ์๋์ ๊ฐ์ด ๋ช
์พํ๊ฒ ์ ์ํ์๋ค.
> **โA light-weight abstraction programming languageโ**
> โ๊ฐ๋ณ๊ฒ ์ถ์ํํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ดโ[3](https://minjang.github.io/2016/03/21/talk-with-stroustrup/#fn:translation)

โ๊ฐ๋ณ๋คโ๋ผ๋ ์ ์์ 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) |
| Shard | 143 (laksa) |
| Root Hash | 2566890010099092343 |
| Unparsed URL | io,github!minjang,/2016/03/21/talk-with-stroustrup/ s443 |