OKKY๋ฅผ ํํํ๋ ์ค๋, ๊ตฌ๊ธ์ด c++์ ๋์ฒดํ ์ธ์ด์ธ CARBON์ ๋ฐํํ๋ค๋ ์์์ ๋ณด์์ด์.
๋๊ธ์ RUST๋ณด๋ค ๊น๋ํ๊ฒ ๋ณด์ธ๋ค๋ ๋๊ธ์ CARBON๋ณด๋ค ๋ ๊ฝํ๋ฒ๋ ธ์ฃ .
๊ทธ๋์ ์์๋ RUST ํญํ ๊ตฌ๊ธ๋ง ๐
rust document, rust์ ๊ฐ๋จํ ์์ ์ ํ ์ดํ๋ก์ ํธ ์์ ์ ์ฌํ ํ๋ก์ ํธ ์์ ๋ค, ๊ทธ๋ฆฌ๊ณ ๋์ฝ๋ผ์ค์ rust ์ค๋ช ์์์ ๋ณด๊ฒ ๋์์ด์.
์ด ๊ธ์ ๋์ฝ๋ผ์ค์ rust์ธ์ด ์์์ ๋ณด๊ณ ๊ฐ๋ตํ๊ฒ ์ ์ด๋ณธ ๊ฒ์ ๋๋ค.
โ์ด ๊ธ์ ์์ฑํ๊ณ ์งง์ ์ง์ ๊ธ์ ๋๋ค. ๋ถ๋ ์ถ์ฒ๋ฅผ ๊ผญ ๋ฐฉ๋ฌธํด์ฃผ์ธ์ ๐
( โฌ๏ธ์ถ์ฒ : ์์์ 0:28 ์คํฌ๋ฆฐ์ท )
๋ค๋ฅธ ์ธ์ด์ ๋น๊ตํ์ฌ ์ต๊ณ ์์ค์ผ๋ก ํธ๋ฆฌํ ์ปดํ์ผ๋ฌ์ ์์ ๊ถ ๊ฐ๋ ๋์ ์ผ๋ก ๋ณด์ฅ๋๋ ๊ฐ๋ ฅํ ์์ ์ฑ๊ณผ ๋น ๋ฅธ ์๋ ๋๋ถ์ C์ C++์ ๋์ฒดํ๋ ์ธ์ด๋ก ๊ฐ๊ด ๋ฐ๊ณ ์๋ค.
์์๋ก ์๋ง์กด, ํด๋ผ์ฐ๋ํ๋ ์ด, ๋ง์ดํฌ๋ก์ํํธ ๊ฐ์ ํ์ฌ๋ค์ด C์ C++๋ก ๋ ์ฝ๋๋ค์ Rust๋ก ๋์ฒดํ๊ณ ์๋ค.
( โฌ๏ธ์ถ์ฒ : ์์์ 2:43 ์คํฌ๋ฆฐ์ท )
RUST๋ low level language๋ก์ system programming์ ๊ฐ๊น๋ค.
assembly language ๋ฐ๋ก ๊ทธ ๋ค์์ ๋จ๊ณ์ ์๋ ์ ์์ค ์ธ์ด์ด๋ค.
java ๊ทธ๋ฆฌ๊ณ ํนํ js์ python์ ๋น๊ตํ๋ฉด ์์ฃผ ์ ์์ค ์ธ์ด์ธ ๊ฒ์ด๋ค.
rust์ ๊ฐ์ ์ fast์ safe์ด๋ค.
( โฌ๏ธ์ถ์ฒ : ์์์ 5:53 ์คํฌ๋ฆฐ์ท )
ํ ์ฌ๋ก๋ก DISCORDํ์ฌ๋ ๋น ๋ฅธ ์๋๋ก ์ธํ ์๋น์ค ์ง ํฅ์์ ๊พํ๋ฉฐ GO์์ RUST๋ก ๋ฐ๊พธ์๋ค.
( โฌ๏ธ์ถ์ฒ : ์์์ 3:51 ์คํฌ๋ฆฐ์ท )
java๋ classํ์ผ๋ก ๋ณํ ํ ์ปดํจํฐ๊ฐ ๊ธฐ๊ณ์ด๋ก ์ฝ์ ์ ์๊ฒ ๋๋ค.
(๋ ๋ง์ ๋จ๊ณ๊ฐ ์๊ฒ ์ง๋ง ์์ฃผ ๊ฐ๋จํ๊ฒ ์ค๋ช
ํ์๋ฉด ๋ง์ด๋ค.)
python์ธ์ด๋ C์ธ์ด๋ก ์ดํด๋ ํ์ ์ปดํจํฐ๊ฐ ๊ธฐ๊ณ์ด๋ก ์ฝ์ ์ ์๊ฒ ๋๋ ๊ฒ์ด๋ค.
Rust๋ java, python, js์ ๊ฐ์ด ์ปดํจํฐ๊ฐ ๊ธฐ๊ณ์ด๋ก ์ฝ๊ธฐ ์ ์ ๊ฑฐ์น๊ฒ ๋๋ ์ค๊ฐ ๋จ๊ณ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ๋น ๋ฅธ ๊ฒ์ด๋ค.
( โฌ๏ธ์ถ์ฒ : ์์์ 5:13 ์คํฌ๋ฆฐ์ท )
ย ย ย ย ย ย ( โฌ๏ธ์ถ์ฒ : ์์์ 5:18 ์คํฌ๋ฆฐ์ท )
๊ทธ๋ฆฌ๊ณ ๋ํ garbage collector๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋น ๋ฅด๋ค.
c์ธ์ด์ ๊ฐ์ ์ ์์ค ์ธ์ด๋ ๋ณ์๋ฅผ ๋ง๋ค ๋ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ์์ฒญํ๊ณ ๋์ด์ ์ฐ์ด์ง ์์ ๋๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ํด์ ๋ฅผ ํด์ผํ๋ค.
๊ทธ๋ฌ๋ java, js, python๊ฐ์ ๊ณ ์์ค ์ธ์ด์์๋ ์ด๋ ๊ฒ ํ ํ์๊ฐ ์๋ ๋ฐ ์ด๋ garbage collector๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค. garbage collector๋ ์ฐ์ด์ง ์๋ ๋ฐ์ดํฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์๋์ง ๋ ํ์ํ๊ณ ์๋ค. ๊ทธ๋ฆฌ๊ณ ํด๋น ๊ณต๊ฐ์ ๋ฐ๊ฒฌํ๋ฉด ์ญ์ ํ๋ค. garbage collector๊ฐ ์ด๋ฌํ ์ผ์ ํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ์์๊ฒ๋ ํธ๋ฆฌํจ์ ์ฃผ๋ ๋ฐ๋ฉด ํ๋ก๊ทธ๋จ์ ์ฑ๋ฅ์ ๋๋ ค์ง๊ฒ ๋ง๋๋ ๊ฒ์ด๋ค.
๊ทธ๋์ garbage collector๊ฐ ์๋ ์ธ์ด๋ค์ด ์๋ ์ธ์ด๋ค๋ณด๋ค ๋น ๋ฅธ ๊ฒ์ด๋ค.
Ownership
๊ฐ๋
๋๋ถ์ Memory Access Bug
๋ก๋ถํฐ ์์ ํ๋ค!( โฌ๏ธ์ถ์ฒ : ์์์ 6:22 ์คํฌ๋ฆฐ์ท )
๋ณด์ ๋ฌธ์ ์ 70%๊ฐ ๋ฉ๋ชจ๋ฆฌ ์์ธ์ค์ ๊ด๋ จ์ด ์๋ค. โก๏ธ ๊ทธ๋ ๊ฒ ๋๋ฌธ์ Rust๊ฐ ์์ ํ๋ค๋ ๊ฒ์ด๋ค.
Memory Access Bug๋ ํ ๋น๋์ง ์์ ๋ฉ๋ชจ๋ฆฌ ์ฅ์์ ์ ๊ทผํ๊ฑฐ๋, ์ด๋ฏธ ํด์ ๋ ๋ฉ๋ชจ๋ฆฌ ๋ถ๋ถ์ ์ ๊ทผํ๋ ค๊ณ ํ๊ฑฐ๋, ๋๋ ํ ๋น๋ ๋ณ์๋ฅผ ๋ ๋ฒ ํด์ ํ ๋ ค๊ณ ํ ๋ ๋ฐ์ํ๋ค. ์ด๋ ๊ณง Runtime Error๋ก ์ด์ด์ง ์ ์๋ค.
์ด ๋ฌธ์ ๋๋ฌธ์ Rust๊ฐ ์ธ๊ธฐ๊ฐ ๋ง์ ๊ฒ์ด๋ค.
Rust๋ C์ C++๋ณด๋ค ๋๋ฆฌ๋๋ผ๋ ๊ฑฐ์ ๋น์ทํ ํผํฌ๋จผ์ค๋ฅผ ์ ๊ณตํ ๋ฟ๋ง ์๋๋ผ ๋์ฑ ์์ ํ๋ค.
๊ทธ ์ด์ ๋ Rust๋ ํ๋ก๊ทธ๋จ์ ๋ฐ์ดํ์ ๋ํ ๊ด๋
์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๊ฒ์ด ๋ฐ๋ก ์์ ๊ถ Ownership
์ด๋ผ๋ ๊ฐ๋
์ด๋ค.
์์ ๊ถ [ Ownership ] ์ด๋ผ๋ ๊ฐ๋
์์๋ ํ๋ก๊ทธ๋จ์ ๋ฐ์ดํฐ๋ ๋ณ์์ ์ํด ์์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ๋ ํ๋ฒ์ ํ owner์๊ฒ๋ง ์์ ๋๋ค. Owner๊ฐ ๋์ด์ ์ฌ์ฉ๋์ง ์๋๋ค๋ฉด, ๋ฐ์ดํฐ๋ ๋ฉ๋ชจ๋ฆฌ์์ ์ ๊ฑฐ๋๋ค.
Ownership
Owner = ๋ณ์
ํ๋์ Owner( ๋ณ์ )์๊ฒ ํ๋ฒ๋ง ์ฌ์ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฐ๋ก ๋ฉ๋ชจ๋ฆฌ์์ ์ ๊ฑฐ๋๋ค.with the concept of ownership , the data of your program is owned by variables.
the data can only be owned by one owner at a time.
if the owner is not is scope or used anymore the data in dropped from memory.
( โฌ๏ธ์ถ์ฒ : ์์์ 8:06 ์คํฌ๋ฆฐ์ท )
mainํจ์๋ my_name ์ด๋ผ๋ ๋ณ์๋ฅผ ๊ฐ๊ณ ์๋ค.
๊ทธ๋ฆฌ๊ณ mainํจ์๋ say_hi๋ผ๋ ํจ์๋ฅผ ๋ถ๋ฅด๋๋ฐ my_name ๋ณ์๋ฅผ ์ธ์๋ก ๋ณด๋ธ๋ค.
๊ทธ๋ฆฌ๊ณ say_hiํจ์์์ ์ธ์๋ก ๋ฐ์ my_name ๋ณ์๋ฅผ ํ๋ฆฐํธํ๋ค.
๋ชจ๋ ๊ฑธ ์๋ฃํ ํ mainํจ์๋ก ๋์์์ my_name๋ณ์๋ฅผ ํ๋ฒ๋ ํ๋ฆฐํธ ํ๋ค.
โโ ๊ฒฐ๊ณผ๋ ์ด๋ป๊ฒ ๋ ๊น
( โฌ๏ธ์ถ์ฒ : ์์์ 8:37 ์คํฌ๋ฆฐ์ท )
java, python ๊ฐ์ ์ธ์ด๋ฅผ ํ๋ ์ฌ๋๋ค์
๐ง๐ปโโ๏ธ : "๋ง์ฝ my_name๋ณ์์ ๋๊ผฌ
๋ผ๋ ๋ฌธ์์ด ๊ฐ์ด ํ ๋น๋์ด ์๋ค๋ฉด
ใhi ๋๊ผฌ!
a is equals to ๋๊ผฌใ ์ด๋ ๊ฒ ์ถ๋ ฅ์ด ๋๋ ๊ฒฐ๊ณผ๊ฐ ๋ํ๋๊ฒ ์ง!!"
Rust์์ ์ด๋ฆผ๋ ์๋ค๊ตฌโโ
โก๏ธ ์ค์ ๊ฒฐ๊ณผ๋ก๋ ์ด๋ ๊ฒ ๋์จ๋ค โ
๐ : ์ต?? ์ ๋๋ฒ์งธ printํจ์๋ ์ถ๋ ฅ๋์ง ์์๊ฑฐ์ผ??!!!
my_name์
๋๊ผฌ
๊ฐ ํ ๋น๋์๊ณ ,data ๋๊ผฌ
๊ฐ my_name ๋ณ์์์ say_hiํจ์๋ก ์ด๋ํจ์ผ๋ก์ say_hiํจ์๋data ๋๊ผฌ
์owner
๊ฐ ๋๋ค. ์ด ์๊ฐ ๋ถํฐmain
ํจ์์my_name
๋ณ์๋ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค.
( โฌ๏ธ์ถ์ฒ : ์์์ 10:28 ์คํฌ๋ฆฐ์ท )
๋
ธ๋ง๋์ฝ๋์ <C๊ฐ ์ฃผ์ฅ๊ฐ์ ๊ฐ๋ฐ์๋ค ๋ณด์ธ์. Rust 10๋ถ ์ ๋ฆฌ!> ์์ ๋ณด๋ฌ๊ฐ๊ธฐ