프로그래머라면 알아야 할 미래를 품은 7가지 언어
모든 일에 적합한 언어는 없다. 객체지향이 대세였던 때는 자바 하나면 충분했을지 몰라도, 동시성 프로그래밍이 화두로 떠오르자 이제 함수형 언어들에 대한 관심이 높아지고 있다. 미래의 프로그래머는 필요에 따라 패러다임이 다른 언어를 배워 사용할 줄 알아야 한다. 패러다임이 전혀 다른 언어를 익히는 데에는 발상의 전환이 필요하므로 경쟁력을 높이는 것은 물론 사고의 지평도 넓힐 수 있다. 이미 미국에서는 1년에 하나씩 새 언어를 학습해야 한다는 금언이 널리 받아들여지고 있다. 이 책은 1년에 한 개를 훌쩍 뛰어넘어 일주일에 하나씩 새 언어를 익히는 것을 목표로 한다.
이들은 다시 여러 패러다임으로 나뉘지만 대부분 태생부터 동시성을 염두에 둔 언어들이다. 이 시대 가장 중요한 프로그래밍 모델 및 언어를 배움으로써 폴리글랏 프로그래머로서의 첫발을 내딛어보는 건 어떨까? 지금 당장 도전해보자. 이 책이 당신을 폴리글랏 프로그래머로 인도할 것이다.
【대상 독자】
CHAPTER 1 서문
1.1 혼돈 속의 질서
1.2 언어들
1.3 이 책을 사라
1.3.1 배움을 위한 배움
1.3.2 어려운 시대에 대한 도움
1.4 이 책을 사지 말라
1.4.1 문법 이상의 내용
1.4.2 언어 설치 가이드가 아니다
1.4.3 프로그래밍 레퍼런스 책이 아니다
1.4.4 혹독하게 몰아붙일 것이다
1.5 마지막으로 한마디
CHAPTER 2 루비
2.1 루비에 대하여
2.1.1 마츠와의 인터뷰
2.2 1일: 유모 찾기
2.2.1 훑어보기
2.2.2 콘솔에서 루비 사용하기
2.2.3 프로그래밍 모델
2.2.4 결정
2.3 2일: 하늘에서 땅으로
2.3.1 함수 정의하기
2.3.2 배열
2.3.3 해시
2.3.4 코드 블록과 산출
2.3.5 파일에서 루비 실행하기
2.3.6 클래스 정의하기
2.3.7 믹스인 작성하기
2.3.8 모듈, enumerable, 집합
2.3.9 2일 차에 배운 것
2.3.10 2일 차 자율 학습
2.4 3일: 심각한 변화
2.4.1 오픈 클래스
2.4.2 method_missing
2.4.3 모듈
2.4.4 3일 차에 배운 내용
2.4.5 3일 차 자율 학습
2.5 루비를 마무리하며
2.5.1 핵심 강점
2.5.2 약점
2.5.3 마치며
CHAPTER 3 Io
3.1 Io에 대하여
3.2 1일: 학교 빼먹고 놀러 가기
3.2.1 안면 트기
3.2.2 객체, 프로토타입, 상속
3.2.3 메서드
3.2.4 리스트와 맵
3.2.5 ture, false, nil, 싱글턴
3.2.6 스티브 디코트와의 인터뷰
3.2.7 1일 차에 배운 내용
3.2.8 1일 차 자율 학습
3.3 2일: 소시지 왕
3.3.1 조건과 루프
3.3.2 연산자
3.3.3 메시지
3.3.4 리플렉션
3.3.5 2일 차에 배운 내용
3.3.6 2일 차 자율 학습
3.4 3일: 퍼레이드와 다른 낯선 장소들
3.4.1 도메인 언어
3.4.2 Io의 method_missing
3.4.3 동시성
3.4.4 3일 차에 배운 내용
3.4.5 3일 차 자율 학습
3.5 Io를 마무리하며
3.5.1 강점
3.5.2 약점
3.5.3 마치며
CHAPTER 4 프롤로그
4.1 프롤로그에 대하여
4.2 1일: 훌륭한 운전사
4.2.1 기본적인 사실
4.2.2 기본적인 추론과 변수
4.2.3 빈칸 채우기
4.2.4 지도 색칠하기
4.2.5 통합, 파트 1
4.2.6 실전 프롤로그
4.2.7 1일 차에 배운 내용
4.2.8 1일 차 자율 학습
4.3 2일: 시작까지 15분 남았어
4.3.1 재귀
4.3.2 리스트와 튜플
4.3.3 리스트와 수학
4.3.4 규칙을 양방향으로 사용하기
4.3.5 2일 차에 배운 내용
4.3.6 2일 차 자율 학습
4.4 3일: 라스베이거스 날려보내기
4.4.1 스도쿠 풀기
4.4.2 8 퀸
4.4.3 3일 차에 배운 내용
4.4.4 3일 차 자율 학습
4.5 프롤로그를 마무리하며
4.5.1 강점
4.5.2 약점
4.5.3 마치며
CHAPTER 5 스칼라
5.1 스칼라에 대하여
5.1.1 자바와의 관련성
5.1.2 맹신은 없다
5.1.3 스칼라의 창시자 마틴 오더스키와의 인터뷰
5.1.4 함수 프로그래밍과 동시성
5.2 1일: 언덕 위의 성
5.2.1 스칼라의 자료형
5.2.2 표현과 조건
5.2.3 루프
5.2.4 범위와 튜플
5.2.5 스칼라에서의 클래스
5.2.6 보조 생성자
5.2.7 클래스를 확장하기
5.2.8 1일 차에 배운 내용
5.2.9 1일 차 자율 학습
5.3 2일: 정원 손질하기와 그 밖의 트릭
5.3.1 var 대 val
5.3.2 컬렉션
5.3.3 컬렉션과 함수
5.3.4 2일 차에 배운 내용
5.3.5 2일 차 자율 학습
5.4 3일: 털 다듬기
5.4.1 XML
5.4.2 패턴 매칭
5.4.3 동시성
5.4.4 3일 차에 배운 내용
5.4.5 3일 차 자율 학습
5.5 스칼라를 마무리하며
5.5.1 핵심 강점
5.5.2 약점
5.5.3 마치며
CHAPTER 6 얼랭
6.1 얼랭에 대하여
6.1.1 동시성을 위해 만들어지다
6.1.2 조 암스트롱 박사와의 인터뷰
6.2 1일: 사람 모습을 하기
6.2.1 시작하기
6.2.2 주석, 변수, 표현
6.2.3 원자, 리스트, 튜플
6.2.4 패턴 매칭
6.2.5 1일 차에 배운 내용
6.2.6 1일 차 자율 학습
6.3 2일: 형태 바꾸기
6.3.1 제어 구조물
6.3.2 익명 함수
6.3.3 리스트와 고계함수
6.3.4 리스트와 관련된 고급 개념
6.3.5 2일 차에 배운 내용
6.3.6 2일 차 자율 학습
6.4 3일: 빨간 약
6.4.1 기본적인 동시성 원시 값
6.4.2 동기적 메시지
6.4.3 안정성을 위해서 프로세스 연결하기
6.4.4 3일 차에 배운 내용
6.4.5 3일 차 자율 학습
6.5 얼랭을 마무리하며
6.5.1 핵심 강점
6.5.2 약점
6.5.3 마치며
CHAPTER 7 클로저
7.1 클로저에 대하여
7.1.1 모든 것은 리스프로부터
7.1.2 JVM 위에서
7.1.3 동시성 세계에 맞춰 업데이트되다
7.2 1일: 루크 훈련시키기
7.2.1 기본적인 함수 호출하기
7.2.2 문자열과 문자
7.2.3 불리언과 표현
7.2.4 리스트, 맵, 집합, 벡터
7.2.5 함수 정의하기
7.2.6 바인딩
7.2.7 익명 함수
7.2.8 클로저의 창시자 리치 히키와의 인터뷰
7.2.9 1일 차에 배운 내용
7.2.10 1일 차 자율 학습
7.3 2일: 요다와 포스
7.3.1 loop와 recur를 사용하는 재귀
7.3.2 시퀀스
7.3.3 게으른 평가
7.3.4 defrecord와 protocol
7.3.5 매크로
7.3.6 2일 차에 배운 내용
7.3.7 2일 차 자율 학습
7.4 3일: 악마의 눈
7.4.1 참조와 트랜잭션 메모리
7.4.2 원자 사용하기
7.4.3 에이전트 이용하기
7.4.4 퓨처
7.4.5 우리가 다루지 않은 것
7.4.6 3일 차에 배운 내용
7.4.7 3일 차 자율 학습
7.5 클로저를 마무리하며
7.5.1 리스프의 역설
7.5.2 핵심 강점
7.5.3 약점
7.5.4 마치며
CHAPTER 8 하스켈
8.1 하스켈에 대하여
8.2 1일: 논리
8.2.1 표현과 원시 자료형
8.2.2 함수
8.2.3 튜플과 리스트
8.2.4 리스트 만들기
8.2.5 필립 와들러와의 인터뷰
8.2.6 1일 차에 배운 내용
8.2.7 1일 차 자율 학습
8.3 2일: 스팍의 위대한 힘
8.3.1 고계함수
8.3.2 부분함수와 커링
8.3.3 게으른 평가
8.3.4 사이먼 페이턴-존스와의 인터뷰
8.3.5 2일 차에 배운 내용
8.3.6 2일 차 자율 학습
8.4 3일 차: 정신 융합
8.4.1 클래스와 자료형
8.4.2 모나드
8.4.3 3일 차에 배운 내용
8.4.4 3일 차 자율 학습
8.5 하스켈을 마무리하며
8.5.1 핵심 강점
8.5.2 약점
8.5.3 마치며
CHAPTER 9 마무리
9.1 프로그래밍 모델
9.1.1 객체지향 (루비, 스칼라)
9.1.2 프로토타입 프로그래밍 (Io)
9.1.3 제약-논리 프로그래밍 (프롤로그)
9.1.4 함수 프로그래밍 (스칼라, 얼랭, 클로저, 하스켈)
9.1.5 패러다임 바꾸기
9.2 동시성
9.2.1 변경 가능한 상태 통제하기
9.2.2 Io, 얼랭, 스칼라의 액터
9.2.3 퓨처
9.2.4 트랜잭션 메모리
9.3 프로그래밍 구조물
9.3.1 리스트 컴프리헨션
9.3.2 모나드
9.3.3 매칭
9.3.4 통합
9.4 자신의 목소리 찾기