상세 컨텐츠

본문 제목

쉽게 배워서 빨리 써먹는 스칼라 프로그래밍

전체 출간 도서

by 비제이퍼블릭 2013. 4. 12. 11:48

본문

 

 

 

 

쉽게 배워서 빨리 써먹는

 

 

스칼라 프로그래밍

 

 

저자 케이 호스트만

역자 서광열

출간일 2013425()

정가 27,000

페이지 372

판형 190 x 245

ISBN 978-89-94774-37-4 (93560)

원서정보 SCALA for the Impatient

 

 

책 소개

 

인내심 없는 개발자를 위한 스칼라 프로그래밍 학습서

 

스칼라는 객체지향과 함수 프로그래밍 언어의 장점만을 결합한 자바 가상 머신(JVM)에서 동작하는 현대적인 프로그래밍 언어다. 스칼라를 사용하면 자바보다 더 간결한 프로그램을 작성할 수 있을 뿐만 아니라 병행성의 힘을 최대한 발휘할 수 있다. 스칼라는 JVM 위에서 동작하기 때문에 어떤 자바 라이브러리나 사용할 수 있으며 자바 프레임워크와 상호 동작한다.

 

인내심 없는 개발자를 위한 스칼라 프로그래밍을 위한 본서는 개발자가 스칼라로 무엇을 어떻게 할 수 있는지 간결하게 보여준다. 국제적으로 베스트셀러인 『코어 자바』의 주저자인 케이 호스트만은 완벽히 실용적인 코드 기반의 빠른 소개를 제공한다. 또한 빠르게 숙달하고 적용할 수 있는블로그 길이의 스칼라 개념과 기술을 소개한다. 실천 활동은 기초부터 숙련까지 잘 정의된 능력 단계별로 여러분을 안내한다. 이 책의 범위는 다음과 같다.

 

l  스칼라 인터프리터, 문법, 도구와 고유한 용법으로 빠르게 시작하기

l  함수, 배열, , 튜플, 패키지, 임포트, 예외 처리 등 핵심 언어 기능 숙달하기

l  클래스, 상속, 트레이트 등 스칼라 객체지향 프로그래밍에 익숙해지기

l  파일 다루기, 정규 표현식, XML 등 실무 프로그래밍 업무에 스칼라 사용하기

l  고차 함수와 강력한 스칼라 콜렉션 라이브러리로 일하기

l  스칼라의 강력한 패턴 매칭과 케이스 클래스를 지렛대로 사용하기

l  스칼라 액터로 병행 프로그램 작성하기

l  도메인-특정 언어 구현하기

l  스칼라 타입 시스템 이해하기

l  어노테이션, 암묵, 제한된 컨티뉴에이션 등 강력한 고급 도구 적용하기

 

스칼라는 프로그래밍 경험을 새롭게 만드는 티핑 포인트에 빠르게 도달 중이다. 이 책은 객체지향 프로그래머들이 기존 기술을 기반으로 하여 고급 프로그래밍 기술에 점진적으로 숙달함에 따라 유용한 애플리케이션을 즉시 구축할 수 있게 해준다.

 

소스코드 다운로드

http://horstmann.com/scala

 

독자대상

초중급

 

 

 

저자소개

 

케이 호스트만(Cay S. Horstmann)

Core Java™, Volumes I & II (8/E)(Sun Microsystems, 2008)

뿐만 아니라 프로 프로그래머와 컴퓨터 공학 학생들을 위한 십여 권의 책들의 주저자다. 또한 산

호세 주립 대학의 컴퓨터 공학과 교수이고 자바 챔피언이다.

 

 

 

역자소개

 

서광열

포항공대 컴퓨터공학과를 졸업했고, 함수 언어 활용에 관심이 많은 프로그래머이다. 현재는 ()

퍼니원헌드레드에서 웹킷 기반의 브라우저 엔진을 개발하고 있고, 오픈소스 웹킷 프로젝트 커미터

로 활동하고 있다. 여가 시간에는 스칼라, 클로저 등 JVM 기반의 함수 언어에 흥미를 가지고 활용

방안을 찾고 있다.

 

 

 

목차

 

Chapter 1. 기본기

스칼라 인터프리터

값과 변수 선언하기

자주 사용되는 타입

산술과 연산자 오버로딩

함수와 메소드 호출

apply 메소드

스칼라독(Scaladoc)

연습문제

 

Chapter 2. 제어 구조와 함수

조건식

문 종료

블록식과 할당

입력과 출력

루프

고급 for 루프와 for 컴프리헨션

함수

기본 인자와 이름 인자

가변 인자

프로시저

레이지 값

예외

연습문제

 

Chapter 3. 배열 사용하기

고정 길이 배열

가변 길이 배열: 배열 버퍼

배열과 배열 버퍼 방문

배열 변환

일반 알고리즘

스칼라독 해독

다차원 배열

자바 연동

연습문제

 

Chapter 4. 맵과 튜플

맵 생성

맵 값 접근

맵 값 갱신

맵 반복

정렬 맵

자바 연동

튜플

지핑(Zipping)

연습문제

 

Chapter 5. 클래스

간단한 클래스와 인자 없는 메소드

게터와 세터가 있는 프로퍼티

게터만 있는 프로퍼티

오브젝트-비공개 필드

빈 프로퍼티

보조 생성자

기본 생성자

중첩 클래스

연습문제

 

Chapter 6. 오브젝트

싱글톤

컴패니언 오브젝트

클래스나 트레이트를 확장하는 오브젝트

apply 메소드

애플리케이션 오브젝트

이뉴머레이션

연습문제

 

Chapter 7. 패키지와 임포트

패키지

스코프 규칙

체인 패키지 구문

파일 시작 표기법

패키지 오브젝트

패키지 가시성

임포트

스코프는 어디든 올 수 있다.

멤버 이름 변경 및 숨기기

암묵적 임포트

연습문제

 

Chapter 8. 상속

클래스 확장하기

메소드 오버라이드하기

타입 검사와 캐스트

보호 필드와 메소드

슈퍼클래스 생성

필드 오버라이드하기

익명 서브클래스

추상 클래스

추상 필드

생성 순서와 조기 정의

스칼라 상속 계층

오브젝트 등식

연습문제

 

Chapter 9. 파일과 정규 표현식

줄 읽기

문자열 읽기

토큰과 숫자 읽기

URL과 다른 소스에서 읽기

바이너리 파일 읽기

텍스트 파일 쓰기

디렉토리 방문

직렬화

프로세스 제어

정규 표현식

정규 표현식 그룹

연습문제

 

Chapter 10. 트레이트

왜 다중 상속을 사용하지 않는가?

인터페이스로서 트레이트

구체적 구현이 있는 트레이트

트레이트가 있는 오브젝트

레이어드 트레이트

트레이트의 추상 메소드 오버라이드하기

리치 인터페이스를 위한 트레이트

트레이트의 구체 필드

트레이트의 추상 필드

트레이트 생성 순서

트레이드 필드 초기화

클래스를 확장한 트레이트

셀프 타입  

내부에서 일어나는 일

연습문제

 

Chapter 11. 연산자

인식자

삽입 연산자

단항 연산자

할당 연산자

우선순위

결합성

apply update 메소드

추출자

인자 하나 혹은 인자 없는 추출자

unapplySeq 메소드

연습문제

 

Chapter 12. 고차함수

값으로서 함수

익명 함수

함수 인자를 받는 함수

인자 추론

유용한 고차 함수

클로저

SAM 변환

커링

제어 추상화

return 표현식

연습문제

 

Chapter 13. 콜렉션

중요 콜렉션 트레이트

수정 가능한 콜렉션과 수정 불가능한 콜렉션

시퀀스

리스트

수정 가능한 리스트

집합

원소들을 추가 혹은 제거하는 연산자

공통 메소드

함수 매핑

리듀싱, 폴딩, 스캐닝

지핑

이터레이터

스트림

레이지 뷰

자바 콜렉션과의 상호 호환

쓰레드세이프 콜렉션

병렬 콜렉션

연습문제

 

Chapter 14. 패턴 매칭과 케이스 클래스

더 나은 switch

가드

패턴에서 변수

타입 패턴

배열, 리스트, 튜플을 매치하기

추출자

변수 선언에서 패턴

for 표현식에서 패턴

케이스 클래스

copy 메소드와 이름 있는 인자

case 절에서 중위 표기법

중첩 구조 매치하기

케이스 클래스는 나쁜가?

잠긴 클래스

이뉴머레이션 흉내내기

Option 타입

부분 함수

연습문제

 

Chapter 15. 어노테이션

어노테이션은 무엇인가?

무엇이 어노테이트될 수 있나?

어노테이션 인자

어노테이션 구현

자바 기능을 위한 어노테이션

최적화를 위한 어노테이션

오류와 경고를 위한 어노테이션

연습문제

 

Chapter 16. XML 처리

XML 리터럴

XML 노드

엘리먼트 어트리뷰트

내재 표현식

어트리뷰트 내의 표현식

흔히 사용하지 않는 노드 타입

XPath와 유사한 표현식

패턴 매칭

엘리먼트와 어트리뷰트 수정

XML 변환

로드와 세이브

네임스페이스

연습문제

 

Chapter 17. 타입 인자

제네릭 클래스

제네릭 함수

타입 변수에 대한 바운드

뷰 바운드

콘텍스트 바운드

매니페스트 콘텍스트 바운드

다중 바운드

타입 제한자

베리언스

코베리언트와 콘트라베리언트 위치

오브젝트는 제네릭일 수 없다

와일드카드

연습문제

 

Chapter 18. 고급 타입

싱글톤 타입

타입 프로젝션

패스

타입 별칭

구조 타입

복합 타입

중위 타입

이그지스텐셜 타입

스칼라 타입 시스템

셀프 타입

의존성 삽입

추상 타입

가족 다형성

고차 타입  

연습문제

 

Chapter 19. 파싱

문법

파서 연산 병합

파서 결과 변환

토큰 버리기

파스 트리 생성하기

좌측 재귀 피하기

추가 컴비네이터들

백트래킹 피하기

팩랙 파서

파서란 정확히 무엇인가?

정규식 파서

토큰 기반 파서

오류 처리

연습문제

 

Chapter 20. 액터

액터 생성 및 시작

메시지 송신

메시지 수신

다른 액터들에 메시지 보내기

채널

동기 메시지와 퓨처

쓰레드 공유

액터 생명 주기

액터 연결

액터로 설계하기

연습문제

 

Chapter 21. 암묵

암묵 변환

기존 라이브러리를 강화를 위해 암묵 사용하기

암묵 임포트하기

암묵 변환 규칙

암묵 인자

암묵 인자가 있는 암묵 변환

콘텍스트 바운드

증거

@implicitNotFound 어노테이션

CanBuildFrom 풀이

연습문제

 

Chapter 22. 제한된 컨티뉴에이션

컨티뉴에이션 캡처와 호출

구멍이 있는 계산

reset shift의 제어 흐름

reset 표현식의 값

reset shift 표현식의 타입

CPS 어노테이션

재귀 방문을 이터레이션으로 변환

제어 역전 되돌리기

CPS 변환

중첩 제어 콘텍스트 변환

연습문제

 

 

 

스칼라에 대해

 

 

스칼라는 독특한 언어입니다. 객채 지향 프로그래밍과 함수형 프로그래밍이 절묘하게 결합된 다중패러다임 프로그래밍 언어로, 자바 가상 머신에서 실행되는 언어입니다. 자바 언어의 부족한 점을 채워주면서, 자바로 작성된 막대한 라이브러리를 재활용할 수 있는 실용적인 언어이기도 합니다.

 

그루비(Groovy), 제이루비(JRuby), 자이썬(Jython), 클로저(Clojure) 등 자바의 한계를 극복하기 위해 등장한 여러 프로그래밍 언어들이 대부분 동적 타이핑을 사용하는 스크립트 언어인데 비해, 스칼라는 정적 타이핑을 하는 프로그래밍 언어라는 점이 스칼라를 다른 언어와 구분 짓는 가장 큰 차이점입니다.

 

스칼라는 그간 프로그래밍 언어 학계가 축적한 수많은 연구 성과의 총체입니다. 특히 강력한 타입 시스템을 통해 대부분의 오류를 실행도 하기 전에 잡아주면서도, 타입 추론 덕분에 스크립트 언어 수준의 간결한 문법을 가지고 있습니다.

 

스칼라가 세상에 등장한 것이 2003년이니 스칼라도 벌써 10년이나 된 프로그래밍 언어입니다. 10년의 세월을 견디고 살아남은 스칼라는, 함수 언어는 실무에 적합하지 않다는 편견을 깨고 가장 강력한 자바의 후계자로 떠올랐습니다. 실무에서 자바를 사용하며 언어의 한계나 부족함을 느꼈다면, 지금이 바로 스칼라를 배워야 할 때입니다!

 

관련글 더보기

댓글 영역