[Rust] 공부를 시작하며
목표 설정
블로그에 글을 쓰며 공부한 게 언제인지.. 짬을 내서 퇴근 후에 도커와 쿠버네티스 강의를 들으면서도, 사실 짬을 내 정리하는 게 여간 어려운 일이 아니었다. 뒤쳐지지 않기 위해, 그리고 배우는 재미를 잊지 않기 위해 다시 한 번 시작해야 할 때다. 아래의 목표를 가지고 공부를 해보려 한다.
- 생성형 AI 활용법 익히기
코드도, 글도, 브레인스토밍도 이제는 생성형 AI 없이 진행하는 것이 바보다 싶을 정도로 훌륭한 초안 짜기 도구가 되었다고 생각한다. 실제 업무에서도 객체 구조를 잡거나 코드 초안의 작성, 규칙이 있는 변경사항에 대한 일괄 적용 등에 자주 활용하고 있다. 글을 쓰는 데에 Copilot을 사용해보며 chatGPT와의 차이도 느껴보고, 그 한계도 더 많이 체험해보고 싶다. 살재로 글의 뼈대나 초안을 Copilot으로 작성해보거나, 공부해야 하는 키워드를 검색해 보는데도 사용할 예정이다.
- 저수준 언어와 친해지기
나의 주 언어는 Python이다. 주로 모델링을 담당하다 보니 업무는 파이썬과 쉘스크립트만 알아도 충분하지만 C++ 기반인 엔진에 대한 보다 깊은 이해를 필요로 하는 순간이나, 저수준 언어에 대한 기반 지식이 아쉽게 느껴질 때가 있다. C 계열 언어의 한계성을 극복하고자 만들어진 Rust를 공부하면, 나에게 더 효용이 높은 시간이 될 것 같다.
- 안드로이드 개발을 향해
온디바이스 STT에 대한 수요도 있고.. AI 모델링을 하더라도 서비스를 위해 필요한 백/프론트의 구성이나 흐름을 이해하는 것이 도움이 되듯이, 저수준 언어로 구현될 수밖에 없는 안드로이드 개발 과정을 대략적으로라도 이해해볼 수 있다면 좋겠다.
왜 Rust인가?
모질라 재단에서 2010년 공개한 언어인 Rust는, C/C++와 동등한 수준의 속도를 유지하면서 안전성과 동시성을 향상시키는 것을 목표로 설계되었다고 한다. C/C++은 메모리 등 하드웨어를 자유자재로 제어할 수 있다는 장점이 있지만, 그만큼 해당 제어를 잘못 했을 때의 위험성 또한 높다. (Segmentation fault나 메모리 누수는 내가 C 개발자가 아닌데도 맨날 듣는 재앙의 소리다.) 더 엄격한 문법과 규칙에 기반해, 이러한 잠재적 위험을 사전에 제거한다고 한다. 아마도 이를 가능하게 하는 아래의 키워드들을 차차 앞으로 공부해야 할 것이다.
- Keywords: 소유권, 빌림(Borrowing), 수명(Lifetimes), 트레이트, 제네릭(Generics), 에러 처리(Error Handling)
Hello Rust
언어 공부의 국룰은 인사하기. 아래의 과정으로 설치하면 된다. (Window11 환경, VSCode는 별도 설치)
1) Rust 설치
링크에서 rustup-init.exe 파일을 다운로드 할 수 있다.
1번 옵션으로 설치했다.
설치하는 데 시간이 걸리니 요 친구를 VSCode에 설치해두자.
친절도 해라.. 1번으로 설치. cmd에서 아래 명령어를 실행해 버전을 확인 할 수 있으면 된다.
rustc --version
2) Rust 프로젝트 생성 및 실행
설치한 "cargo"가 자동으로 프로젝트를 구성해주는데, 프로젝트 이름은 digit으로 시작할 수 없다고 한다. (벌써 빡세다.. 숫자는 외않되?)
cargo new hello_rust
만들어진 디렉토리 내부를 확인해보면, 기본 구조가 잡혀있다.
main.rs 파일을 열어보면, Hellow, World 출력을 위한 코드가 기본적으로 잡혀있다.
이를 아래와 같이 수정해보니,
자동으로 Cargo.lock 파일이 생성되었다. 이게 어떤 역할을 하는지는 차차 알게 되겠지..
프로젝트 내에서
cargo run
을 실행하면,
컴파일 후 결과를 보여준다.
그리고 프로젝트 내의 변화를 보면,
"target'이란 이름의 부산물이 생겼다. 자동으로 "debug" 내에는
.exe 실행 파일을 포함해 이런 것들이 생겼다.
반복해서 실행해보니, runtime이 0초인 것으로 보아 재컴파일이 필요 없도록 캐싱을 하나보다.
Window 환경에서의 개발과 구조화된 프로젝트에 익숙해질 기회가 생긴 것 같다.