장바구니 담기 close

장바구니에 상품을 담았습니다.

루비를 깨우치다 (루비 인터널의 이해)

루비를 깨우치다 (루비 인터널의 이해)

  • 팻 쇼네시
  • |
  • 비제이퍼블릭
  • |
  • 2014-08-29 출간
  • |
  • 412페이지
  • |
  • 173 X 230 mm
  • |
  • ISBN 9788994774763
★★★★★ 평점(10/10) | 리뷰(1)
판매가

27,500원

즉시할인가

24,750

배송비

2,300원

(제주/도서산간 배송 추가비용:3,000원)

수량
+ -
총주문금액
24,750

이 상품은 품절된 상품입니다

※ 스프링제본 상품은 반품/교환/환불이 불가능하므로 신중하게 선택하여 주시기 바랍니다.

목차

1장. 토큰화 및 파싱
--토큰: 루비 언어를 구성하는 단어
--실험 1-1: Ripper를 이용한 루비 스크립트 토큰화하기
--파싱: 루비가 코드를 이해하는 방법
--요약

2장. 컴파일 작업
--루비 1.8에는 컴파일러가 없다
--루비 1.9와 2.0은 컴파일러를 도입한다
--루비는 간단한 스크립트를 어떻게 컴파일할까?
--블록 호출 컴파일하기
--실험 2-1: YARV 명령 표시하기
--로컬 테이블
--실험 2-2: 로컬 테이블 표시하기
--요약

3장. 루비가 코드를 실행하는 방법
--YARV의 내부 스택과 루비 스택
--실험 3-1: 루비 2.0과 1.9 대비 1.8 버전 벤치마킹하기
--루비 변수의 로컬 및 동적 접근
--실험 3-2: Special 변수 살펴보기
--요약

4장. 제어구조와 메소드 발송
--루비가 if문을 실행하는 방법
--한 스코프에서 다른 스코프로 점프하기
--실험 4-1: 루비가 내부적으로 루프를 실행하는 방법을 테스트하기
--send 명령: 루비의 가장 복잡한 제어구조
--일반적인 루비 메소드 호출하기
--내장 루비 메소드 호출하기
--실험 4-2: 루비가 키워드 인수를 실행하는 방법 살펴보기
--요약

5장. 객체와 클래스
--루비 객체의 내부구조
--실험 5-1: 새로운 인스턴스 변수를 저장하는 데 시간이 얼마나 걸리나?
--RClass 구조체의 내부에는 무엇이 존재할까?
--실험 5-2: 루비는 클래스 메소드를 어디에 저장하나?
--요약

6장. 메소드 검색과 상수 검색
--루비가 모듈을 실행하는 방법
--루비의 메소드 검색 알고리즘
--실험 6-1: include한 후에 모듈 변경하기
--상수 검색
--루비에서의 렉시컬 스코프
--실험 6-2: 루비는 어떤 상수를 가장 먼저 찾을까?
--요약

7장. 해시 테이블: 루비 내부의 일꾼
--루비의 해시 테이블
--실험 7-1: 다양한 크기의 해시로부터 값을 불러오기
--해시 테이블이 더 많은 값을 수용하기 위해서 확장하는 방법
--실험 7-2: 다양한 크기의 해시에 새로운 요소를 추가하기
--루비가 해시 함수를 실행하는 방법
--실험 7-3: 객체를 해시의 키로 사용하기
--요약

8장. 루비가 리습(LISP)으로부터 수십 년 된 아이디어를 차용한 방법
--블록: 루비 클로저
--루비의 해시 테이블
--실험 8-1: 어떤 것이 더 빠를까? while 루프 아니면 each 메소드로 블록 넘기기?
--lambda와 proc: 함수를 First-Class Citizen으로 취급하기
--실험 8-2: lambda 호출 후 로컬변수 변경하기
--요약

9장. 메타프로그래밍
--메소드를 정의하는 대체 방법
--실험 9-1: 나는 누구지? self가 렉시컬 스코프에 함께 변경되는 방법
--메타프로그래밍과 클로저: eval, instance_eval, binding
--실험 9-2: 클로저를 이용하여 메소드 정의하기
--요약

10장. JRUBY: RUBY ON THE JVM
--MRI와 JRuby로 프로그램 실행하기
--실험 10-1: JRuby의 Just-in-time 컴파일러 모니터링하기
--JRuby와 MRI에서 문자열
--실험 10-2: Copy-on-Write 퍼포먼스 측정하기
--요약

11장. RUBINIUS: 루비로 구현한 루비
--Rubinius 커널과 가상머신
--실험 11-1: MRI와 Rubinius에서 백트레이스 비교하기
--Rubinius와 MRI에서의 배열
--실험 11-2: Array#shift의 Rubinius 구현 알아보기
--요약

12장. MRI, JRuby, Rubinus의 가비지 컬렉션
--가비지 컬렉터는 세가지 문제를 해결해준다
--MRI에서의 가비지 컬렉션: Mark and Sweep
--실험 12-1: MRI 가비지 컬렉션의 작동 과정 보기
--JRuby와 Rubinius의 가비지 컬렉션
--복사 가비지 컬렉션
--세대간 가비지 컬렉션
--동시성 가비지 컬렉션
--실험 12-2: JRuby의 verbose GC 모드 사용하기
--더 읽어보기
--요약

도서소개

루비의 내부 구조를 알아보고,
루비로 유연함과 객체지향성을 강화하자


루비는 간결함에 초점을 둔 강력한 프로그래밍 언어이지만, 우아한 문법 뒤에는 셀 수 없이 많은 작업들이 감춰져 있다.

『루비를 깨우치다: 루비 인터널의 이해』에는 광범위한 다이어그램이 삽입되어 있고 루비가 어떻게 구현되어 있는지에 대한 자세한 설명(C언어에 대한 지식이 없어도 이해할 수 있음)이 함께 제공되기 때문에 실제로 루비의 핵심을 볼 수 있다. 이 책의 저자는 프로그래밍 언어가 동작하는 장면 뒤에서 일어나는 것을 보여주기 위해 루비코드를 이용한 일련의 실험을 배치하여 과학적 접근을 시도한다. 루비의 가비지 컬렉션 알고리즘뿐만 아니라, 다른 방법으로 구현한 두 개의 루비 대체 툴인 JRuby와 Rubinius에 대한 정보도 찾아볼 수 있다.

이 책에서 다루는 내용

- 몇 가지 컴퓨터 사이언스 개념이 어떻게 루비의 복잡한 구현에 기초하는가
- 루비가 어떻게 가상머신을 이용해서 코드를 실행하는가
- 클래스와 모듈이 루비 내에서 어떤 식으로 동일하게 취급되는가
- 루비가 원래 리습(Lisp)용으로 개발된 알고리즘을 어떤 식으로 차용해서 사용하는가
- 루비가 코드를 파싱하고 이해하기 위해 어떻게 문법을 이용하는가
- 컴파일러를 이용해서 루비코드를 어떻게 다른 언어로 변환하는가

모든 프로그래밍 언어는 내부 구조를 알 필요가 있다. 언어 구현에 흥미를 가지고 있거나 루비를 더 깊이 알고 싶다면, 『루비를 깨우치다: 루비 인터널의 이해 』에서 더 훌륭한 프로그래머가 되기 위한 매력적인 방법을 찾게 될 것이다.

이 책은 루비 2.x, 1.9, 1.8 버전을 다룬다.

이 책의 구성

1장: 토큰화와 파싱에서는 루비가 루비 프로그램을 파싱하는 방법을 배우게 될 것이다. 이것은 컴퓨터 사이언스의 가장 매혹적인 분야 중의 하나다.

2장: 컴파일 작업에서는 루비가 프로그램을 실행하기 전에 컴파일러를 이용해서 다른 언어로 변환하는 방법에 대해서 설명한다.

3장: 루비가 코드를 실행하는 방법에서는 루비가 프로그램을 실행하기 위해서 사용하는 가상머신을 살펴본다. 이 가상머신 내부에는 무엇이 있는가? 동작은 어떻게 하는가? 이러한 것들을 알아보기 위해서 이 가상머신의 내부를 깊이 살펴볼 것이다.

4장: 제어구조와 메소드 Dispatch에서는 루비의 가상머신에 대한 설명을 이어간다. 여기에서는 if...else문과 while...end 루프와 같은 제어구조를 루비가 어떻게 구현하는지를 살펴볼 것이다. 또한 루비가 메소드 호출을 어떻게 구현하는지에 대해서도 설명한다.

5장: 객체와 클래스에서는 루비의 객체와 클래스 구현에 대해서 논한다.

6장: 메소드 참조와 상수 참조에서는 모듈과 모듈의 클래스와의 관계를 살펴본다. 루비가 코드상에서 메소드와 상수를 어떻게 찾아가는지를 배우게 될 것이다.

7장: 루비 내부에서 많은 일을 하는 해시 테이블에서는 루비가 구현하는 해시 테이블에 대해서 살펴본다.

8장: 루비는 리습(Lisp)으로부터의 수십 년 된 아이디어를 어떻게 차용해서 사용하는가?에서는 루비의 가장 우아하고 유용한 기능인 블록(block)이 리습용으로 원래 개발된 아이디어에 근거하고 있는 것을 보여준다.

9장: 메타프로그래밍에서는 루비 개발자들에게 가장 어려운 주제에 대해 다룬다. 루비가 내부적으로 메타프로그래밍을 어떻게 구현하는지를 공부함으로써 메타프로그래밍을 효과적으로 사용하는 방법을 배우게 될 것이다.

10장: JRuby: JVM에서 실행되는 루비에서는 자바로 구현한 루비인 JRuby를 소개한다. 여기서는 루비 프로그램을 보다 신속하게 실행하기 위해서 JRuby가 자바 가상머신(JVM)을 어떻게 사용하는지를 배우게 될 것이다.

11장: Rubinius: 루비로 구현한 루비에서는 루비의 가장 흥미롭고 혁신적인 구현체 중의 하나인 Rubinius에 대해서 살펴본다. 특정 루비 메소드가 동작하는 방법을 알기 위해 Rubinius에서 루비코드의 위치를 찾아 변경하는 방법을 배우게 될 것이다.

12장: MRI, JRuby, Rubinius에서의 가비지 컬렉션에서는 컴퓨터 사이언스 분야에서 가장 미스터리하고 혼란스러운 주제 중의 하나인 가비지 컬렉션(GC)에 대해서 살펴보고 글을 맺는다.

출판사 리뷰

여러분은 루비(Ruby) 사용법을 익히는 것이 매우 간단하다고 생각할 수도 있다. 전세계 개발자들은 루비의 문법이 기품이 있고 쉽다고 말한다. 아주 자연스럽게 알고리즘을 표현할 수 있고, 커맨드라인에서 단지 루비라고 치고 엔터 키를 누르기만 하면, 작성한 루비 스크립트를 실행할 수 있다.

그러나 루비의 문법이 간단해 보일지 모르지만, 사실은 리습(Lisp)과 스몰토크(Smalltalk)와 같은 복잡한 언어로부터 세세한 아이디어를 가져와 사용하고 있다. 이외에도 루비는 동적이어서 메타프로그래밍을 사용할 경우, 루비 프로그램들은 자신을 들여다 보고 변경할 수 있다. 이와 같이 겉으로는 단순해 보일지라도, 루비는 매우 복잡한 툴(tool)인 것이다.

루비가 내부적으로 동작하는 것을 학습하면, 루비의 많은 특징들이 몇 가지 중요한 컴퓨터 사이언스 개념들에 근거하고 있다는 것을 알게 될 것이다. 이러한 특징들을 공부하면, 루비를 사용하게 되면서 차차 배후에서 어떤 일이 일어나고 있는지 좀 더 심도 있게 이해하게 될 것이다. 이러한 과정을 통해 루비를 만든 팀이 이 언어를 사용하도록 의도하는 바를 깨우치게 될 것이다.

『루비를 깨우치다』는 실제로 간단한 프로그램을 실행하면서 루비 내부에서 어떤 일이 일어나는지를 깨닫게 해줄 것이다. 직접 작성한 코드를, 루비를 이용해서 실행하는 방법을 배우게 될 것이고, 광범위한 다이어그램(diagram: 도표)을 통해 객체를 만들거나 블럭1 호출 시에 루비가 내부적으로 어떤 작업을 하는지에 대한 개념적인 이해를 할 수 있을 것이다.

누구를 위한 책인가?

『루비를 깨우치다: 루비 인터널의 이해』는 초보자를 위한 루비 학습 안내서가 아니다. 이 책은 여러분이 이미 루비로 프로그래밍하는 법을 알고 있고, 루비를 매일 사용하는 것으로 가정한다.

루비 자체는 저수준의 어려운 C언어로 작성되었지만, 이 책을 읽는 데 C프로그래밍에 대한 지식은 필요 없다. 『루비를 깨우치다: 루비 인터널의 이해』는 C언어로 프로그래밍하는 방법을 몰라도, 고수준에서 루비가 동작하는 방법을 개념적으로 이해할 수 있도록 해줄 것이다. 이 책은 수백 개의 다이어그램을 통해 루비의 내부 구현에 대한 저수준의 상세한 내용을 이해하기 쉽도록 해줄 것이다.

교환 및 환불안내

도서교환 및 환불
  • ㆍ배송기간은 평일 기준 1~3일 정도 소요됩니다.(스프링 분철은 1일 정도 시간이 더 소요됩니다.)
  • ㆍ상품불량 및 오배송등의 이유로 반품하실 경우, 반품배송비는 무료입니다.
  • ㆍ고객님의 변심에 의한 반품,환불,교환시 택배비는 본인 부담입니다.
  • ㆍ상담원과의 상담없이 교환 및 반품으로 반송된 물품은 책임지지 않습니다.
  • ㆍ이미 발송된 상품의 취소 및 반품, 교환요청시 배송비가 발생할 수 있습니다.
  • ㆍ반품신청시 반송된 상품의 수령후 환불처리됩니다.(카드사 사정에 따라 카드취소는 시일이 3~5일이 소요될 수 있습니다.)
  • ㆍ주문하신 상품의 반품,교환은 상품수령일로 부터 7일이내에 신청하실 수 있습니다.
  • ㆍ상품이 훼손된 경우 반품 및 교환,환불이 불가능합니다.
  • ㆍ반품/교환시 고객님 귀책사유로 인해 수거가 지연될 경우에는 반품이 제한될 수 있습니다.
  • ㆍ스프링제본 상품은 교환 및 환불이 불가능 합니다.
  • ㆍ군부대(사서함) 및 해외배송은 불가능합니다.
  • ㆍ오후 3시 이후 상담원과 통화되지 않은 취소건에 대해서는 고객 반품비용이 발생할 수 있습니다.
반품안내
  • 마이페이지 > 나의상담 > 1 : 1 문의하기 게시판 또는 고객센터 1800-7327
교환/반품주소
  • 경기도 파주시 문발로 211 1층 / (주)북채널 / 전화 : 1800-7327
  • 택배안내 : CJ대한통운(1588-1255)
  • 고객님 변심으로 인한 교환 또는 반품시 왕복 배송비 5,000원을 부담하셔야 하며, 제품 불량 또는 오 배송시에는 전액을 당사에서부담 합니다.