Contents
ํ๋ คํ๊ฒ ํ ์ธ๋๋ฅผ ํ๋ฏธํ๋ C++์ ์์ข๋ฅผ ์ด์ ๋ค์ ์ธ์ด๋?
20์ฌ๋ ๋๊ฒ C++ ๊ฐ๋ฐ์๋ก ์ด์์ค๋ค๋ณด๋, ๋ค์์ C++์ ์๋ฆฌ๋ฅผ ์ฐจ์งํ ์ธ์ด์ ๋ํ ๊ด์ฌ์ด ๋ง์ต๋๋ค. ๊ทธ๋์ ์ค๋์ C++ ์์ข๋ฅผ ์ด์ด๋ฐ์ ์ฐจ์ธ๋ ์ธ์ด๋ค์ ๋ํด ์ ๋ฆฌ ํด ๋ณด๊ณ ์ ํฉ๋๋ค.
์๋์ 3๊ฐ์ง ์ฐจ์ธ๋ ์ธ์ด๊ฐ ๊ทธ ํ๋ณด๋ค์ธ๋ฐ์. ์์ง๊น์ง๋ ๋จผ์ ์ธ์์ ๋์จ ๋ฌ์คํธ๊ฐ ๋ค๋ฅธ ์ธ์ด์ ๋นํด ์ฐ์๋ฅผ ์ฐจ์งํ๊ณ ์์ต๋๋ค. ํ์ง๋ง ๊ตฌ๊ธ์ ํ(Go์ Dart ์ธ์ด์ ์ฑ๊ณต์ ์ธ ๊ฐ๋ฐ ๋ ธํ์ฐ)์ ์ ์ ์นด๋ณธ๊ณผ ์ ํต C++์ ํ๋์ ์ธ ์ธ์ด์ ์ฅ์ ์ ์ ์ง์ ์ผ๋ก ์ถ๊ฐํ์ฌ ์งํํ๊ณ ์๋ Cppํ๋ก ํธ๋ ๊ทธ ์ํฅ๋ ฅ์ ๋ฌด์ํ ์ ์์ ๊ฒ์ผ๋ก ํ๋จ์ด ๋ฉ๋๋ค.
๋ฌ์คํธ (Rust)
- ๊ฐ๋ฐ : ๋ฌ์คํธ ์ฌ๋จ (Graydon Hoare; ๊ทธ๋ ์ด๋ ํธ์๋ )
- ๋ชฉํ : C/C++์ ๋๋ฑํ ์์ค์ ์๋๋ฅผ ๋ฌ์ฑํ๋ฉด์ ์์ ์ฑ, ๋์์ฑ์ ๋ชฉํ๋ก ํจ.
- ๊นํ๋ธ : https://github.com/rust-lang
- ๋ฒ์ : Rust 1.68.2 (2023.04.20 ํ์ฌ)
์นด๋ณธ (Carbon)
- ๊ฐ๋ฐ : ๊ตฌ๊ธ
- ๋ชฉํ : C++์ ๋์ฒดํ๊ฑฐ๋ ๊ธฐ์กด ๋ ๊ฑฐ์ C++์ฝ๋์์ ์ํธ ์ด์ฉ์ฑ ๋ฌ์ฑ์ ๋ชฉํ๋ก ํจ.
- ๊นํ๋ธ : https://github.com/carbon-language
- ๋ฒ์ : 2024๋ (๋๋ 2025๋ ) 1.0 ์ถ์ ์์
Cppํ๋ก ํธ (Cppfront)
- ๊ฐ๋ฐ : ISO C++ (Herb Sutter; ํ๋ธ ์ ํฐ)
- ๋ชฉํ : C++์ 10๋ฐฐ ๋ ๊ฐ๋จํ๊ณ , ์์ ํ๋ฉฐ, ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ฝ๊ฒ ๊ตฌํํ๋ ๊ฒ์ ๋ชฉํ๋ก ํจ.
- ๊นํ๋ธ : https://github.com/hsutter
- ๋ฒ์ : ๋ฏธ์
๋ฌ์คํธ (Rust)
โ๋ฌ์คํธ๋ ๊ธฐ์กด ์๋ฃ๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์.
์นด๋ณธ (Carbon)
๊ตฌ๊ธ์์ C++ ์ํ๊ณ ์์ ๊ตฌ์ถ์ ํ๊ณ ์๋ ์นด๋ณธ์ C++๊ณผ ์ ์ฌํ๊ฒ ์ค๊ณํ๊ณ ์์ต๋๋ค.
- ์ฑ๋ฅ์ ์ค์์ํ๋ ์ํํธ์จ์ด.
- ์ค์ฉ์ ์ด๊ณ ์์ ํ ๋ฉ์ปค๋์ฆ.
- ์ต์ ํ๋ซํผ, ํ๋์จ์ด ์ํคํ ์ฒ ํ๊ฒฝ์ ๊ณ ๋ ค.
- ์๋งํ ํ์ต ๊ณก์ .
- ๋น์ทํ ํํ์.
- ๊ธฐ์กด C++ ์ฝ๋์์ ์ํํ ์ํธ ์ด์ฉ์ฑ ๋ฐ ๋ง์ด๊ทธ๋ ์ด์ .
์์ง๊น์ง๋ ์ปดํ์ผ๋ฌ(๋๋ ํด์ฒด์ธ)๊ฐ ์๊ณ ์ธํฐํ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํด์ ๋ง๋ณด๊ธฐ๋ง ๊ฐ๋ฅํฉ๋๋ค.
๋ง๋ณด๊ธฐ
Cppํ๋ก ํธ (Cppfront)
C++์ 1985๋ ๋ฐํ๋ ์ด๋ ์ต๊ทผ์ C++20 ๋ฒ์ ๊น์ง ๋งค์ฐ ์ค๋ซ๋์ ์ ์ธ๊ณ์ ์ผ๋ก ๋ง์ด ์ฌ๋๋ฐ๊ณ ์๋ ์ธ์ด์ ๋๋ค. 20์ฌ๋ ์ ๊น์ง๋ง ํด๋ ํ๋ก๊ทธ๋๋ฐ์ ๊ธฐ์ด๋ฅผ ๋ค์ง๊ธฐ ์ํด C/C++ ์ธ์ด๋ฅผ ๋ฐฐ์ ์์ต๋๋ค. ์ด์ ๋ ์ด์ฉ๋ฉด ๊ทธ ์ญํ์ Cppํ๋ก ํธ๊ฐ ๋์ ํ ์ง๋ ๋ชจ๋ฅด๊ฒ ๋ค์.
- ๊ธฐ์กด C++๊ณผ ์์ ํ ํธํ๋๋ ์๋ก์ด ๊ตฌ๋ฌธ(syntax)์ผ๋ก ๊ฐ๊ฒฐํ๊ณ ์์ ํ๊ฒ ์ฝ๋ฉ.
- ๋ฉ๋ชจ๋ฆฌ ์์ ์ ๊ธฐ๋ณธ์ผ๋ก ์ง์.
- C++20 ๋ชจ๋๊ณผ C++23 import std๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ํ์ฌ.
- ํ๋ํ๋ ์ธ์ด๋ก ํ๋ฐ๊ฟ. (์๋์ ์์ ์ฐธ์กฐ)
1
2
3
4
5
6
7
8
9
main: () -> int = {
vec: std::vector<std::string> = ("hello", "cppfront");
view: std::span = vec;
for view do :(inout str: _) = {
len := decorate(str);
println(str, len);
}
}