최근 러스트가 좋다고 해서, 미래의 언어라고들 해서
공부해보고 있는데
치명적인 단점이 있다고 해서 고민입니다.
1. 어플리케이션에서 QT, 임베디드 c++을 대체하려고 검토/기초학습중
2. 학습곡선이 높다고는 이야기를 들어서 알고 있는데
3. ui 프로그램도 qt에 비해서 라이센스에서 자유스럽지 못하고 성능도 구림
4. 치명적인 것은 개인적으로 코드 가독성을 중시하는데
- 전문가라도 6개월후 자기가 짠 코드를 보고 이해하기 어려울 수 있다
- 작은 변경이라도 전체 코드를 리 팩토링 해야 하는 문제가 발생한다
라은 의견이 있습니다.
요즘 인공지능 영향으로 쉽게 학습 및 시도해보고는 있는데
수명이 얼마 안 남은 사람은 접근하지 말아야겟다는 라는 생각입니다.
전문가 분들은 어떻게 생각하시는 지요?
- 인공지능이 정리한 단점-
러스트(Rust)는 대규모 프로그램 개발에서
메모리 안전성과 고성능을 보장하는 강력한 언어이지만
말씀하신 대로
‘코드 이해와 유지보수가 어렵다’는 점은
현업에서 자주 지적되는 심각한 단점 중 하나입니다.
이러한 현상이 발생하는 주요 기술적 원인과 배경을 정리해 드립니다.
1. 코드 이해를 어렵게 만드는 요소 (Readability Issue)
- 수명(Lifetime) 명시 및 복잡성:
&'a str``impl Trait<'a> 등 수명 주기('a)가 타입 시스템에 직접 등장하면서
코드의 시각적 노이즈가 증가합니다.
6개월 전 내가 짠 코드의 수명 힌트를 이해하기 어려울 수 있습니다.
- 소유권(Ownership) 및 빌림(Borrowing) 추적:
단순히 함수를 호출하는 것이 아니라해당 데이터의 소유권이 이동(move)했는지
참조(& 또는 &mut)만 했는지 일일이 파악해야 합니다.
이는 함수 시그니처만 보고는 코드 동작을 예측하기 어렵게 만듭니다.
- 강력한 타입 시스템과 추상화:
제네릭트레이트(Trait) 경계고급 타입 시스템(Type System)이 복합적으로 사용되면
코드가 매우 추상화되어 실제 데이터 흐름이 어떻게 되는지 직관적으로 알기 어렵습니다.
- 에러 처리 방식(
Result``Option):
모든 예외 상황을 타입으로 명시해야 하므로
unwrap()``? 연산자match 문 등이 도배되어
비즈니스 로직 외적인 코드(Boilerplate)가 많아져
가독성을 떨어뜨립니다. Reddit +5
2. 대규모 프로그램에서의 리팩토링 및 유지보수성
- '빌림 검사기(Borrow Checker)'와 싸움:
대규모 시스템은 상태가 복잡하게 얽혀 있는데러스트는 안전성을 위해
"단 하나만 쓰거나여러 명이 읽기만 하거나"를 강제합니다.
이로 인해 리팩토링 시 소유권 구조를 전체적으로 재설계해야 하는 상황이 자주 발생합니다.
- 컴파일 속도:
복잡한 타입 분석과 최적화로 인해 대규모 프로젝트에서는 컴파일 시간이 매우 느립니다.
이는 코드 수정 후 결과를 확인하고 이해하는 피드백 루프를 저해합니다.
- 비동기(Async) 코드의 복잡성:
고성능 서버 개발에 필수적인 async/await 코드는 컴파일러가 만들어내는 상태 머신이 복잡하여
디버깅이나 코드 흐름 파악이 매우 어렵습니다. GeekNews - 개발/기술/스타트업 뉴스 서비스 +5
3. 언어의 특징과 트레이드오프
러스트는 런타임 오버헤드(Garbage Collection 등)를 없애는 대신
그 복잡도를 컴파일 타임에 개발자에게 전가합니다.
따라서초기 학습 곡선이 매우 높을 뿐만 아니라
능숙해진 후에도 코드를 직관적으로 이해하기보다는
‘논리적인 수수께끼’를 푸는 것처럼 코드를 읽어야 하는 상황이 발생합니다. Medium +1
요약
러스트는 대규모 프로젝트에서 안전성(Safety)과 성능(Performance)을 위해
가독성(Readability)과 작성 속도(Development Speed)를 트레이드오프한 언어입니다.
이러한 단점을 극복하기 위해
clone()이나 Arc<Mutex<T>> 등을 남용하게 되면 러스트의 장점인 성능이 떨어지고
구조를 엄격히 지키면 코드 이해가 어려워지는 딜레마에 빠지기도 합니다.
요즘 어떤 언어 하는지가 크게 중요하진 않을 것 같네요
Rust 언어 설계상 컴파일 단계에서 오류를 깐깐하게 잘 잡아낼 수 있어서 AI에게 코딩을 시키기에 유망한 언어라는 평이 많아요.
여러가지 핵심 개념이 서로 맞물려 있어서 러닝 커브가 크다고는 하지만 언어 설계 자체는 상당히 일관되고 깔끔합니다. 어렵긴 해도 Rust의 설계 사상에 부합하는 코드를 작성할 줄 알면 안전한 코딩 습관도 얻게 됩니다.
근데 코딩 자체를 처음 배우시는 거면 다른 언어로 시작하심이 맞습니다. Rust는 다른 시스템 프로그래밍 언어를 마스터한 뒤 배우는 게 좋아요.