책 이미지
책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 언어 > 프로그래밍 언어 기타
· ISBN : 9788960777736
· 쪽수 : 872쪽
책 소개
목차
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.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 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장. 컬렉션 자세히 들여다보기
__24.1 변경 가능, 변경 불가능 컬렉션
__24.2 컬렉션 일관성
__24.3 Traversable 트레이트
__24.4 Iterable 트레이트
__24.5 시퀀스 트레이트: Seq, IndexedSeq, LinearSeq
__24.6 집합
__24.7 맵
__24.8 변경 불가능한 구체적인 컬렉션 클래스
__24.9 변경 가능한 구체적인 컬렉션 클래스
__24.10 배열
__24.11 문자열
__24.12 성능 특성
__24.13 동일성
__24.14 뷰
__24.15 이터레이터
__24.16 컬렉션 처음 만들기
__24.17 자바와 스칼라 컬렉션 변환
__24.18 결론
25장. 스칼라 컬렉션의 아키텍처
__25.1 빌더
__25.2 공통 연산 한데 묶기
__25.3 새 컬렉션 통합
__25.4 결론
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과 스칼라 2.12의 통합
__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 결론
저자소개
책속에서
이 책을 그냥 쭉 읽어보는 것만으로도 스칼라에 대한 많은 것을 배울 수 있다. 하지만 좀 더 노력한다면 스칼라를 더 빠르고 완벽하게 익힐 수 있을 것이다.
무엇보다도 이 책이 제공하는 다양한 프로그래밍 예제의 이점을 살릴 수 있을 것이다. 직접 예제를 타이핑해보는 것은 마음이 코드를 한 줄 한 줄 따라가게 만드는 한 가지 방법이다. 코드를 여러 가지로 변형해보는 것은 예제를 더 재미있게 만들고, 각 동작을 제대로 이해했는지 확인할 수 있는 방법이기도 하다.
두 번째로, 여러 온라인 포럼에 들어가 보라. 이를 통해 여러분을 비롯한 스칼라 사용자들이 서로 도울 수 있다. 수많은 메일링 리스트, 토론 포럼, 채팅 방, 위키, 스칼라 관련 글 등이 있다. 필요한 정보를 제공하는 곳에서 시간을 보내라. 그렇게 하면 작은 문제 때문에 허비하는 시간이 훨씬 줄어서 더 중요하고 어려운 문제를 푸는 데 시간을 쓸 수 있을 것이다.
마지막으로 책을 충분히 읽었다면 스스로 프로그래밍 프로젝트를 만들어보라. 작은 프로그램을 바닥부터 만들어보고, 더 큰 프로그램에 들어가는 애드인(add-in)을 만들어보라. 책을 읽기만 해서는 그리 멀리 나아갈 수 없다.
- 저자 서문