Rust의 이점

러스트만의 독특한 세일즈 포인트(장점):

  • 컴파일 시간 메모리 안전 - 메모리 버그의 전체 클래스가 컴파일 시간에 방지됩니다.

    • 초기화되지 않는 변수가 없습니다.
    • 메모리 이중 해제가 원천적으로 불가능 합니다.
    • 메모리 해제 후 사용이 원천적으로 불가능 합니다.
    • NULL포인터는 없습니다.
    • 뮤텍스를 잠궈 놓고 여는 것을 잊는 실수를 할 수 없습니다.
    • 스레드간 데이터 레이스를 막아줍니다.
    • 반복자가 갑자기 무효화 되는 경우가 없습니다.
  • 정의되지 않은 런타임 동작 없음 - Rust 문이 실행하는 작업은 지정되지 않은 상태로 두지 않습니다.

    • 배열 접근시 경계 체크.
    • 정수형 타입의 변수에서 오버플로우 발생시 동작이 잘 정의되어있습니다.
  • 최신 언어 기능 - 상위 수준 언어만큼 표현력이 뛰어나고 인체공학적입니다.

    • 열거형과 패턴 매칭.
    • 제네릭.
    • FFI 런타임 오버헤드 없음.
    • 비용이 들지 않는 추상화.
    • 친절한 컴파일러 오류메시지.
    • 내장 종속성 관리자.
    • 내장 테스트 지원.
    • LSP (Language Server Protocol, 언어 서버 프로토콜) 지원이 잘되어 있음.
This slide should take about 3 minutes.

여기에서 많은 시간을 보내지 마세요. 이 모든 사항은 나중에 자세히 다룹니다.

수강생들에게 어떤 프로그래밍 언어를 사용했는지 물어보시기 바랍니다. 어떤 언어를 사용했느냐에 따라 러스트에서 어떤 점을 강조해야 할지를 고민해 보세요:

  • C/C++: 러스트는 '빌림'검사기를 통해서 수행중에 발생할 수 있는 모든 에러를 제거합니다. 러스트는 C와 C++과 비슷한 수준의 성능을 보여주면서도, 그 언어들에서 종종 발생하는 메모리 관련 오류가 없습니다. 또한, 패턴 매칭이나, 기본적으로 제공되는 종속성 관리와 같은 현대적인 언어의 기능들을 제공합니다.

  • Java, Go, Python, JavaScript: 이 언어들과 동일한 메모리 안정성과 함께, '하이레벨'언어의 느낌을 느낄 수 있습니다. 거기에 더해, 가비지 컬렉터가 없는 C/C++와 유사한 수준의 빠르고 예측 가능한 성능을 기대할 수 있습니다. 그리고 필요한 경우 저수준 하드웨어를 다루는 코드로 작성할 수 있습니다.