본문 바로가기

도서 소개

파이썬과 비교하며 배우는 러스트 프로그래밍

파이썬 개발자를 위한 유일무이한 러스트 입문서

 

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

 

도서 구매 사이트(가나다순)

  [교보문고]  [도서11번가]  [알라딘]  [예스이십사]  [인터파크]  [쿠팡

 

전자책 구매 사이트(가나다순)

  교보문고 / 구글북스 / 리디북스 / 알라딘 / 예스이십사

 

출판사 제이펍
저작권사 제이펍
원서명 (없음)
도서명 파이썬과 비교하며 배우는 러스트 프로그래밍
부제 가장 사랑받는 언어 러스트를 배우는 가장 확실한 방법
지은이 윤인도
옮긴이 (없음)
감수자 (없음)
시리즈 (없음)
출판일 2024. 05. 31
페이지 308쪽
판 형 46배판변형(188*245*15.1)
제 본 무선(soft cover)
정 가 25,000원
ISBN 979-11-93926-22-2 (93000)
키워드 이터레이터, 구조체, 트레이트, 크레이트, 제네릭, 라이프타임, 스태틱, 포인터, 로깅, 멀티스레딩
분 야 프로그래밍 언어 / 러스트

 

관련 사이트
■ 인프런 강의: https://inf.run/kXsni

 

관련 시리즈

■ (없음)

 

관련 포스트

2024.05.16 - [출간 전 책 소식] - 파이썬 개발자인데 러스트 배우고 싶어요

 

관련 도서

러스트 서버, 서비스, 앱 만들기

러스트 프로그래밍 공식 가이드(제2판)

프로그래밍 러스트(개정판)

제로부터 시작하는 러스트 백엔드 프로그래밍

 

관련 파일 다운로드

■ (없음)

 

강의 보조 자료(교재로 채택하신 분들은 메일(textbook@jpub.kr)을 보내주시면 다음 자료를 보내드립니다.)
■ 본문의 그림과 표

 

미리보기(추천사, 베타리더 후기, 시작하며, 이 책에 대하여, 1장, 2장 일부)

 

정오표 페이지
■ (등록되는 대로 링크를 걸겠습니다.)

 

도서구매 사이트(가나다순)

  [교보문고]  [도서11번가]  [알라딘]  [예스이십사]  [인터파크]  [쿠팡

 

전자책 구매 사이트(가나다순)

  교보문고 / 구글북스 / 리디북스 / 알라딘 / 예스이십사

 

도서 소개

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

 

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

 

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

 

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

 

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

 

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

 

주요 내용

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

지은이 소개

윤인도

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

 

차례

추천사 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 194

__Box 사용하기 194

__dyn과 Box로 트레이트 타입 표현하기 195

11.3 Rc 198

__마지막 순간까지 198

__퀴즈 201

11.4 RefCell 202

__Rc의 한계 202

__내부 가변성 205

__Rc<RefCell> 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

 

 

제이펍 소식 더 보기(제이펍의 소통 채널에서 더욱 다양한 소식을 확인하세요!)

  포스트  유튜브  인스타그램  트위터  페이스북