메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

한빛랩스 - 지식에 가능성을 머지하다 / 강의 콘텐츠 무료로 수강하시고 피드백을 남겨주세요. ▶︎

이펙티브 러스트

효과적인 러스트 코드 활용을 위한 35가지 방법

한빛미디어

번역서

판매중

  • 저자 : 데이비드 드라이스데일
  • 번역 : 남기혁
  • 출간 : 2024-10-10
  • 페이지 : 344 쪽
  • ISBN : 9791169212946
  • 물류코드 :11294
  • 초급 초중급 중급 중고급 고급
5점 (15명)
좋아요 : 17

가장 안전하고 효율적인 프로그래밍 언어
러스트의 비밀을 파헤치다

 

러스트는 강력한 메모리 안정성, 타입 안정성 그리고 뛰어난 성능 덕분에 개발자들 사이에서 인기 있는 언어로 자리 잡았다. 그러나 강력한 기능이 오히려 숙련된 프로그래머에게도 진입 장벽이 될 수 있다. 이 책은 이러한 난관을 극복하고 러스트 코드를 유창하게 작성할 수 있도록 돕는 실용적인 조언을 제공한다.

 

러스트 기초를 어느 정도 다지고 나서, 다음 단계로 올라서는 데 필요한 내용을 중점적으로 다룬다. C++ 등 기존의 컴파일 언어 활용 경험이 있는 개발자를 위해 러스트의 핵심 개념을 단계별로 설명하고, 실제 프로그램에 적용하는 방법을 제공한다. 이 책을 통해 러스트의 진정한 힘을 이해하고, 더욱 생산적인 러스트 프로그래머로 발돋움해 보자.

 

데이비드 드라이스데일 저자

데이비드 드라이스데일

구글의 소프트웨어 엔지니어로 2019년부터 러스트 언어를 주로 사용해 왔다. Tink 암호화 라이브러리를 러스트로 포팅하고, 안드로이드의 하드웨어 암호화 라이브러리(KeyMint)를 러스트 버전으로 교체하는 프로젝트를 주도했다. C/C++와 고 언어에 폭넓은 경험을 가지고 있으며, 리눅스 커널, 네트워킹 컨트롤 플레인 소프트웨어, 모바일 화상 회의 앱 등 다양한 프로젝트에 참여했다.

남기혁 역자

남기혁

고려대학교 컴퓨터학과에서 학부와 석사 과정을 마친 후 한국전자통신연구원에서 책임 연구원으로 재직하고 있다. 한빛미디어에서 『Make: 센서』(2015), 『메이커 매뉴얼』(2016), 『이펙티브 디버깅』(2017), 『리팩터링 2판』(2020), 『전문가를 위한 C++(개정 5판)』(2023)을, 길벗에서 『핵심 C++ 표준 라이브러리(2판)』(2021), 『모던 C』(2022), 『Go 100가지 실수 패턴과 솔루션』(2023)을, 에이콘출판사에서 『Go 마스터하기』(2018), 『자율주행 자동차 만들기』(2019, 2022), 『스콧 애론슨의 양자 컴퓨팅 강의』(2021) 등을 번역했다.

CHAPTER 1 타입
_아이템 1: 데이터 구조를 타입 시스템으로 표현하라
_아이템 2: 공통 동작은 타입 시스템으로 표현하라
_아이템 3: 명시적인 match 표현식보다 Option과 Result 변환을 사용하라
_아이템 4: 가급적 관용적인 Error 타입을 사용하라
_아이템 5: 타입 변환을 이해하라
_아이템 6: 뉴타입 패턴을 적극 활용하라
_아이템 7: 복잡한 타입에는 빌더를 적용하라
_아이템 8: 레퍼런스와 포인터 타입에 익숙해져라
_아이템 9: 명시적 루프보다 반복자 변환으로 표현하라

 

CHAPTER 2 트레이트
_아이템 10: 표준 트레이트를 잘 익혀둬라
_아이템 11: RAII 패턴에 대해 Drop 트레이트를 구현하라
_아이템 12: 제네릭과 트레이트 객체 사이의 트레이드오프를 이해하라
_아이템 13: 디폴트 구현을 사용해 필수 트레이트 메서드를 최소화하라

 

CHAPTER 3 주요 개념
_아이템 14: 수명을 잘 파악하라
_아이템 15: 대여 검사기를 잘 파악하라
_아이템 16: unsafe 코드 작성을 자제하라
_아이템 17: 공유 상태 병렬성에 주의하라
_아이템 18: 패닉하지 마라
_아이템 19: 리플렉션 사용을 자제하라
_아이템 20: 과도한 최적화의 유혹에 저항하라

 

CHAPTER 4 의존성
_아이템 21: 시맨틱 버저닝의 의미를 이해하라
_아이템 22: 가시성을 최소화하라
_아이템 23: 와일드카드 임포트를 쓰지 마라
_아이템 24: API에 타입으로 나오는 의존성을 다시 익스포트하라
_아이템 25: 의존성 그래프를 관리하라
_아이템 26: 피처 팽창에 주의하라

 

CHAPTER 5 도구 활용
_아이템 27: 공개 인터페이스는 문서화하라
_아이템 28: 매크로를 신중하게 사용하라
_아이템 29: 클리피가 하는 말에 귀 기울여라
_아이템 30: 단위 테스트에만 머물지 마라
_아이템 31: 도구 생태계를 최대한 활용하라
_아이템 32: CI 시스템을 설정하라

 

CHAPTER 6 표준 러스트를 넘어서
_아이템 33: no_std에 호환되는 라이브러리 코드를 고려하라
_아이템 34: FFI 경계를 넘어서는 것을 제어하라
_아이템 35: FFI 매핑을 직접 하기보다는 가급적 bindgen을 활용하라

 

에필로그

출판사 리뷰

 

러스트 개발자를 위한 중급서 등장!
35개의 아이템으로 살펴보는 러스트 실전 가이드

 

러스트는 현대 개발 언어 중 가장 높은 메모리 안전성과 성능을 자랑하지만, 처음 접하는 사람에게는 진입 장벽이 높을 수 있다. 이 책은 그 장벽을 넘어, 더욱 안전하고 효율적인 러스트 코드를 작성하는 방법을 제시한다. 기초를 넘어서 더 나은 설계와 구현을 원하는 개발자, 또는 실무 프로젝트에 러스트를 적용하고 싶은 이들에게 꼭 필요한 가이드를 담았다.

 

러스트 언어의 핵심 개념과 실전 활용법을 체계적으로 소개해 러스트 초보자를 넘어 중급자로 성장하고자 하는 개발자를 위한 필독서다. 러스트의 타입 시스템, 트레이트, 의존성 관리 등 실무에서 자주 마주치는 문제를 해결할 수 있는 실용적인 조언을 제공한다. 35개의 아이템을 통해 안전하고 성능 최적화된 코드를 작성하는 방법을 배우고, 코드의 오류를 줄이고 효율적인 러스트 개발을 할 수 있는 실질적인 팁을 통해 러스트를 깊이 있게 이해해 보자.

 

대상 독자

  • 러스트 기본기를 갖추고 다음 단계로 레벨 업하고 싶은 개발자 
  • C++와 같은 기존 컴파일 언어를 배웠지만, 러스트 컴파일에 어려움을 겪는 개발자
  • 러스트 언어를 제대로 이해하고 싶은 개발자

 

주요 내용

  • 타입 시스템 구조 이해하기
  • 오류 처리 및 반복을 위한 러스트 관용구 배우기
  • 크레이트 작업 방법 익히기
  • 대여 검사기의 경고를 처리하는 법 알아보기
  • 러스트 도구 생태계 활용법 터득하기

 

추천사

 

이 책에서는 기본적인 문법을 공부할 때 자세히 이해하지 못해 그냥 따라 했던 부분을 왜 그렇게 구현해야 하는지 자세히 알려준다. 분명 나중에 "아, 이거 책에서 어떻게 하라고 했던 거 같은데..."하며 다시 찾아보게 될 책이다. 러스트 기본 문법을 『러스트 프로그래밍 공식 가이드』로 독파한 러스트 입문자라면 『이펙티브 러스트』를 읽으면서 정확한 본인의 숙련도를 가늠하고, 러스트에 더욱더 가열차게 빠져들게 될 것이다.


강경구, NHN PAYCO 데이터 엔지니어

 

경험 많은 러스트 개발자가 드문 국내 환경에서 꼭 필요한, 더 나은 설계와 구현을 제안하는 보물과도 같은 중급서이다. 다른 언어를 주력으로 사용하던 개발자가 관용적인 러스트를 배울 때 도움이 될 것이다.


강병수, 엔씨소프트

 

러스트 언어로 코딩하다 보면 왜 이렇게 만들었을까, 왜 필요한 걸까, 내가 지금 하는 것보다 더 좋은 방식은 없을까 등 여러 질문을 하게 된다. 단순히 코딩을 많이 하다 보면 해결되는 질문도 있지만, 좋은 자료를 읽어야만 해결되는 질문도 많다. 이 책을 먼저 리뷰하면서 그동안 내가 가졌던 의문 중 대부분을 해소할 수 있었다. 러스트 언어의 문법을 익힌 후 본격적인 개발을 시작하기 전에 미리 읽기를 추천하고, 이미 러스트로 개발하고 있는 분들에게도 추천한다. 경험이 쌓일수록 더 많은 것을 얻을 수 있는 책이다.
 

김기오, 취미로 리눅스 커널을 공부하는 개발자

 

이펙티브 시리즈는 프로그래밍 언어별로 그 이름에 걸맞은 기대와 평가를 받고 있는데, 이 책 또한 기대 이상으로 러스트를 최대한 러스트답게 효율적으로 작성할 수 있는 가이드를 단계별로 제시한다. 러스트가 갖는 다소 높은 러닝 커브로 인해 기본 러스트 개념을 이해하고 있어야 읽기 수월한 면이 있지만, 러스트 입문 개발자로서 어떻게 하면 최대한 러스트답게 안전하고 효율적인 코드를 작성할 수 있을지 고민하는 개발자에게 레벨 업을 위한 서적으로 적극 추천한다.
 

김동진, 한화정밀기계 솔루션개발팀 PL

 

러스트가 안전한 프로그램을 만들 수 있게 해줬다면, 이 책은 유용하고 널리 쓰일 러스트 코드를 작성하는 방법을 알려준다. 기본적인 내용을 넘어 실제 현장에서 러스트 프로젝트를 시작하기 전에 알아 두면 좋을 지식을 잘 모아놓은 책이다.
 

김정현, KAIST 동시성 및 병렬성 연구실

 

단순한 문법서가 아닌 비법서라고 부를 만한 책이다. 보통 러스트를 접하는 분들은 다른 언어를 사용하다가 넘어왔을 확률이 큰데, 이 책은 그런 분들을 위해 다른 언어에서 사용되는 개념이 러스트에서 어떻게 사용되는지 혹은 어떻게 다뤄져야 하는지 코드와 그림으로 친절하고 상세하게 설명한다. 특히 효과적인 팁이 많아 한 번 보고 끝나기보다는 자주 꺼내봐야 하는 책이다.
 

김태근, 연세대학교 대학원 물리학과

 

이 책은 러스트의 타입, 트레이트, 의존성 등에 대한 깊이 있는 설명을 제공해 개발자들이 실무에서 자주 마주하는 문제를 러스트로 해결하는 데 큰 도움이 된다. 전체적으로 러스트 언어를 제대로 이해하고 싶은 개발자들에게 강력히 추천한다.
 

문용준, SK C&C 소프트웨어 아키텍트

 

러스트로 개발을 해보면 러스트 고유의 특징으로 인해 많은 시행착오를 겪는다. 이 책은 실용적인 예시와 명쾌한 설명을 통해 개발자의 시행착오를 줄이고 효율적으로 개발할 수 있도록 조언한다. 책에서 서술한 조언을 이해하고 적용할 수 있다면 어느새 훌륭한 러스트 개발자로 성장해 있을 것이다. 초중급 개발자에게 이 책을 추천한다.
 

박태준, 둡

 

러스트를 효과적으로 활용하기 위해서 알아 두면 좋은 내용을 아이템별로 심도 있게 다루는 책이다. 특히 C/C++ 언어를 러스트로 대체하려고 하는 움직임이 있기 때문에, C/C++과의 비교를 통해 러스트를 선택하는 이유를 명확히 설명하는 부분이 많아서 유용했다. 최근 러스트 입문서가 여러 권 출간되고 있지만, 이 책은 입문자를 넘어 중급자로 업그레이드할 수 있는 훌륭한 가이드 역할을 한다.
 

임혁, H 회사 백엔드 개발자

 

이펙티브 시리즈의 러스트 한국어 번역서가 출시됐다. 그만큼 러스트 언어 개발자 수가 늘어났음을 짐작할 수 있다. 기초 문법을 넘어 중급 이상으로 넘어가려는 이들의 갈증을 해소하는 이 책의 등장을 환영한다. 저자가 ‘이 책에 대하여'에서 이야기했듯이 이전 이펙티브 시리즈와는 다른 생소한 접근 방식과 CI 도구 등 언어와 직접적으로 관련 없어 보이는 내용을 소개하는 것 또한 언어적 특색과 모던 언어의 특징이 아닐까 생각한다. 역자의 친절한 주석과 베타리더들의 의견 덕분에 원서보다 더 읽기 쉬운 번역서가 탄생했다. 이 책은 러스트 초보를 넘어 중고급자가 되도록 여러분을 안내할 것이다.
 

전봉규, LG CNS 시스템 프로그래머

 

프로그래밍의 세상은 넓고, 알아야 할 것은 많은데 시간은 한정되어 있으니 부디 이 경험치 물약과도 같은 한 권의 책을 통해 시행착오에 드는 시간과 노력을 최소화하길 적극 권한다.
 

차정윤, 삼성전자 MX사업부 소프트웨어 엔지니어

 

이 책을 읽으면서 러스트로 더 안전하고 효율적인 프로그램을 작성할 수 있다는 확신이 생겼다. 다양한 상황에서 러스트를 최적의 방법으로 활용할 수 있게 하는 이 책은 러스트 개발자라면 반드시 읽어야 할 필독서다.
 

피수영, 스타트업 소프트웨어 엔지니어

 

기본을 넘어선 실제 러스트 지식의 훌륭한 모음이다. 이 책에 담긴 조언은 여러분을 자신감 있고 다재다능한 러스트 사용자로 발돋움할 수 있게 할 것이다.
 

캐럴 니컬스, 『러스트 프로그래밍 공식 가이드』(제이펍, 2024) 공동 저자

 

이 책은 흔히 접하는 딱딱한 코딩 책이 아니다. 유용하고 검증된 예제들이 가득하며, 적당한 유머도 있어 읽기 좋다. 이 훌륭한 책으로 파이썬 코딩 실력을 한 단계 끌어올리길 바란다.
 

피에트로 알비니, 전 러스트 코어 팀원

이 책은 러스트 중급자에게 가장 적합한 책이다. 중급자라 함은, 기능을 구현할 때 어떻게 구현하는 것이 더 좋을지 고민하는 단계이다. 저자는 소개에서 경험과 사례를 기반으로, 왜 일반적으로 주어진 지침이 유용한지, 예외적인 상황에는 어떻게 대처하면 좋을지 자세히 설명한다. 이 모든 과정이 추상화된 프로그래밍의 영역이 아닌, 러스트의 원리를 기반으로 진행되기 때문에, 좀 더 Rust 답게 프로그래밍하고자 하는 이들에게 큰 도움을 줄 수 있을 것 같다.

 

하지만 나는 입문자들 또한 이 책을 구매하는 것을 추천하고 싶다. 모든 프로그래밍 언어가 그렇듯, 개발 경험이 쌓임에 따라 기능을 구현하는 것은 누구나 가능하지만, 좋은 코드를 작성하는 것은 그렇지 못하기 때문이다. 이 책에서는 초심자가 참고하기 좋은 지침을 잘 정리해두었기 때문에, 이러한 내용을 주기적으로 복습하는 것만으로 개발 능력을 빠르게 향상시킬 수 있을 것이다. 그러니 당장 읽지는 못하더라도, 두고두고 참고하기 좋은 책이라고 생각한다.

 

구성: 6개의 챕터, 그리고 35개의 아이템

각 챕터는 타입, 트레이트, 기타 주요 개념, 의존성, crates 툴, 러스트 심화를 주제로 나름 '기초'부터 심화까지 전 영역을 다루고 있다. 물론 러스트 프로그래머를 대상으로 작성된 책이라, 초심자가 바로 읽는 것은 확실히 부담으로 다가왔다. 적어도 Hello, World를 출력하는 코드를 작성하는 데 관여하는 배경 지식은 숙지해야 이 책을 읽을 수 있다.

 

다양한 아이템은 이 책이 왜 초심자에게도 유용한지 드러나는 대목이다. 각 아이템은 분명히 지킬 이유가 있는, 일련의 Best Practice를 제시한다. 이 가이드를 잘 숙지한다면 개발하는 중 이와 상충되는 상황을 마주했을 때, 저자가 이러한 규칙을 제시한 이유를 떠올려보고, 그 상황에서 최선의 선택을 행하면 된다. YAGNI (You ain't gonna need it)이나 KISS (Keep it short and simple) 원칙처럼 프로그래밍 전반에 적용되는 느낌은 아니지만, 적어도 Rust 프로그래밍을 진행하는 과정 중에는 특별한 상황이 아니라면 굳이 지키지 않을 이유가 없어보인다.

 

마치며...

러스트 사용 경험이 거의 전무한 상황이라 솔직히 책을 집어들었을 때, 어디부터 어떻게 읽어야 할 지 다소 막막했다. 펼치는 곳마다 이해하기 어려운 내용들이 펼쳐져 있었는데, C++의 확장판이라 생각하고, 그 차이점에 집중해서 기초를 공부한 이후에 읽으니 이전보다는 나았던 것 같다. 다른 개발자분들도 본 서적을 중급서라고 표현하시는 이유를 이해할 것 같다. 그렇다고 책의 가치 자체를 판단하지 못할 정도는 아니다. 이 책은 언제든 참조할 수 있도록 잘 정리된 아이템을 중심으로, 예제와 edge case를 담은 좋은 책이다. Rust를 배우고자 하시는 분들은 이 기회에 초보자에서 중급자로 한 단계 성장할 수 있을 것이라 생각한다.

 

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

이펙티브 시리즈(C++)는 기본기를 갖춘 개발자가 "스콧 마이어스"라는 거인의 어깨에 올라서서 개발자가 사용하는 언어에 깊이를 더하고 개발 경험을 한 단계 끌어올릴 수 있도록 돕는 흥미진진한 책입니다. 에피션트, 빨간책 등과 견주어도 이펙티브 시리즈는 두 번 이상 곱씹게 되는 책으로 평가받아 왔습니다. 저자가 밝힌 대로, C++ 이펙티브 시리즈는 (러스트에 비해) 다루기 까다로운 언어적 특성 때문에 중고급 독자를 위한 이디엄과 조언을 모은 책입니다. 반면, 이펙티브 러스트는 러스트 언어의 안정성 덕분에 이디엄보다 가이드라인에 더 중점을 둡니다. 이 가이드라인은 예외 상황과 그에 따른 근거를 제공해, 독자가 좋은 러스트 코드를 작성할 수 있는 실력을 키우도록 도와줍니다. 또한, C++ 개발 경험을 토대로 러스트의 고유 개념을 더 잘 이해할 수 있도록 안내하는 점도 인상적입니다.

이펙티브 러스트는 언어를 고급스럽게 사용하기 위한 방법을 체계적으로 정리해 놓았습니다. 다만, 내용을 깊이 이해하기 위해서는 기본적인 러스트 문법을 익힌, 초급단계를 벗어난 독자들에게 적합합니다. 다른 시스템 언어, 특히 C++ 언어에 경험이 있는 개발자라면 더욱 쉽고 재밌게 이해할 수 있습니다. 메모리 안정성, 타입 안정성, 스레드 안정성 등 러스트가 제공하는 고유한 기능들을 실무 코드에 적용할 때 "어떻게" 적용할 수 있는지에 대한 유용한 지침들을 제공하여, 결국 "유창한" 러스트 코드를 작성하는데 필요한 실질적인 조언과 예제를 알게 됩니다. 러스트를 깊이 탐구하고자 하는 개발자들에게 큰 도움이 될 것 입니다.

책은 6개의 장과 35가지 아이템으로 구성되어 있으며, 각 장은 러스트의 주요 개념과 패턴, 생태계 도구 활용법, 의존성 관리, 비표준 환경에서의 러스트 활용 방안 등을 다룹니다. 이를 통해 러스트의 장점인 메모리 안정성과 성능, 타입 안전성, 동시성 프로그래밍을 극대화할 수 있는 다양한 방법을 제시합니다. 저자는 러스트의 타입 시스템을 중점적으로 설명하며, 이를 통한 개발 의도 표현, 에러 처리 방식, 안전한 병렬 프로그래밍 등을 구체적인 코드와 함께 다룹니다.

1장 "타입"에서는 러스트의 엄격한 타입 시스템과 그 활용법을 소개합니다. 특히 데이터 구조와 에러 처리에 대한 러스트의 타입 모델을 통해 더 안전하고 효율적인 코드를 작성하는 방법을 다룹니다.

2장 "트레이트"에서는 러스트의 트레이트를 사용하여 코드의 재사용성을 극대화하는 방법을 설명합니다. 트레이트 객체와 제네릭 사용에 있어 성능을 최적화하는 법을 제시합니다.

3장 "주요 개념"에서는 러스트의 소유권 모델, 대여 검사(Borrow Check) 및 수명(Lifetime)을 설명하며, 안전한 멀티스레드 프로그래밍과 불필요한 패닉을 방지하는 방법을 다룹니다.

4장 "의존성 관리"에서는 러스트의 Cargo를 통해 의존성을 효과적으로 관리하는 방법을 설명하고, 라이브러리와 패키지 간 의존성 충돌을 해결하는 팁을 제공합니다.

5장 "도구 활용"에서는 Clippy와 같은 코드 검사 도구, CI 도구 활용 등, 러스트 생태계의 강력한 도구들을 활용해 코드 품질을 높이는 방법을 다룹니다.

6장 "표준 러스트를 넘어서"에서는 크로스 컴파일, 외부 함수 인터페이스(FFI) 등 비표준 환경에서 러스트를 활용하는 방법을 설명하며, 러스트의 다양한 환경 지원 가능성을 보여줍니다.

이펙티브 러스트는 입문서를 넘어 실전 활용으로 나아가고자 하는 개발자를 위한 책입니다. 기존 입문서들이 기본적인 문법에 집중한다면, "이펙티브 러스트"는 러스트 코드를 어떻게 쓰는것이 올바르고 효율적으로 작성할 수 있는지에 중점을 둡니다. Rust for Rustaceans(https://rust-for-rustaceans.com/) 같은 심화서와 견줄수 있을만큼 러스트의 고유 개념과 생태계 도구 활용법을 구체적으로 다루고 있으며 실무적인 코드 작성에 대한 구체적인 조언을 더 많이 제공합니다.

이펙티브 러스트의 단점을 궂이 꼽아보라고 하면, 기본 문법을 다루지 않기 때문에 러스트의 초심자에게는 난이도가 높다는 것과 이펙티브 스리즈 특성상 일요일 아침 서프라이즈처럼 옴니버스식 구성으로 개념 간 연결이 분명하지 않을 때도 있어 각 장의 내용을 충분히 이해하기 위해서는 기초적인 러스트 지식이 분명해야 한다는 정도입니다. 러스트의 고유한 타입 시스템, 트레이트, 대여 검사 등의 기능을 깊이 있게 다루며, 각 개념을 명확히 이해하고 실무에 적용할 수 있는 다양한 예제를 제공합니다. 도구 활용에 대한 설명도 충실하며, Rust로 CI/테스트 도구를 설정할 수 있는 유용한 팁을 제공해 실무에서 바로 활용할 수 있습니다.

러스트는 안전성과 효율성을 동시에 제공하는 모두가 주목하는 언어로, 특히 시스템 프로그래밍과 성능이 중요한 분야에서 빠르게 자리잡고 있습니다. 이 책은 이러한 러스트의 특성을 완전히 활용하여 코드 작성 실수를 줄이고 높은 안정성과 성능을 유지할 수 있는 방안을 제시합니다. 러스트를 깊이 이해하고자 하는 개발자라면, 단순 문법 습득을 넘어서는 이 책을 통해 러스트다운 코드를 작성하는 법을 익히고 실무 역량을 강화할 수 있습니다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

이펙티브 러스트(Effective Rust)’는 러스트 언어를 어느 정도 익힌 개발자를 위한 실용적인 가이드로, 효과적인 프로그래밍을 위한 35가지 방법을 제시합니다. 이 책은 러스트의 타입 시스템, 트레이트, 주요 개념, 의존성 관리, 도구 활용, 그리고 표준 러스트를 넘어서는 기술들을 다루며, 각 아이템은 실전에서 직접 활용 가능한 팁들로 가득 차 있습니다.

 

첫 번째 챕터에서는 타입 시스템의 중요성을 강조하며, 데이터 구조와 공통 동작을 타입으로 표현하는 방법을 설명합니다. 특히 Option과 Result 타입을 활용해 오류 처리를 보다 안전하고 깔끔하게 할 수 있다는 점이 인상적입니다. 두 번째 챕터에서는 트레이트의 활용과 RAII 패턴을 통한 자원 관리의 중요성을 다루어, 러스트의 강력한 기능을 최대한 활용할 수 있도록 돕습니다.

 

세 번째 챕터에서는 수명과 대여 검사기의 개념을 명확히 하여 코드의 안정성을 높이는 방법을 제시합니다. 안전하지 않은 코드 작성을 자제하고, 공유 상태 병렬성에 주의해야 한다는 점은 멀티스레드 환경에서의 안정성을 확보하는 데 필수적입니다.

 

의존성 관리와 도구 활용에 관한 챕터는 시맨틱 버저닝, 가시성 관리, 문서화의 중요성을 강조하며, CI 시스템과 클리피를 통해 코드 품질을 높이는 방법을 제시합니다. 마지막으로 nostd 호환 라이브러리와 FFI에 대한 내용을 통해 특정 환경에서도 러스트를 효과적으로 활용할 수 있는 기술을 제공합니다.

 

이 책은 러스트를 배우고자 하는 개발자들에게 실질적인 도움이 될 뿐만 아니라, 코드의 가독성과 유지보수성을 높이는 데 기여합니다. 이펙티브 러스트는 러스트 언어의 깊이를 이해하고, 안전하고 효율적인 코드를 작성하는 데 필요한 귀중한 자료입니다.

 

 

#필자의 Rust에 대한 TMI

필자는 Rust를 2019년에 처음 접하게 되었다. 그때는 The Rust Programming Language라는 e-book을 통해 단순히 맛보기 수준으로 Rust를 알아갔고, 본격적으로 공부하진 않았다. 이후 Rust가 조금씩 유명세를 타던 2021년에 다시 관심을 가지게 되었고, The Rust Programming Language 2판 번역본에 오타를 수정하거나 제안을 넣는 등 여러 번 기여해본 경험이 있다. 사실 그 시기에는 이미 Python과 AI 분야로 관심이 기울어진 상황이라 Rust를 깊이 파고들 생각은 없었다.

 

C++와의 인연은 2013년으로 거슬러 올라가는데, 당시 Cocos2D-x를 활용해 게임을 만들어 보면서 C++을 익히기 시작했다. 그리고 Unreal Engine이 3에서 4로 넘어가며 무료화 이슈가 크게 떠올랐을 때, 자연스럽게 C++을 깊이 공부하게 되었다. 여기서 C++ 경험을 이야기하는 이유는 이 책이 C++과 Rust를 비교하며 설명하는 부분이 많고, 필자가 이 두 언어에 대한 어느 정도의 배경지식을 갖고 있다는 점을 미리 밝히기 위함이다.

 

Effective Rust 책에 대한 후기

이펙티브 러스트는 Rust 언어에 대한 실질적인 활용법을 알기 쉽게 풀어내고 있다. 이 책은 러스트의 독특한 개념들을 C++과 비교하면서 설명하기 때문에, C++을 주로 사용해온 개발자라면 더욱 빠르게 이해할 수 있게 구성되어 있다.

 

이 책에서 작성된 예제 및 에러 코드는 rustc 1.70 버전이며 필자가 책을 보면서 돌려본 환경은 rustc 1.71.1 (eb26296b5 2023-08-03)이다. 이 버전에서는 문제가 없는것을 확인하였다. 최신 릴리스 버전에서 안되는부분이 있다면 참고바란다.

 

Rust는 C++과는 다른 메모리 관리 방식을 채택하고 있는데, 이 책에서는 Rust가 메모리 안전성을 보장하는 구조를 중심으로 설명하고 있다. 특히 Rust의 ‘소유권’ 모델과 ‘borrow checker’라는 개념이 강조된다. C++에서는 주로 메모리 관리를 수동으로 하거나 스마트 포인터를 사용하는데, Rust의 소유권 모델은 이러한 수고를 덜어주면서도 메모리 누수를 방지할 수 있도록 돕는다.  이 책은 이 소유권 모델을 실제 코드 예제와 함께 설명하며, 안전한 메모리 관리의 중요성을 다시금 일깨워준다.

 

책에서 다루는 또 다른 중요한 내용은 ‘패턴 매칭’과 ‘Result 타입’을 활용한 에러 처리이다. C++에서는 예외를 사용하거나 에러 코드를 반환하는 방식으로 오류 처리를 하는 경우가 많다. 하지만 Rust에서는 ResultOption 타입을 통해 에러를 명확하게 관리할 수 있다. 이러한 에러 처리 방식은 코드의 가독성을 높이고 유지보수하기 좋다는 장점이 있으며, 책에서도 예제를 통해 그 이점을 보여준다. 에러를 코드로 다루는 Rust의 철학은 오류를 쉽게 놓치지 않고 다룰 수 있게 해주며, 실무에서도 큰 도움이 되는 개념이다.

 

동시성 프로그래밍 부분도 인상 깊다. C++에서 동시성 프로그래밍은 잘못 구현하면 메모리 충돌이나 데드락 같은 문제가 발생하기 쉽다. 반면, Rust는 안전성을 확보하면서도 비동기 프로그래밍을 간결하게 다룰 수 있는 방법을 제공한다. 책에서는 async/await 문법을 사용한 비동기 프로그래밍을 실용적인 관점에서 설명하며, 예제 코드와 함께 러스트가 자원 경합 문제를 얼마나 철저히 방지하는지를 보여준다. 이는 고성능 프로그램을 작성하는 데 꼭 필요한 요소로, 동시성 관리에 강한 Rust의 장점을 잘 느낄 수 있게 한다.

 

Rust의 제네릭과 트레이트 시스템도 흥미로운 부분이다. Rust는 C++의 템플릿과 유사한 기능을 제공하지만, 더 많은 안전성을 보장한다. 책에서는 이러한 제네릭과 트레이트의 사용법을 친절하게 설명하며, 이를 통해 코드의 재사용성을 높이는 방법을 소개한다. 트레이트 시스템 덕분에 컴파일 타임에 오류를 미리 확인할 수 있어 프로그램 안정성도 향상된다. 이를 잘 활용하면 유지보수하기 쉬운 코드를 작성할 수 있게 된다.

 

결론적으로 이펙티브 러스트는 러스트를 실무에서 잘 활용할 수 있게 도와주는 책이다. C++ 개발자라면 처음 접할 때 다소 낯설 수 있는 Rust의 소유권 모델, 에러 처리 방식, 동시성 관리 등을 이 책을 통해 쉽게 이해할 수 있다. Rust가 어떻게 메모리 안전성과 성능을 균형 있게 제공하는지 알고 싶은 개발자라면, 이 책에서 많은 통찰을 얻을 수 있을 것이다.

 

이 서평은 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

2024년 10월에 출간된 한빛미디어의 <이펙티브 러스트>에 대해 알아보겠습니다. 이 책의 부제는 효과적인 러스트 코드 활용을 위한 35가지 방법입니다.

 

이 책의 저자는 데이비드 드라이스데일(David Drysdale) 님이며, 구글에서 소프트웨어 엔지니어로 근무하고 있습니다. 이 책의 아마존 평가 점수는 놀랍게도 만점을 받고 있으며, 국내 서점에서 평가 점수는 교보문고, YES24 그리고 한빛미디어에서 4점대 중후반(5점 만점 기준)으로 높은 점수를 받고 있습니다.

 

이 책의 역자는 남기혁 님으로 기존 리팩터링 2판 외 다양한 책을 번역한 경험이 있으며, 번역 품질은 책을 읽는 데 불편함을 느끼지 못했습니다. 

 

<이펙티브 러스트>는 약 340여 페이지로 구성되어 있으며, 휴대하면서 보기에 불편함을 느끼진 않을 것 같습니다. 전자책도 출간되어 있으므로 뷰어가 있으신 분은 전자책으로 보는 것도 좋을 것 같습니다. 

 


한빛미디어의 도서 지원을 받아 작성한 리뷰입니다. 

한빛미디어에서 제공해 준 책을 읽고 작성했음을 밝힙니다.


 

 

이 책의 매력 포인트

이 책은 저자의 홈페이지에 원서가 공개되어 있습니다. 하지만 이 책의 내용이 쉽지 않기 때문에 개인적으로는 번역되어 나온 이 책을 보는 것을 추천하고 싶습니다. 

 

제목에서 유추할 수 있듯이, 책의 구성이 <이펙티브 C++>와 닮아 있습니다. 이 책은 6개의 챕터 35개의 아이템으로 구성되어 있습니다. 챕터 1에서는 타입 시스템에 대해 다루고, 챕터 2는 트레이트에 대해 소개하고, 다른 언어와의 차이점 등을 제시합니다. 챕터 3은 러스트를 학습할 때 진입 장벽으로 느껴지는 대여 검사(Borrow Check)와 수명 검사(Lifetime check)에 대해 이야기하며, 멀티스레드, 리플렉션 등을 사용할 때 다른 언어와의 차이점 등을 소개합니다. 필자는 러스트 타입시스템과, 아이템 14, 15장의 내용이 좋았습니다.

 

챕터 4는 러스트 패키지 생태계에 대해 이야기하고 있으며, 챕터 5는 러스트 컴파일러를 비롯한 다양한 도구들에 대해 다룹니다. 마지막으로 챕터 6은 러스트 표준 환경이 아닌 곳에서의 활용 방안에 대해 이야기합니다. 예를 들어, 크로스 컴파일이라던가, 외부 함수 인터페이스를 활용하여 다른 언어로 컴파일된 코드와 연동 등이 있습니다. 

 

<이펙티브 러스트>는 우선 러스트 언어에 대한 경험이 있는 분들이 읽으면 많은 도움을 받을 수 있을 것으로 생각합니다. 이 책을 읽고 난 후, 러스트에 대한 이해도가 한층 더 높아질 것입니다. 러스트 경험이 없는 독자들은 기본서(러스트 프로그래밍 공식가이드)를 읽고 어느 정도 경험을 쌓은 후 이 책을 보는 것을 추천합니다.

 

러스트는 C++처럼 학습하기 쉬운 언어가 아닙니다. 하지만 매력적인 언어임에는 분명하며, 러스트 입문서를 읽고 러스트에 흥미가 생겼을 때 이 책을 읽는 것을 추천합니다.

 

 

마치면서

러스트는 모질라 재단에서 2010년 7월 처음 발표되었으며, 2021년 2월부터 러스트 재단으로 분리되어 관리되고 있습니다. 원래 그레이든 호어(Graydon Hoare)의 개인 프로젝트로 시작되어 현재는 많은 개발자에게 관심과 사랑을 받는 언어로 성장했습니다.

 

C++와 같이 러스트는 학습하기 쉬운 언어는 아닙니다. 하지만 매력적인 언어임에는 분명합니다. 아직 시장 점유율은 낮은 편이지만, 아마존, 마이크로소프트, 페이스 북 등 점점 사용하는 곳이 늘어나고 있어 앞으로 점유율이 올라갈 것으로 기대되고 있습니다. 국내 기업들의 관심도 높아지고 있으니 꾸준히 학습하는 것이 좋을 것 같습니다. 

제가 처음 읽었던 "이펙티브" 책은 스콧 마이어의 <이펙티브 C++ 2판>이었습니다. 도서관 서가에서 우연히 발견 했는데요. 별다른 생각없이 빌려다 읽다가 깜짝 놀랐습니다. 책을 읽으면서 일종의 "감동"이 밀려옴을 느낄 수 있었기 때문이죠 단순히 C++이라는 언어 자체에 대한 이해가 부족해서 내가 잘못 쓰던 부분 뿐만 아니라, 나아가서 어떻게 쓰는게 더 좋은지를 알 수 있었고, C++이라는 언어를 넘어서 프로그래밍 언어를 사용할 때, 코딩을 할 때 지향해야 할 바를 깨닫게 해주었습니다.

책을 다 읽고 도서관에 반납한 다음 시내 대형서점에가서 <이펙티브 C++>을 구입했습니다. 책을 다시 읽고 싶었기 때문입니다. 그 뒤 시간 차를 두고 2번을 더 읽었고요. 아직도 가지고 있습니다. 그 후 "이펙티브"라는 제목으로 출시되는 책들에서는 뭔가 스콧 마이어의 책에서 느꼈던 그런 감동을 느낄 수 있길 기대하게 되었던 것 같습니다.

그래서, 리뷰를 위해 이 책을 받아들고는, <이펙티브 C++>을 읽을 때 느꼈던 감동에 대한 기대감이 슬쩍 고개를 들기 시작했습니다. 이 책을 쓴 저자도 <이펙티브 C++>을 읽었을 지도 모르는데, 이런 책 제목을 가져간다는 건, 그만큼 Rust에 대해 자신감이 있기 때문이 아닐까 싶었고요. 그러나 <이펙티브 C++>을 읽을 때와 같은 조건은 아니었습니다. 현재 저는 Rust라는 언어를 사용하고 있지 않기 때문이거든요. "효과적으로" 프로그래밍 언어를 쓸수 있게하는 이런 류의 책은 그 프로그래밍 언어를 쓰면서 읽어야 더 감동을 느낄 수 있는데 말이죠.

그럼에도 불구하고 이 책 역시 <이펙티브 C++>처럼 시간차를 두고 다시 읽으면 좋겠다고 생각했습니다.Rust를 단순하게 소개하는 정도를 넘어서 러스트가 가진 용어들이 다른 언어, 특히 C++에서 어떤 개념과 유사한지도 비교해서 설명하고, 러스트의 함수형 프로그래밍 언어적인 특성과 도구 적인 측면까지 다루고 있기 때문입니다. 책을 읽으면서 러스트 뿐 아니라 프로그래밍 자체에 대해서 다시한번 생각해 볼 수 있는 계기가 되었기 때문이죠.

저는 꽤 오래 직장생활을 하고있습니다. (물론 저보다 훨씬 오래 하신분들도 많지만) 그래서 다양한 프로그래밍 언어를 접하고 사용해야 하는 경우를 거쳐 왔습니다. 그중 C와 C++, 자바스크립트, 타입스크립트는 꽤 오래 사용했습니다. 20년 넘게 이 일을 하다보니, 트랜드가 계속 변하고 심지어 주로 사용하는 프로그래밍 언어도 변하게 된다는 걸, 경험하고 있습니다.

스티브 잡스가 아이폰을 내놓았을 때, 아이폰은 단순히 애플의 신제품 이상의 성격을 지녔었습니다. 아이폰은 안드로이드 플랫폼을 급부상하게 만들었고, 다양한 분야에서 안드로이드가 사용되게 만들었습니다. 그에 따라 새로운 프로그래밍 언어들도 나왔고요. 4,5년만에 전혀 새로운 시대가 열렸습니다.

그러나, 아이폰이 어느날 갑자기 하늘에서 떨어진게 아닙니다. 아이폰 이전 피쳐폰들에도 인터넷 기능이 있었고, 미려하고 심플한 디자인도 있었습니다. 다만 스티브 잡스가 제대로 만들었을 뿐이죠.

저는 요즘 비슷한 기시감을 느낍니다. 아이폰이 나오기 전보다 훨씬 새로운 기술들이 우리를 놀라게 하고 있습니다. AI의 발전은 말할 필요도 없고요. 메타와 애플은 확장현실 분야 기기를 내놓고 있지요. 사실 구글에서도 이미 시도하던 바이고요. 어느 순간 보편적이고 제대로 된 제품이 나온다면 아이폰 때 처럼 갑자기 세상이 변할 수도 있습니다.

이런 상황에 개발자라면, 그런 변화를 대비하기 위해 어떤 프로그래밍 언어를 붙잡고 있어야 할까? 라는 생각을 하고 준비해야 하는데요. 저는 아마 Rust가 아닐까 싶습니다. Rust 언어 자체가 이미 검증된 안정성과 탄탄함을 제공하기도 하지만, 무엇보다도 요즘 Rust 책이 엄청나게 나오고 있거든요. 그 말은 Rust를 이미 많이 사용하고 경험한 사람이 많고, 책을 써도 팔릴 만큼 커뮤니티가 성장하고 있다는 반증이기 때문입니다.

아마 AI와 확장 현실을 접목한 무언가를 만든다면, 지금까지와는 다른 차원에 안정성이 보장되는 프로그래밍 언어가 필요할 것입니다. 문자기반 인터페이스 시대에서 그래픽 기반 인터페이스 시대로 넘어갈 때 각종 객체지향 언어가 필요했던 것처럼 말이죠. 그리고 이런 상황은 분야도 뛰어 넘을 것 같습니다. 데스크탑, 모바일 그리고 웹에 이르기 까지 말이죠. 그래서 저는 요즘 러스트에 대한 책은 러스트를 당장 쓰지 않고 있더라도 읽고, 또 읽고 또 읽는 중입니다. 30년이 지나도 개발할 수 있는 개발자로 살고 싶거든요.

"한빛미디어 <나는리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."


최근 핫한 언어 중에 하나인 RUST 언어 관련한 책 입니다.

사실상 RUST 언어 자체를 학습하기 위한 책이라기 보다 제대로 활용하기 위해 알면 좋은 부분들을 35가지로 정리한 책 입니다.

RUST 는 최근에 C/C++을 대체할 수 있는 언어로 많이 거론되고 있지만 이 언어는 훨신 더 이전인 2010년 모질라에서 개발한

시스템 프로그래밍 언어 입니다.

C/C++을 대체할 수 있는 언어로 거론되는 이유는, 메모리 안정성, 스레드 안전성, 높은 성능등을 보장하면서도 개발 생산성을

높일 수 있기 때문 입니다.

메모리 보호 기능으로인해 보안 안전성 또한 높기 때문에, 구글에서는 2021년 4월 부터 RUST로 전환을 시작하였다고 합니다.

이로인해 안드로이드 생태계에서 메모리 관련 취약점의 비율이 52% 감소하였다고 합니다.

 

Rust 의 5가지 특징

  - 높은 메모리 안전성

  - 뛰어난 성능

  - 병렬 처리의 안전성

  - 고유 소유권 시스템

  - 풍부한 타입 시스템과 패턴 매칭

 

이 책에서는 RUST 개발 환경 구성에 대해서는 다루고 있지 않기에 아래의 사이트 참고하면 좋을 것 같습니다.

https://doc.rust-kr.org/ch01-01-installation.html

 

### 대상 독자

RUST 언어에 대한 기초를 다루는 책이 아니기에 책에서도 이 책을 학습하기 전에 다른 RUST 언어에 대한 기초를 익힌 후 이 책을 학습하기를 권하고 있습니다.

저자 추천 책, "러스트 프로그래밍 공식 가이드" (제이펍, 2024), "프로그래밍 러스트" (제이펍, 2022)

 

### 책 구성

이 책은 총 6개의 장으로 구성되어 있습니다.

35가지의 활용 팁을 6개의 장으로 구분하여 학습할 수 있도록 구성되어 있습니다.

  1장, "타입"

          아이템  1: 데이터 구조를 타입 시스템으로 표현하라

          아이템  2: 공통 동작은 타입 시스템으로 표현하라

          아이템  3: 명시적인 match 표현식보다 Option과 Result 변환을 사용하라

          아이템  4: 가급적 관용적인 Error 타입을 사용하라

          아이템  5: 타입 변환을 이해하라

          아이템  6: 뉴타입 패턴을 적극 활용하라

          아이템  7: 복잡한 타입에는 빌더를 적용하라

          아이템  8: 레퍼런스와 포인터 타입에 익숙해져라

          아이템  9: 명시적 루프보다 반복자 변환으로 표현하라

  2장, "트레이트"

          아이템 10: 표준 트레이트를 잘 익혀둬라

          아이템 11: RAII 패턴에 대해 Drop 트레이트를 구현하라

          아이템 12: 제네릭과 트레이트 객체 사이의 트레이드오프를 이해하라

          아이템 13: 디폴트 구현을 사용해 필수 트레이트 메서드를 최호화하라

  3장, "주요 개념"

          아이템 14: 수명을 잘 파악하라

          아이템 15: 대여 검사기를 잘 파악하라

          아이템 16: unsafe 코드 작성을 자제하라

          아이템 17: 공유 상태 병렬성에 주의하라

          아이템 18: 패닉하지 마라

          아이템 19: 리플렉션 사용을 자제하라

          아이템 20: 과도한 최적화의 유혹에 저항하라

  4장, "의존성"

          아이템 21: 시맨틱 버저닝의 의미를 이해하라

          아이템 22: 가시성을 최소화하라

          아이템 23: 와일드카드 임포트를 쓰지 마라

          아이템 24: API에 타입으로 나오는 의존성을 다시 익스포트하라

          아이템 25: 의존성 그래프를 관리하라

          아이템 26: 피처 팽창에 주의하라

  5장, "도구 활용"

          아이템 27: 공개 인터페이스는 문서화하라

          아이템 28: 매크로를 신중하게 사용하라

          아이템 29: 클리피가 하는 말에 귀 기울여라

          아이템 30: 단위 테스트에만 머물지 마라

          아이템 31: 도구 생태계를 최대한 활용하라

          아이템 32: CI 시스템을 설정하라

  6장, "표준 러스트를 넘어서"

          아이템 33: no_std에 호환되는 라이브러리 코드를 고려하라

          아이템 34: FFI 경계를 넘어서는 것을 제어하라

          아이템 35: FFI 매핑을 직접 하기보다는 가급적 bindgen을 활용하라

 

예제 코드 : https://effective-rust.com/

 

책에서는 예제 코드라고 해서 링크를 소개하고 있으나, 책 내용 그대로 정리되어 있습니다.

 

각 아이템들을 학습할 때 서술적인 내용 보다는 각각에 대해 예제 코드 및 그림들을 적절하게 추가하여 좀 더 이해하기 쉽게 설명하려 노력하고 있습니다.

 

각 아이템들의 마지막에는 "기억할 사항" 블럭을 두어 해당 아이템에서 설명하고자한 내용에 대해 다시 한번 생각해 볼 수 있도록 구성하고 있습니다.

 

### 결론

이 책은 RUST 언어에 대한 문법 등을 학습하는 책이 아닙니다.

RUST의 기초는 이미 알고 있다는하에 RUST 언어를 최대한 잘 활용하여 프로그램을 개발 할 때 설계 및 코딩 실수를 줄이고

좀 더 짜임새 있고 좋은 코드를 작성할 수 있도록 한단계 레벨업 할 수 있도록 도와주는 책 입니다.

내용 자체는 RUST를 위한 내용이지만 일부 내용들은 C/C++ 언어를 이용한 코딩 시에도 한번 즈음 생각해봄직한 내용인것 같습니다.

'프로그래밍 언어는 각각이 고유의 성격과 특징을 가지고 있으며 그 목적에 맞게 진화해왔다.'

이 책은 러스트를 사용할 때 알아두면 좋을 법한 심도 있는 내용들을 정리하고 있다무엇보다 러스트에 적용된 특별한 기능들의 탄생 배경과 이와 유사한 다른 언어들의 기능들까지 망라하여 정리하고 있기에 학습하는 사람들에게 러스트뿐만 아니라 주변 언어의 특징들까지 같이 학습할 수 있는 기회를 제공하고 있다.

대표적으로 타입의존성트레이트 등 러스트를 사용하다 보면 대면할 법한 기능들의 쉽게 간과할 수 있을 법한 기술적 난제들에 대해서 술 하였고 이와 관련된 문제들이 발생하는 이유와 이를 파해할 수 있는 방법에 대해서 술하고 있다.

따라서 러스트를 심도 있게 이해하고자 하는 개발자라면 이 책에 술해진 내용 하나하나를 곱씹으며 본인의 것으로 만들기 위해서 노력할 것을 추천한다만약 위 책의 내용에 있어 전문성을 갖춘다면 이는 필시 고급 개발자로 거듭나는 데에 한 발짝 내딛는 성과로 이어질 것이기 때문이다

【 이펙티브 러스트를 읽고 나서 】

이펙티브 시리즈는 예나 지금이나 특정 타픽에 대해서 심도 있고 도전적인 주제들을 다루고 있다모든 학문의 시작은 처음에는 가볍게 그리고 그다음에는 점점 심도 있게를 지향하는 만큼본인이 어느 정도 특정 기술/기능에 대해서 이해도가 생겼다고 판단된다면 이펙티브 시리즈와 함께 본인의 기술적 근간을 고도화해보길 권장 드린다.

필자의 경우이텍티브 자바도 그렇고 이펙티브 C++도 그렇고 한참 프로그래머로써 역량을 개발할 당시 (물론 지금도 한참이지만..) 큰 도움을 받았던 책이었었다따라서 본인의 실력을 한층 도약하고자 하는 개발자라면 언젠가 꼭 이펙티브 시리즈를 읽어보도록 하자!

 

#본 도서는 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 오판이다. 20년 전까지는 C/C++ 개발일을 그래도 좀 했고, 러스트가 나온지는 좀 됐지만, 실무에서는 해본 적이 없고, 회사에서 이 기술을 이용해 서비스를 개발했다고 하길래 그 코드를 읽고 이해하기 위해 공부를 해야겠다 생각해서, 이 책이 최신 서적이다보니, 유용한 팁도 알 겸해서 골랐는데, 완전이 오판했던 셈이다.

 일단 초반은 너무 어렵다. 여기서 사용하는 기술용어도 익숙하지 않은데, 설명하는 내용도 최소한 초심자는 벗어난 상태여야, 게다가 이 언어로 뭔가를 좀 만들어 봤어야, 심지어 고민도 꽤 해놨어야 이해가 될만한 내용들로 가득 차 있다.

 책 머리에 있는 베타리더들의 글을 먼저 읽어봤어야 했다. 정확히 이해하는 리더들의 조언을 새겨 들었어야 했다. 나같은 러스트 초심자(그래도 자바/스칼라 등을 20년 넘게 썼는데도)가 읽기에는 난이도가 높은 중급자용임을 미리 인지했어야 했다. 그만큼 시작은 어렵다.

 1장 타입과 2장 트레이트는 이 책의 근간이다. 물론 세간에 알려진 것과 같이 메모리 관리에 관한 부분이 뛰어나다는 점도 중요하지만, 읽자마자 가슴을 두근거리게 만든 표현이 있다.
 "'러스트는 어떻게 타입 시스템을 통해 프로그램 컨셉을 디자인하는가'를 보여주는 단적인 예"
다시 말해, 타입 시스템을 활용해 개발자의 의도를 손쉽게 표현할 수 있다는 점이고, 어느 정도 안정성을 보장도 해준다는 거다. 이거 무시 못할 특성이다. 자바 등으로 제아무리 잘 디자인해놔도 의도를 잘못 이해하고 사용하는데 정말 별의 별 경우를 다 방어하도록 작성하지 않는다면 잘못된 사용을 막을 방법은 사실상 없으니 말이다. 그런데 이게 가능하다? 놀라운 일일 수밖에 없다.

 그나마 잘 읽히는 편인 부분이 2장 트레이트였다. 이유는 최신 언어에서 차용해서 사용하는 메서드 방식들이 나오고 있어, 쉽게 이해되는 부분이었다.

 3장 주요 개념과 4장 의존성, 5장 도구 활용도 사실상 CS 이론과 그 응용에서 어떻게 러스트와 결합되어 처리되는지를 알려주는 셈이라 매우 중요하면서도 흥미로운 주제다. 하지만 러스트스러워야 한다는 점에서 이해하기 벅찬 부분도 분명히 있었다.

 만약 C/C++ 계열 언어에 친숙하고 최소한 최신 트렌드의 언어를 하나 이상 이해하고 있는 초심자(?)라면 이 책을 읽는데 나만큼 난해하지는 않았을 거라 생각한다. 이유는 다른 게 없다. 개인적으로 C/C++ 문법이 꽤 난해하다는 인상을 가진 내게 있어 코드 읽기가 쉽지 않았던 탓인데, 그런 표현이 익숙하다면 저자가 설명하는 내용을 코드와 매치시켜 이해하는 데 어려움이 덜할 거라고 생각하기 때문이다. 마치 스칼라를 처음 익혔을 때 느꼈던 막막함, 첫 컴파일 성공에 3일이 걸렸던 그 기억과 닮았다.

 1장을 읽으면서 바로 "러스트 프로그래밍 공식 가이드"나 "프로그래밍 러스트" 초급자용 도서를 동시에 공부해야 하나 고민이 되었다. 회사 일이 바쁘다보니 더 이상의 시간을 내는 게 어려워 병행하진 못했지만, 기초부터 습득해서 기술용어와 컨셉에 익숙해지면 다시 도전해서 이해해보려 한다. 베타리더 언급 중 "러스트 언어를 제대로 이해"하고자 하면 읽어보라고 권유하는 데에 100% 동의한다. 그만큼의 가치가 있다. 아마 설계를 하고 핵심 내용을 군더더기 없이 구현하려 했을 때 난감했던 지점들을 이 책이 명확하게 설명해주고 있기 때문이리라.

러스트는 현재 나와있는 프로그래밍 언어들 사이에서 특별한 위치를 차지하고 있다.

컴파일 방식 언어가 지닌 속도와 가비지 컬렉션이 없는 언어의 효율성을 갖추었으며, 함수형 언어의 타입 안정성과 독자적인 메모리 안정성을 위한 솔루션까지 제공한다.

러스트 타입 시스템이 제공하는 강력한 일관성은 주목할 만하다. 프로그램이 컴파일을 무사히 통과했다면 정상 작동할 확률이 매우 높은데, 이는 하스켈과 같은 고급 학술용 언어에서나 볼 수 있었던 특징이었다.

하지만 이런 안정성에는 대가가 따른다. 러스트는 문서화가 상당히 잘 되어 있지만 진입 장벽이 높다고 악명이 자자하다. 처음 접하는 사람이라면 러스트의 대여 검사기가 쏟아내는 불평에 대처하고, 데이터 구조를 다시 설계하고, 수명이란 개념을 이해하느라 고전하게 될 것이다.

이 책은 C++등 기존 컴파일 언어 경험자조차 어려워하는 부분들을 최대한 명확하게 설명하려 노력했다. 이펙티브 시리즈의 전통을 이어받아, 엄격한 규칙보다는 유연한 가이드라인을 제시한다. 각 근거를 자세하게 제공함으로써 주어진 상황에서 규칙을 벗어나는 것이 바람직한지를 독자 스스로 판단할 수 있게 한다.

이 책도 다른 시리즈처럼 조언마다 근거를 함께 제공하지만 러스트는 위험 요소가 현저히 적기 때문에 러스트 고유의 개념을 설명하는데 더 집중했다. 그래서 ‘~에 익숙해져라’, ‘~를 이해하라’와 같으며 러스트를 유창하고 관용적으로 작성하도록 도와주기 위한 내용을 담았다.

다른 언어에서 사용되는 개념들이 러스트에서 어떻게 구현되고 다뤄져야 하는지 코드와 그림으로 친절하고 상세하게 설명한다. 이펙티브 시리즈답게 한 번 읽고 끝낼 수 없다. 모르는 것이 있을 때 다시 돌아와서 발췌독하며 해답을 얻는다면 더 할 나위 없이 좋을 것이다.

이 책의 진정한 가치는 어느 정도 러스트를 경험해본 개발자들에게 있을 것이다. 단순히 러스트 문법 습득을 넘어, 어떻게 하면 최대한 러스트답게 안전하고 효율적인 코드를 작성할 수 있을지 고민하는 개발자에게 도약을 위한 서적으로 사용하면 좋을 것 같다. 입문자를 넘어 중급자에 도달하고 싶은 독자가 보기에 훌륭한 책이다.

이 서평은 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

✔️ 최근 가장 주목받는 프로그래밍 언어이다.

메모리 안전성, 뛰어난 성능, 현대적인 언어로서의 매력 때문에 많은 개발자가 러스트에 관심을 보인다. 하지만 주목받는 언어인만큼 처음 접할 때 많은 어려움이 있어 진입 장벽이 매우 높은 편이다.

✔️ 안정성과 효율성을 모두 고려한 강력한 언어이다.

컴파일 방식 언어의 속도, 가비지 컬렉션이 없는 언어의 효율성 그리고 함수형 언어의 타입 안정성을 제공할 뿐만 아니라, 메모리 안정성을 위한 독자적인 솔루션도 포함한다. 러스트 타입 시스템이 제공하는 강력함과 일관성 덕분에 러스트 프로그램을 정상적으로 컴파일 했다면 프로그램이 올바르게 작동할 가능성이 많다.

✔️ 러스트의 응용을 확실하게 익힐 수 있다.

이 책은 기본서라기 보다는 응용서에 가깝기 때문에 실전에서 러스트를 적용하는데 어려움을 겪고 있는 사람들에게 유용하다. 시중 대부분의 책들이 기본서에 많이 치우쳐져 있다 보니 실무에서 발생하는 문제는 밤샘을 통해 해결하는 수 밖에 없다. 이 책은 러스트 에러로 인해 밤샘을 하고 있는 사람들에게 도움을 줄 수 있는 책이다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

이펙티브 러스트(데이비드 드라이스데일, 2024)

 

 

 

 

책 소개

저자 : 데이비드 드라이스데일( Drysdale, David )

제목 : 이펙티브 러스트 - 효과적인 러스트 코드 활용을 위한 35가지 방법

번역 : 남기혁

출판사 : 한빛미디어

출간 연도 : 2024. 10.

원문 제목 : Effective Rust - 35 Specific Ways to Improve Your Rust Code(2024.07)

페이지 : 344쪽

 

 


 

 

러스트(Rust) 는 모질라 리서치에서 개발한 다중 패러다임범용 프로그래밍 언어이다. 

"안전하고, 병렬적이며, 실용적인" 언어로 디자인되었으며,순수 함수형 프로그래밍, 액터 기반 병렬 프로그래밍, 명령형 프로그래밍객체 지향 프로그래밍 스타일을 지원한다.

(오픈 소스로 개발)

 

 


 

책은 6장으로 구성되어 있다.

 

1장에서는 러스트의 '타입'시스템을 사용하는 방법에 대해 설명하고, 데이터 구조를 만드는 방법을 설명한다. 

"러스트의 타입 시스템은 엄격하기 때문에 항상 대상을 명확히 표현해야 한다"

 

표준 도구(러스트 표준 라이브러리에서 제공하는 데이터 구조, Option / Result / Error /Iterator 등)를 통해 코드를 간결하고 효율적이며 러스트답게 관용적으로(idiomatic Rust) 작성하고, 타입 안전성을 해치지 않는 방법을 설명한다. (러스터의 'enum' 타입과 'error' 타입, 반복자 변환을 중심으로 러스트의 타입 시스템 사용법을 안내한다.)

 

2장에서는 러스트의 표준 '트레이트'를 통해 타입 시스템의 핵심 동작을 인코딩 하는 방법을 설명한다.

트레이트(trait)를 이용해 서로 다은 타입 사이의 공통 동작을 인코딩 하는 방식은 제네릭(generic)과 연계되어 런타임 오버헤드 없이 재사용 가능하다.

 

자주 사용하는 표준 트레이트 10개(Clone, Copy...등)의 설명을 시작으로 트레이트 객체의 사용법을 통해 트레이트 메서드를 보다 직관적으로 이해 할 수 있도록 안내한다.

 

3장은 러스트의 주요 개념을 설명하는데, '대여검사'와 '수명검사' 를 시작으로 unsafe 코드, 리플렉션 사용 금지 등을 알려준다.

러스트는 '겁 없는 동시성 프로그래밍을 제공한다"

 

특히 아이템 17, 러스트에서 멀티스레드 코드 작성시 좋은점&나쁜점을 설명하는 파트(공유 상태 병렬성)는 교착 상태에 빠질 가능성을 줄이는 방법으로 이어져서 멀티 스레드 코드 작성의 시점을 환기 할 수 있다.

 

4장은 러스트의 '의존성'을 주제로 기존 코드를 재 사용하는 것의 위험과 함정을 설명한다. 러스트의 cargo 도구를 활용하는 방법(시맨틱 버저닝, semantic versioning 등)으로 의존성 결정 프로세스를 알려준다.

 

5장에서는 러스트의 도구 생태계와 활용 방법을(문서화와 매크로, 테스트 그리고 CI)

 

마지막 6장에서는 비표준 러스트 환경에서의 작업에 필요한 기본 사항을 설명한다.

(러스트 툴체인은 다양한 환경을 지원

→ 임베디드 시스템 개발이 쉽고, 다른 언어로 컴파일된 코드와 연동 가능하다. )

 


 

 러스트 프로그래밍을 배우며 들은 첫 마디는 '컴파일된 러스트 프로그램은 안전하게 작동한다.'이다. 성능과 안정성을 고려해야하는 코드 구현에 있어 '러스트'는 최적의 프로그래밍 언어이다.

(다만 러스트는 '모든 걸 제대로 알고서 시작해야 하는 언어'이다. 러스트의 컴파일은...)

 

 책을 읽으며 좋았던 점은, 러스트 기초 문법에 있어 이해 하지 못한 부분에 대한 코드 구현과 안전한 러스트 코드 작성에 필요한 다양한 개념과 규칙, 원칙을 설명하는 부분이다. 높은 진입 장벽과 러닝 커브가 높은 부분이 러스트 입문자에게는 허들로 다가오지만, 저자의 '가이드라인'을 통해 기본 입문서 이후의 러스트 코딩을 단단하게 할 수 있다는 점이 책의 강점이다. 

 

 C/C++의 '대체제'로 부상하고 있는 러스트, 러스트 코드의 심화과정과 고급 러스트를 사용하고 싶은 러스트 프로그래머들에게 러스트 코드 활용&사용방법 35가지로 효과적인 러스트 프로그래밍을 안내하는 '이펙티브 러스트'의

일독을 추천한다.

 

 

  "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

이 글은 네이버 블로그에서 이미지로 퍼왔습니다. 더 자세히 보길 원하시는 분들은 여기에서 봐주세요.

 

한빛미디어 ‘나는 리뷰어다’ 활동을 위해서 책을 제공받아 작성된 서평입니다.

 

소개​

러스트(Rust)는 2010년 모질라 재단에 의해 처음 발표된 이후 C/C++와 동등한 수준의 속도를 유지하면서

안전성과 동시성을 향상시키는 것을 목표로 꾸준히 발전해 오고 있으며, 가장 인기있는 시스템 프로그래밍 언어로

자리 잡은 현대적 언어입니다.

러스트의 특징을 대표하는 문구로써는 안정성, 효율성, 고도의 타입 시스템, 안전한 메모리 관리 등을 들 수 있습니다.

‘이펙티브 러스트’는 이 강력한 언어의 심화 개념들을 다루며, 러스트를 단순히 배우는 것에 그치지 않고,

한 단계 더 높은 수준으로 나아갈 수 있도록 도와주는 책입니다. ​

특히, 기본 문법을 익힌 독자들에게 적합하며, 다른 언어(C++ 등)에 익숙한 사용자들이 러스트의 고유한 특징을 이해하고 ​

활용하는 데 훌륭한 가이드가 될 것입니다.

 

주제별 내용

이 책은 이런 러스트의 특징을 체계적으로 설명하기 위해서 5개의 Chapter로 나누어서 중요 특징을 설명하고 있습니다.​

 

Chapter 1Chapter 2에서는 엄격한 타입 시스템트레이트(Trait) 같은 러스트만의 중요 개념을 설명합니다. ​

타입 시스템 & 트레이트(Trait)를 C++의 특징과 비교하여 설명함으로써, 러스트가 어떤 방식으로 기존 언어들과 ​

다른 문제 해결 방식을 제시하는지 구체적으로 보여줍니다.

 

Chapter 3에서는 대여 검사(Borrow Check)수명(Lifetime) 검사는 기존 개발자들에게는 다소 낯선 개념이지만,

이 책은 이러한 개념을 친절하게 설명하여, 독자가 왜 이 개념이 중요한지 자연스럽게 이해하도록 돕습니다.

이는 안정성과 효율성을 동시에 추구하는 러스트만의 철학을 명확히 보여주는 부분입니다.

 

Chapter 4는 의존성 문제를 러스트가 어떻게 해결하는지 보여줍니다.

Cargo라는 패키지 관리 도구를 통해 어떻게 의존성을 관리할 수 있는지,

클리피(Clippy) 와 같은 코드 검사 도구나 다양한 테스트 프레임워크를 활용하는 방법까지 실용적인 정보를 제공합니다.

 

Chapter 5에서는 러스트 도구 생태계에 대해서 깊이 있게 소개합니다. ​

특히, CI(Continuous Integration) 환경에 이러한 도구를 통합하여 코드 품질을 관리하는 Know-how도 제시하며, 실무에서 바로 적용할 수 있는 유용한 Tip을 다룹니다.

 

마지막 Chapter 6에서는 러스트의 기본기를 다진 이후 비표준 환경에서의 활용 방안을 제시하는 내용으로 구성되어 있습니다.

크로스 컴파일 환경, 다른 언어와의 연동, 임베디드 환경 같은 고급 주제까지 다룹니다.

운영체제 기능이 제한된 환경에서도 러스트가 어떻게 활용될 수 있는지에 대한 실용적인 접근도 제공히고 있습니다.

 

총평

이펙티브 러스트는 러스트를 처음 접하는 독자들에게는 다소 어렵게 느껴질 수 있지만(사실 많이 어려운 것 같습니다..), ​

기본적인 문법을 익힌 개발자들에게는 러스트의 심화 개념을 이해하고 실전에서 활용하는 데 큰 도움이 되는 책이었고, ​

C++과 비교하며 설명하는 부분은 기존 C++ 개발자들에게 좀 더 유용할 것이라고 생각합니다.​

러스트의 철학과 실용적인 도구 사용법을 명확히 제시하는 이 책은 러스트를 더욱 깊이 이해하고자 하는 개발자에게 추천할 만한 훌륭한 가이드입니다.

국내 번역서로 출간되기를 손꼽아 기다렸는데 드디어 출간되었네요

한빛미디어 답게 깔끔하게 번역되어 이펙티브 러스트 사이트 보다 훨씬 읽기 좋아서 만족스럽습니다

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 상품명 :
이펙티브 러스트
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
이펙티브 러스트
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
이펙티브 러스트
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실

최근 본 상품1