[Rust] 러스트의 장/단점

image 써보면서 느낀 점을 정리해본다.


언어적 장점

  1. 키워드가 간결하고 적으며, 문법이 명료하다.
  2. 기본 인코딩으로 UTF-8을 사용한다.
  3. 정적(static) 타입 시스템을 갖춰 타입 안정적이다.
  4. 객체지향 언어다. 객체지향적 설계가 용이하다.
  5. C/C++ 스타일의 명령형 구조를 기반하므로, 접근성이 괜찮다.
  6. 대입 시도는 기본적으로 복사가 아닌 이동을 수행한다. 훨씬 효율적이다.
  7. 소유권 기반의 자원관리를 사용해서, 성능의 저하 없이 자원의 누수를 최소화할 수 있다.
  8. 모든 구문이 식으로 취급된다.
  9. 풍부한 매크로 시스템을 가지고 있어, 이런저런 확장이 용이하다.
  10. FFI를 사용하면 C/C++로 작성된 정적 라이브러리나 동적 라이브러리를 갖다쓸 수 있다.
  11. 람다식이나 패턴매칭 등의 모던하고 멋진 구문들을 제공한다.
  12. unsafe를 사용하지 않는다면, Undefined Behavior가 존재하지 않는다.
  13. unsafe를 사용하면 저수준 접근도 가능하다.
  14. 모든 변수는 상수가 기본이다. 가변성을 부여하려면 mut를 붙여야 한다.
  15. 모나드 기반의 예외처리시스템을 사용한다. 때문에 null이 없고 성능 부하가 적다.

언어적 단점

  1. 생소한 개념이 있어 좀 어려울 수 있다. 소유권+라이프타임에 관한 문제가 특히나 까다롭다.
  2. 상속이 없고 일종의 인터페이스(trait)만 존재한다. 때문에 기존의 디자인패턴을 그대로 사용하기에는 좀 불편할 수 있다.

외적 장점

  1. 성능이 아주 좋다. C/C++과 동등한 시스템 수준 퍼포먼스를 보인다.
  2. 백엔드 시스템으로 LLVM을 사용해서, 이식성이 아주 좋다.
  3. cargo라는 멋진 패키지&의존성 관리자가 있어서 라이브러리를 땡겨쓰는 것이 아주 쉽고 편리하다.
  4. 웹어셈블리 환경이 가장 잘 되어있다. 정말로.
  5. 컴파일러가 친절하다.
  6. 테스트 도구가 통합되어있다.
  7. 문서화 도구가 잘 되어있고, 라이브러리 배포시 자동으로 문서가 생성되며, 배포된다.

외적 단점

  1. 아직 현업에서는 널리 쓰이지 않는다.
  2. 웹어셈블리나 웹백엔드 등을 제외하면 생태계가 그리 비옥하진 않다.