๐Ÿ˜ถโ€๐ŸŒซ๏ธ [์—‰์งง์‹] RUST๋ฅผ ์•Œ์•„๋ณด์•˜๋‹ค๐Ÿฆ€ ์†Œ์œ ๊ถŒ!

0
post-thumbnail

OKKY๋ฅผ ํƒํ—˜ํ•˜๋˜ ์˜ค๋Š˜, ๊ตฌ๊ธ€์ด c++์„ ๋Œ€์ฒดํ•  ์–ธ์–ด์ธ CARBON์„ ๋ฐœํ‘œํ–ˆ๋‹ค๋Š” ์†Œ์‹์„ ๋ณด์•˜์–ด์š”.
๋Œ“๊ธ€์— RUST๋ณด๋‹ค ๊น”๋”ํ•˜๊ฒŒ ๋ณด์ธ๋‹ค๋Š” ๋Œ“๊ธ€์— CARBON๋ณด๋‹ค ๋” ๊ฝ‚ํ˜€๋ฒ„๋ ธ์ฃ .
๊ทธ๋ž˜์„œ ์‹œ์ž‘๋œ RUST ํญํ’ ๊ตฌ๊ธ€๋ง ๐Ÿ˜Š

rust document, rust์˜ ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ์™€ ํ† ์ดํ”„๋กœ์ ํŠธ ์˜ˆ์ œ์™€ ์‹ฌํ™” ํ”„๋กœ์ ํŠธ ์˜ˆ์ œ๋“ค, ๊ทธ๋ฆฌ๊ณ  ๋‹ˆ์ฝœ๋ผ์Šค์˜ rust ์„ค๋ช… ์˜์ƒ์„ ๋ณด๊ฒŒ ๋˜์—ˆ์–ด์š”.

์ด ๊ธ€์€ ๋‹ˆ์ฝœ๋ผ์Šค์˜ rust์–ธ์–ด ์˜์ƒ์„ ๋ณด๊ณ  ๊ฐ„๋žตํ•˜๊ฒŒ ์ ์–ด๋ณธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

โ—์ด ๊ธ€์€ ์—‰์„ฑํ•˜๊ณ  ์งง์€ ์ง€์‹ ๊ธ€์ž…๋‹ˆ๋‹ค. ๋ถ€๋”” ์ถœ์ฒ˜๋ฅผ ๊ผญ ๋ฐฉ๋ฌธํ•ด์ฃผ์„ธ์š” ๐Ÿ˜‰

๐ŸŸช C์™€ C++์˜ ๋Œ€์ฒด ์–ธ์–ด๋กœ ๊ฐ๊ด‘ ๋ฐ›๊ณ  ์žˆ๋‹ค.

( โฌ†๏ธ์ถœ์ฒ˜ : ์˜์ƒ์˜ 0:28 ์Šคํฌ๋ฆฐ์ƒท )

๋‹ค๋ฅธ ์–ธ์–ด์™€ ๋น„๊ตํ•˜์—ฌ ์ตœ๊ณ  ์ˆ˜์ค€์œผ๋กœ ํŽธ๋ฆฌํ•œ ์ปดํŒŒ์ผ๋Ÿฌ์™€ ์†Œ์œ ๊ถŒ ๊ฐœ๋… ๋„์ž…์œผ๋กœ ๋ณด์žฅ๋˜๋Š” ๊ฐ•๋ ฅํ•œ ์•ˆ์ „์„ฑ๊ณผ ๋น ๋ฅธ ์†๋„ ๋•๋ถ„์— C์™€ C++์„ ๋Œ€์ฒดํ•˜๋Š” ์–ธ์–ด๋กœ ๊ฐ๊ด‘ ๋ฐ›๊ณ  ์žˆ๋‹ค.

์˜ˆ์‹œ๋กœ ์•„๋งˆ์กด, ํด๋ผ์šฐ๋“œํ”Œ๋ ˆ์–ด, ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ ๊ฐ™์€ ํšŒ์‚ฌ๋“ค์ด C์™€ C++๋กœ ๋œ ์ฝ”๋“œ๋“ค์„ Rust๋กœ ๋Œ€์ฒดํ•˜๊ณ  ์žˆ๋‹ค.

๐ŸŸช low level language , System programming

( โฌ†๏ธ์ถœ์ฒ˜ : ์˜์ƒ์˜ 2:43 ์Šคํฌ๋ฆฐ์ƒท )

RUST๋Š” low level language๋กœ์„œ system programming์— ๊ฐ€๊น๋‹ค.
assembly language ๋ฐ”๋กœ ๊ทธ ๋‹ค์Œ์˜ ๋‹จ๊ณ„์— ์žˆ๋Š” ์ €์ˆ˜์ค€ ์–ธ์–ด์ด๋‹ค.
java ๊ทธ๋ฆฌ๊ณ  ํŠนํžˆ js์™€ python์™€ ๋น„๊ตํ•˜๋ฉด ์•„์ฃผ ์ €์ˆ˜์ค€ ์–ธ์–ด์ธ ๊ฒƒ์ด๋‹ค.

rust์˜ ๊ฐ•์ ์€ fast์™€ safe์ด๋‹ค.

๐ŸŸช fast

( โฌ†๏ธ์ถœ์ฒ˜ : ์˜์ƒ์˜ 5:53 ์Šคํฌ๋ฆฐ์ƒท )

ํ•œ ์‚ฌ๋ก€๋กœ DISCORDํšŒ์‚ฌ๋Š” ๋น ๋ฅธ ์†๋„๋กœ ์ธํ•œ ์„œ๋น„์Šค ์งˆ ํ–ฅ์ƒ์„ ๊พ€ํ•˜๋ฉฐ GO์—์„œ RUST๋กœ ๋ฐ”๊พธ์—ˆ๋‹ค.

๐Ÿ”ถ ์ค‘๊ฐ„๋‹จ๊ณ„๊ฐ€ ์—†๋‹ค

( โฌ†๏ธ์ถœ์ฒ˜ : ์˜์ƒ์˜ 3:51 ์Šคํฌ๋ฆฐ์ƒท )

java๋Š” classํŒŒ์ผ๋กœ ๋ณ€ํ™˜ ํ›„ ์ปดํ“จํ„ฐ๊ฐ€ ๊ธฐ๊ณ„์–ด๋กœ ์ฝ์„ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.
(๋” ๋งŽ์€ ๋‹จ๊ณ„๊ฐ€ ์žˆ๊ฒ ์ง€๋งŒ ์•„์ฃผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…ํ•˜์ž๋ฉด ๋ง์ด๋‹ค.)
python์–ธ์–ด๋Š” C์–ธ์–ด๋กœ ์ดํ•ด๋œ ํ›„์— ์ปดํ“จํ„ฐ๊ฐ€ ๊ธฐ๊ณ„์–ด๋กœ ์ฝ์„ ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

Rust๋Š” java, python, js์™€ ๊ฐ™์ด ์ปดํ“จํ„ฐ๊ฐ€ ๊ธฐ๊ณ„์–ด๋กœ ์ฝ๊ธฐ ์ „์— ๊ฑฐ์น˜๊ฒŒ ๋˜๋Š” ์ค‘๊ฐ„ ๋‹จ๊ณ„๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์†๋„๊ฐ€ ๋น ๋ฅธ ๊ฒƒ์ด๋‹ค.

๐Ÿ”ถ garbage collector๊ฐ€ ์—†๋‹ค

( โฌ†๏ธ์ถœ์ฒ˜ : ์˜์ƒ์˜ 5:13 ์Šคํฌ๋ฆฐ์ƒท ) ย ย ย ย ย ย  ( โฌ†๏ธ์ถœ์ฒ˜ : ์˜์ƒ์˜ 5:18 ์Šคํฌ๋ฆฐ์ƒท )

๊ทธ๋ฆฌ๊ณ  ๋˜ํ•œ garbage collector๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅด๋‹ค.

c์–ธ์–ด์™€ ๊ฐ™์€ ์ €์ˆ˜์ค€ ์–ธ์–ด๋Š” ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ์š”์ฒญํ•˜๊ณ  ๋”์ด์ƒ ์“ฐ์ด์ง€ ์•Š์„ ๋•Œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ํ•ด์ œ๋ฅผ ํ•ด์•ผํ•œ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ java, js, python๊ฐ™์€ ๊ณ ์ˆ˜์ค€ ์–ธ์–ด์—์„œ๋Š” ์ด๋ ‡๊ฒŒ ํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๋ฐ ์ด๋Š” garbage collector๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. garbage collector๋Š” ์“ฐ์ด์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ์žˆ๋Š”์ง€ ๋Š˜ ํƒ์ƒ‰ํ•˜๊ณ  ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ๊ณต๊ฐ„์„ ๋ฐœ๊ฒฌํ•˜๋ฉด ์‚ญ์ œํ•œ๋‹ค. garbage collector๊ฐ€ ์ด๋Ÿฌํ•œ ์ผ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ์ž์—๊ฒŒ๋Š” ํŽธ๋ฆฌํ•จ์„ ์ฃผ๋Š” ๋ฐ˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์˜ ์„ฑ๋Šฅ์€ ๋Š๋ ค์ง€๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ๋ž˜์„œ garbage collector๊ฐ€ ์—†๋Š” ์–ธ์–ด๋“ค์ด ์žˆ๋Š” ์–ธ์–ด๋“ค๋ณด๋‹ค ๋น ๋ฅธ ๊ฒƒ์ด๋‹ค.

๐ŸŸช safe

โ—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๋ถ„ ์ •๋ฆฌ!> ์˜์ƒ ๋ณด๋Ÿฌ๊ฐ€๊ธฐ

profile
๋ช‡ ๋ฒˆ์„ ๋„˜์–ด์ ธ๋„ ์•ž์œผ๋กœ ๊ณ„์† ๋‚˜์•„๊ฐ€์ž

0๊ฐœ์˜ ๋Œ“๊ธ€