줄리아를 생각하다 - 데이터 과학자를 위한 최적의 프로그래밍 언어
벤 로언스.앨런 B. 다우니 지음 / 한빛미디어 / 2020년 4월
평점 :
장바구니담기



리뷰에 앞서 본 리뷰는 한빛 출판 네트워크에서 진행한 ‘나는 리뷰어다’ 이벤트에서 제공받은 책으로 진행한 것을 밝힙니다.

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 기초 (자료 추상화, 클래스, 캡슐화, 일반화, 다형성 등)
  • 그 외 어렵다고 느끼시는 많은 부분들


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo