품목정보
발행일 | 2021년 01월 15일 |
---|---|
쪽수, 무게, 크기 | 924쪽 | 1760g | 188*235*44mm |
ISBN13 | 9791161754871 |
ISBN10 | 1161754873 |
발행일 | 2021년 01월 15일 |
---|---|
쪽수, 무게, 크기 | 924쪽 | 1760g | 188*235*44mm |
ISBN13 | 9791161754871 |
ISBN10 | 1161754873 |
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. 참고 문헌 |
사실 저는 3판을 읽어서 이곳에 리뷰를 남기는게 맞나 하는 생각이 들긴 합니다만,
내용이 완전히 달라진것은 아닐 것이고, 이미 4판이 나온만큼 이곳에 리뷰를 남기는게 많은 분들께 도움이 될 것같아 리뷰를 남기게 되었습니다.
저는 처음에 스칼라에 입문할 때 마틴 오더스키 교수의 코세라 강좌를 들었습니다.
하지만 뭔가 부족한 기분이 들었고, 스칼라 언어를 더 잘 이해하고 싶었습니다.
이 책은 스칼라의 전반적인 문법을 자세히 다뤘을 뿐만 아니라, 스칼라의 함수형 프래그래밍 언어적인 특성, 언어를 만든 철학과 역사 등에 대한 내용도 많아 굉장히 유익합니다.
보다 자세한 리뷰는 아래 블로그에 올려두었으니 만약 궁금하시면 참고하시면 좋을것 같습니다.
https://sgc109.github.io/2021/01/09/programming-in-scala/