책 소개
요약
줄리아(Julia)는 강력하고 기능이 풍부한 현대적인 프로그램 언어다. 코드를 쉽게 작성할 수 있을 뿐만 아니라 실행 속도도 빠르다. 빠른 개발 주기, 대량의 데이터, 다양한 컴퓨팅 환경이라는 현실에서 줄리아는 높은 추상력과 다중 패러다임을 지원하여 쉽고 빠르게 개발할 수 있도록 한다. R, MATLAB, 파이썬(Python)과 같은 계산력을 지원하지만 휠씬 빠르다. 다른 언어와의 뛰어난 접착성뿐만 아니라, 언어 태생부터 멀티코어 환경을 고려하여 우아한 병렬 기능을 제공한다. 고성능 프로그램을 개발하고자 한다면 반드시 고려해야 할 언어다.
이 책에서 다루는 내용
고성능을 발휘하는 줄리아 개발 환경 설정
고수준 동적 언어의 문제 해결과 필요시 데이터 타입을 명시하는 방법
기본 타입 시스템을 확장해 사용자 타입 생성
IJulia와 시각화 패키지로 시각화
테스팅, 디버깅, 성능 비교 등 기본 매크로 사용
분산 환경에서 병렬적으로 문제를 해결하기 위해 줄리아 적용
C, 파이썬, 매트랩 등의 언어와 통합
이 책의 대상 독자
이 책은 데이터 과학자나 기술적, 과학적 계산 프로젝트를 수행하는 연구자에게 적합하며, 단순한 프로젝트 애플리케이션을 줄리아로 시작할 수 있도록 돕는다. 매트랩(MATLAB), R, 파이썬, 루비(Ruby)와 같은 고수준 동적(high-level dynamic) 언어에 대한 기본적인 지식이 있으면 이 책의 내용을 더 쉽게 이해할 수 있다.
이 책의 구성
0장, ‘줄리아를 사용해야 하는 근거’에서는 줄리아의 기본 원칙과 다른 언어와의 차이를 살펴본다.
1장, ‘줄리아 플랫폼 설치’에서는 줄리아 환경에 필요한 모든 구성 요소를 설치해본다. 줄리아 콘솔(REPL)의 작동법과 좀 더 편리한 개발 편집기에 대해 다룬다.
2장, ‘변수, 타입, 연산’에서는 코드를 작정하는 데 필요한 기본 타입과 이를 실행하는 연산자를 살펴본다.
3장, ‘함수’에서는 함수가 줄리아에서 기본 구현 블록인 이유와 효과적으로 사용하는 방법을 설명한다.
4장, ‘흐름 제어’에서는 줄리아의 뛰어난 흐름 요소와 오류 처리, 코드 실행을 구성하는 코루틴(coroutine)을 사용하는 방법을 살펴본다.
5장, ‘컬렉션 타입’에서는 개별 값을 그룹화하는 배열(array), 매트릭스(matrix), 튜플(tuple), 딕셔너리(dictionary), 셋(set) 같은 타입을 살펴본다.
6장, ‘타입, 메소드, 모듈’에서는, 타입 개념에 대해 좀 더 자세히 살펴보고 C 언어와 같은 성능을 얻기 위해 멀티플 디스패치를 사용하는 방법을 알아본다.
7장, ‘메타프로그래밍’에서는 표현식(expression), 리플렉션(reflection) 기능과 같은 줄리아의 내부를 다루며 매크로(macro)의 강력함을 설명한다.
8장, ‘I/O, 네트워킹, 병렬 컴퓨팅’에서는 데이터프레임(DataFrame)을 사용해 파일이나 데이터베이스의 데이터를 다루는 방법을 살펴본다. 네트워킹 기능과 병렬 컴퓨팅을 설정하는 방법도 설명한다.
9장, ‘외부 프로그램 실행’에서는 운영체제 명령을 사용하는 방법, 다른 언어와 함께 사용하는 방법, 성능 개선 팁을 다룬다.
10장, ‘표준 라이브러리와 패키지’에서는 표준 라이브러리를 살펴보고, 주요 데이터 시각화 패키지를 설명한다.
부록, ‘매크로와 패키지 목록’에서는 편리한 매크로와 이 책에서 사용한 패키지 참고 목록을 제공한다.
목차
목차
- 0장 줄리아를 사용해야 하는 근거
- 줄리아 소개
- 다른 언어 사이에서 줄리아의 위치
- 데이터 과학자 관점에서 다른 언어와의 비교
- MATLAB
- R
- 파이썬
- 유용한 링크
- 요약
- 1장 줄리아 플랫폼 설치
- 줄리아 설치
- 윈도우 버전: 윈도우XP SP2부터 지원함
- 우분투 버전
- OS X
- 소스로 빌드
- 줄리아 셸로 작업
- 시작 옵션과 줄리아 스크립트
- 패키지
- 새로운 패키지 추가
- 줄리아 스튜디오 설치해 작업
- IJulia 설치해 작업
- Sublime-IJulia 설치해 작업
- Juno 설치
- 다른 편집기와 IDE
- 줄리아 작동 방법
- 요약
- 2장 변수, 타입, 연산
- 변수, 이름 짓는 규약, 주석
- 타입
- 정수
- 부동소수점 수
- 기본 수학 함수와 연산자
- 실수와 허수
- 문자
- 문자열
- 숫자와 문자열 형식화
- 정규 표현식
- 범위와 배열
- 다양한 배열 생성 방법
- 배열의 공통적인 함수
- 문자 배열을 문자열로 변환
- 날짜와 시간
- 유효범위와 상수
- 요약
- 3장 함수
- 함수 정의
- 선택 아규먼트와 키워드 아규먼트
- 이름 없는 함수
- 일급 함수와 클로저
- 재귀 함수
- 맵, 필터, 리스트 컴프리헨션
- 제네릭 함수와 멀티플 디스패치
- 요약
- 4장 흐름 제어
- 조건 평가
- 반복 평가
- for 반복문
- while 반복문
- break 명령문
- continue 명령문
- 예외 처리
- 유효범위 다시 보기
- 태스크
- 요약
- 5장 컬렉션 타입
- 매트릭스
- 튜플
- 딕셔너리
- 키와 값: 반복
- 셋
- 튜플의 셋 생성
- 예제 : 단어 빈도
- 요약
- 6장 타입, 메소드, 모듈
- 타입 어노테이션과 변환
- 타입 변환과 프로모션
- 타입 계층: 하위 타입과 상위 타입
- 구상 타입과 추상 타입
- 사용자 타입과 복합 타입
- 두 값, 두 객체는 언제 같거나 동일한가
- 멀티플 디스패치 예제
- 타입과 컬렉션: 내부 생성자
- 타입 결합
- 매개화 타입과 생성자 메소드
- 표준 모듈과 경로
- 요약
- 7장 메타프로그래밍
- 표현식과 심볼
- eval과 보간
- 매크로 정의
- 기본 매크로
- 테스팅
- 디버깅
- 성능 비교
- 태스크 시작
- 리플렉션
- 요약
- 8장 I/O, 네트워킹, 병렬 컴퓨팅
- 기본 입력과 출력
- 파일 작업
- CSV 파일 읽고 쓰기
- 데이터프레임 활용
- 다른 파일 형태
- TCP 소켓과 서버 작업
- 데이터베이스 활용
- 병렬 연산과 컴퓨팅
- 프로세스 생성
- 저수준 통신 사용
- 병렬 반복문과 맵
- 분산 배열
- 요약
- 9장 외부 프로그램 실행
- 셸 명령어 실행: 보간과 파이프라이닝
- 보간
- 파이프라이닝
- C나 포트란 호출
- 파이썬 호출
- 성능 팁
- 사용 도구
- 요약
- 10장 표준 라이브러리와 패키지
- 표준 라이브러리 이해 높이기
- 줄리아 패키지 매니저
- 패키지 설치와 갱신
- 패키지 발행
- 줄리아에서 그래픽
- 데이터에 Gadfly 활용
- 요약
- 부록 매크로와 패키지 목록
도서 오류 신고
정오표
정오표
2015-12-09
p58. 아래에서 3행
typemax(Int64) → typemax(Int16)
2015-12-10
p63. 7행
세 개의 작은따옴표( ''' ''')
→
세 개의 큰따옴표( """ """)
p63. 15행
endof(str)은 바이트 수를 반환하며
→
endof(str)은 마지막 바이트의 인덱스를 반환하며
p93. 14행
모든 메소드 목록을 가상 메소드 테이블인 vtable에 함수 자체로 저장한다
→
함수 자체에 있는 가상 메소드 테이블인 vtable에 모든 메소드 목록을 저장한다.
p93. 아래에서 3행
vtable은 타입(클래스)이 아닌 함수를 정의한다.
→
vtable은 타입(클래스)이 아닌 함수에 저장된다.
p96. 9행
메소드는 가장 먼저 LLVM JIT 컴파일러 백엔드를 호출한다.
→
메소드는 첫 번째 호출시에 LLVM JIT 컴파일러 백엔드를 호출한다.