수년 전부터 신 기술의 핵심이 된 인공지능/딥러닝 분야와 데이터 분석 분야에서는 파이썬을 이용한 개발이 대세를 이루고 있습니다.
우리나라의 경우 유행에 지나치게 매몰되는 경향이 있다보니 파이썬 외에도 다양한 언어와 개발 환경이 최신 기술을 지원하고 있지만 거의 파이썬 일변도로 진행되고 있는 것이 사실이죠.
그러다보니 다른 언어와 개발 환경에 관심을 가지는 사람들은 부족한 정보로 인한 어려움을 외국보다 많이 겪는 편입니다.
줄리아(Julia)도 이런 이유로 지금까지 국내에서 외면받아 온 언어의 하나입니다.
저도 수년 전에 줄리아를 접하고 관심이 생겨 공부해 보려고 시도했었지만 부족한 정보와 커뮤니티의 부재 등으로 포기했던 적이 있습니다.
그런데 최근 줄리아가 주목을 받기 시작하고 있습니다.
올 해 8월에 발표된 티오베(Tiobe) 지수에서 줄리아가 프로그래밍 언어 인기도 지수 상위 20위권에 진입했다고 합니다.
빠른 속도와 높은 확장성, 데이터 과학 및 수학적 계산을 위한 뛰어난 활용성 등을 무기로 파이썬, R, 매트랩(MATLAB)의 대체제로써 주목받고 있다고 하네요.
특히 데이터 과학 및 수학적 계산 분야에서 인기를 끌고 있다고 합니다.
티오베(Tiobe) 지수
구글, 빙, 야후와 같은 인기 검색 엔진으로부터 얻은 데이터를 기반으로 프로그래밍 언어의 인기도를 측정하는 지수. 전 세계의 전문 엔지니어 수, 교육 과정, 특정 언어와 관련된 타사 공급업체 등과 관련된 데이터를 수집하여 인기도 순위를 매김.
여전히 파이썬 등의 주류 언어와는 비교하기 어렵겠지만 지금 상황이라면 어느 정도 공부를 해 보는 것도 좋겠다는 생각이 들어 틈틈이 줄리아 언어를 공부하기로 했습니다.
줄리아(Julia)는 2009년 MIT 재학생 네 명으로 구성된 개발팀이 프로그래밍 언어 속도 개선을 위해 개발한 고급 오픈소스 프로그래밍 언어로 2012년 일반에 공개되었습니다.
과학 계산, 데이터 처리 등에 많이 사용되고 있는 파이썬 등의 언어가 가지는 단점을 해결하기 위한 대안으로써 개발을 시작하였다고 합니다.
줄리아의 개발팀은 자신들의 목적을 설명하기 위하여 다음과 같은 글을 남겼습니다.
- 우리는 오픈 소스이면서 자유롭게 쓸 수 있는 언어를 원한다.
- 우리는 루비(Ruby)의 역동성과 C의 속도를 원한다.
- 우리는 리스프(Lisp)처럼 진정한 매크로를 가지면서도 매트랩(Matlab)처럼 명확하고 익숙한 수학적 표기를 가진 단일한 언어를 원한다.
- 우리는
- 파이썬처럼 일반 프로그래밍에서 쓰일 수 있고,
- R 언어처럼 통계를 위해 간편하고,
- 펄(Perl)처럼 자연스러운 문자열 처리가 가능하고,
- 매트랩처럼 선형 대수학에 강점이 있고,
- 프로그램을 셸로서 탁월하게 접합할 수 있는 무언가를 원한다.
- 이는 배우기가 쉬우면서도 진지한 해커를 만족시키는 것이어야 한다.
- 인터랙티브(대화형)하고 컴파일도 가능해야 한다.
- (그리고 물론 C 언어처럼 빨라야 한다)
위와 같은 목적을 달성하기 위하여 줄리아가 채택한 방법은 다음과 같습니다.
- 인터프리터가 아닌 컴파일러 언어 선택
- 런타임 성능을 높이기 위하여 LLVM(Low Level Virtual Machine) 컴파일러 프레임워크를 이용하여 적절한 시점에 JIT(Just In Time) 컴파일 수행
- 최고 성능을 발휘할 때는 C의 속도에 근접함
- 인터랙티브(대화형) 인터페이스 지원
- 파이썬과 비슷한 REPL(Read-Eval-Print-Loop)이라는 인터랙티브 명령줄을 사용하여 신속한 일회성 스크립트 및 명령을 즉시 기록 가능
- 명확한 구문의 사용
- 파이썬과 비슷한 수준의 간결성과 표현력, 강력함을 가짐
- 동적 타이핑과 정적 타이핑의 이점 결합
- 변수의 유형을 명시하거나, 허용되는 유형의 계층을 생성할 수 있음
- 불필요할 경우 유형을 명시하지 않아도 무방함
- 파이썬, C, 포트란 라이브러리 호출 기능 및 데이터 공유 가능
- 메타 프로그래밍 지원
- 줄리아 프로그램은 다른 줄리아 프로그램을 생성할 수 있으며, 자체 코드를 수정할 수도 있음
- 포괄적인 디버거 지원
- 로컬 REPL에서 코드를 실행하고, 결과물에 진입하여 변수를 조사하거나 코드에 중단점을 추가하는 것이 가능함
- 코드에 의해 생성된 함수에 진입하는 작업도 가능함
파이썬은 언어가 개발된 후 데이터 과학 분야의 개발을 통하여 점점 진화해 왔다고 볼 수 있지만, 줄리아는 처음부터 고성능의 수치 해석 및 연산과 과학 계산을 위해 설계된 언어입니다.
따라서 줄리아는 과학연산 관련 분야에서 많은 유리한 기능을 보유하고 있으며, 특히 파이썬과 비교할 때, 빠른 속도와 수학 친화적인 구문, 자동메모리 관리 기능 및 뛰어난 병렬성을 장점으로 가지고 있습니다.
또한 줄리아는 멀티 패러자임 함수형 프로그래밍 언어로 머신러닝과 통계적 프로그래밍에 적합하도록 개발되었습니다.
물론 최근의 언어는 객체지향형 프로그래밍 언어와 함수형 프로그래밍 언어의 특징을 동시에 지원하는 경우가 많긴 하지만 줄리아가 다른 언어와는 달리 과학 계산을 위한 다양한 측면, 특히 수치해석, 통계분석, 그래픽 처리 등에 강점을 가지는 것은 사실입니다.
단, 이러한 장점을 효과적으로 활용하기 위해서는 선형대수학, 미적분학, 확률론과 같은 수학 및 통계에 대한 지식을 어느 수준 이상 보유하고 있어야 한다고 할 수 있습니다.
줄리아 역시 파이썬처럼 쉽고 간결한 문법 구조와 학습 편의성을 가지고 있지만 이러한 특성 때문에 처음 접근하기가 다소 어려울 수 있습니다.
여기까지 줄리아 프로그래밍 언어에 대한 간략한 소개와 특징을 살펴보았습니다.
이후부터는 줄리아의 사용법부터 차근차근 정리해 볼 계획입니다.