본문 바로가기

추천 검색어

실시간 인기 검색어

파이썬과 비교하며 배우는

러스트 프로그래밍

윤인도 지음
제이펍

2024년 06월 14일 출간

국내도서 : 2024년 05월 31일 출간

(개의 리뷰)
( 0% 의 구매자)
eBook 상품 정보
파일 정보 pdf (7.35MB)
ISBN 9791193926321
지원기기 교보eBook App, PC e서재, 리더기, 웹뷰어
교보eBook App 듣기(TTS) 불가능
TTS 란?
텍스트를 음성으로 읽어주는 기술입니다.
  • 전자책의 편집 상태에 따라 본문의 흐름과 다르게 텍스트를​ 읽을 수 있습니다.
  • 이미지 형태로 제작된 전자책 (예 : ZIP 파일)은 TTS 기능을 지원하지 않습니다.

PDF 필기가능 (Android, iOS)
소득공제
소장
정가 : 17,500원

쿠폰적용가 15,750

10% 할인 | 5%P 적립

이 상품은 배송되지 않는 디지털 상품이며,
교보eBook앱이나 웹뷰어에서 바로 이용가능합니다.

카드&결제 혜택

  • 5만원 이상 구매 시 추가 2,000P
  • 3만원 이상 구매 시, 등급별 2~4% 추가 최대 416P
  • 리뷰 작성 시, e교환권 추가 최대 200원

작품소개

이 상품이 속한 분야

이 책은 파이썬 코드와 러스트 코드를 비교하면서 차이점과 유사점을 발견하고, 러스트를 쉽게 이해하도록 도와준다. 파이썬을 모르더라도 친절한 설명으로 러스트의 타입 시스템, 함수, 클로저, 매크로 등 기본 개념을 빠르게 익힐 수 있으며, 파이썬에 익숙하다면 러스트의 소유권과 제네릭, 트레이트, 멀티스레딩, 테스트 등 고급 개념을 확실히 이해하는 데 도움이 될 것이다. 러스트를 사용해본 개발자라면 다른 언어와의 비교를 통해 러스트에 대해 미처 몰랐던 부분을 발견할 수 있다.
추천사 x
베타리더 후기 xi
시작하며 xiii
이 책에 대하여 xiv

CHAPTER 1 러스트 시작하기 1
1.1 가장 사랑받는 언어, 러스트 1
1.2 파이썬 개발자가 러스트를 배워야 하는 이유 2
1.3 파이썬과 러스트의 차이점 3
__언어상의 차이 3
__툴 비교 4
1.4 러스트의 경쟁 언어 5
1.5 러스트로 뭘 할 수 있나요? 6
__러스트 실제 사용 사례 8
1.6 러스트 개발 환경 설정하기 10
__러스트 툴체인 설치하기 10
__Visual Studio Code 설치 및 설정하기 11
__프로젝트 생성하기 12
1.7 러스트 코드 실행하기 15
__코드 컴파일하기 15
__코드 실행하기 16
__rustfmt 17

CHAPTER 2 변수와 상수 18
2.1 값 출력하기 18
2.2 변수 선언 19
2.3 작명 규칙 21
2.4 불변성 22
2.5 섀도잉 23
2.6 타입 24
__타입 추론 24
__타입 변환 25
2.7 상수 26
2.8 연습문제 29

CHAPTER 3 함수와 매크로 30
3.1 함수 선언 30
3.2 여러 개의 값 리턴하기 33
3.3 스코프 35
3.4 익명 함수 38
3.5 매크로 40
3.6 연습문제 42

CHAPTER 4 조건문과 반복문 43
4.1 if/else 43
__let if 45
4.2 for 47
4.3 while 49
4.4 loop 50
4.5 match 52
4.6 연습문제 54

CHAPTER 5 소유권 55
5.1 메모리 관리 55
5.2 스택과 힙 56
5.3 소유권 규칙 57
__값에 대한 소유권 57
__소유권 돌려주기 59
__레퍼런스와 소유권 빌리기 60
__가변 레퍼런스 61
5.4 클로저와 소유권 64
__클로저의 환경 캡처 64
__move를 사용한 소유권 이동 65
5.5 연습문제 67

CHAPTER 6 자료구조와 이터레이터 70
6.1 한눈에 보기 71
6.2 벡터 71
__벡터 선언 71
__벡터 원소 접근하기 72
__벡터에 값 추가하기 73
__벡터에서 값 삭제하기 74
__데크 75
6.3 배열 76
__배열 선언 76
__원소 참조 79
6.4 튜플 81
__튜플 선언 81
__원소 참조 82
__튜플 불변성 83
6.5 해시맵 84
6.6 문자열 87
__문자열 생성하기 87
__문자열 슬라이스 87
6.7 열거형 89
__Option 열거형 92
__Result〈T, E〉 열거형 94
6.8 이터레이터 98
__이터레이터의 개념 98
__이터레이터를 소비하는 메서드 100
__새로운 이터레이터를 만드는 메서드 101
6.9 연습문제 105

CHAPTER 7 구조체 107
7.1 구조체의 정의 108
__구조체 선언 108
__연관 함수 109
__메서드 111
__튜플 구조체 113
7.2 트레이트 114
__트레이트로 메서드 공유하기 114
__파생 118
7.3 연습문제 125

CHAPTER 8 모듈과 크레이트 127
8.1 러스트의 모듈 시스템 127
__크레이트 127
8.2 모듈 128
__공개 및 비공개 129
__모듈 사용하기 130
__패키지 132
8.3 모듈과 크레이트 사용해보기 134

CHAPTER 9 제네릭과 라이프타임 139
9.1 제네릭 139
9.2 타입 파라미터 141
9.3 제네릭과 트레이트 144
__파라미터 타입 145
__트레이트 바운드 146
__터보피시 147
9.4 미니 프로젝트: cat 만들어보기 150
9.5 라이프타임과 스태틱 152
__라이프타임 153
__함수에서의 라이프타임 153
__스태틱 라이프타임 157

CHAPTER 10 에러 처리와 로깅 163
10.1 에러 처리의 철학 163
__파이썬의 에러 처리 163
__러스트의 에러 처리 164
10.2 panic! 165
10.3 unwrap 167
__unwrap 167
__unwrap_or 170
__unwrap_or_else 171
__unwrap_or_default 172
10.4 expect 173
10.5 ? 연산자 174
10.6 커스텀 에러 정의 177
10.7 로깅 181

CHAPTER 11 스마트 포인터 187
11.1 포인터 187
__스마트 포인터 188
11.2 Box 타입 191
__Box〈T〉 194
__Box 사용하기 194
__dyn과 Box로 트레이트 타입 표현하기 195
11.3 Rc〈T〉 198
__마지막 순간까지 198
__퀴즈 201
11.4 RefCell〈T〉 202
__Rc〈T〉의 한계 202
__내부 가변성 205
__Rc〈RefCell〈T〉〉 206
11.5 스마트 포인터 정리 208
11.6 연습문제 209

CHAPTER 12 멀티스레딩 211
12.1 스레드 스폰 212
__싱글 스레드 스폰하기 212
__데몬 스레드 만들기 214
__join 함수를 사용해 스레드 기다리기 216
12.2 GIL 218
__GIL의 단점 219
12.3 스레드와 소유권 220
__범위 제한 스레드 223
__스태틱 225
12.4 Arc 225
__레퍼런스 카운팅 226
__Arc 227
12.5 뮤텍스 229
12.6 메시지 전달 233

CHAPTER 13 비동기 프로그래밍 237
13.1 비동기 프로그래밍 237
__멀티스레드와 비동기의 차이점 238
__비동기 프로그램의 작동 방식 238
13.2 비동기 프로그래밍 만들기 239
__비동기 런타임 239
__비동기 함수 만들기 240
__여러 작업 실행하기 242
13.3 예제: 빠르게 HTTP 요청 보내기 245
__동기 방식 245
__비동기 방식 248

CHAPTER 14 테스트 255
14.1 프로그래밍에서 테스트가 필요한 이유 255
14.2 단위 테스트 256
__함수 테스트 256
__클래스와 구조체 테스트 260
__비동기 함수 테스트 263
14.3 문서 테스트 264
14.4 모킹 266

CHAPTER 15 파이썬 바인딩 271
15.1 파이썬 가상 환경 만들기 271
__가상 환경 271
__pipenv 271
15.2 러스트 프로젝트 생성하기 273
__파이썬 바인딩 273
__maturin 274
__라이브러리 크레이트 만들기 275
15.3 파이썬에서 러스트 코드 실행하기 276
__개발 모드로 빌드하기 276
__릴리스 모드로 빌드하기 278
15.4 PyO3와 GIL 279
__GIL 획득과 해제 279

APPENDIX A 연습문제 정답 282

찾아보기 291

파이썬과 러스트의 기본 툴들을 비교한 내용을 표로 함께 살펴볼까요? 파이썬의 경우, pip를 제외한 툴은 일반적으로 별도 설치가 필요합니다. 하지만 러스트는 cargo라는 툴을 통해 대부분의 기능을 바로 사용할 수 있습니다. cargo는 크레이트(crate)라고 하는 패키지를 관리하는 도구이면서, 동시에 소스 코드를 컴파일하고 빌드하는 시스템 빌드 매니저 기능이 있는 빌드 시스템입니다. 표 1-2와 같이 cargo에는 포매터, 린트(lint), 테스트, 문서화, 벤치마크 등의 기능이 내장돼 있습니다. 여기에 플러그인을 설치해서 더 다양하게 cargo를 사용할 수도 있습니다. (4쪽)

매크로는 함수와 비슷하게 사용되지만, 실제로 함수와 비교했을 때 중요한 차이점이 있습니다. 기본적으로 매크로는 ‘다른 코드를 생성하는’ 코드를 작성하는 방법으로, 메타 프로그래밍(meta programming)이라고 합니다. 함수를 정의할 때는 파라미터의 개수와 타입을 미리 지정해야 합니다. 반면에 매크로는 매개변수의 개수가 가변적입니다. 예를 들어, println!("hello")와 같이 하나의 인수로 println!을 호출하거나 println!("hello {}", name)과 같이 두 개의 인수로 호출할 수 있습니다. (40쪽)

파이썬은 스택을 사용하지 않고 모든 객체를 힙 영역에 저장합니다. 이렇게 저장된 객체들은 파이썬에서 가비지 컬렉션을 통해 메모리를 관리하기 때문에 파이썬을 사용할 때는 메모리 관리에 신경쓰지 않아도 됩니다. 앞에서 힙 영역을 설명할 때 언급한 개발자가 할당하고 할당 해제하는 메모리를 파이썬의 가비지 컬렉터가 대신해주는 것입니다. 반면 러스트는 스택 영역과 힙 영역 모두를 사용합니다. 러스트는 기본적으로 다음과 같이 함수에서 사용하는 모든 값을 제한된 크기의 스택 영역에 저장합니다. 따라서 함수 호출이 종료되면 지역 변수 foo와 var는 모두 삭제됩니다. (56쪽)

러스트는 pop 메서드에 인덱스를 넣을 수 없고, 무조건 마지막 원소가 제거됩니다. 마지막 원소가 아닌 다른 원소를 제거하려면 remove 메서드에 인덱스를 넣어야 합니다. 러스트의 pop과 remove 모두 원소를 제거하고, 제거된 원소를 리턴합니다. 여기서 만일 벡터의 원소가 없는 상태에서 pop을 하게 되면 문제가 발생할 수 있습니다. 따라서 unwrap 함수를 통해 에러가 있는지를 확인하는 과정을 거치게 됩니다. 즉 벡터의 길이가 0인 상태에서 pop을 호출하면 패닉이 발생해 프로그램이 멈추지만, 그게 아니라면 정상적으로 원소를 참조할 수 있게 됩니다. (74~75쪽)

러스트에서는 이터레이터에서 sum, max, min 메서드를 호출합니다. 여기서 max나 min 메서드는 모두 Option을 리턴합니다. 만일 벡터가 비어있을 때는 최댓값과 최솟값을 구할 수 없기 때문에 이런 경우는 None이 리턴됩니다. max나 min에서 None이 리턴되면, unwrap()은 패닉을 일으킵니다. 따라서 원칙적으로는 match 등을 사용해서 각 경우를 처리해줘야 하지만 여기서는 벡터가 비어있지 않다는 것을 알고 있기 때문에 unwrap을 사용해도 괜찮습니다. (101쪽)

러스트의 접근 방식은 컴파일 타임과 런타임으로 나눠 생각해볼 수 있습니다. 컴파일 타임에는 LBYL 방식으로 컴파일러가 타입, 소유권 등을 미리 검사하게 됩니다. 런타임에 발생할 수 있는 에러는 Result를 사용합니다. Result는 에러가 발생하더라도 프로그램이 종료되지 않고, 에러의 종류에 따라 호출한 코드에서 적절한 처리를 해야 하기 때문에 EAFP 방식이라고 할 수 있습니다. / Result를 사용하면 에러가 발생하더라도 원래 코드의 진행을 복구시킬 수 있지만, 간혹 프로그램에 패닉이 발생하면 더는 프로그램을 진행할 수 없습니다. 또는 직접 panic! 매크로를 사용해 복구 불가능한 치명적인 오류에 대해 프로그램을 즉시 종료할 수 있습니다. (164쪽)

러스트에 입문하는 가장 빠르고 확실한 방법, 파이썬 코드와 비교하기

파이썬은 간결한 문법 덕분에 널리 사랑받는 언어이고, 러스트는 고성능 프로그램을 구현할 수 있는 언어다. 파이썬 패키지와 자바스크립트 패키지를 러스트로 대체하려는 분야가 많아지고 있고, 이 추세는 계속될 것으로 보인다. 이러한 상황에서 파이썬 사용자 중에는 진입장벽이 높은 러스트에 발을 들이기를 망설이고 있는 사람이 많다.

이 책은 파이썬을 알고 있는 사람이 가장 빠르고 확실하게 러스트에 입문할 수 있게 쓰인 책이다. 파이썬 코드에서 병목현상이 발생하는 부분을 러스트로 대체하면 성능을 크게 높일 수 있으며, 러스트는 파이썬보다 멀티스레딩 구현이 쉽고, 개발 도구가 매우 편리하다. 파이썬은 동적 타입 언어로 주로 객체지향 프로그래밍을 하고, 러스트는 정적 타입 언어로 주로 함수형 프로그래밍을 한다는 차이점이 있지만 이 책과 함께라면 쉽게 그 차이를 이해할 수 있을 것이다.

1장에서는 러스트를 배워야 하는 이유와 실무에서 러스트를 활용한 사례를 알아보고, 실행 환경을 차근차근 구축한다. 2장에서는 변수를 선언하는 방법과 타입 시스템, 3장에서는 함수와 클로저를 정의하는 방법과 매크로를 알아본다. 4장에서는 흐름 제어문, 5장에서는 소유권을 배운다. 6장에서는 러스트 내장 자료형과 함수형 프로그래밍에서 중요한 이터레이터를 알아보고, 7장에서는 객체 지향 방식과 구조체를 사용한 방식을 비교해본다. 8장에서는 코드가 길어지고 복잡해질 때 프로젝트를 모듈화하는 방법을 배운다.

9장에서는 제네릭과 트레이트로 코드를 추상화하는 방법과 러스트에서 라이프타임을 사용해 변수의 범위를 제한하는 방법을 살펴본다. 10장에서는 에러 처리 방법과 디버깅을 위한 로깅 방법을, 11장에서는 스마트 포인터를 통해 힙 메모리 공간을 안전하게 사용할 수 있는 방법을 알아본다. 12장에서는 멀티스레딩을 효율적이고 안전하게 수행하는 방법을 살펴보고, 13장에서는 비동기 프로그래밍을 알아본다. 14장에서는 단위 테스트와 문서 테스트를 수행하는 방법을, 15장에서는 러스트 코드를 파이썬에서 실행해서 GIL을 우회하고 빠른 연산 속도를 얻는 방법을 설명한다.

중간중간 연습문제를 통해 책에서 배운 지식을 체크할 수도 있어 개념을 확실히 익힐 수 있을 것이다. 러스트의 가능성에 관심이 있는 모든 개발자에게 이 책을 추천한다.

주요 내용
 소유권으로 메모리 관리하기
 파이썬의 객체 지향과 러스트의 구조체 비교하기
 제네릭과 트레이트로 코드 추상화하기
 에러 처리와 로깅 방법
 스마트 포인터로 힙 메모리 공간 안전하게 사용하기
 효율적이고 안전하게 멀티스레딩 수행하기
 비동기 프로그래밍과 테스트
 러스트의 파이썬 바인딩

작가정보

저자(글) 윤인도

SAP Labs Korea의 백엔드 개발자. 한 줄의 코드가 세상을 더 나은 곳으로 바꿀 수 있다고 믿으며, 많은 이에게 지식을 전하기 위해 여러 기업과 대학에서 강연하고 있다. 또한 프로그래머스, 클래스101, 인프런, 베어유 등에서 다양한 주제로 온라인 클래스도 진행하고 있다.

이 상품의 총서

Klover리뷰 (0)

Klover리뷰 안내
Klover(Kyobo-lover)는 교보를 애용해 주시는 고객님들이 남겨주신 평점과 감상을 바탕으로, 다양한 정보를 전달하는 교보문고의 리뷰 서비스입니다.
1. 리워드 안내
구매 후 90일 이내에 평점 작성 시 e교환권 100원을 적립해 드립니다.
  • - e교환권은 적립일로부터 180일 동안 사용 가능합니다.
  • - 리워드는 1,000원 이상 eBook, 오디오북, 동영상에 한해 다운로드 완료 후 리뷰 작성 시 익일 제공됩니다. (5,000원 이상 상품으로 변경 예정, 2024년 9월 30일부터 적용)
  • - 리워드는 한 상품에 최초 1회만 제공됩니다.
  • - sam 이용권 구매 상품 / 선물받은 eBook은 리워드 대상에서 제외됩니다.
2. 운영 원칙 안내
Klover리뷰를 통한 리뷰를 작성해 주셔서 감사합니다. 자유로운 의사 표현의 공간인 만큼 타인에 대한 배려를 부탁합니다. 일부 타인의 권리를 침해하거나 불편을 끼치는 것을 방지하기 위해 아래에 해당하는 Klover 리뷰는 별도의 통보 없이 삭제될 수 있습니다.
  • 도서나 타인에 대해 근거 없이 비방을 하거나 타인의 명예를 훼손할 수 있는 리뷰
  • 도서와 무관한 내용의 리뷰
  • 인신공격이나 욕설, 비속어, 혐오 발언이 개재된 리뷰
  • 의성어나 의태어 등 내용의 의미가 없는 리뷰

구매 후 리뷰 작성 시, e교환권 100원 적립

문장수집

문장수집 안내
문장수집은 고객님들이 직접 선정한 책의 좋은 문장을 보여 주는 교보문고의 새로운 서비스 입니다. 교보eBook 앱에서 도서 열람 후 문장 하이라이트 하시면 직접 타이핑 하실 필요 없이 보다 편하게 남길 수 있습니다. 마음을 두드린 문장들을 기록하고 좋은 글귀들은 ‘좋아요’ 하여 모아보세요. 도서 문장과 무관한 내용 등록 시 별도 통보없이 삭제될 수 있습니다.
리워드 안내
  • 구매 후 90일 이내에 문장 수집 등록 시 e교환권 100원을 적립해 드립니다.
  • e교환권은 적립일로부터 180일 동안 사용 가능합니다.
  • 리워드는 1,000원 이상 eBook에 한해 다운로드 완료 후 문장수집 등록 시 제공됩니다. (5,000원 이상 eBook으로 변경 예정, 2024년 9월 30일부터 적용)
  • 리워드는 한 상품에 최초 1회만 제공됩니다.
  • sam 이용권 구매 상품 / 선물받은 eBook / 오디오북·동영상 상품/주문취소/환불 시 리워드 대상에서 제외됩니다.

구매 후 문장수집 작성 시, e교환권 100원 적립

    교보eBook 첫 방문을 환영 합니다!

    신규가입 혜택 지급이 완료 되었습니다.

    바로 사용 가능한 교보e캐시 1,000원 (유효기간 7일)
    지금 바로 교보eBook의 다양한 콘텐츠를 이용해 보세요!

    교보e캐시 1,000원
    TOP
    신간 알림 안내
    러스트 프로그래밍 웹툰 신간 알림이 신청되었습니다.
    신간 알림 안내
    러스트 프로그래밍 웹툰 신간 알림이 취소되었습니다.
    리뷰작성
    • 구매 후 90일 이내 작성 시, e교환권 100원 (최초1회)
    • 리워드 제외 상품 : 마이 > 라이브러리 > Klover리뷰 > 리워드 안내 참고
    • 콘텐츠 다운로드 또는 바로보기 완료 후 리뷰 작성 시 익일 제공
    감성 태그

    가장 와 닿는 하나의 키워드를 선택해주세요.

    사진 첨부(선택) 0 / 5

    총 5MB 이하로 jpg,jpeg,png 파일만 업로드 가능합니다.

    신고/차단

    신고 사유를 선택해주세요.
    신고 내용은 이용약관 및 정책에 의해 처리됩니다.

    허위 신고일 경우, 신고자의 서비스 활동이 제한될 수
    있으니 유의하시어 신중하게 신고해주세요.


    이 글을 작성한 작성자의 모든 글은 블라인드 처리 됩니다.

    문장수집 작성

    구매 후 90일 이내 작성 시, e교환권 100원 적립

    eBook 문장수집은 웹에서 직접 타이핑 가능하나, 모바일 앱에서 도서를 열람하여 문장을 드래그하시면 직접 타이핑 하실 필요 없이 보다 편하게 남길 수 있습니다.

    P.
    파이썬과 비교하며 배우는 러스트 프로그래밍
    저자 모두보기
    저자(글)
    낭독자 모두보기
    sam 이용권 선택
    님이 보유하신 이용권입니다.
    차감하실 sam이용권을 선택하세요.
    sam 이용권 선택
    님이 보유하신 이용권입니다.
    차감하실 sam이용권을 선택하세요.
    sam 이용권 선택
    님이 보유하신 프리미엄 이용권입니다.
    선물하실 sam이용권을 선택하세요.
    결제완료
    e캐시 원 결제 계속 하시겠습니까?
    교보 e캐시 간편 결제
    sam 열람권 선물하기
    • 보유 권수 / 선물할 권수
      0권 / 1
    • 받는사람 이름
      받는사람 휴대전화
    • 구매한 이용권의 대한 잔여권수를 선물할 수 있습니다.
    • 열람권은 1인당 1권씩 선물 가능합니다.
    • 선물한 열람권이 ‘미등록’ 상태일 경우에만 ‘열람권 선물내역’화면에서 선물취소 가능합니다.
    • 선물한 열람권의 등록유효기간은 14일 입니다.
      (상대방이 기한내에 등록하지 않을 경우 소멸됩니다.)
    • 무제한 이용권일 경우 열람권 선물이 불가합니다.
    이 상품의 총서 전체보기
    네이버 책을 통해서 교보eBook 첫 구매 시
    교보e캐시 지급해 드립니다.
    교보e캐시 1,000원
    • 첫 구매 후 3일 이내 다운로드 시 익일 자동 지급
    • 한 ID당 최초 1회 지급 / sam 이용권 제외
    • 네이버 책을 통해 교보eBook 구매 이력이 없는 회원 대상
    • 교보e캐시 1,000원 지급 (유효기간 지급일로부터 7일)
    구글바이액션을 통해서 교보eBook
    첫 구매 시 교보e캐시 지급해 드립니다.
    교보e캐시 1,000원
    • 첫 구매 후 3일 이내 다운로드 시 익일 자동 지급
    • 한 ID당 최초 1회 지급 / sam 이용권 제외
    • 구글바이액션을 통해 교보eBook 구매 이력이 없는 회원 대상
    • 교보e캐시 1,000원 지급 (유효기간 지급일로부터 7일)