본문내용 바로가기
MD의선택 무료배송 사은품 소득공제

Programming in Scala 4/e 창시자가 직접 집필한 스칼라 언어의 바이블

프로그래밍 언어
마틴 오더스키 , 렉스 스푼 , 빌 베너스 지음 | 오현석 , 반영록 , 이동욱 옮김 | 에이콘출판 | 2021년 01월 15일 출간

이 책의 다른 상품 정보

  • 정가 : 50,000원
    판매가 : 45,000 [10%↓ 5,000원 할인]
  • 통합포인트 :
    [기본적립] 2,500원 적립 [5% 적립] [추가적립] 5만원 이상 구매 시 2천원 추가적립 안내 [회원혜택] 실버등급 이상, 3만원 이상 구매 시 2~4% 추가적립 안내
  • 추가혜택 : 포인트 안내 도서소득공제 안내 추가혜택 더보기
  • 배송비 : 무료 배송비 안내
  • 개정정보 : 이 도서는 가장 최근에 출간된 개정판입니다. 2017년 05월 출간된 구판이 있습니다. 구판 보기
  • 배송일정 : 서울특별시 종로구 세종대로 기준 지역변경
    당일배송 지금 주문하면 오늘(20일,수) 도착 예정 배송일정 안내
  • 바로드림 : 인터넷으로 주문하고 매장에서 직접 수령 안내 바로드림 혜택
    휴일에는 바로드림 픽업으로 더 빨리 받아 보세요. 바로드림 혜택받고 이용하기

이 책의 이벤트 해외주문/바로드림/제휴사주문/업체배송건의 경우 1+1 증정상품이 발송되지 않습니다.

  • 행사도서 구매 시 기술태그스티커 증정(포인트 차감)
    2021.01.12 ~ 2021.02.28
상품상세정보
ISBN 9791161754871(1161754873)
쪽수 924쪽
크기 189 * 236 * 49 mm /1683g 판형알림
이 책의 원서/번역서 Programming in Scala, Fourth Edition/Martin Odersky

책소개

이 책이 속한 분야

이 책의 주제어

스칼라는 여러 함수 언어적 기법과 객체지향 기법이 어우러져 루비나 파이썬 같은 동적 언어 못지않게 간결하면서 풍부한 표현력을 가진 언어다. 스칼라는 빅데이터나 머신러닝 등의 최첨단 분야에 널리 쓰이고 있다. 스칼라를 만든 마틴 오더스키 등이 집필한 이 책은 스칼라의 다양한 측면을 완벽하게 설명한 스칼라 언어의 바이블이다.
이 책은 함수, 트레이트, 암시적 변환, 모듈 등 스칼라의 기본 문법과 컬렉션 사용법, 컬렉션의 내부 구조, 객체지향 및 함수 프로그래밍을 활용하는 방법을 다룬다. 또한 퓨처를 사용한 동시성 프로그래밍, 자바와의 조합, 파싱, GUI 프로그래밍 같은 응용을 설명한 2판의 내용을 수정, 보완했으며, 최신 버전에 맞춰서 문자열 인터폴레이션이나 와일드카드 타입, 변경된 컬렉션 프레임워크에 대한 내용이 추가됐다. 차근차근 따라 하다 보면 숙련된 스칼라 개발자가 될 수 있고, 동시에 다양한 프로그래밍 패러다임을 한 언어에 자연스럽게 녹이는 방법과, 각각을 적재적소에 활용하는 방법을 배울 수 있다.

작가의 말

이 책은 자습서이기 때문에 맨 처음부터 끝까지 순서대로 읽을 것을 권장한다. 한 번에 한 주제만을 소개하고, 앞서 기술한 내용을 바탕으로 새로운 주제를 설명하기 위해 많은 노력을 기울였다. 따라서 무언가를 간단하게 살펴보려고 책의 뒤편을 바로 펼쳐본다면, 아마도 여러분이 잘 알지 못하는 개념으로 해당 주제를 설명하고 있을 것이기에 이해하기 어려울 수 있다. 어느 정도 각 장을 순서대로 읽어본다면, 한 번에 한 단계씩 스칼라 실력을 쉽게 쌓을 수 있을 것이다.
모르는 용어를 발견했다면, ‘찾아보기’와 ‘용어 해설’을 살펴보라. 책을 대강 읽으면서 지나치는 독자도 있을 것이다. 그래도 좋다. ‘찾아보기’와 ‘용어 해설’은 간과한 부분을 다시 이해할 수 있게 도와줄 것이다.
이 책은 한 번 읽고 난 후에도 언어 참고서로 활용할 수 있다. 스칼라 언어에 대한 정식명세가 있긴 하지만, 언어 명세는 정확성을 위해 가독성을 희생한 면이 있다. 이 책에서 스칼라의 세부사항을 모두 다루지는 않지만 폭넓은 범위를 다루고 있으므로, 여러분이 스칼라 프로그래밍에 더 능숙해질수록 쉽게 찾아볼 수 있는 언어 참고서 역할을 할 것이다.

목차

1장. 확장 가능한 언어
1.1 여러분의 마음에서 점점 자라가는 언어
1.2 스칼라의 확장성이 가능한 이유
1.3 왜 스칼라인가?
1.4 스칼라의 뿌리
1.5 결론

2장. 스칼라 첫걸음
2.1 1단계: 스칼라 인터프리터 사용법을 익히자
2.2 2단계: 변수를 정의해보자
2.3 3단계: 함수를 정의해보자
2.4 4단계: 스칼라 스크립트를 작성해보자
2.5 5단계: while로 루프를 돌고, if로 결정해보자
2.6 6단계: foreach와 for를 사용해 이터레이션해보자
2.7 결론

3장. 스칼라 두 번째 걸음
3.1 7단계: 배열에 타입 파라미터를 지정해보자
3.2 8단계: 리스트를 사용해보자
3.3 9단계: 튜플을 사용해보자
3.4 10단계: 집합과 맵을 써보자
3.5 11단계: 함수형 스타일을 인식하는 법을 배우자
3.6 12단계: 파일의 내용을 줄 단위로 읽자
3.7 결론

4장. 클래스와 객체
4.1 클래스, 필드, 메서드
4.2 세미콜론 추론
4.3 싱글톤 객체
4.4 스칼라 애플리케이션
4.5 App 트레이트
4.6 결론

5장. 기본 타입과 연산
5.1 기본 타입
5.2 리터럴
5.3 문자열 인터폴레이션
5.4 연산자는 메서드다
5.5 산술 연산
5.6 관계 연산과 논리 연산
5.7 비트 연산
5.8 객체 동일성
5.9 연산자 우선순위와 결합 법칙
5.10 풍부한 래퍼
5.11 결론

6장. 함수형 객체
6.1 분수 클래스 명세
6.2 Rational 생성
6.3 toString 메서드 다시 구현하기
6.4 선결 조건 확인
6.5 필드 추가
6.6 자기 참조
6.7 보조 생성자
6.8 비공개 필드와 메서드
6.9 연산자 정의
6.10 스칼라의 식별자
6.11 메서드 오버로드
6.12 암시적 타입 변환
6.13 주의사항
6.14 결론

7장. 내장 제어 구문
7.1 if 표현식
7.2 while 루프
7.3 for 표현식
7.4 try 표현식으로 예외 다루기
7.5 match 표현식
7.6 break와 continue 문 없이 살기
7.7 변수 스코프
7.8 명령형 스타일 코드 리팩토링
7.9 결론

8장. 함수와 클로저
8.1 메서드
8.2 지역 함수
8.3 1급 계층 함수
8.4 간단한 형태의 함수 리터럴
8.5 위치 표시자 문법
8.6 부분 적용한 함수
8.7 클로저
8.8 특별한 형태의 함수 호출
8.9 꼬리 재귀
8.10 결론

9장. 흐름 제어 추상화
9.1 코드 중복 줄이기
9.2 클라이언트 코드 단순하게 만들기
9.3 커링
9.4 새로운 제어 구조 작성
9.5 이름에 의한 호출 파라미터
9.6 결론

10장. 상속과 구성
10.1 2차원 레이아웃 라이브러리
10.2 추상 클래스
10.3 파라미터 없는 메서드 정의
10.4 클래스 확장
10.5 메서드와 필드 오버라이드
10.6 파라미터 필드 정의
10.7 슈퍼클래스의 생성자 호출
10.8 override 수식자 사용
10.9 다형성과 동적 바인딩
10.10 final 멤버 선언
10.11 상속과 구성 사용
10.12 above, beside, toString 구현
10.13 팩토리 객체 정의
10.14 높이와 너비 조절
10.15 한데 모아 시험해보기
10.16 결론

11장. 스칼라의 계층구조
11.1 스칼라의 클래스 계층구조
11.2 여러 기본 클래스를 어떻게 구현했는가?
11.3 바닥에 있는 타입
11.4 자신만의 값 클래스 정의
11.5 결론

12장. 트레이트
12.1 트레이트의 동작 원리
12.2 간결한 인터페이스와 풍부한 인터페이스
12.3 예제: 직사각형 객체
12.4 Ordered 트레이트
12.5 트레이트를 이용해 변경 쌓아 올리기
12.6 왜 다중 상속은 안 되는가?
12.7 트레이트냐 아니냐, 이것이 문제로다
12.8 결론

13장. 패키지와 임포트
13.1 패키지 안에 코드 작성하기
13.2 관련 코드에 간결하게 접근하기
13.3 임포트
13.4 암시적 임포트
13.5 접근 수식자
13.6 패키지 객체
13.7 결론

14장. 단언문과 테스트
14.1 단언문
14.2 스칼라에서 테스트하기
14.3 충분한 정보를 제공하는 실패 보고
14.4 명세로 테스트하기
14.5 프로퍼티 기반 테스트
14.6 테스트 조직과 실행
14.7 결론

15장. 케이스 클래스와 패턴 매치
15.1 간단한 예
15.2 패턴의 종류
15.3 패턴 가드
15.4 패턴 겹침
15.5 봉인된 클래스
15.6 Option 타입
15.7 패턴은 어디에나
15.8 복잡한 예제
15.9 결론

16장 리스트
16.1 리스트 리터럴
16.2 리스트 타입
16.3 리스트 생성
16.4 리스트 기본 연산
16.5 리스트 패턴
16.6 List 클래스의 1차 메서드
16.7 List 클래스의 고차 메서드
16.8 List 객체의 메서드
16.9 여러 리스트를 함께 처리하기
16.10 스칼라의 타입 추론 알고리즘 이해
16.11 결론

17장. 컬렉션
17.1 시퀀스
17.2 집합과 맵
17.3 변경 가능 컬렉션과 변경 불가능 컬렉션
17.4 컬렉션 초기화
17.5 튜플
17.6 결론

18장. 변경 가능한 객체
18.1 무엇이 객체를 변경 가능하게 하는가?
18.2 재할당 가능한 변수와 프로퍼티
18.3 사례 연구: 이산 이벤트 시뮬레이션
18.4 디지털 회로를 위한 언어
18.5 시뮬레이션 API
18.6 회로 시뮬레이션
18.7 결론

19장. 타입 파라미터화
19.1 함수형 큐
19.2 정보 은닉
19.3 변성 표기
19.4 변성 표기 검사
19.5 하위 바운드
19.6 반공변성
19.7 객체의 비공개 데이터
19.8 상위 바운드
19.9 결론

20장. 추상 멤버
20.1 추상 멤버 간략하게 돌아보기
20.2 타입 멤버
20.3 추상 val
20.4 추상 var
20.5 추상 val 초기화
20.6 추상 타입
20.7 경로에 의존하는 타입
20.8 세분화한 타입
20.9 열거형
20.10 사례 연구: 통화 변환
20.11 결론

21장. 암시적 변환과 암시적 파라미터
21.1 암시적 변환
21.2 암시 규칙
21.3 예상 타입으로의 암시적 변환
21.4 호출 대상 객체 변환
21.5 암시적 파라미터
21.6 맥락 바운드
21.7 여러 변환을 사용하는 경우
21.8 암시 디버깅
21.9 결론

22장. 리스트 구현
22.1 List 클래스 개괄
22.2 ListBuffer 클래스
22.3 실제 List 클래스
22.4 외부에서 볼 때는 함수형
22.5 결론

23장. for 표현식 다시 보기
23.1 for 표현식
23.2 n 여왕 문제
23.3 for 식으로 질의하기
23.4 for 표현식 변환
23.5 역방향 적용
23.6 for 일반화
23.7 결론
24장 컬렉션 자세히 들여다보기 577
24.1 변경 가능, 변경 불가능 컬렉션
24.2 컬렉션 일관성
24.3 Iterable 트레이트
24.4 시퀀스 트레이트: Seq, IndexedSeq, LinearSeq
24.5 집합
24.6 맵
24.7 변경 불가능한 구체적인 컬렉션 클래스
24.8 변경 가능한 구체적인 컬렉션 클래스
24.9 배열
24.10 문자열
24.11 성능 특성
24.12 동일성
24.13 뷰
24.14 이터레이터
24.15 컬렉션 처음 만들기
24.16 자바와 스칼라 컬렉션 변환하기
24.17 결론
25장 스칼라 컬렉션 아키텍처 647
25.1 공통 연산 한데 묶기
25.2 새로운 컬렉션 추가하기
25.3 결론

26장. 익스트랙터
26.1 예제: 전자우편 주소 추출
26.2 익스트랙터
26.3 변수가 없거나 1개만 있는 패턴
26.4 가변 인자 익스트랙터
26.5 익스트랙터와 시퀀스 패턴
26.6 익스트랙터와 케이스 클래스
26.7 정규표현식
26.8 결론

27장. 애노테이션
27.1 애노테이션이 왜 필요한가?
27.2 애노테이션 문법
27.3 표준 애노테이션
27.4 결론

28장. XML 다루기
28.1 반 구조화 데이터
28.2 XML 개요
28.3 XML 리터럴
28.4 직렬화
28.5 XML 분석
28.6 역 직렬화
28.7 저장하기와 불러오기
28.8 XML에 대한 패턴 매치
28.9 결론

29장. 객체를 사용한 모듈화 프로그래밍
29.1 문제
29.2 조리법 애플리케이션
29.3 추상화
29.4 모듈을 트레이트로 분리하기
29.5 실행 시점 링킹
29.6 모듈 인스턴스 추적
29.7 결론

30장. 객체의 동일성
30.1 스칼라에서의 동일성
30.2 동일성 비교 메서드 작성
30.3 파라미터화한 타입의 동일성 정의
30.4 equals와 hashCode 요리법
30.5 결론

31장. 스칼라와 자바의 결합
31.1 스칼라를 자바에서 사용하기
31.2 애노테이션
31.3 와일드카드 타입
31.4 스칼라와 자바를 함께 컴파일하기
31.5 자바 8 통합
31.6 결론

32장. 퓨처와 동시성
32.1 낙원의 골칫거리
32.2 비동기 실행과 Try
32.3 Future 사용하기
32.4 Future 테스트
32.5 결론

33장. 콤비네이터 파싱
33.1 예제: 산술식
33.2 파서 실행
33.3 기본 정규표현식 파서
33.4 또 다른 예: JSON
33.5 파서의 결과
33.6 콤비네이터 파서 구현
33.7 문자열 리터럴과 정규표현식
33.8 어휘 분석과 파싱
33.9 오류 보고
33.10 백트래킹과 LL(1)
33.11 결론

34장. GUI 프로그래밍
34.1 첫 번째 스윙 애플리케이션
34.2 패널과 레이아웃
34.3 이벤트 처리
34.4 예제: 섭씨/화씨 변환기
34.5 결론

35장. SCells 스프레드시트
35.1 화면 프레임워크
35.2 데이터 입력과 화면 표시 분리하기
35.3 식
35.4 식의 파싱
35.5 계산
35.6 연산 라이브러리
35.7 변경 전파
35.8 결론

부록 A. 유닉스와 윈도우에서의 스칼라 스크립트 사용
부록 B. 용어 해설
부록 C. 참고 문헌

책 속으로

★ 옮긴이의 말 ★

『Programming in Scala』 2판을 번역했던 2014년만 해도 우리 나라에서 스칼라에 대한 관심은 그리 크지 않았다. 하지만 2판이 나오는 것과 거의 비슷한 시점에 아파치 스파크가 인기를 끌고 기술 창업이 늘어남에 따라 자바 등의 언어보다는 사용하기 편리한 파이썬이나 스칼라 등의 언어에 대한 관심이 급격히 늘어났다. 그로 인해 스칼라 커뮤니티에 유입되는 개발자도 늘고, 각종 스터디나 세미나에서도 스칼라가 예전에 비해 더 많은 관심을 받게 됐다.
스칼라 버전이 높아짐에 따라 기존 버전에서 사용하... 더보기

출판사 서평

★ 이 책의 대상 독자 ★

주 대상 독자층은 스칼라로 프로그램을 작성하는 법을 배우고 싶은 프로그래머다. 다음 프로젝트를 스칼라로 진행하고 싶다면 이 책이 바로 당신을 위한 것이다. 또한 새로운 개념을 배워서 생각의 지평을 넓히고 싶은 프로그래머도 재미있게 읽을 수 있을 것이다. 예를 들어, 자바 프로그래머는 이 책을 읽음으로써 다양한 함수형 프로그래밍 개념을 익히고 더 발전된 객체지향 아이디어도 배울 수 있다. 스칼라와 그 아이디어를 배우고 나면 분명 더 나은 프로그래머가 돼 있으리라 믿는다.
독자 여러분이 일반적인 프로그... 더보기

Klover 리뷰 (0)

북로그 리뷰 (0) 쓰러가기

도서 구매 후 리뷰를 작성하시면
결제 90일 이내 300원, 발송 후 5일 이내 400원, 이 상품의 첫 리뷰 500원의 포인트를 드립니다.

포인트는 작성 후 다음 날 적립되며, 도서 발송 전 작성 시에는 발송 후 익일에 적립됩니다.
북로그 리뷰는 본인인증을 거친 회원만 작성 가능합니다.
(※ 외서/eBook/음반/DVD/GIFT 및 잡지 상품 제외) 안내
  • 해당도서의 리뷰가 없습니다.

문장수집 (0) 문장수집 쓰기 나의 독서기록 보기
※구매도서의 문장수집을 기록하면 통합포인트 적립 안내

교환/반품/품절안내

※ 상품 설명에 반품/교환 관련한 안내가 있는 경우 그 내용을 우선으로 합니다. (업체 사정에 따라 달라질 수 있습니다.)

교환/반품/품절안내
반품/교환방법 마이룸 > 주문관리 > 주문/배송내역 > 주문조회 > 반품/교환신청 ,
[1:1상담>반품/교환/환불] 또는 고객센터 (1544-1900)

※ 오픈마켓, 해외배송주문, 기프트 주문시 [1:1상담>반품/교환/환불]
    또는 고객센터 (1544-1900)
반품/교환가능 기간 변심반품의 경우 수령 후 7일 이내,
상품의 결함 및 계약내용과 다를 경우 문제점 발견 후 30일 이내
반품/교환비용 변심 혹은 구매착오로 인한 반품/교환은 반송료 고객 부담
반품/교환 불가 사유
  • 소비자의 책임 있는 사유로 상품 등이 손실 또는 훼손된 경우
    (단지 확인을 위한 포장 훼손은 제외)
  • 소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우
    예) 화장품, 식품, 가전제품(악세서리 포함) 등
  • 복제가 가능한 상품 등의 포장을 훼손한 경우
    예) 음반/DVD/비디오, 소프트웨어, 만화책, 잡지, 영상 화보집
  • 소비자의 요청에 따라 개별적으로 주문 제작되는 상품의 경우 ((1)해외주문도서)
  • 디지털 컨텐츠인 eBook, 오디오북 등을 1회 이상 다운로드를 받았을 경우
  • 시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우
  • 전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에
    해당되는 경우
(1) 해외주문도서 : 이용자의 요청에 의한 개인주문상품으로 단순변심 및 착오로 인한 취소/교환/반품 시 ‘해외주문 반품/취소 수수료’ 고객 부담 (해외주문 반품/취소 수수료 : ①서양도서-판매정가의 12%, ②일본도서-판매정가의 7%를 적용)
상품 품절 공급사(출판사) 재고 사정에 의해 품절/지연될 수 있으며, 품절 시 관련 사항에 대해서는
이메일과 문자로 안내드리겠습니다.
소비자 피해보상
환불지연에 따른 배상
  • 상품의 불량에 의한 교환, A/S, 환불, 품질보증 및 피해보상 등에 관한 사항은
    소비자분쟁해결 기준 (공정거래위원회 고시)에 준하여 처리됨
  • 대금 환불 및 환불지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의
    소비자 보호에 관한 법률에 따라 처리함

바로가기

  • 우측 확장형 배너 2
  • 우측 확장형 배너 2

최근 본 상품