메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

줄리아를 생각하다

데이터 과학자를 위한 최적의 프로그래밍 언어

한빛미디어

번역서

판매중

  • 저자 : 벤 로언스 , 앨런 다우니
  • 번역 : 송한별
  • 출간 : 2020-04-06
  • 페이지 : 384 쪽
  • ISBN : 9791162242575
  • 물류코드 :10257
  • 초급 초중급 중급 중고급 고급
4.7점 (15명)
좋아요 : 1

고성능 범용 프로그래밍 언어 줄리아로 프로그래밍 입문하기 

 

줄리아는 수치해석 및 계산과학용으로 개발되어 파이썬 상위호환 언어라 불릴 정도로 속도가 빠르고 문법도 우아한 언어다. 이 책은 줄리아 문법부터 시작해 프로그래밍 개념과 디버깅 기법, 인터페이스 설계와 자료구조까지 독자를 안내한다. 장마다 제공하는 연습 문제로 배운 프로그래밍 개념을 실습하며 배울 수 있다. 1.0 이후 안정화된 줄리아 버전을 사용하는, 가장 제대로 된 줄리아 가이드북이자 프로그래밍 입문서

 

 

주요 내용

  • 기초적인 언어 문법과 구문
  • 간결한 정의로 프로그래밍 개념 설명
  • 값, 변수, 문장, 함수, 자료구조를 점진적으로 설명
  • 파일과 데이터베이스 다루는 법
  • 자료형, 메서드, 다중 디스패치
  • 구문/실행/의미 오류를 찾는 디버깅 기법
  • 인터페이스 설계와 자료구조 사례 연구

 

[출판사 리뷰]

 

데이터 과학자를 위한 파이썬 상위호환 고성능 언어 줄리아를 만나다 

 

데이터 과학에는 ‘두 언어 문제’라는 게 있다고 합니다. 로직을 짜며 프로토타이핑할 때는 고수준 언어(파이썬)를 쓰다가도 성능이 아주 중요한 부분이나 프로덕션 단계에서는 어쩔 수 없이 저수준 언어(C)를 써야 한다는 문제입니다. 수치해석 및 계산과학용으로 개발된 고성능 범용 언어 줄리아는 이런 문제를 해결할 수 있는 유일한 언어입니다. 

 

수학 교수인 저자 벤 로언스는 이러한 줄리아의 매력에 빠져 프로그래밍에 입문하는 학생들에게 줄리아를 추천해왔고 이렇게 책까지 쓰게 되었습니다. 안정화된 1.0 이후 줄리아를 기준으로 기초적인 프로그래밍 개념을 살펴보며 디버깅 기법, 인터페이스 설계, 자료구조 등 점진적으로 고급 주제로 나아갑니다. 장마다 연습 문제를 제공하므로 배운 프로그래밍 개념을 실습하고 체득할 수 있습니다. 

 

흔히 파이썬이 의사 코드와 가까우므로 프로그래밍 입문에 적합하다고 하지만, 줄리아를 써보면 파이썬은 아무것도 아니란 걸 알게 될 겁니다. 아예 수학기호를 이용해 수식을 쓰듯 코드를 작성할 수 있으니까요. 이러한 줄리아의 장점을 백배 살려, 검증된 프로그래밍 입문서(『씽크 파이썬』)의 포맷을 그대로 사용해 집필한 책입니다. 줄리아라는 언어에 흥미가 있는 데이터 과학자와 개발자는 물론, 이제 막 프로그래밍에 처음 입문하려는 사람 모두에게 이 책을 추천합니다. 

벤 로언스 저자

벤 로언스

벨기에 로열 밀리터리 아카데미(RMA)의 수학 교수. 뢰번 가톨릭 대학교(KU Leuven)에서 공학박사 학위를 땄다. 속도를 위해 다른 저수준 언어를 추가로 쓸 필요가 없다는 점에 매력을 느껴 줄리아를 전파하고 있다.

앨런 다우니 저자

앨런 다우니

프랭클린 W. 올린 공과대학교의 컴퓨터공학 교수. 웰즐리 칼리지와 콜비 칼리지, 캘리포니아 대학교 버클리에서 강의했다. 캘리포니아 대학교 버클리에서 컴퓨터공학 박사 학위를 땄다. 집필한 책으로 『씽크 파이썬』(길벗, 2017), 『파이썬을 활용한 베이지안 통계』(2014, 한빛미디어), 『Think Stats』(2013, 한빛미디어) 등이 있다.

송한별 역자

송한별

서울대학교 수학과를 졸업했고, 다음커뮤니케이션, 카카오게임즈 등을 거쳐 현재는 카카오뱅크에서 기술전략 업무를 담당하고 있다.

CHAPTER 1 프로그램의 길

1.1 프로그램이란 무엇인가

1.2 줄리아 실행하기

1.3 첫 번째 프로그램

1.4 산술 연산자

1.5 값과 자료형

1.6 형식언어와 자연언어

1.7 디버깅

1.8 용어집

1.9 연습 문제

 

CHAPTER 2 변수, 표현식, 문장

2.1 할당문

2.2 변수명

2.3 표현식과 문장

2.4 스크립트 모드

2.5 연산자 우선순위

2.6 문자열 연산자

2.7 주석

2.8 디버깅

2.9 용어집

2.10 연습 문제

 

CHAPTER 3 함수

3.1 함수 호출

3.2 수학 함수

3.3 합성

3.4 새로운 함수 만들기

3.5 정의와 사용

3.6 실행 흐름

3.7 매개변수와 인수

3.8 변수와 매개변수의 지역성

3.9 스택 도식

3.10 유익 함수와 void 함수

3.11 왜 함수를 쓰나요?

3.12 디버깅

3.13 용어집

3.14 연습 문제

 

CHAPTER 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 연습 문제

 

CHAPTER 5 조건과 재귀

5.1 몫 연산과 나머지 연산

5.2 논리 표현식

5.3 논리 연산자

5.4 조건부 실행

5.5 대체 실행

5.6 연쇄 조건문

5.7 중첩 조건문 

5.8 재귀

5.9 재귀 함수의 스택 도식

5.10 무한 재귀 

5.11 키보드 입력

5.12 디버깅

5.13 용어집

5.14 연습 문제

 

CHAPTER 6 유익 함수

6.1 결괏값

6.2 점진적 개발

6.3 합성 

6.4 불리언 함수

6.5 재귀 심화

6.6 믿음의 도약 

6.7 추가 예제 

6.8 자료형 검사

6.9 디버깅

6.10 용어집

6.11 연습 문제

 

CHAPTER 7 반복

7.1 재할당

7.2 변수 갱신

7.3 while 문

7.4 break

7.5 continue

7.6 제곱근 구하기 

7.7 알고리즘 

7.8 디버깅

7.9 용어집

7.10 연습 문제

 

CHAPTER 8 문자열

8.1 문자

8.2 문자열은 순열

8.3 length

8.4 순회

8.5 문자열 조각

8.6 문자열은 불변

8.7 문자열 보간

8.8 탐색

8.9 루프와 계수

8.10 문자열 라이브러리

8.11 ∈ 연산자

8.12 문자열 비교 

8.13 디버깅

8.14 용어집

8.15 연습 문제

 

CHAPTER 9 사례 연구: 단어로 놀기 

9.1 단어 목록 읽기 

9.2 연습 문제 

9.3 검색 

9.4 인덱스가 있는 루프 

9.5 디버깅

9.6 용어집

9.7 연습 문제

 

CHAPTER 10 배열 

10.1 배열은 순열

10.2 배열은 가변

10.3 배열 순회하기 

10.4 배열 자르기 

10.5 배열 라이브러리 

10.6 맵, 필터, 리듀스 

10.7 도트 연산자

10.8 원소의 삭제(추가) 

10.9 배열과 문자열 

10.10 객체와 값 

10.11 별명

10.12 배열 인수 

10.13 디버깅

10.14 용어집

10.15 연습 문제

 

CHAPTER 11 딕셔너리

11.1 딕셔너리는 사상 

11.2 딕셔너리 활용: 계수기 모음

11.3 루프와 딕셔너리 

11.4 역조회 

11.5 딕셔너리와 배열

11.6 메모

11.7 전역 변수 

11.8 디버깅

11.9 용어집

11.10 연습 문제

 

CHAPTER 12 튜플

12.1 튜플은 불변

12.2 튜플 할당

12.3 반환값으로서의 튜플

12.4 가변 길이 인수 튜플 

12.5 배열과 튜플

12.6 딕셔너리와 튜플

12.7 순열의 순열

12.8 디버깅

12.9 용어집 

12.10 연습 문제

 

CHAPTER 13 사례 연구: 자료구조 선택하기

13.1 단어 빈도 분석 

13.2 난수 

13.3 단어 히스토그램

13.4 가장 흔한 단어들

13.5 선택적 매개변수

13.6 딕셔너리에 대한 차집합

13.7 무작위 단어

13.8 마르코프 분석

13.9 자료구조

13.10 디버깅

13.11 용어집 

13.12 연습 문제

 

CHAPTER 14 파일

14.1 지속성 

14.2 읽기와 쓰기

14.3 쓰기 서식 

14.4 파일명과 경로 

14.5 예외 처리

14.6 데이터베이스

14.7 직렬화 

14.8 명령 객체

14.9 모듈

14.10 디버깅

14.11 용어집

14.12 연습 문제

 

CHAPTER 15 구조체와 객체 

15.1 복합 자료형

15.2 구조체는 불변

15.3 가변 구조체

15.4 직사각형

15.5 인수로 쓰이는 인스턴스

15.6 반환값으로서의 인스턴스

15.7 복사 

15.8 디버깅

15.9 용어집 

15.10 연습 문제

 

CHAPTER 16 구조체와 함수

16.1 시간

16.2 순수 함수

16.3 변경자

16.4 시제품 만들기 vs 계획하기

16.5 디버깅

16.6 용어집

16.7 연습 문제 

 

CHAPTER 17 다중 디스패치

17.1 자료형 선언 

17.2 메서드 

17.3 추가 예시 

17.4 생성자 

17.5 show 함수

17.6 연산자 오버로딩

17.7 다중 디스패치

17.8 제네릭 프로그래밍 

17.9 인터페이스와 구현

17.10 디버깅

17.11 용어집

17.12 연습 문제

 

CHAPTER 18 하위 유형화 

18.1 카드

18.2 전역 변수

18.3 카드 비교

18.4 유닛 테스트 

18.5 덱 

18.6 더하기, 빼기, 섞기, 정렬하기

18.7 추상 자료형과 하위 유형화 

18.8 추상 자료형과 함수 

18.9 자료형 도식

18.10 디버깅

18.11 자료 캡슐화

18.12 용어집 

18.13 연습 문제

 

CHAPTER 19 알아두면 좋은 것들: 구문 규칙

19.1 명명된 튜플

19.2 함수 

19.3 블록 

19.4 흐름 제어

19.5 자료형

19.6 메서드 

19.7 생성자

19.8 변환과 승격

19.9 메타 프로그래밍

19.10 빠진 값 

19.11 C, 포트란 코드 호출

19.12 용어집 

 

CHAPTER 20 알아두면 좋은 것들: Base 및 표준 라이브러리 

20.1 성능 측정

20.2 컬렉션과 자료구조

20.3 수학 

20.4 문자열 

20.5 배열 

20.6 인터페이스 

20.7 대화형 도구

20.8 디버깅 

20.9 용어집 

 

CHAPTER 21 디버깅

21.1 구문 오류

21.2 실행 오류

21.3 의미 오류 

들어가며...

Julia(줄리아)는 예전에 이름은 들어서 익히 알고 있었다. 그러나 제대로 공부해본 기억이 이번이 처음이다. 이 책은 어떤 관점에서는 굉장히 재미있고 독특한 책이다. 그 이유는 이 책의 태생에서부터 있다. 바로 이 책은 우리나라에도 번역되어 출간된 바 있는 'Think Python'이라는 책을 Julia 버전으로 바꾸어 내놓은 책이다. 저자가 직접 'Think Python'의 원작자에게 허락을 구하고 Julia 버전 교재로 사용할 수 있도록 집필했다고 한다.

 

그런 면에서 직접 이 책으로 공부해보니 줄리아는 파이썬과 많은 점에서 닮았다는 느낌을 받았다. 우선 데이터 분석 및 처리에 특화된 언어라는 점에서 그렇다. 그리고 줄리아는 고수준의 동적 스크립트 언어이면서 속도는 C와 포트란에 비견될 정도로 빠르다고 한다. 이 점은 확실히 파이썬보다 우위에 있다고 볼 수 있다. 물론 파이썬의 생태계와 수 많은 라이브러리는 줄리아가 파이썬보다 부족하지만 말이다.

 

현재 프로세서의 성능이 비약적으로 향상되어 속도는 더이상 중요한 요소가 아니라는 인식이 있는데 빅데이터와 같은 대량의 데이터를 처리한다면 속도가 중요하지 않을 수 없다. 파이썬의 단점이 속도라고 볼 수 있는데 특히나 데이터 분석 및 머신러닝 분야에서 많이 사용되고 있는 파이썬의 장점은 그대로 가져가면서 빠른 처리 속도를 보완하여 사용할 수 있는게 바로 줄리아라는 것이다. 바로 여기에 저자의 출간 기획의도가 숨어있다.

 

그렇다면 이 책의 특징은 무엇이 있을까?

가장 눈에 띄었던 점은 각 장마다 '용어집'이라는 부분에서 해당 장에 등장하는 약간 어려울 수도 있는 용어를 쉽게 이해할 수 있도록 뜻 풀이를 담았다는 점이다. 그뿐만이 아니라 한 챕터가 끝날때마다 연습 문제를 두고 있어서 바로 앞에서 배웠던 내용을 적용할 수 있는 실습을 제공하였다. 그래서 학습자의 응용력을 증진시키도록 짜여져있다. 연습문제의 수준은 크게 어렵지는 않았고 배웠던 내용의 범위 안에서만 출제되기 때문에 도전해볼만한 수준이었다.

 

 

설명도 자세한 편이어서 입문자가 다가가기에도 큰 부담은 없어보인다. 책 전반 소개부에서도 고등학생이나 대학생이 한 학기정도 사용할 수 있는 수준으로 책을 만들었다고 한다. 읽으면서도 각 코드 예제 아래에 상세하게 코드 설명을 하고 있는 것을 확인할 수 있다.

 

또 하나 인상 깊었던 점은 초반부 '사례연구: 인터페이스 디자인'에서, 파이썬을 공부했을 때 몇번 다뤄본 적이 있는 '거북이'가 등장한다. 코딩을 통해 거북이의 이동경로를 만들어보는 것이다. 거북이 뿐만 아니라 Perl을 상징하는 것에서 따온 것이 아닐까 생각이 들었던 낙타도 있었다.

 

 

'디버깅'이라는 부분도 모든 장에 등장하는데 해당 장의 내용을 공부할 때 발생할 수 있는 오류를 정리해놓았다. 그래서 학습 시 오류가 나오더라도 당황하지 않도록 해결책을 제시해준다. 여기서 그치지 아예 마지막 챕터 자체가 '디버깅'이라는 이름으로 되어있어 줄리아 프로그래밍에서 발생 가능한 에러를 마치 Q&A와 같이 풀어서 설명을 해주고 있다.

 

Julia를 공부하며 새로웠던 부분이 있다. 바로 '데이터베이스'라는 기능이었다. 'GDBM'라는 라이브러리를 사용하면 마치 '데이터베이스'처럼 사용할 수 있다고 한다. 사전(딕셔너리)와 매우 비슷한 형태인데 차이점은 '데이터베이스'의 경우 프로그램을 종료해도 자료가 지워지지 않는다는 것이다.

마지막으로 책의 목차를 보면 사례연구라는 이름으로 시작하는 세 가지 챕터가 등장한다. '4장 인터페이스 디자인', '9장 단어로 놀기', '13장 자료구조 선택하기'가 바로 그것인데. 이 '사례연구'라는 파트는 구체적인 상황이 제시되고 좀 더 실무에 가까운 방법으로 줄리아를 실습해볼 수 있다. 이 책에서는 그 유명한 'emma'라는 제인 오스틴의 소설 내용을 이용해 소설에 나오는 단어를 분석하는 방법과 단어들, 즉 자료를 어떻게 처리할 것인지를 구체적인 함수를 사용하여 과정을 보여준다. 문자를 다루는 데이터 분석 기법은 줄리아에서 어떠한 방식으로 적용할 수 있는지를 잘 알 수 있다.

 

마치면서...

책 내용 중 다소 아쉬운 점도 있었는데 책에서 소개한 juliabox란 곳에 들어가서 코드를 연습하려고 하였다. 그러나 책에 명기된 URL로는 어떤 사유가 있는 것인지는 모르겠지만 바로 연결되지 않았다. 그래도 파이썬 또한 설치하면 쉘로 실행이 가능하기 때문에 똑같이 실행해보았다. 파이썬에서 이런 식으로 공부를 해본 적이 있었기 때문에 큰 어려움은 없었고 익숙했다. 스크립트 모드에서는 메모장이나, Notepad++이라는 프로그램으로 .jl 스크립트를 작성하고 실행해보았다. 줄리아를 좀 더 사용하게 된다면 Visual Studio Code에 Julia Interpreter 확장을 설치해 마치 IDE처럼 사용해보려고 한다.

 

k552638521_1.jpeg

 

 

“한빛미디어 나는 리뷰어다 활동을 위해서 책을 제공받아 작성된 서평입니다."

데이터를 처음 공부하는 사람에게 줄리아는 생소한 언어다. 보통은 파이썬, 혹은 R 로 데이터 분석을 시작하기 마련이다. 하지만 두 언어를 사용하다보면 여러가지 측면에서 단점을 느낄 수 있다. 특히 본인과 같은 파이썬 사용자라면 파이썬의 속도에 불만을 가끔 느끼게 마련이다. 여러가지 도구를 사용하면 파이썬의 속도를 높여 볼 수는 있지만 어쨌거나 조금 느린 것은 마찬가지이니 말이다.

하지만 줄리아는 파이썬보다 속도적 측면에서 아주 뛰어난 이점을 가지고 있다. 파이썬을 사용하면서 해당 언어의 느린 속도에 불만을 가졌던 데이터리안이라면 줄리아는 아주 좋은 대안이 될 것이다. 게다가 이전까지는 줄리아의 사용자가 많지 않았지만 그 수가 점점 늘어나면서 참고할 수 있는 레퍼런스도 점점 많아지고 있다.

하지만 줄리아를 체계적으로 접할 수 있는 로드맵으로서의 교재는 많지 않았다. 시중에 나와 있는 파이썬 관련 서적의 수와 줄리아 서적의 수를 비교해보면 후자가 훨씬 더 적음을 알 수 있으며, 후자의 절대적인 수도 해당 서적을 포함하여 두어 개 정도 뿐이다. 줄리아를 만나는 사람들이라면 본 책을 구매할 수 밖에 없는 상황이다.


본 책을 읽어보면서 줄리아 입문서로서의 요건을 잘 갖추고 있다는 생각이 들었다. 예제 코드 뿐만 아니라 코드로부터 결과가 어떻게 생성되는 지에 대한 설명이 아주 상세하여 줄리아를 처음 공부하는 사람에게도 부담이 없었다. 게다가 다양한 예제로 구성되어 있어 이를 통해 각 메서드의 활용 방식이나 파이썬에서 동일한 역할을 하는 메서드를 연관시켜 보기에도 아주 좋게 구성되어 있었다.


다만 책의 두께에서도 알 수 있듯 기본 이외의 내용을 다루고 있지는 않다는 점은 아쉬운 점이었다. 아직은 줄리아를 활용하여 다양한 데이터로부터 문제를 해결하는 방법에 대한 레퍼런스가 조금 부족한 만큼 그런 부분이 담겨있지 않다는 점은 조금 감질맛나는 점으로 다가왔다.

이번에 본 책을 통해서 줄리아의 기본기와 장점을 맛보았던 만큼 줄리아를 활용하는 다양한 방법이 담긴 책의 등장도 바라보는 바이다.


줄리아는 파이썬, R과 함께 데이터과학분야에서 근래들어 자주 비교되기 시작하는 언어로 고급 동적 언어이면서 C언어에 근접하는 성능으로 주목받고 있다.

책은 마치 초심자에게 설명하듯 프로그래밍 용어에 대해서도 친절하게 설명하고 있으며 매 장 마다 사용된 용어집과 연습 문제를 제공하는데, 프로그래밍에 대한 경험 특히 파이썬이나 자바스크립트를 사용해 봤다면 짧은 시간에 학습이 가능하다. (줄리아 자체가 Matlab, 파이썬, R등을 염두에 두고 만들어졌기 때문에 비슷한 학습 곡선을 보이는 것 같다. 물론 좀더 효율적인 코드를 위한 심화학습과 고민은 필요하지만…)

참고로 책에는 줄리아 설치 없이 Juliabox.com에서 REPL과 노트북 인터페이스를 사용할 수 있다고 하는데 변경된 Juliahub.com에서는 가입 후 약간의 무료 크레딧을 제공하는 것으로 변경되었다. 개인적으로는 Julia와 nteract(https://nteract.io) 또는 vscode 플러그인을 설치해서 사용해보길 권한다.

비록 파이썬의 생태계에 견줄 정도는 아직 아니지만, 데이터과학, 머신러닝, 다양한 과학 도메인에서 활용범위를 가지고 있다. 데이터 과학자가 아니더라도 연관된 분야에 관심이 있는 개발자라면 빠른 속도로 줄리아의 매력을 확인 할 수 있으니 추천한다.

이 책은  줄리아라는 수치 연산에 최적화된 고성능 언어를 소개한다. 

 

 

 

줄리아의 특징을 요약하자면 

 

1. 줄리아는 고성능 언어이다.

2. 다중 디스패치를 사용하며 어플리케이션에 적합한 프로그래밍 패턴을 선택할 수 있다. 

3. 대화형이고, 동적 타입언어이다. 

  - 정적 타입언어로 지원한다. 

4. 매우 깔끔한 고수준의 문법을 가지고 있다. 

5. 써드 파티 패키지를 사용할 수 있다. 

 

 기초 문법부터 시작하여 체계적으로 줄리아의 문법 체계를 설명한다. 

 

 주요 내용은 다음과 같다. 

 - 변수 ,표현식 ,문장 

 - 함수 정의 

 - 조건과 재귀 

 - 반복문 , 문자열 , 배열, 딕셔너리 , 튜플 

 - 파일, 구조체와 객체, 구조체와 함수, 

 - 다중 디스패치, 하위 유형 ,

 - 구문 규칙  

 - Base 및 표준 라이브러리 

 

 Github에 저자의 소스코드가  업로드되어 있다. 

 https://github.com/BenLauwens/ThinkJulia.jl 

 

 이 책을 통해 ,  데이터 분석에 적합한 줄리아 언어의 문법을 배우고,  분석 패키지 개발에  적극적으로 활용하기를 바랍니다. 

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다." 

 

KakaoTalk_20210725_160652918.jpg

 

KakaoTalk_20210725_160709025.jpg

 

줄리아는 2012년 MIT 4명의 프로그래밍 그룹이 만든 비교적 신생 언어이다.

 

이 책은 출판사 홈페이지 에서 소개하기로는 초중급 난이도 라는데 읽어본 결과 완전 초급자를 위한 책은 아니고 파이썬, 데이터과학, 통계학, 데이터 마이닝 등의 지식을 배경으로 다량의 데이터를 실행하는데 있어 파이썬등 언어의 속도에 불만을 가졌던 사람에게 도움이 되는 책이다. 

 

책의 내용을 개략적으로 살펴보면 일반적인 프로그램 언어 도서와 마찬가지의 구성을 가지고 있으며 총 21장으로 구성되어 있다.

 

기존의 컴퓨터 프로그래밍 언어 C, C++, 자바, 파이썬 등에 익숙한 독자에게는 완독하는데 오랜 시간이 걸리지 않을 것으로 보인다. 

 

책 후반부 부터는 다중 디스패치, 구문 규칙등에 대한 소개가 있어 혼자서도 줄리아 언어에 대해 따라가면서 학습할 수 있게 내용 구성이 되어있다.

 

줄리아에 대해 일반적 개론서로 큰 도움이 되어 보이며 다른 언어를 몰라도 처음 접하는 사람에게도 어렵지 않아 큰 도움이 되어 보이며 이 책이 쉽다고 생각되는 사람들에게는 깃허브를 통해 더 많은 심화 학습을 하는 것도 좋을듯 싶다.

 

<이 리뷰는 한빛미디어 도서협찬을 받아 작성하였습니다>

[이 서평은 출판사로부터 책을 제공받아 작성하였습니다]

보통 데이터 사이언스 하면 아직까진 파이썬, R이 대세다.

하지만 세상에 영원한 건 없다는 말처럼 파이썬과 R도 언제 대체될지 모르겠다.

 

특히나 파이썬은 속도가 중요한 분야에서는 C++에 비해 속도가 느리다는 평을 받으며 잘 쓰지 않는 추세다.

 

R은 주로 통계학 선생님들이 많이 쓰시는 것 같고.

 

그런 틈 사이에서 줄리아가 치고 나올 수 있을지 궁금하긴 하다.

 

 

 

출처 : https://www.codementor.io/@evalparse/julia-vs-r-vs-python-string-sort-performance-an-unfinished-journey-to-optimizing-julia-s-performance-f57tf9f8s

 

검색해보니 Julia-radix의 속도는 넘사벽이다.

 

이 책은 이런 줄리아의 기본 문법부터 자료구조, 파일처리, DB처리, 디스패치, 인터페이스 설계까지 종합적으로 다루고 있다. 그러다보니 살짝살짝 다루는 느낌은 있지만 그래도 국내에 번역된 줄리아책은 이 책이 유일하기에, 번역서로 읽고 싶다면 이 책을 잡길 권한다.

 

다만, 구조체나 디스패치와 같은 개념들이 낯설어서 손이 잘 안갈수 있긴 하다.

 

그래도 뭐 몇 번씩 따라하다보면 익숙해지겠지.

 

너무 어렵다 싶으면 이 책으로 시작하지말고 파이썬, R부터 시작해도 무방하다. 거기서 프로그래밍 기초와 자료구조, 알고리즘 기초를 쌓고 이 책을 통해 조금씩 더 감을 익히면 된다.

 

 

이 책의 부제는 '데이터 과학자를 위한 최적의 프로그래밍 언어'이다. 현재 데이터 과학을 위한 프로그래밍 언어로 널리 각광을 받고 있는 것은 단연 파이썬이다. 파이썬이 제공하는 풍부한 라이브러리와 코드 자체의 간결성은 웹, 딥러닝 그리고 데이터 과학의 영역까지 다양한 분야와 범위를 아우르는 무서운 위력을 여과 없이 과시하고 있는 실정임을 부정할 수 없는 시대에 살고 있다. 그런데 데이터 과학의 영역에 있어, 파이썬의 자리를 대체할 만한 신흥 프로그래밍 언어인 '줄리아'가 주목 받게 되었고 이 서적은 바로 줄리아를 다루고 있는 국내 유일의 책이다. 

 

 

 

 

저자가 서문에서 밝히고 있듯이, 해외에서 'Think Python'이라는 제하의 서적으로 뭇 사람들의 많은 관심과 사랑을 받고 있는 책을 모티브로 하여 그와 비슷한 컨셉으로 '줄리아'를 집중 해부하고 있는 도서이다. 또한 프로그래밍 언어에 대한 경험이 없는 독자들을 타겟으로 하고 있긴 하지만,최소한의 객체지향 언어에 대한 경험이 조금이라도 있어야 이 책 전체의 흐름을 따라가기가 쉬울 것이다. 

 

 

이 책은 각 챕터 별로 큰 주제를 분류하고 각 챕터의 마지막에는 해당 챕터에서 다루고 있는 용어들을 한데 모아 쉽게 요약하고 정리해 놓고 있다. 

 

 

용어집을 통해 주요 용어들을 정리하였다면, 연습문제를 거쳐 챕터에서 다루고 있는 개념들을 독자 스스로 반추할 수 있는 기회를 제공하고 있다. 

 

 

 

 

이 책은 프로그램이란 무엇인가에 대한 물음에 대한 답을 제공하는 것으로 시작하여 줄리아를 실행하기 위한 최소한의 환경을 구성토록 친절한 가이드를 제시하고 있다. 이후엔 모든 언어가 그러하듯 변수, 표현식, 문장, 주석, 함수 등을 다루게 되며, 사례 연구라는 특별한 챕터에서는 프로그램에 대한 디자인을 어떻게 표현하고 재구성해야하는지에 대한 흥미로운 과정을 짧막하지만 매우 인상 깊게 서술하고 있다. 

 

이후 조건과 재귀, 유익 함수라고 저자가 표현하고 있는 특별히 취급 되고 있는 함수 유형, 문자열을 다루게 되며 또 한번 등장하게 되는 사례 연구 챕터에서 '단어로 놀기'라는 주제를 놓고 루프 구조를 통한 단어 목록을 검색하는 케이스를 흥미롭게 묫하고 있다. 

 

계속해서 배열과 배열과 비슷한 부류의 딕셔너리, 튜플, 파일 다루기, 구조체와 객체, 구조체와 함수, 다중 디스패치 등과 마주하게 되는데, 서두에서 언급했듯이 파일 다루기 이후의 주제에 대해선 객체지향 언어에 대한 기초적인 경험이 있는 상태에서 해당 챕터들을 학습하는 게 수월하리라 생각이 든다. 

 

끝으로 하위 유형화, 구문 규칙, Base 및 표준 라이브러리, 디버깅 등의 챕터를 거치게 되면 줄리아가 어떠한 모습을 띄고 있으며 그 속성이 어떠한 지에 대한 개관을 마무리 짓게 된다. 

 

파이썬과 비슷하면서도 다른 점이 참 많기도 한 줄리아. 이 서적을 통해 줄리아에 대한 흥미를 한껏 올리기엔 다소 부족하다고 느낄 수도 있지만 최소한 줄리아란 언어가 파이썬에 비해 어떠한 강점을 갖추고 있고, 데이터 과학 영역에서 어떻게 유용하게 활용 될 수 있는지에 대한 자그마한 자극을 받게 되었다면 그것만으로 소기의 목적을 다했으리라 생각한다. 지금 받게 된 그 자극이 앞으로 줄리아와 함께 떠나는 여행에 있어 잔잔한 울림을 오랫동안 지속시켜 줄 수 있지 않을까?

 

P.S :   
한빛미디어 '나는 리뷰어' 이벤트에 당첨 되어 제공 받은 도서를 바탕으로 작성된 후기입니다

 

 

Think Julia: 줄리아를 생각하다.

 

IMG-0986.jpg

 

 

 저는 최적화에 많은 관심이 있습니다. 어릴 때는 학교에서 집까지 가는 최단 경로를 찾으려 애썼고 프로그래밍을 때에도 어떻게 하면 0.1초라도 빠르게 동작시킬 있을지 고민했습니다(물론 고민하는 시간을 줄였으면 빠르게 끝났을 있다는건 함정입니다.).게다가 지금 일하고 있는 곳에서는 스케줄링을 최적화(?) 하고 있고 이정도면 신이 저를 보고 있다가 최적화를 배우는 전공으로 보내버린 것이 아닐까 하는 생각이 정도입니다.

 

 그러던 중에 줄리아라는 언어를 접하게 되었습니다. 저도 오랬동안 자바를 하다가 파이썬을 3년정도 쓰고 있는데, 책의 역자이신 송한별님께서 언급하셨듯 요즘들어 너무 느리다는 것을 몸소 체감하고 있었습니다. 언젠가 수리 최적화 라이브러리를 만드는 것이 저의 작은 꿈이어서 틈틈이 스케치를 하고 있었는데 파이썬으로 과연 제대로 속도가 나올까? 최적화 알고리즘을 쓰지 않은 다른 언어가 빠르지 않을까?’라는 생각이 들었거든요.  그러던 와중에 만난 줄리아는 신이 내려주신 번째 운명이 아닐까 하는 생각이 들었습니다. 그래서 아주 열심히 책을 읽었습니다.

 

책은 줄리아를 입문하기 위해 폭넓으면서도 깊은 이야기를 전해줍니다. 중간중간의 미국식 유머(?) 가벼운 문체 덕분에 빠르게 읽히는 점이 아주 좋았습니다. 아마 파이썬을 하셨다면 12단원인 튜플까지는 어려움 없이 읽으실 있을 같습니다. 다만 개인적으로 챕터 13: 자료구조 선택하기부터는 꽤나 Advancecd 이야기를 다룹니다. 저는 컴퓨터 공학 베이스가 아니기 때문에 이러한 문제에 직면했을 라이브러리를 찾아서 적용하는 편이었는데, 알고리즘을 찾아보고 새로운 언어로 구현하는 것이 저에게는 꽤나 오랜만에 느끼는 도전 느낌이었습니다. 만약 지금까지 개념을 대충 이해하고 라이브러리를 써서 단순 반복 같은 느낌을 받으셨거나 매너리즘에 빠졌었다면, 책에서의 사례연구를 전력으로 풀어보시는 것을 권장합니다.

 

 결론적으로 말씀드리면, 책은 새로운 언어를 접하는 관점에서 보나 프로그래밍 서적 관점에서 보나 훌륭하다고 생각됩니다. , 컴퓨터 공학을 전공하시고 이미 특정 언어를 어느정도 마스터한 경지에 오르셨다면 감흥은 없을 있습니다. 하지만 최소한 저만큼은 도움이 되었다고 말씀드릴 있을 같습니다. 여러분 모두 줄리아 하세요!

 

 

최근에 프로그래밍을 배우는 사람들은 포트란 FORTRAN이라는 프로그래밍 언어를 잘 모를 것이다. 포트란은 과학 기술 계산용 언어로 빠른 계산이 특징이며, 80년대에는 GW-BASIC, COBOL과 함께 당연히 배우는 언어일 정도로 인지도가 높았다. 다만 일반 프로그램 개발 쪽에는 잘 쓰이지 않다 보니, 내 경우 배우긴 했어도, 사용하지 않으니까 대부분 까먹어, 지금은 추억의 프로그래밍 언어로만 남았다.

 

그런데 최근 인공지능, 빅데이터, 각종 과학 기술의 발달로 인해, 다시금 과학 기술 계산용 언어의 중요성이 높아졌고, 때마침 2012년에 줄리아 Julia라는 언어가 공개되었다. 줄리아는 C언어의 속도에 루비의 역동성, 리스프의 매크로를 지원하는 등 다양한 기능과 편리성을 갖춘 언어이다. 나도 데이터 과학에 관심이 많다 보니, 줄리아에 대해서도 호기심을 가지고 봐왔는데, 마침 '줄리아를 생각하다'라는 책이 나와서 이번에 보게 되었다. 

 

아마 줄리아가 프로그래밍 언어인 줄 모르는 사람은 '줄리아를 생각하다'라는 책 제목만 보면, 무슨 연애소설인가 할지도 모르겠다. 표지에 나오는 흰올빼미 사진과는 전혀 어울리지 않지만 말이다. '줄리아를 생각하다'는 Julia 프로그램 언어를 기초부터 하나씩 차근차근 잘 설명하고 있는 책이다. 

 

물론 프로그램이라는 것을 생전 해보지 않은 생초보에게는 다소 이해가 어려운 부분도 있지만, 전체적 구성과 설명들을 보면, 분명 잘 만들어진 책이라 할 수 있다. 기존에 C든 JAVA든 프로그램 언어를 배운 경험이 있는 사람에게는 소설처럼 술술 읽어 나갈 수 있는 책이며, 특히 파이썬과는 유사성이 많아서, 전혀 낯선 느낌 없이 편하게 줄리아를 익힐 수 있다. 

 

 

 

이 책도 다른 프로그램 언어 관련 책과 같이 변수, 함수, 조건문, 반복문, 배열, 구조체 등을 배운다. 줄리아가 과학 기술 계산 언어라는 아주 딱딱한 느낌의 언어이지만, 코드 자체에 거북이며, 낙타, 바나나를 등장시킬 수 있는 점은 위트처럼 느껴진다.

파이썬보다 간단한 방법으로 거북이를 등장시켜 그래픽을 그리는 재미도 즐길 수 있다.

 

줄리아는 기존 프로그램 언어와 비슷하면서도 세부적으로는 약간씩 차이가 있는데, 책을 통해 그러한 차이점을 하나하나 배우게 된다. \_1, div, in 같은 LaTex 구문을 사용하는 점도 특이하고, @svg, @show 같은 매크로도 쓸 수 있다. 수학 기호인  ÷ 가 줄리아에서는 몫을 구하는 것도 독특하다.

 

배열에 첫 번째 요소가 0이 아닌 1로 시작하는 것이나, 전역변수 처리와 같은 것은 기존 프로그래머라면, 꼭 주의해야 할 부분이다. 별거는 아니지만, 이런 사소한 게 결국 각종 에러를 낳으니 말이다.

 

 

 

'줄리아를 생각하다'에는 본문 중간중간에 연습문제들이 필요에 따라 나오고, 챕터 별로 끝에 용어 정리와 함께 아예 연습문제 파트가 있다. 연습문제에 대한 답이 책에 없으므로 일일이 직접 해봐야 한다.  연습문제에서는 다루는 것들은 뭔가 아리까리한 것들을 다룬다. 다른 프로그래밍 언어를 알고 있다면, 더욱 혼동이 될 수 있는 것들이 많다. 즉 꼭 직접 해보고 확인하라는 거다. 본문이나 연습문제 모두 수학 계산을 위주로 하는 언어답게 빗변, 원 넓이, 피보나치 구하기 같은 각종 수학 공식이나 프랙탈 도형, 카이사르 암호 같은 것들이 등장한다. 

 

 

 

이 책에서 또 하나 빼놓을 수 없는 것은 디버깅 파트들이다. 많은 챕터들에 디버깅 얘기가 등장하고, 챕터 21에는 아예 디버깅이 별도로 다뤄진다. 이렇게 디버깅에 많은 신경을 쓴 책은 드물 것이다. 실제 프로그래밍할 때 생기는 다양한 에러 상황을 일일이 고려해서 여러 곳에서 아주 자세히 설명하고 있다. 21장에 내용은 프로그래머로서 절실히 동감하는 내용들이다. 프로그램 초보라면, 왜 이런 소리 하는지, 잘 모를 수 있다. 그러나 시간이 지나고, 점점 경험이 쌓이면, 왜 저자가 이런 소리를 했는지 알게 될 것이다. 디버깅 내용은 꼭 줄리아에만 해당되는 것이 아니다. 다른 언어에도 도움 되는 내용이므로 주의 깊게 참고하고, 명심하기 바란다. 버그 발생할 요소를 줄이고, 버그를 빨리 찾아낼 수 있게 코딩하는 것도 중요한 기술이기 때문이다.

 

 

'줄리아를 생각하다' 부제가 '데이터 과학자를 위한 최적의 프로그래밍 언어'라고 적혀 있긴 한데, 이 책에서는 데이터 과학과 직접적으로 관련된 내용이나 실습, 활용 같은 것은 나오지 않는다. 어디까지나 범용적인 줄리아 언어의 문법적인 내용 만을 주로 다루고 있다. 따라서, 줄리아의 데이터 과학 응용에 관련된 것은 다른 책을 봐야 할 것이다. 어쨌든 먼저 줄리아를 제대로 배워 두는 것이 첫 순서이고, 실무나 응용은 다음이니까 말이다.

 

그리고 책에 얇은 종이를 써서 380쪽이나 되는 분량인데도 그리 두껍지 않다는 점도 얘기해야 할 거 같다. 그만큼 가지고 다니며, 줄리아를 공부하기 좋다는 것이다. 학습자 입장에서 좋은 장점이다.

 

'줄리아를 생각하다'는 2020년 3월까지 버전을 반영하고 있는 따끈따끈한 최신 줄리아 책이다. 책에서는 설치 없이 JuliaBox를 이용해 실습할 수 있다고 했는데, 줄리아박스에 가보니 2020년 5월 31일 이후부터는 사용이 안 된다고 공지가 되었다. 대신 JuliaPro를 설치하라고 나온다. 이 점은 다음 판본에 수정이 필요하고, 추가로 한빛미디어 홈페이지에서 알려주었으면 한다.

 

줄리아가 빠르다고 해서, 검색해 봤는데, 확실히 빠른 것을 확인할 수 있었다. 병렬처리도 한 특징이고, 확실히 데이터 과학을 활용하거나 공부하려는 분에게는 좋은 언어라 생각이 된다. 이번 '줄리아를 생각하다' 책 덕분에 포트란의 추억을 떠올리며, 빠른 시간에 줄리아를 재미있게 배울 수 있어, 좋았다. 누구나 부담 없이 배울 수 있으니, 꼭 한번 줄리아를 생각해보시길...

한빛 출판사의 2020년 5월  리뷰 이벤트 안내에 나온 Think Julia 를 보고서는 “이건 무조건 신청해야돼, 선정이 안되면 사서라도 볼거야” 라는 생각을 하면서 이 Think Julia를 선택한 후 어쩔 수 없이 2권의 책을 더 신청했습니다. 곁다리로 신청한 다른 책이 오면 어쩌나 하는 불안감이 없어지지 않는군요.. ㅠㅠ...

 

 

줄리아를 알게 된 것이 대략 2년 전,

https://blog.naver.com/alfee0/221186190355 

 

공학/수학을 위한 언어라는 점과 속도가 빠르다는 것 때문에 언젠가는 한번 써 봐야지...라는 생각을 가지고는 있었는데 기회가 없었습니다. 이번에는 꼭 한 번 써보고 싶어집니다. ..


리뷰어에 선정이 되었다는 메일을 받았고,  다음날 보고 싶었던 Julia 에 대한 책이 도착했습니다. 퇴근해서 집에 도착한 것이 8시, 동네 마트 까지 갔다 와서 피곤하지만 그래도 책을 펼쳐 보기 시작합니다

 

 

흥미롭네요..  

 

예전이라면 새로운 언어가 만들어졌다는 이야기를 들었을 때 “뭐 쓸데 없이 자꾸 나와” 라고 했을 지도 모르겠지만 이제는 이런 말을 하지 않습니다.  분명히 경쟁력이 없거나 발전하지 못하는 언어는 도태되어 사라질 것이니까요.  그리고 사라진 것 처럼 보여도  어디선가 관심이 있는 사람들은 계속 쓰고 있을 것이니 말입니다. 

그냥 두면 될 것에 대해서 잘난척 이야기 할 필요는 없으니 말입니다  

 

어쨌거나…. 

Julia 에 대한 책을 보니  기존의 언어의 습관들을 계승하는 것 같지만 완전히 새로운 개념의 변수 체계를  도입한 것 같습니다.  파이썬에서 한글로도  변수명을 만들어 사용할 수 있다는 것을 보긴 했는데,  라텍의 기호 입력 방식인 로 시작하는 특수 문자 입력 기능까지 있군요.  이 기능을 이용하면 코드 상에서 원주율을 나타내는 기호 π 를   사용할 수 있을 뿐 아니라 수학 기호까지 그대로 사용해서 코딩을 할 수 있다는 것이 놀랍습니다. 

 

수학의 연산자를  코딩에 사용한다. 

 

라는 발상도 예전에는 불가능했을 지 모르겠지만 unicde 를 채용해서 모든 언어를 다 나타낼 수 있는 지금에는 충분히 가능하고 사용하는 언어나 코드 페이지(code page)에 따라서 생길 수 있는 문제도 생기지 않을 것 같습니다. 

 

또한 세계적으로 같은 기호를 사용하는 수학의 연산자를 코딩에서 사용할 수 있게 되니  좀더 간단하면서도 명확하게 원하는 바를 나타낼 수 있으며, 또한 이  Julia 가 공학/수학/과학을 위한 언어라고 말할 수 있는 근거가 되기도 할 것 같습니다.  


 

물론 이로 인한 단점들이 없는 건 아닙니다.  좀 더 많은 연산자를 외워야만 합니다.  ^^;;;;;

수학기호 연산자, 그리고  Julia 의 연산자인  isa 와 같은 연산자 까지도 외어야 하니.   

 

이런 단점은 이 언어를 배우고자 하는 독자들이 조금 더 부지런해 지는 수 밖에는 없을 것 같네요. 수학책에서나 보던 ÷  기호가 나왔을 때 Julia에서는 나눗셈의 몫을 구하는 용도로 사용되는 것을 모르면  곤란해지니 말입니다.  


 

이 책의 구성은 저자가 밝혔듯이 Think Python 저자의 허락하에 Think python 포맷을 그대로 이용했기 때문에 Julia 의 기본 사항들을 소개하는데 는 부족함이 없는 것 같습니다. 

 

1장은 헬로 월드로 부터 시작해서 산술 연산자, 자료형.. 

2장은 변수, 연산자의 우선순위.. . 

3장은 함수 .. .

 

각 장의 마지막의 용어 정리라던가 각 장에서 잠깐 잠깐 설명하는 디버깅에 관련된 팁들, 그리고 21장에서 이야기 하는 오류 메시지와 디버깅 방법은 처음 접하는 Julia 언어를 사용해서 처음  프로그램을 작성할 때 생길 수 있는 버그나 이 후 발생할 좀 더 복잡한 버그들을 찾아내는데 도움이 될 것 같습니다.   

 

또한 Julia 가 공학/수학용이라서 그런지 예제도 바빌로니안 방법(Babylonian Method) 를 사용하는 제곱근 구하기 라던가(131페이지), 라마누잔의 1/pi 의 근사값을 구하는 무한 급수를 구하는 예를 보이기도합니다(137페이지).

 

그리고 이 책을 번역한 역자분의 친절한 주석들은 본문의 예제의 내용들을 이해하는데 많은 도움이 됩니다. 

 

하지만 이 책의 구성에 대해서는 몇몇 아쉬운 점들이 보입니다. 

 

  1. 원래의 저자가 서문에서도 밝혔듯이 Think Python 을 기본으로 책을 만들었기 때문인지 이 책의 구성이 Julia 를 위한 책이라기 보다 파이썬으로 할 수 있는 것을 Julia 로 하는 방법을 보이는 것 같다는 것입니다.  그리고 이 책은 줄리아의 기본을 이해하는 것을 목표로 하고 있어서 이 책만으로는  책의 표지의 문구처럼 데이터 과학자가 뭔가를 해보기엔 조금 힘들 수도 있습니다. 아무래도 이런 것들은 이 책에서 나온 내용들을 익힌 사용자가 수학/공학에 적용하는 법을 배우는 책이 나와야 가능할 것 같습니다. 예를 들어  Julia 홈페이지에 있는 다음과 같은 것들을 할 수 있는 책이 있어야 할 것 같다는 거죠 . 

 
 
   

실제로도 대학생들/대학원생들하고 이야기를 해보면 이런 것을 하는 과정을 알고 싶어하는 경우가 많더군요. 

 

  1. 조금은 상세한 설명이 부족한 느낌입니다. (이건 뭐 여태껏 이 오라일리의 책들이 좀 불친절한 느낌도 있었으니… 라고 할 수도 있겠습니다만 최근 워낙 상세한 혼공파/혼공씨/혼공자  등을 보다 보니 더 눈에띄는 듯 합니다. 

 

불친절함의 예를 하나 들어 보겠습니다.  

 

책에서 사용된 줄리아 버전과 사용환경상의 문제인지  저는 Windows 10 에서 Julia 를 설치하고 실행한 상태에서 이 책의 4장의 4.1 을 따라하기 위해서  Pkg REPL  모드에서 패키지를 설치 한 후 다시 julia 프롬프트로 돌아오는 방법의 설명이 빠져 있어 결국 검색을 통해서  백스페이스키 를 눌러야 원래대로 돌아 올 수 있었네요. 

 

이전으로 돌아오는 방법을 검색해서 찾은 링크 입니다. 

https://docs.julialang.org/en/v1/stdlib/Pkg/index.html 

 

Pkg REPL 모드에서 프롬프트로 돌아올 떄 어떤 키를 눌러야 하는지 한 줄만 적어  놓았더라면 이렇게 번거롭게 검색하지 않았어도 될 건데 말입니다.  

 

또한 ThinkJulia 를 사용하기 위해서 처음으로 using ThinkJulia 를 실행하고 나면 컴파일을 하는데도 시간이 좀 걸리는데 아무런 이야기가 없으니.. . 

 

사족이지만 이 4장의 내용을 보다 보니 대략 30~40년 전에 본 Logo 라는 언어가 생각이 납니다. ^^;


 

  1. 그리고 초보자가 이 책에서 필요한 내용들이나 이전에 봤던 부분들을 좀 더 빨리 찾아 보기 위해서 필수적인 index 가 많이 부족합니다. 그래서 이전에 본 내용을 다시 찾아 보거나,  @ 라던가  $ 등의 용법에 대한 설명을 찾아 보기가 힘드네요. 

 

예를 들어 show 라는 함수에 대해서 찾아 보기 위해서는 목차를 참고해서 17.5절을 보거나, 107페이지, 109페이지에 있는 역자의 주석을 참고해야하는데 show 함수가 색인(INDEX)에 없으니...


 

물론 책의 구성과 내용에 대한 불만은 오롯이 이  책 한권으로 위의 그림과 같은 것을 할수 있었으면 하는 바람을 가진 저의 욕심 때문일 수도 있습니다.  제대로 걷지도 못하면서 파쿠르(Parkour)를 하고싶어하는 것 같네요. ^^:; 


 

하지만  이 책은 julia 라는 소녀와의 첫 만남의 자리를 좀 더 편하게 해줄 것 같습니다.


알게 되면알게 될 수록, 시간이 갈수록 멋진 아가씨가 될 것이 분명한 Julia 와의 첫 인연을 이 책으로 시작해 보는 것도 좋을 것 같습니다. 


앞으로 이 책이 계속 새로워지고 더불어서 Julia 에 대한 책들이 더욱 더 많이 나왔으면 하면서 이 리뷰를 마칩니다.

 


이 리뷰는 한빛 출판사의 ‘나는 리뷰어다’ 이벤트로 받은 책을 보고 쓴 솔직한 감상을 적은 글입니다. 

그림 1. Think Julia

 

 내가 처음 Julia를 알게 된 것은 MOOC 수업을 들을 때 Julia로 문제를 해결하는게 있어서였다. 그 때 했던 과제가 Linear Optimization을 하는 것이었는데, JuliaBox상에서 Julia로 구현된 Linear Solver를 사용하면 Optimal Value를 구할 수 있었다. 그때 잠깐 다뤘던 내용이지만, Python만큼이나 문법도 간결하고, 구현하고자 한 공식이 있으면 그대로 표현도 가능했고, 이해하기 쉬웠던 것으로 느꼈었다.

 사실 Julia는 내가 느낀 것 이외로도 장점이 많다. 책에 기술된 대로 따라가자면,

  • High-Performance Language
  • 대화형 언어
  • Multiple dispatch를 통한 meta-programming
  • 동적이면서 정적 타입 언어
  • 표준 라이브러리 + third-party package

등이 있다. 한마디로 배우기 쉬우면서 성능은 성능대로 이점을 가져올 수 있다는 것이다. 특히 Julia는 Optimization에서 강점을 가지고 있어, 딥러닝 학습시 필요한 Hyperparameter optimization에도 활용할 수 있다. 나도 회사에서 일하는 부분이 제어쪽 분야다 보니, 새로운 기술이 뭐가 없나 하다가 Julia로 구현된 ControlSystem 패키지가 워낙 정리도 잘되어 있고, 원리 이해도 쉬워 많이 살펴보고 있다. 특히 PID 제어 같은 경우에는 각 제어기의 Magnitude를 결정하는 계수값 선정이 중요한데, 해당 패키지로도 그런 것을 해볼 수 있다. 이렇게 잠깐 살펴보던 와중에, Julia 관련 번역서가 출간되어 읽어보게 되었다. 국내엔 julia 관련 번역서가 거의 없어서, 참고하기 좋을 듯 했다.

 기본적으로 이 책의 전개는 일반 입문 도서와 비슷하다. 기본적으로 다루는 언어의 문법부터 시작해서 자료구조, 파일 핸들링, 더 나아가 Julia를 활용한 예제를 통해서 처음 입문하는 사람부터, Julia를 응용해 적용해보려는 개발자를 포괄할 수 있는 내용을 담고 있다. 더불어 프로그래밍 언어 이외에 Unit test나 debugging 방법 등 개발시 참고할 수 있는 부분도 담고 있다. 

 물론 다른 책에 소개되어 있지 않은 뭔가 쌈빡한 비기같은 것이 담겨 있지는 않지만, 일반 입문 서적과 전개가 비슷한 만큼, 처음부터 책을 읽으면서 직접 실습해보며 배울 수 있도록 내용이 진행된다. 각 파트별로 설명이 필요한 용어와 연습 문제들은 조금더 심화로 배우고자 하는 사람에게는 도움이 많이 될 듯하다. 나같은 경우도 MOOC에서 살짝 다뤘긴 하지만, 초반에 나온 부분은 문제와 설명을 통해서 쉽게 넘어갈 수 있었다. (책을 읽다보면서 느끼는 것이지만, Julia 문법도 어떻게 보면 Python이랑 비슷한 것 같다.)

 참고로 이 책은 아마 O`reilly 책을 많이 본 사람이라면 알고 있을, Think 시리즈 중 하나이다.

 

그림 2. Think 시리즈

 

 그리고 Think 시리즈의 저자인 allen downey는 자신이 작성한 책들을 홈페이지를 통해서 무료로 배포하고 있다. 이번 서적은 비교적 최근작이어서 안 올라와있지만, 아마 근 시일내에 올리지 않을까 싶다. 아니면 책 내용이 어떤가 궁금한 사람은 영문판은 또다른 저자인 Ben Lauwens가 따로 공개해놨다. 참고하면 좋을듯하다.



출처: https://talkingaboutme.tistory.com/entry/Book-Think-Julia [자신에 대한 고찰]

20200524_180455.jpg

 

줄리아 라는 언어를 최근에 알게 되었다. 

파이썬 스러운 문법이지만 속도는 C에 가깝다고 한다. 

이 얼마나 사기적인 언어인가 싶은 느낌이 들었다. 

 

책에서는 별도의 설치 방법이 나와 있지는 않고 웹에서 실행할 수 있게끔 하는 방법만 나와있었다.

설치가 크게 어렵지 않아서 설치를 해서 터미널 상에서 조금 써보긴 하였다. 

주피터 노트북에서 쓸 수 있다고 하는데 '줄리아박스'에 들어가 보았는데 인증 시간이 조금 걸리는 것 같다. 

 

항상 레퍼런스가 많지 않은 언어들은 먼저, 번역이 되서 국내로 들어오는 게 수순이다. 

그런 과정에서 잘 번역된 책이 있고 아닌게 있는데 이 책은 잘 된 편이라고 생각한다. 

그리고 번역이 잘되었다고 느낄 수 있다는 것은 책 원서 자체도 괜찮게 나온 게 아닐까 라는 생각이 든다. 

 

줄리아라는 언어의 변수 선언부터 객체화하여 사용하는 법 그리고 언어의 철학 같은 부분이 잘 설명되어 있다. 

역사가 아주 짧은 언어이기에 영어로 된 레퍼런스가 대부분이다. 

사실, 이런 부분은 장점이자 단점이 될 수 있다. 내가 먼저 선점하면 나중에 나의 가치를 올릴 수 있는 것인데, 

국내에 줄리아 관련 서적이 얼마나 있는지는 모르겠지만 이 책은 기틀을 잡는데 딱 좋은 책이라고 느껴진다. 

 

파이썬을 좀 사용해본 사람이라면 금방 숙달할 수 있을 거라고 생각한다. 

만약, 프로그래밍 처음이라면 별로 권하고 싶지는 않다. 

물론 학교나 회사에서 어쩔 수 없이 해야한다면 시도해야겠지만, 그게 아니라면 파이썬부터 좀 공부하고 보면 좋을 것 같다. 

 

 

 

B3156242562_l.jpg

 

리뷰에 앞서 본 리뷰는 한빛 출판 네트워크에서 진행한 ‘나는 리뷰어다’ 이벤트에서 제공받은 책으로 진행한 것을 밝힙니다.
 
C 언어를 배웠을 때  제일 처음에 Hello World 출력법을 배우고, 그리고나서 변수, 제어문, 함수 등을 배우게 되고, 그리고나서 자료구조를 배우게 되는 것이 생각난다. 그리고 자료구조를 배울 때, linked list, hash 등의 사용법을 배우고 이를 이용해서 문제를 어떻게 풀어나가는 지 배웠던 기억이 난다. Python과 Ruby와 같은 언어를 익힐 때에는 list, hash 등의 유용한 자료구조가 이미 언어에 구현되어 있어, 큰 어려움 없이 이를 사용해서 문제를 필요한 것들을 구현할 수 있었다. 하지만 C나 C++로 구현되어 있는 것을 이러한 언어들로 구현할 때, 늘 성능 문제가 걸림돌이 되어, 성능이 필요한 부분은 C로 작성하여 이러한 언어들과 섞어 쓰는 방법을 이용했었지만, 이 역시 불편함은 늘 있었다.
 
Julia는 이번 리뷰를 통해 처음 접하게 되었다. Julia란 언어가 Data Science 쪽에서 사용한다고 들어는 본 적이 있으나, 사용할 일이 없어서 굳이 배우려 해본 적은 없었다. 본서는 Julia 언어를 Julia를 모르는 분들이나 컴퓨터 언어를 처음 배우는 분들을 위해 어렵지 않게 기술이 되어 있고, 그에 맞게 여러 연습문제도 제공되고 있다. 또 번역도 쉽게 잘 되어 있어 읽는 데 큰 어려움이 없다. 그래서 기존 컴퓨터 언어를 하나 이상 잘 사용하시는 분들에게는 400페이지에 가까운 이 책은 정말 쉽고 빠르게 익힐 수 있는 책이라는 생각이 든다. 
 
본서를 통해 Julia를 익히면서 느낀 것은, Julia를 설계할 때, 기존 스크립트 언어의 불편함을 개선하고 많은 사람들이 사용하고 있는 언어와 유사해 많은 사람들이 쉽게 익힐 수 있도록 하려는 의도가 있었을 거라는 점이다. 책에서도 언급하지만 Julia는 Python과 닮은 면이 상당히 많다. 그래서 기존 Python을 사용하던 프로그래머라면 다른 언어 경험자보다 더 빨리 익힐 수가 있다고 생각한다. 자료 구조의 종류도 거의 비슷하다. 또 
개인적으로 Python에서 불편했던 들여쓰기 부분은 Ruby와 같이 end를 명시하여 끝나는 곳을 명시적으로 알 수 있게 하여 Python보다 편리하게 되었다 라는 생각이 든다. LISP이나 Ruby처럼 굳이 return이라고 명시하지 않아도 함수 내에서 마지막으로 evaluate한 결과가 자동으로 return되는 점은 익숙해지면, 코드를 좀 더 간략히 표현할 수 있어 편리한 점이라 생각된다. 그리고 함수의 정의는 Bash 스크립트와 유사하다. def 라고 이름을 주는 것보다 function이라고 명시하는 것이 더 의미가 분명하다고 생각한 것으로 보인다. 그렇지만, Julia는 class 구문이 명시적으로 존재하지 않는다. Python, Ruby와 같은 스크립트 언어들에서 제공하는 class가 왜 존재하지 않는지에 대해서는 아직 이유를 잘 모르겠다. 멀티 디스패치 기능을 이용해 일부 class가 제공하는 기능과 유사한 부분이 있지만, 그 외에는 class를 대체할 수 있는 지에 대해서는 잘 알 수 없다. 이 부분은 기존 프로그래머에게 있어, Julia를 선택할 지 말지를 결정하는 포인트 중 하나가 될 수 있다는 생각이 들었다.
 
본서는 앞에서 기술한 것처럼 초보자를 위한 책이라서, Julia의 고급 기능들에 대한 설명이 많지 않다는 생각이 든다. 다중 디스패치에 대한 내용도 간단하게 설명하고 있으며 그 외 초급자에게 어려울 수도 있다고 저자가 판단한 부분들은 한 두 챕터에 쭉 나열해 놓고 있다. 따라서 이러한 부분들에 대해 좀 더 공부하고 싶은 분들은 별도의 자료나 책을 참고해야할 것으로 생각되었다. 
 
책을 읽어 나가면서 Julia에 대해 성능이 어느정도 빠른지가 궁금하였다. 스크립트 언어를 선택할 때, 빠른 개발이나 쉬운 개발도 중요하지만, 성능이나 이식성 측면은 신경이 쓰이는 부분이기 때문이다. 특히 Python3와의 차이가 궁금했는데, 본서에는 그런 부분들에 대해 거의 설명이 없어서 구글링을 통해 자료를 찾아본 결과, 읽어본 자료에서는 눈에 띄게 차이가 있는 것처럼 소개가 되어 있다. 성능 비교 부분이 독자들의 필요 부분과 부합하는 지 좀 더 명확한 체크를 한 후, Julia의 사용 여부를 판단해보는 것도 괜찮을 것이라는 생각이 든다. 찾이본 페이지 중 한 페이지의 링크는 다음과 같다. 다음 페이지를 보면 Python3과의 비교가 그리고 페이지에 있는 링크를 쫓아가면 C, Fortran, LISP과의 성능 비교가 나와 있으니, Julia의 성능에 대해 관심이 있으신 분은 한 번 읽어보시는 것도 좋을 것 같다.
 
이 책을 통해 컴퓨터 프로그래밍을 처음 접하시는 분들은, 이 책이 초보자를 위한 책이라 할지라도, 쉽다고 생각하시지 않을 수 있다라는 생각이 든다. 이 책만을 반복해서 읽으면서 공부해나가도 되겠지만, 책을 읽으면서 어렵다는 생각이 드시는 분들이 있다면 다음과 같은 내용들을 함께 공부하면서 책을 보시는 것이 더 좋을 것이라는 생각이 든다.
  • 유닉스/리눅스 CLI 환경
  • 간단한 자료구조 (스택, 재귀, hash, list 등)
  • OOP 기초 (자료 추상화, 클래스, 캡슐화, 일반화, 다형성 등)
  • 그 외 어렵다고 느끼시는 많은 부분들

 

책 뒤에 줄리아를 소개하는 내용을 보니 파이썬 상위호환 고성능 범용 프로그래밍 언어라고 적혀있었다. 파이썬도 꽤나 괜찮았는데, 그보다 상위호환이면 어느정도일까. 살짝 의문이 들었지만 일단 책을 펼쳐 보기로 했다.

 

얇은 책의 내용에 비해서 줄리아를 배우는 진도는 생각보다 많이 나가고 있다. 이미 이 언어를 배우는 사람은 기본적인 알고리즘은 아는 사람들이라는 전제를 깔아서 그런지 책의 처음엔 간단한 프로그래밍 단어를 소개하더니 뒷부분에 보면 다양한 자료구조와 기법들을 소개해주는 모습까지 보여주고 있다. 얇은 책이지만 입문에서 심화까지 전반적으로 훑는다는 느낌인 것이다.

 

책에 나온 전체적인 구문을 본 내 평가는 줄리아는 기존 프로그래밍 언어와 문법적인 구조상에 큰 차이는 없다는 것이다. 개인적으로 C를 한 2년간 학부공부용으로 배운뒤 그 다음학기에 자바로 넘어갈때 둘의 차이가 상당해서 이 차이로 인한 어려움을 매꾸기 위한 노력을 하는게 무척이나 힘들었는데, 줄리아의 경우에는 개인적 채감으로 파이썬과 큰 차이가 없다는 것이 정말로 다행이란 생각이 들었다. 조건문 반복문 같은 기본 구문부터 튜플,딕셔너리 같은 자료구조형도 파이썬과 거의 유사하다는 점이 무척이나 맘에 들었고, 덕분에 술술 넘어갈 수 있었다.

 

줄리아가 어떤 언어인지 궁금한 사람이라면 이 책이 아주 좋은 입문서라는 생각이 든다. 다만 아주 초보자가 보기에는 조금의 시간이 더 걸릴 수 있다는 단점이 있다고 생각한다. 하지만 최소 파이썬의 자료구조까지 어느정도 볼 줄 알고 만들수 있는 사람이라면 줄리아를 확실히 마스터 할 수 있다고 생각한다. 이런 줄리아의 모든것을 담은 이 책을 줄리아를 공부하고 싶어하는 사람에게 적극적으로 추천해주고 싶다.

 


한빛미디어 출판사의 "줄리아를 생각하다(벤 로언스,앨런 다우니 저 / 송한별 역)"을 읽고 작성한 리뷰입니다.

표지


줄리아(Julia)는 수치해석 및 계산과학용으로 개발된 속도가 빠르고 문법도 우아한 언어이다. 사실 Julia를 처음 알게 된것은 쥬피터 노트북 이름의 어원에서였다. 왜 쥬피터인지 궁금하였는데 Ju(Julia)+py(Python)+te+r(R) 즉, 데이터 분석의 대표적인 3가지 언어의 약자 합성어라는 것을 알게되었다.Jupyter와 Julia

R, Python은 자주 접했지만 Julia는 대체 뭐길래 제법 유명세도 있고 데이터 사이언스 도구로서 점유율도 높은것일까? 궁금하여 일단 페이스북 그룹 Julia Korea에 가입하여 살펴보니 특히 성능 측면에서 큰 인기를 끌고 있음을 알 수 있었다. 쉽게 말하면 속도는 C언어인데 난이도는 Python인 셈이다.

조금 더 깊이 파보고 싶었지만 레퍼런스도 많지 않았고 대부분의 레퍼런스가 원어로 쓰여져있어 피곤함을 느끼곤 했다. 한글로 된 도서는 거의 전무하다시피 했는데 마침 본 도서가 등장하게 되어 매우 반가웠다.

아마 국내에서 한글로 된 줄리아 서적은 2번째인 것으로 알고 있다. 본 도서를 읽고 정리한 줄리아의 특징을 간단히 요약하면 다음과 같다.

  • C, 포트란 언어 수준으로 속도가 빠르다.
  • 다중 디스패치(Multiple Dispatch)
    • Python과 같은 동적언어는 컴파일 과정이 없어 자료형을 미리 알 수 없어 속도가 느려진다.
    • Java 등의 언어를 다룬 사람들은 익숙하겠지만 생김새가 마치 제네릭 프로그래밍과 유사하다.
    • 이 기능을 활용하여 동적언어임에도 속도를 보장하며, 여러 프로그래밍 패턴을 골라 쓸 수 있다.
  • 모든 패키지의 저장소가 Github이기에 서드파티가 탄탄하다.
  • 수학적 표현을 (마치 노트에 수학공식을 쓰듯이) 거의 그대로 사용할 수 있다.
    • 예를 들면, 원주율(파이)를 쓰고 싶으면 pi라고 입력 후 TAB을 누르면 파이 수학기호가 등장한다.
    • 레이텍(Latex) 노가다를 생각하면 ㅜㅜ..
  • LISP 수준의 메타 프로그래밍이 가능하며 고수준 언어의 편리성을 제공한다.

이번에는 책을 완독하며 인상깊었던 점을 간추려본다.

  • Think라 불리는 독특한 구성
    • 저자는 본 도서를 Think Python의 책에서 Python을 Julia로 바꾼 책이라 표현한다.
    • Think Python은 이미 Python의 초급 교재로 선풍적인 인기를 끌었던 도서이다.
    • Think 방식이 개인적으로 굉장히 마음에 드는데 그 이유는 2가지이다.
      • 언어의 문법만 가르치는 것이 아니라 프로그래밍 언어론에 1:1 대응하듯이 설명한다.
      • 즉, Python만 배운 사람이 C언어를 접할때 얼마나 좌절하는지 종종 보게된다. 이런 문제에 좋은 솔루션이 될 수 있다.
      • 다상량(多商量)을 유도한다. 그냥 문법을 외우는 것이 아니라 왜 이런식의 표현을 하는지 생각하게 되는데 이를 통해 문법의 장기적인 기억에 도움이 될 뿐 아니라 처음 접하는 문법에 응용력이 생긴다. 예를 들면 아래 그림을 참고하시기 바란다.함수작성의 접근법스택 도식
  • 프로그래밍을 처음 배우는 사람에게는 최고의 책
    • 앞서 언급한 Think 구성덕분에 이미 다른 언어를 알고 있는 사람은 더욱 쉽게 익힐 수 있을뿐더러 Julia만의 특징을 입체적으로 느낄 수 있다.
    • 프로그램의 개념부터 변수, 함수, 문자열 등의 기초적인 설명을 각각 한 챕터 분량으로 설명한다. (이해가 안될수가 없다.)
  • 연습문제의 수준이 훌륭한데 난이도는 크게 높지않아 능동적인 학습이 가능하다.
  • 단원 마지막에 용어집이 등장하여 배운 내용을 복습할 수 있게 해준다.

Julia 입문자 및 초보자라면 이 책을 첫 단추로 삼으면 절대 후회하지 않을 듯 하다. R, Python과의 기능 차이가 명확히 보여 혼동할 일이 줄어들고 Julia에 빠르게 적응할 수 있도록 도와주기 때문이다.

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 도서명 :
줄리아를 생각하다
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
줄리아를 생각하다
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
줄리아를 생각하다
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실