Rust 간단 소개
Rust는 안전하고, 빠르고, 자원 효율적인 프로그래밍 언어다
동시에 꾸준히 사랑받고, 존경받는 언어기도 하다
Stack Overflow Developer Survey 2023
In May 2023 over 90,000 developers responded to our annual survey about how they learn and level up, which tools they're using, and which ones they want.
survey.stackoverflow.co
물론 그만큼 배우는 데 다소 복잡한 개념들이 많아서
첫 프로그래밍 언어로 선택하면 많이 어려울 수 있다 (물론 못 한다는 건 아님 유캔두잇)
대신 C나 C++을 편하게 사용하는 사람이면 쉽게 익힐 듯
내가 그 경우라 확실히 보장함
2000년 이전에 만들어진 C, C++, Python, Java랑 다르게
Rust는 2010년에 첫 발표된 신생 언어다
(정식 버전 출시는 2015년)
응? 그럼 뭔가 이상한 걸 느낄 수 있다
아니 C랑 C++, 파이썬, 자바같이 지금도 쟁쟁한 언어들이 멀쩡히 잘 있는데
그럼 이건 왜 만든겨?
Rust는 대체 왜 탄생하게 되었나
때는 바야흐로 2006년, 벤쿠버의 한 아파트에 있는 엘리베이터가 고장나버렸다.
(엘리베이터 SW는 대부분 C나 C++로 만드는데, 이런 메모리 충돌이 발생하기 쉽다)
여기 21층에 살던 그레이든 호어(29세 남)는 계단을 오르다가 그라데이션 분노를 일으켰다.
(사실 엘리베이터가 고장난 게 이번이 처음도 아니었다고 한다)
"아니 tlqkf 개발자가 엘베 하나 충돌 안 나게 못 만드는 게 말이 되냐!!"
여기서 대부분의 사람들은 웬만하면 그냥 짜증 한 번 내고 말 것이다..
하지만 웬만하지 않았던 호어(당시 모질라에 다니던 프로그래머)는 집에 도착해서 노트북을 켰다
메모리 버그 없이 작고 빠른 새로운 프로그래밍 언어를 만들기 위해서!
호어는 '놀라울 정도로 강인한 균류'의 이름을 따 이 언어를 'Rust'라고 불렀다
그래서 당시엔 개인 프로젝트 수준으로 시작했는데
https://github.com/graydon/rust-prehistory에서 그때 그 시절 호어의 러스트 제작기를 볼 수 있다
Rust의 역사가 더 궁금하다면 아래 링크 참고
How Rust went from a side project to the world’s most-loved programming language
For decades, coders wrote critical systems in C and C++. Now they turn to Rust.
www.technologyreview.com
난 어쩌다가 Rust에 관심 갖게 되었나
전역하고 2학년으로 복학 하기 전에 초기화된 전공 지식을 채우려고
다시 C언어를 아주 깊게깊게 공부하고 있었다
그러다가 백준이란 걸 알게 돼서 효율, 성능, 속도를 갈구하고 있었다 (더 많은 화력!)
그렇게 공부하다가 잠시 쉴 겸 유튜브를 보는데?
"잇 낌취" 김치먹는 니꼴라스 형이 Rust를 소개 해주는 영상이 내 알고리즘에 떴다
이걸 보고 Rust를 처음 알게 됐는데, 보다가 설득당해서 '오.. Rust가 미래구나'하게 됐다
아니 갓직히 이거 안 쓸 이유가 없ㅈ잖ㄴㅇ아??
아직 세뇌설득이 안 됐으면 영상을 한번 보기 바람
그리고 올해 미 백악관에서 C/C++대신 메모리를 안전하게 다루는 언어 사용을 촉구해서
Rust가 더더욱 주목받고 있기도 하다
https://www.infoworld.com/article/2336216/white-house-urges-developers-to-dump-c-and-c.html
White House urges developers to dump C and C++
Biden administration calls for developers to embrace memory-safe programing languages and move away from those that cause buffer overflows and other memory access vulnerabilities.
www.infoworld.com
+ 24.08.01 기준 DARPA에서 TRACTOR 프로젝트를 발표했다
https://www.darpa.mil/program/translating-all-c-to-rust
https://www.darpa.mil/program/translating-all-c-to-rust
www.darpa.mil
Rust 설치 (rustup)
Rust 공식 가이드에서는 rustup을 이용한 설치를 권장하고 있다
그래서 rustup을 이용해서 설치하는 방법을 알려주겠다
리눅스(Linux) or 맥(Mac)
curl https://sh.rustup.rs -sSf | sh -s -- --help
리눅스나 맥에서는 쉘에다가 위 커맨드 한 줄만 틱 쳐주면 설치가 끝난다
세상 이렇게 쉬운 방법이 또 없다
윈도우(Windows)
윈도우는 아래 Rust 공식 사이트에서 rustup.exe를 다운받으면 되고
DOWNLOAD RUTUP-INIT.EXE(운영체제에 맞게 선택)을 클릭하면 된다.
https://www.rust-lang.org/tools/install
Install Rust
A language empowering everyone to build reliable and efficient software.
www.rust-lang.org
rustup을 쓰는 게 권장 사항이기도 하고 제일 쉽다
물론 이 방법 말고도 여러가지 설치 방법이 있으니,
그 외의 방법으로 설치해보고 싶다면 아래 링크를 참고하자
https://rust-kr.org/pages/install/
한국 러스트 사용자 그룹
Rust 설치하기 A. Rustup 사용하기 rustup을 쓰면 윈도우, 맥, 리눅스 등 대부분의 환경에서 별도의 지식 없이 손쉽게 러스트를 설치할 수 있습니다. Rust 공식 설치 가이드가 제일 권장하는 방법이므로
rust-kr.org
Rust IDE 추천 및 확장 프로그램 설치
1. Visual Studio Code (+VScode Extension)
대부분의 Rust 유저들이 사용하고 있는 IDE인데, 많이 쓰는 데는 이유가 있더라
지원하는 확장 프로그램도 많은데다 가볍고 좋다
설치는 아래 링크에서 하면 된다.
https://code.visualstudio.com/
Visual Studio Code - Code Editing. Redefined
Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications. Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.
code.visualstudio.com
이어서 필수 설치 확장 프로그램을 4가지를 소개하겠다
이건 필수야 필수
1. rust-analyzer
무슨 오류가 나는지 실시간으로 코드를 정적 분석해서 알려준다
2. crates -> Dependi
사용되는 서드 파티를 자동으로 최신 버전으로 파악해서 지원해준다
의존성 관리 및 버전 업데이트라고 보면 될 듯
=> 24년 6월 말 기준으로 crates는 Dependi라는 확장프로그램으로 대체되었다.
의존해서 쓰고 있는 크레이트들의 최신버전을 확인하고 알려준다.
의존성 관리 및 버전 관리 크레이트라고 보면 된다.
너무 편해서 설치 필수 크레이트다
3. Even Better TOML
TOML(토믈)은 json 같은 파일형식인데, 구문을 강조하고 자동 완성 기능을 제공한다
구문 강조 있고 없고 차이가 가독성에 영향이 크다.
없으면 밋밋 그자체
4. CodeLLDB
Rust 코드 디버깅을 지원하는 크레이트고, 말그대로 디버그를 할 수 있다.
Run 옆에 Debug가 뜬다.
2. Rust Rover
인텔리제이를 만든 JetBrains사에서 새로 내놓은 Rust IDE인데,
이거 이전에는 인텔리제이 확장 프로그램에서 rust를 설치해서 어쩌구 저쩌구 암튼 복잡했다
이젠 이걸로 Rust 개발할 수 있지만, 아직까진 VScode의 이용률이 더 높다
올해 초까진 프로토타입으로 제공하고 있었는데 이젠 정식 버전으로 출시됐다
남들과 다르게 얼리어답터처럼 개발하고 싶다면
이걸로 츄라이 츄라이~
https://www.jetbrains.com/rust/
RustRover: Rust IDE by JetBrains
Try the new Rust IDE from JetBrains with a debugger, on-the-fly analysis, and quick-fixes.
www.jetbrains.com
Hello, World !
이제 설치도 끝났고, 개발 환경 세팅도 끝났으니까
그거 해봐야지
언어 배울 때 무조건 하는 그거 있잖아
일단 프롬프트 띄워서
rustc --version
입력한 뒤에 저렇게 버전이 잘 뜨는지 확인 한번 해주고
테스트 폴더 하나 만들어두고
code .
폴더 내 경로에서 프롬프트에 code . 치면 아까 설치한 VScode가 딱 나올 거다
아니면 그냥 VScode 키고 폴더를 열어도 됨
이렇게 VScode 화면이 뜨면
왼쪽 EXPLORER 탭에서 New File 생성 클릭해주고
main.rs라고 이름 지어주자
그리고 Hello, World!를 출력하는 Rust 코드를 작성해보자
그리고 ctrl + shift + `(탭 위에 1왼쪽에 있는 억음부호)를 누르면 터미널이 아래에 나온다
터미널에다가 rustc main.rs로 코드를 컴파일 해주고
./main으로 실행파일을 실행시켜주면? 뙇 저렇게 완성~
메모장에 코드 작성한 뒤에 main.rs로 이름짓고
프롬프트에서 뒷 작업 해줘도 동일하다
Cargo란?
Rust에 대해 알아보다 보면 Cargo라는 이름이 나온다
카고가 뭘까?
일단 이 카고는 아니다
Cargo는 화물을 뜻하는 영단어인데,
여기서는 Rust 빌드 시스템 패키지 매니저다
얘가 있으면 나중에 개발할 때 필요한 외부 라이브러리(dependency) 다운이나, 라이브러리 관리할 때 편하다
아까 rustup으로 Rust를 설치할 때 같이 설치되는 애라서 따로 설치할 필요는 없다
얘(카고)를 이용하면 위에서 했던 hello, world 과정이 필요가 없다
이게 뭔 소리냐~
일단 프롬프트부터 키고
새 폴더로 가서 hello_world라는 프로젝트를 하나 뚝딱 만들어보자
cargo new hello_world
위 코드는 hello_world라는 패키지를 생성해준다
cd hello_world로 hello_world 폴더로 가면 직접 확인해볼 수 있다
(cd는 cd 뒤에오는 이름의 디렉토리/폴더로 이동한다는 뜻)
어 근데 src폴더가 있네
엥? 그 안에는 main.rs가 있잖아?
그리고 그 안에는 "Hello, world!"를 출력하는 Rust코드가 있잖아?
이게 어떻게 된 일이지?
바로바로
cargo new로 패키지를 생성했을 때 같이 생성된 것이다~
오ㅏ우~ 카고 개쩔잖아~
이어서 cargo build를 하면 컴파일해주고,
cargo run을 하면 Hello, world!가 정상적으로 출력되는 걸 볼 수 있다
위에서 Hello, world를 직접 만들었을 때보다
cargo를 통해서 훨씬 간단하고 편하게 관리할 수 있는 걸 확인해보았다
카고에 대한 더 자세한 내용이 궁금하다면
아래 링크에서 공부해볼 수 있다
https://doc.rust-lang.org/cargo/
Introduction - The Cargo Book
Cargo is the Rust package manager. Cargo downloads your Rust package’s dependencies, compiles your packages, makes distributable packages, and uploads them to crates.io, the Rust community’s package registry. You can contribute to this book on GitHub.
doc.rust-lang.org
Rust 학습 자료 추천 (무료)
1. 러스트 북
https://rinthel.github.io/rust-lang-book-ko/foreword.html'
들어가기에 앞서 - The Rust Programming Language
이 문서는 2판 번역본입니다. 최신 2021 에디션 문서는 https://doc.rust-kr.org 에서 확인하실 수 있습니다. 항상 그렇게 명확지는 않았지만, 러스트 프로그래밍 언어는 근본적으로 권한 분산에 관한 것
rinthel.github.io
이게 공식문서이자, 러스트 학습 자료다
와우~ 돈을 안 내고도 계속 업데이트되는 공식 학습 교재를 읽을 수 있다니
여기서 꿀팁은
페이지 우측 상단에 프린트기 모양 버튼이 있는데
요걸 누르면 이 문서를 pdf 파일로 저장할 수가 있다
웹 사이트로 보면 필기도 못 하고~
밑줄도 못 긋는데~
pdf파일로 받으면?
삼성은 Samsung Notes로, 애플은 내가 잘 모르는데 뭐 많잖아
패드로 필기 공부가 가능하다는 점이 팁이다~
컴퓨터로는 알pdf가 무료인데 이것도 형광펜을 쓸 수 있어서 꽤 좋다
2. 4일만에 러스트 배우기 by google
https://google.github.io/comprehensive-rust/ko/running-the-course.html
강의 진행 - Comprehensive Rust 🦀
강사를 위한 안내 페이지입니다. 다음은 구글 내부에서 이 과정을 어떤식으로 운영해왔는지에 대한 배경 정보입니다. 수업은 보통 오전 9시부터 오후 4시까지 진행되며, 중간에 1시간의 점심시
google.github.io
구글에서 러스트 가르치려고 만든 자료인데,
우리도 4일만에 할 수 있다! 유캔두잇
(아마도)
3. MacLeod형의 러스트 강의 유튜브 (한국어)
https://www.youtube.com/playlist?list=PLfllocyHVgsSJf1zO6k6o3SX2mbZjAqYE
Easy Rust Korean / Rust in a Month of Lunches 한국어판
www.youtube.com
한국에서 개발자로 일하고 있는 형인데
유튜브에서 러스트를 한국어로 가르쳐준다
이젠 이것말고도 더 많이 나왔는데,
유료는 더 많으니까 의지만 있으면 배우는 데 크게 문제 없다는
마무리
오늘은 이렇게 Rust에 대해서 알아봤고,
Rust 설치도 했고, IDE 설치도 했고, 환경 세팅도 하고, 헬로월드 출력도 해보고, 카고도 알아보고, 학습자료도 알아봤고
.
.
.
공부는 위에서 알려준 자료로 알아서들 하시고
중간중간 알아둘 만한 개념이나 특이한 건 정리해서 올릴테니까
다음 포스팅도 기대하고 있으면 된다
'Rust 연구 노트 > Rust 이야기' 카테고리의 다른 글
[Rust/도서 리뷰] <이지 러스트> (1) | 2025.03.31 |
---|---|
[Rust] 함수 시그니처 lifetime에 대한 고찰 (0) | 2024.10.03 |
[Rust/도서 리뷰] <러스트 프로페셔널 코드> (6) | 2024.09.10 |