[개발인] 노우경 “‘줄리아’에 푹 빠졌어요”

가 +
가 -

줄리아는 2012년 등장한 신생 언어다. 비슷한 시기에 등장한 신생 언어에 비해 줄리아는 아직 국내 개발자에게 관심을 덜 받는 편이다. 하지만 프로그래밍 언어 인기 순위를 집계하는 레드몬크 보고서에 따르면, 줄리아는 러스트와 함께 ‘가장 주목해야 하는 언어’로 뽑히기도 했다. 아직 0.4버전인 줄리아가 가진 힘은 무엇일까? 줄리아 한국 사용자 페이스북 그룹을 운영하는 노우경 개발자에게 줄리아의 장·단점을 들었다.

Julia_mrno_01_logo

더 읽어보세요!

줄리아는 MIT에서 개발한 오픈소스 언어다. 줄리아 창시자는 총 4명이다. 이들은 컴퓨터 과학, 데이터 과학, 응용수학 등을 주로 전공했다. 핵심 개발자들은 이름이 왜 ‘줄리아’인지에 대한 이유를 문서로 공개하지 않았다. 개발자 커뮤니티 내부에선 “공동 창시자인 제프 베잔슨(Jeff Bezanson)이 별 뜻 없이 ‘줄리아’란 이름을 제안했고, 그것이 최종 이름까지 가게 된 것”이라고 설명하고 있다.

줄리아 공동창시자들은 2012년 발표한 논문에서 줄리아를 다음과 같이 정의했다.

‘A Fast Dynamic Language for Technical Computing.’
(테크니컬 컴퓨팅을 위한 빠른 동적 언어.)

테크니컬 컴퓨팅은 보통 과학이나 수학 분야에서 활용되는 기술이다. 매트랩은 테크니컬 컴퓨팅 분야에서 자주 쓰이는 대표 언어다. 줄리아 공식 블로그는 “너무 욕심이 많아서 줄리아를 만들었다”라고 표현했다. 여기서 말하는 욕심이란 다양한 언어의 장점을 한데 모으고 싶었다는 의미다. 줄리아를 만든 공동 창시자들은 매트랩, R, 리스프, 파이썬, 루비, 펄, 매스매티카, C 언어 등에 관심을 두었다. 줄리아 창시자들은 이러한 언어의 장점을 모으는 데 집중했다. 가령 루비언어의 동적 프로그래밍이라든지 C언어의 빠른 속도같은 요소를 줄리아에 담으려고 노력했다는 얘기다.

줄리아는 기존 동적 언어들이 성능이 부족하다는 점을 지적하며 줄리아 성능을 높이는 데 주력하고 있다. C언어와 비슷한 수준까지 성능을 냈다는 실험 데이터도 공개했다.

Julia_mrno_02_performace-2

▲사진: http://julialang.org/benchmarks/

줄리아 한국 사용자 깃허브 페이지에 따르면 줄리아 언어의 특징은 다음과 같이 요약된다.

  • 핵심 언어는 최소한으로 꾸린다; 정수를 다루는 프리미티브 연산자(+ – * 같은)를 비롯해 기본 라이브러리는 줄리아 자체로 작성됐다.
  • 객체를 구성하고 서술하는 데 쓸 타입을 언어에서 풍부히 지원하며, 타입 선언을 할 때도 선택적으로 사용할 수 있다.
  • 인자 타입을 조합함으로써 함수의 작동 행위를 정의하는 ‘멀티플 디스패치’
  • 인자 타입에 따라 효율적이고 특화된 코드를 자동으로 생성한다.
  • C처럼 정적으로 컴파일되는 언어에 근접하는 훌륭한 성능
  • 사용자가 정의한 타입 또한 내장한 타입처럼 빠르고 간결하다.
  • 성능을 위해 코드를 벡터화할 필요가 없다; 벡터화하지 않은 코드도 빠르다.
  • 병렬과 분산 처리를 위해 고안됐다.
  • 가벼운 그린 쓰레딩(코루틴)
  • 리스프와 비슷한 매크로, 메타프로그래밍을 위한 장치들
  • (이하 하략)

(출처 : 줄리아 소개글 by 깃허브 줄리아 한국 커뮤니티)

“새로운 언어 배우며 개발 실력 늘리는 중”

노우경 개발자는 줄리아 깃허브 한국 사용자, 페이스북 그룹, 슬랙 커뮤니티 등에 활발하게 참여하고 있다. 그는 2000년부터 본격적으로 개발자의 길을 걸었고 웹, iOS, 서비스 등을 개발했다. 노우경 개발자는 “줄리아 컨퍼런스를 보고 줄리아에 관심을 가졌다”라며 “과거에도 이미 하스켈, 파이썬, 얼랭 같은 다양한 프로그래밍 언어를 공부하는 것을 좋아했다”라고 말했다.

“개발자라면 여러가지 공부할 게 많잖아요. 누군가는 안드로이드 개발 공부를 시작할 수 있고, 누군가는 데이터 분석에 관해 공부할 수 있겠죠. 저는 그런 분야를 선택하기 전에 언어를 먼저 공부하는 방식을 택했습니다. 언어를 깊이 공부하면서 필요한 실력을 늘릴 수 있다고 봤어요.”

Julia_mrno_00_thum

▲노우경 개발자

노우경 개발자가 꼽는 줄리아의 매력은 크게 2가지다. 진화된 형태의 타입 시스템과 ‘Cxx.jl’이다. 먼저 타입부터 보자. 사실 타입추론은 많은 언어들이 지원하는 기능이다. 노우경 개발자는 줄리아의 타입 추론은 기존 언어들보다 더 정교하다고 보았다.

“타입 시스템이 잘 설계될수록, 컴파일러가 최적화를 더욱 잘 할 수 있습니다. 줄리아는 타입 추론(type inference)하고 서브타이핑(subtyping)하는 과정에서 집합론(set theoretic)에 기반해 타입 시스템을 구현합니다. 이러한 구조 아래 줄리아는 타입의 합집합, 교집합, 차집합 연산하고요. 결과적으로 기존보다 더 나은 타입 정보를 컴파일러에게 전달해줍니다.”

Cxx.jl’는 FFI(Foreign Function Interface)의 일종으로 C++소스코드를 줄리아 인터페이스에 동적으로 포함시켜 준다. 줄리아는 원래 C언어 관련 라이브러리는 직접 호출 할 수 있었다. 하지만 C++ 코드는 별도의 복잡한 바인딩 과정을 거쳐야 줄리아에서 이용할 수 있다. 노우경 개발자는 “Cxx.jl만으로 C++를 줄리아 환경에서 바로 호출할 수 있다”라며 “C++에 익숙한 개발자라면 줄리아를 더 편하게 쓸 수 있을 것”이라고 강조했다.

Julia_mrno_03_Cxx_dot_jl

▲Cxx.jl를 적용한 C++코드와 줄리아를 함께 사용하는 예(사진 : 깃허브)

노우경 개발자는 미국에서 진행한 줄리아 컨퍼런스에 직접 참여할 만큼 줄리아에 대해 관심이 높다. 줄리아는 신생 언어가 가진 한계점도 가지고 있다. 프레임워크가 부족하고, 기업의 적용 사례도 적은 편이다. 대형 기업이 아닌 학교에서 시작된 언어라 글로벌 기업 등의 후원도 상대적으로 없다. 이러한 아쉬운 점에도 노우경 개발자는 왜 줄리아에 관심을 가질까?

“버전이 낮은 게 꼭 단점이라고 생각하지 않아요. 저는 오히려 언어의 변화 과정을 처음부터 볼 수 있어 더 흥미를 느끼는 것 같아요. 또 저는 언어를 공부할 때 ‘이 언어는 좋다 혹은 나쁘다’라고만 나눠 판단하지 않아요. 대신 해당 언어만의 개성을 파악하려 하죠. 이때 기존에 알고 있던 패러다임을 버리고, 아무것도 모른다고 가정하고 새 언어를 공부합니다. 줄리아도 마찬가지고요. 그러다보면 여러 언어들의 장·단점이 어느 순간 비교됩니다. 새로운 언어로 이것 저것 코딩하면서 공부하는 것을 좋아하지만, 실무에 무리해서 새로운 언어를 쓰려고 하진 않아요. 실무에 쓰지 않아도 다양한 아이디어를 배울 수 있거든요.”

현재 줄리아 페이스북 그룹에 가입한 회원은 100여명이다. 국내외에서 줄리아에 관심을 두는 사람들도 조금씩 늘고 있다. 노우경 개발자는 “현재 주로 C++이나 R를 이용해 수치를 계산하는 학계에서 줄리아를 활용하고 있다”라며 “올해 미국 줄리아 컨퍼런스에는 지난해보다 참가자가 2배가량 늘었다”라고 설명했다.

“줄리아는 기존 수치 해석이나 통계를 도와주는 언어보다 더 범용적이에요. 학계에 있는 분들 뿐만 아니라 개발자분들도 흥미를 느낄 수 있는 언어입니다. 한국어 관련 페이지도 있으니 관심이 있는 분들은 깃허브, 페이스북을 통해 많이 소통하셨으면 좋겠어요.”

※줄리아를 공부할 때 참고할 수 있는 자료들

※ 참고 문헌

네티즌의견(총 2개)