줄리아, 파이썬 아성에 도전?…“프로그래밍 언어 왕좌 쟁탈전”
동적‧고속 줄리아…기존 언어 장점 집약 수학 친화적 구문‧더욱 정교한 병렬연산 기능
파이썬은 가장 유력한 데이터 분석용 언어다. 과학적 계산과 데이터 분석 작업을 빠르고 편리하게 해주는 라이브러리와 툴, 애플리케이션을 두루 갖추고 있다.
그러나 최근엔 데이터 마이닝이나 과학적 분석은 물론, 대규모 선형 대수 처리, 분산 및 병렬 계산 등의 작업을 할 때 파이썬의 속도나 기능에 만족하지 못하는 SW개발자들이 늘어나고 있다.
그들 간에는 특히 줄리아 언어가 부상하면서 기존 파이썬의 아성에 도전하는 양상이 펼쳐지고 있다. 프로그래밍 언어 분야에서 왕좌의 자리를 놓고 파이썬과 줄리아의 본격적인 다툼 양상까지 예상되고 있는 것이다.
줄리아, ‘고성능 수치 분석과 계산과학용 언어’
줄리아는 MIT의 앨런 에델만(Alan Edelman)을 비롯한 4인의 응용 컴퓨팅 그룹이 지난 2009년 처음 개발한 프로그래밍 언어다. 파이썬 등과 마찬가지로 고성능 수치 분석 및 계산 과학을 위해 설계된 프로그래밍 언어라고 할 수 있다.
즉 간단한 구문으로 머신러닝, 데이터 마이닝, 대규모 선형 대수, 분산 및 병렬 계산 등 복잡한 계산을 C언어 수준으로 빠르게 처리할 수 있다.
특히 파이썬과 기타 언어들, 그리고 테크니털 컴퓨팅 및 데이터 프로세싱에 쓰이는 애플리케이션의 단점에 대처하도록 설계되었다. 이를 위해 에델만 등은 매트랩, R, 리스프, 파이썬, 루비, 펄, 매스매티카, C 언어 등의 장점을 모으고, 단점을 없애는 노력을 기울였다.
예를 들어 루비언어의 동적 프로그래밍이나, C언어의 빠른 속도 등을 담아내는 식이다.
파이썬의 속도, 기능에 불만 개발자 늘어
줄리아는 MIT 라이센스로서, 소스 코드는 깃 허브에서 사용할 수 있다. 원래 과학 및 수치 연산을 위해 설계된 것으로 이와 관련된 응용 분야에서 이미 다양하고 유익한 기능을 갖추고 있다.
이는 우선 속도가 빠르다. 본래 파이썬은 JIT 컴파일과 유형 선언문에 의해 최적화되도록 했지만 줄리아는 이런 단점을 커버한다. 줄리아는 처음부터 고성능을 위해 설계되었고 컴파일러 최적화를 위한 ‘LLVM’을 통해 여러 플랫폼을 위한 효율적인 네이티브 코드로 컴파일된 것이다.
그래서 줄리아는 동적이다. 즉 동적으로 입력되어 스크립팅 언어처럼 느껴지며 대화형으로 사용하기에 좋다. 이에 비해 파이썬은 애초 외부 라이브러리, 써드파티 JIT 컴파일러, 사이썬과 같은 툴에 의해서 최적화되고 속도가 빨라질 수 있다. 그러나 줄리아는 아예 처음부터 이런 동적인 최적화 방식으로 빨리 구동되도록 설계되어있다.
줄리아, 사전 빌드된 바이너리로 플랫폼 간 동일 환경 재현
재현 가능한 환경을 통해 사전 빌드된 바이너리를 사용함으로써 플랫폼 간에 매번 동일한 줄리아 환경을 재현할 수 있는 점도 줄리아의 장점이다. 줄리아는 또 다중 디스패치를 패러다임으로 사용하므로 많은 객체 지향 및 함수 프로그래밍 패턴을 쉽게 표현할 수 있다.
특히 비동기 I/O나 메타 프로그래밍, 디버깅, 로깅, 프로파일링, 패키지 관리자 등의 다양한 장치를 갖추고 있다. 이는 모두 수학 친화적 구문으로 만들어졌다. 그래서 매트랩, R, 매스매티카, 옥타브 등의 과학 연산 언어나 환경을 이용하는 개발자들에게는 매우 유용하다.
줄리아의 수학 연산 구문은 컴퓨팅 세계와는 무관한 범용의 수학 공식과 같아서, 굳이 전문가인 프로그래머가 아니라도 사용하기 편하다는 점 또한 장점이다.
줄리아 병렬화 구문, 파이썬보다 가볍고 사용하기 편해
파이썬은 메모리를 할당하고 수시로 비우는 편리한 기능을 갖고 있다. 줄리아도 마찬가지다. 한발더 나아가서 쓰레기 처리장격인 ‘가비지 컬렉션’을 수동으로 제어할 수 있게 한다.
파이썬과 줄리아 모두 병렬 연산을 수행할 수 있다. 다만 파이썬의 경우는 스레드나 노드 사이의 데이터 직렬화와 역직렬화를 수단으로 한다.
그러나 이 점에서 줄리아의 병렬화는 한층 정밀하다는게 개발자들의 평가다. 병렬화 구문도 파이썬보다 덜 무거워서 사용하기 편리하다는 점도 장점이다. 현재 줄리아는 자체적인 네이티브 머신러닝 라이브러리를 개발 하고 있다.
우선 머신러닝 라이브러리인 플럭스(Flux)를 개발했는데, 이를 더욱 다양하게 응용하기 위한 여러 패턴을 개발 중이다. 이를 사용하는 사람들은 자신의 필요에 따라 이를 수정할 수 있고, 또한 독창적인 적시 컴파일링에 의해 프로젝트를 최적화할 수 있다.
파이썬, 제로 기준 어레이 인덱싱 등 장점 많아
물론 파이썬도 줄리아가 갖추지 못한 장점도 많다. 이는 오랜 시간을 두고 데이터 과학으로 진화한 만큼 그 이점이나 장점 또한 무궁무진하다. 특히 제로-기준 어레이 인덱싱은 파이썬의 장점이자 무기다.
즉 파이썬이나 C 등 대다수 언어에서 어레이의 첫 요소는 ‘제로(0)’다. 예를 들어 파이썬의 경우 문자열의 첫 문자는 ‘string[0]’이다. 이에 비해 줄리아는 1 기준 어레이 인덱싱을 이용한다. 이는 흔히 수학이나 과학 애플리케이션들이 1 기준 인텍싱을 이용하는 점을 노린 것이다.
그러나 이런 전략은 1-인덱싱 기본값에 아직 낯설고, 여전히 제로 기준 어레이 인덱싱에 익숙한 프로그래밍 습관을 지닌 사용자들로선 불편할 수도 있다.
물론 줄리아 프로그램보다 파이썬 프로그램이 속도 측면에서 더 느릴 수는 있다. 그러나 파이썬은 시작할 때 오버헤드가 더 적다. 즉 파이썬의 런타임 자체는 더 가벼워서, 파이썬 프로그램이 시작하고 최초의 결과를 전달하는 데 시간을 단축시켜준다.
또한 JIT 컴파일링은 줄리아 프로그램의 실행 속도를 빠르게 해주지만, 이를 위해 시작하기까지 오래 걸린다. 줄리아는 시작 속도를 개선하기 위해 노력하고 있지만 여전히 파이썬보다 못하다.
파이썬, 월등히 많은 서드파티 패키지도 강점
파이썬은 줄리아와는 비교가 안 될 만큼 월등히 많은 써드파티 패키지가 있다는 점도 큰 강점이다. 이에 비해 아직은 등장한지 얼마 안된 줄리아를 둘러싼 서드파티나 소프트웨어는 아직 크지 않다.
그래서 이를 기존의 C나 파이썬 라이브러리로 보완하기도 한다. 머신러닝 라이브러리인 플럭스(Flux), 케이넷(Knet) 등이 있긴 하지만, 여전히 텐서플로나 파이토치에 의존하고 있다는 점도 파이썬에 뒤지는 점이다.
더욱이 파이썬도 날로 빨라지고 있다. 파이썬 인터프리터는 물론, 멀티-코어 병렬 프로세싱을 도입하는 등 더욱 손쉽게 가속할 수 있게 한다. 특히 파이썬의 ‘마이픽(mypyc)’ 프로젝트는 타입 주석이 달린 파이썬을 훨씬 원활하게 네이티브 C로 변환하게 함으로써 대폭 순수 수학 연산 등에서 대폭 성능과 속도를 높이고 있다.
1700만회 이상 다운로드 줄리아 vs 막강한 파이썬 커뮤니티
줄리아는 2009년부터 개발되기 시작한데 비해, 파이썬은 30년 가깝다는 점도 파이썬의 무기다. 그럼에도 줄리아도 이미 1,700 만 회 이상 다운로드되었으며 줄리아 커뮤니티는 커뮤니티 사용을 위해 4천 개 이상의 줄리아 패키지를 등록한 것으로 알려졌다. 이는 다양한 수학 라이브러리, 데이터 조작 도구 및 범용 컴퓨팅 용 패키지를 포함하고 있다.
또 파이썬, R, C / 포트란, C ++, 자바의 라이브러리를 쉽게 사용할 수 있게 했다. 더욱이 줄리아는 1천 명이 넘는 기여자가 참여하는 오픈 소스 프로젝트란 점도 강점이다. 현재 줄리아는 1.4버 까지 나온 상태이다. 1.4버전은 깃허브에서 무료로 다운받아 사용할 수 있으며 윈도, 맥OS, 리눅스, 프리BDS를 지원한다.
그럼에도 파이썬은 여전히 줄리아가 짧은 시간에 따라잡기 어려운 수많은 이용자가 있고, 대규모의 열성적이며 활동성 강한 커뮤니티를 거느리고 있다. 줄리아 커뮤니티와는 비교가 안 될 정도로 여전히 막강한 파이썬 커뮤니티가 건재하고 있는 것이다. 그래서 장차 SW개발 세계에서 두 언어의 위상 변화가 한층 흥미있는 관심거리가 될 수 밖에 없다.