Top

Julia 프로그래밍 [데이터 처리를 위한 쉬운 고성능 언어]

  • 원서명Getting Started with Julia Programming (ISBN 9781783284795)
  • 지은이이보 발바르트(Ivo Balbaert)
  • 옮긴이전철욱
  • ISBN : 9788960777903
  • 20,000원
  • 2015년 11월 27일 펴냄
  • 페이퍼백 | 228쪽 | 188*235mm
  • 시리즈 : acorn+PACKT, 프로그래밍 언어

책 소개

요약

줄리아(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장, ‘표준 라이브러리와 패키지’에서는 표준 라이브러리를 살펴보고, 주요 데이터 시각화 패키지를 설명한다.

부록, ‘매크로와 패키지 목록’에서는 편리한 매크로와 이 책에서 사용한 패키지 참고 목록을 제공한다.

저자/역자 소개

지은이의 말

줄리아는 MIT 앨런 에델만(Alan Edelman)의 지도하에 응용 컴퓨팅 그룹에서 개발된 프로그래밍 언어다. 2009년부터 개발해 2012년 2월에 첫 버전을 공개했다. 이 책은 버전 3.0으로 저술되었고, 초기 단계이지만 기본적으로 안정적이다. 언어의 핵심은 버전 0.1 이후, 호환되지 않는 변화가 없었다. 이 언어는 명확하고 확고한 원칙 아래, 기술 분야, 고성능 계산 분야, 데이터 과학 분야 연구자에게 점차적으로 호평을 받고 있다.

지은이 소개

이보 발바르트(Ivo Balbaert)

벨기에 커뮤니티 대학 CVO 안트베르펜(Antwerpen)(www.cvoantwerpen.be)에서 (웹)프로그래밍과 데이터베이스를 가르치고 있다. 1986년 안트베르펜 대학에서 응용 물리학 박사 학위를 받았다. 20년 동안 소프트웨어 산업계에서 개발자와 컨설턴트로 일했고, 10년간 안트베르펜 대학병원에서 프로젝트 매니저를 맡았다. 2000년 이후로, 소프트웨어를 개발하며 대학에서 학생을 가르치고 있다.

2012년에 루비 온 레일스 개발 소개서인 『Programmeren met Ruby en Rails』(Van Duuren Media)를 집필했고, 2012년에 Go 프로그래밍 언어에 대한 『The Way To Go』(iUniverse)를 저술했다. 2013년에는 제난 리드야노빅(Dzenan Ridjanovic)과 함께 팩트출판사에서 『Learning Dart』와 『Dart Cookbook』도 공저했다.

옮긴이의 말

계산하는 기계와의 대화

100년 전, 컴퓨터라는 이름이 세상에 알려지기도 전에 계산하는 기계와 사람은 스위치로 대화했다. 그 후 기계어로, 좀 더 발전된 어셈블리어로 대체되면서 이 계산하는 기계와 좀 더 쉽고 편리하게 대화하는 방법들이 개발되었다. 최초의 고수준 언어인 포트란(Fortran)의 전신이 1950년대에 등장했고, 곧이어 리스프(LISP)나 알골(Algol)과 같은 언어도 등장했다. 최신 컴퓨팅 환경은 다양한 프로세서, 고속으로 연결되는 망, 병렬 작업, 수많은 적용 분야(domain)로 대표된다. 프로그래밍 언어도 더 많이 등장했다. 이러한 컴퓨팅 환경에서 모든 분야에 최상의 결과를 내는 하나의 만능 언어를 찾기는 어렵다. 차라리 각 분야에 맞는 언어로 빠르게 개발하고 지속적으로 관리하는 것이 더 해답에 가까울 수 있다. 새롭고 강력한 언어로 컴퓨터와 더 ‘잘’ 대화해야 할 필요성이 바로 여기에 있다. 비트겐슈타인의 말을 좀 바꿔본다. “새 언어는 내 세계의 한계를 넓힌다.”

데이터와의 대화

줄리아는 2012년 2월에 첫 버전을 공개한 최신 프로그래밍 언어다. 이 언어는 지금의 주류 언어와 다양한 면에서 차별성을 갖는다. 파이썬과 같은 쉽고 간략한 문법, C와 같은 실행 속도, R이나 MATLAB과 같은 계산력, 리스프와 같은 메타프로그래밍, 사용하기 쉬운 병렬 기능뿐만 아니라 언어 외적인 면에서도 다양한 기능을 제공한다. 편리한 패키지 관리, 다른 언어와의 뛰어난 접착성(Glue), 다기능 대화형 환경이 그것이다. 줄리아는 고성능 프로그램을 쉽고 빠르게 구현할 수 있도록 하며, 특히 많은 데이터를 다루는 작업에 탁월하도록 고안되었다. 그 중심에는 LLVM(Low Level Virtual Machine) 기반 JIT(just-in-time) 컴파일러가 있다. 이 컴파일러는 높은 추상력과 표현력, 낮은 ‘학습 곡선’을 제공하면서도 뛰어난 성능을 보장한다. 일반 프로그래밍 언어와 같이 줄리아는 컴퓨터의 모든 자원을 다루는 데 아무런 문제가 없으며 탁월한 성능으로 다른 언어에서 다루기 어려웠던 데이터를 간편하게 다룰 수 있다. 따라서 고성능 프로그램을 구현하거나 데이터를 효과적으로 다루고자 한다면 고려해봐야 할 언어다. 이 책은 줄리아를 처음 접하는 독자에게 적합하다. 책의 구성이 각 장마다 서로 연계되어 있어 전체적으로 여러 번 읽는 것을 권장한다. 파이썬, R, 매트랩을 사용해본 독자라면 관심 있는 모듈을 줄리아로 다시 구현해보면 그 우수성을 실감할 수 있다.

버전 0.4에는 코드에 대한 문서화 시스템, 유니코드 버전 8 지원, f(; symbol => val)와 같은 새로운 키워드 아규먼트 문법, 제네릭 함수 생성, Channels을 이용한 내부 태스크 통신과 같은 새로운 기능이 추가되었다. 이와 더불어, String, FloatingPoint 타입은 각각 AbstractString, AbstractFloat 타입으로 이름이 변경되었고, Nothing은 void로, None은 Union{}로 대체되었다. 배열(Array), 딕션너리(Dictionary), 셋(Set) 생성, Date 모듈 등은 버전 0.4에 맞추어 이 책에서 설명하고 있기 때문에 변경 사항을 쉽게 익힐 수 있다. 이 책과 함께 버전 0.3으로 학습한 후, 0.4로 업그레이드하길 추천한다.

옮긴이 소개

전철욱

웹의 개방성, 파이썬의 기민성, 기계 학습의 예측성을 좋아한다. 공익을 위한 재능을 만들고자 노력 중이다. 호주에서 여우 세 마리에게 잡혀 살고 있다. 에이콘출판사의 『Building Machine Learning Systems with Python 한국어판 (개정판)』(2015)과 『R을 활용한 기계 학습』(2014)을 번역했다.

목차

목차
  • 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 활용
  • 요약

  • 부록 매크로와 패키지 목록

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

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 컴파일러 백엔드를 호출한다.