본문 바로가기

카테고리 없음

프로그래밍 스칼라

마치 직역한듯한 번역.. 읽는데 자꾸 한번 두번 다시 읽어야하네요. 오타도 좀 보이고, 번역이 매끄럽지 못합니다. 그러나 책 구상 자체는 괜찮아 보입니다. 개념에 대한 예를 들어주는 구성이 좋네요. 하지만 예문이 이해가 더 안되는 듯한 느낌도 분명 있네요. 그래도 현존하는 스칼라 책중 가장 최신버전을 다루고 있는듯하여 위안이 되네요. 무슨 평을 150자나 쓰라고 하는건지.. 더이상 할말이 없는데요..

입문자부터 고급 개발자까지, 모두가 기다린 실전 안내서이 책은 다양한 코드 예제가 포함된 실전 바이블이다. 초보자와 고급 사용자를 한데 아우를 뿐 아니라, 실제 개발자들의 실용적 관심사에 초점을 맞추어 실전 활용법을 안내한다. 2.11.x 버전에 대응한 최신 스칼라 언어의 특징부터 패턴 매칭, for 내장(comprehension), 고급 함수형 프로그래밍 등의 새로운 내용을 소개한다. 또한 스칼라 명령행 도구와 서드파티 도구, 라이브러리, IDE의 스칼라 지원에 대해 살펴보고, 그 과정에서 생산성을 발휘하는 방법을 제시한다.

Part 1_스칼라와의 만남

1장. 빠른 출발: 스칼라 소개
__1.1_ 왜 스칼라인가?
__1.2_ 스칼라 설치하기
__1.3_ 스칼라 맛보기
__1.4_ 동시성 맛보기
__1.5_ 마치며

2장. 입력은 조금만, 일은 더 많이
__2.1_ 세미콜론
__2.2_ 변수 정의
__2.3_ 범위
__2.4_ 부분 함수
__2.5_ 메서드 선언
__2.6_ 타입 정보 추론하기
__2.7_ 예약어
__2.8_ 리터럴 값
__2.9_ Option, Some, None: null 사용 피하기
__2.10_ 봉인된 클래스 계층
__2.11_ 파일과 이름공간으로 코드 구조화하기
__2.12_ 타입과 멤버 임포트하기
__2.13_ 추상 타입과 매개변수화한 타입
__2.14_ 마치며

3장. 기초를 튼튼히
__3.1_ 연산자 오버로딩?
__3.2_ 빈 인자 목록이 있는 메서드
__3.3_ 우선순위 규칙
__3.4_ 도메인 특화 언어
__3.5_ 스칼라 if 문
__3.6_ 스칼라 for 내장
__3.7_ 다른 루프 표현
__3.8_ 조건 연산자
__3.9_ try, catch, finally 사용하기
__3.10_ 이름에 의한 호출과 값에 의한 호출
__3.11_ 지연값
__3.12_ 열거값
__3.13_ 문자열 인터폴레이션
__3.14_ 트레이트: 스칼라 인터페이스와 혼합
__3.15_ 마치며

Part 2_ 기본기 다지기

4장. 패턴 매칭
__4.1_ 단순 매치
__4.2_ 매치 내의 값, 변수, 타입
__4.3_ 시퀀스에 일치시키기
__4.4_ 튜플에 일치시키기
__4.5_ 케이스 절의 가드
__4.6_ 케이스 클래스에 일치시키기
__4.7_ 가변 인자 목록과 일치시키기
__4.8_ 정규 표현식과 일치시키기
__4.9_ 케이스 절의 변수 바인딩에 대해 더 살펴보기
__4.10_ 타입 일치에 대해 더 살펴보기
__4.11_ 봉인된 클래스 계층과 매치의 완전성
__4.12_ 패턴 매칭의 다른 사용법
__4.13_ 패턴 매칭에 대한 설명을 마치며
__4.14_ 마치며

5장. 암시

__5.1_ 암시적 인자
__5.2_ 암시적 인자를 사용하는 시나리오
__5.3_ 암시적 변환
__5.4_ 타입 클래스 패턴
__5.5_ 암시와 관련된 기술적 문제
__5.6_ 암시 해결 규칙
__5.7_ 스칼라가 기본 제공하는 암시
__5.8_ 암시를 현명하게 활용하기
__5.9_ 마치며

6장. 스칼라 함수형 프로그래밍
__6.1_ 함수형 프로그래밍이란 무엇인가?
__6.2_ 스칼라 함수형 프로그래밍
__6.3_ 재귀
__6.4_ 꼬리 호출과 꼬리 호출 최적화
__6.5_ 부분 적용 함수와 부분 함수
__6.6_ 함수의 커링과 다른 변환
__6.7_ 함수형 데이터 구조
__6.8_ 순회하기, 연관시키기, 걸러내기, 접기, 축약하기
__6.9_ 왼쪽 순회와 오른쪽 순회
__6.10_ 콤비네이터: 가장 뛰어난 소프트웨어 컴포넌트 추상화
__6.11_ 복사에 드는 비용은 어떤가?
__6.12_ 마치며

7장. for 내장
__7.1_ 돌아보기: for 내장의 기본 요소
__7.2_ for 내장: 내부 동작
__7.3_ for 내장의 변환 규칙
__7.4_ Option과 다른 컨테이너 타입
__7.5_ 마치며

8장. 스칼라 객체지향 프로그래밍
__8.1_ 클래스와 객체의 기초
__8.2_ 참조 타입과 값 타입
__8.3_ 값 클래스
__8.4_ 부모 타입
__8.5_ 스칼라에서의 생성자
__8.6_ 클래스의 필드
__8.7_ 입력 검증하기
__8.8_ 부모 클래스 생성자 호출하기(그리고 좋은 객체지향 설계)
__8.9_ 내포된 타입
__8.10_ 마치며

9장. 트레이트
__9.1_ 자바 8의 인터페이스
__9.2_ 믹스인으로서의 트레이트
__9.3_ 트레이트 쌓기
__9.4_ 트레이트 만들기
__9.5_ 클래스를 쓸 것인가 트레이트를 쓸 것인가?
__9.6_ 마치며

10장. 스칼라 객체 시스템 I
__10.1_ 매개변수화한 타입: 상속에 따른 변성
__10.2_ 스칼라 타입 계층구조
__10.3_ Nothing(그리고 Null)에 대한 더 많은 내용
__10.4_ Product, 케이스 클래스, 튜플
__10.5_ Predef 객체
__10.6_ 객체의 동등성
__10.7_ 마치며

11장. 스칼라 객체 시스템 II
__11.1_ 클래스와 트레이트의 멤버 오버라이딩하기
__11.2_ 객체의 상속 계층을 선형화하기
__11.3_ 마치며

12장. 스칼라 컬렉션 라이브러리
__12.1_ 제네릭, 변경 가능, 변경 불가능, 동시성, 병렬 컬렉션, 아이고!
__12.2_ 컬렉션 선택하기
__12.3_ 컬렉션 라이브러리의 설계 방식
__12.4_ 값 타입을 위한 특화
__12.5_ 마치며

13장. 가시성 규칙
__13.1_ 공개: 기본 가시성
__13.2_ 가시성 지정 키워드
__13.3_ 공개 가시성
__13.4_ 보호 가시성
__13.5_ 비공개 가시성
__13.6_ 영역 지정 비공개와 영역 지정 보호 가시성
__13.7_ 가시성에 대한 마지막 고찰
__13.8_ 마치며

Part 3_ 기초를 넘어서

14장. 스칼라 타입 시스템 I
__14.1_ 매개변수화한 타입
__14.2_ 타입 바운드
__14.3_ 맥락 바운드
__14.4_ 뷰 바운드
__14.5_ 추상 타입 이해하기
__14.6_ 자기 타입 표기
__14.7_ 구조적 타입
__14.8_ 복합 타입
__14.9_ 존재 타입
__14.10_ 마치며

15장. 스칼라 타입 시스템 II
__15.1_ 경로에 의존하는 타입
__15.2_ 의존적 메서드 타입
__15.3_ 타입 투영
__15.4_ 값에 대한 타입
__15.5_ 고계 타입
__15.6_ 타입 람다
__15.7_ 자기 재귀 타입: F-바운드 다형성
__15.8_ 마치며

16장. 고급 함수형 프로그래밍
__16.1_ 대수적 데이터 타입
__16.2_ 카테고리 이론
__16.3_ 마치며

Part 4_ 고급 주제 및 실전 응용

17장. 동시성 프로그래밍 도구
__17.1_ scala.sys.process 패키지
__17.2_ 퓨처
__17.3_ 액터를 활용해서 튼튼하고 확장성 있는 동시성 프로그래밍하기
__17.4_ 아카: 스칼라를 위한 액터
__17.5_ 피클링과 스포어즈
__17.6_ 반응형 프로그래밍
__17.7_ 마치며

18장. 스칼라를 활용한 빅데이터
__18.1_ 빅데이터: 간략한 역사
__18.2_ 스칼라로 맵리듀스 개선하기
__18.3_ 맵리듀스를 넘어서
__18.4_ 수학을 위한 카테고리
__18.5_ 스칼라 기반 데이터 도구 목록
__18.6_ 마치며

19장. 스칼라 동적 호출
__19.1_ 동기를 불어넣는 예제: 루비 온 레일즈의 ActiveRecord
__19.2_ Dynamic 트레이트를 사용해서 스칼라에서 동적 호출하기
__19.3_ DSL에서 고려할 점
__19.4_ 마치며

20장. 스칼라 도메인 특화 언어
__20.1_ 예제: 스칼라를 위한 XML과 JSON DSL
__20.2_ 내부 DSL
__20.3_ 파서 콤비네이터를 활용한 외부 DSL
__20.4_ 내부 DSL과 외부 DSL에 대한 마지막 고찰
__20.5_ 마치며

21장. 스칼라 도구와 라이브러리
__21.1_ 명령행 도구
__21.2_ 빌드 도구
__21.3_ IDE나 텍스트 편집기와 통합하기
__21.4_ 스칼라로 테스트 주도 개발하기
__21.5_ 서드파티 라이브러리
__21.6_ 마치며

22장. 자바 상호 운용성
__22.1_ 자바에서 정의한 이름을 스칼라 코드에서 사용하기
__22.2_ 자바와 스칼라 제네릭스
__22.3_ 자바빈즈 프로퍼티
__22.4_ AnyVal 타입과 자바 기본 타입
__22.5_ 자바 코드로 변환한 스칼라 이름
__22.6_ 마치며

23장. 애플리케이션 설계
__23.1_ 그 동안 배운 내용 복습
__23.2_ 애노테이션
__23.3_ 모듈로서의 트레이트
__23.4_ 디자인 패턴
__23.5_ 계약에 의한 설계를 활용해서 더 좋게 설계하기
__23.6_ 파르테논 구조
__23.7_ 마치며

24장. 메타프로그래밍: 매크로와 리플렉션
__24.1_ 타입을 이해하기 위한 도구
__24.2_ 실행 시점 리플렉션
__24.3_ 스칼라의 고급 실행 시점 리플렉션 API
__24.4_ 매크로
__24.5_ 마치며