alfe***
2020-05-31

줄리아는 수치해석 및 계산과학용으로 개발되어 파이썬 상위호환 언어라 불릴 정도로 속도가 빠르고 문법도 우아한 언어다.
한빛 출판사의 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페이지).
그리고 이 책을 번역한 역자분의 친절한 주석들은 본문의 예제의 내용들을 이해하는데 많은 도움이 됩니다.
하지만 이 책의 구성에 대해서는 몇몇 아쉬운 점들이 보입니다.
원래의 저자가 서문에서도 밝혔듯이 Think Python 을 기본으로 책을 만들었기 때문인지 이 책의 구성이 Julia 를 위한 책이라기 보다 파이썬으로 할 수 있는 것을 Julia 로 하는 방법을 보이는 것 같다는 것입니다. 그리고 이 책은 줄리아의 기본을 이해하는 것을 목표로 하고 있어서 이 책만으로는 책의 표지의 문구처럼 데이터 과학자가 뭔가를 해보기엔 조금 힘들 수도 있습니다. 아무래도 이런 것들은 이 책에서 나온 내용들을 익힌 사용자가 수학/공학에 적용하는 법을 배우는 책이 나와야 가능할 것 같습니다. 예를 들어 Julia 홈페이지에 있는 다음과 같은 것들을 할 수 있는 책이 있어야 할 것 같다는 거죠 .
실제로도 대학생들/대학원생들하고 이야기를 해보면 이런 것을 하는 과정을 알고 싶어하는 경우가 많더군요.
조금은 상세한 설명이 부족한 느낌입니다. (이건 뭐 여태껏 이 오라일리의 책들이 좀 불친절한 느낌도 있었으니… 라고 할 수도 있겠습니다만 최근 워낙 상세한 혼공파/혼공씨/혼공자 등을 보다 보니 더 눈에띄는 듯 합니다.
불친절함의 예를 하나 들어 보겠습니다.
책에서 사용된 줄리아 버전과 사용환경상의 문제인지 저는 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 라는 언어가 생각이 납니다. ^^;
그리고 초보자가 이 책에서 필요한 내용들이나 이전에 봤던 부분들을 좀 더 빨리 찾아 보기 위해서 필수적인 index 가 많이 부족합니다. 그래서 이전에 본 내용을 다시 찾아 보거나, @ 라던가 $ 등의 용법에 대한 설명을 찾아 보기가 힘드네요.
예를 들어 show 라는 함수에 대해서 찾아 보기 위해서는 목차를 참고해서 17.5절을 보거나, 107페이지, 109페이지에 있는 역자의 주석을 참고해야하는데 show 함수가 색인(INDEX)에 없으니...
물론 책의 구성과 내용에 대한 불만은 오롯이 이 책 한권으로 위의 그림과 같은 것을 할수 있었으면 하는 바람을 가진 저의 욕심 때문일 수도 있습니다. 제대로 걷지도 못하면서 파쿠르(Parkour)를 하고싶어하는 것 같네요. ^^:;
하지만 이 책은 julia 라는 소녀와의 첫 만남의 자리를 좀 더 편하게 해줄 것 같습니다.
알게 되면알게 될 수록, 시간이 갈수록 멋진 아가씨가 될 것이 분명한 Julia 와의 첫 인연을 이 책으로 시작해 보는 것도 좋을 것 같습니다.
앞으로 이 책이 계속 새로워지고 더불어서 Julia 에 대한 책들이 더욱 더 많이 나왔으면 하면서 이 리뷰를 마칩니다.
이 리뷰는 한빛 출판사의 ‘나는 리뷰어다’ 이벤트로 받은 책을 보고 쓴 솔직한 감상을 적은 글입니다.