본문 바로가기
Programming

Julia 프로그래밍 언어 소개

by 드로니뚜벅이 2023. 6. 16.

 줄리아(Julia, julialang.org)는 MIT의 앨런 에델만(Alan Edelman) 지도 아래 응용 컴퓨팅 그룹에서 개발한 프로그래밍 언어입니다. 줄리아(Julia)는 2009년 앞서 말한 앨런 에델만 4인 팀에 의해 개발되고 2012년 일반에 공개되었습니다. 줄리아는 고성능 수치 분석 및 계산 과학을 위해 설계된 프로그래밍 언어입니다. 간단한 구문으로 머신러닝, 데이터 마이닝, 대규모 선형 대수, 분산 및 병렬 계산 등 복잡한 계산을 C언어 수준으로 빠르게 처리할 수 있는 것이 장점입니다.

줄리아는 파이썬과 여타 언어, 그리고 과학 컴퓨팅 및 데이터 프로세싱에 쓰이는 애플리케이션의 단점에 대처하도록 의도되었습니다. 줄리아 공동창시자들은 2012년 발표한 논문에서 줄리아를 다음과 같이 정의했습니다.

A Fast Dynamic Language for Technical Computing.

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

 

현재 줄리아는 1.9버전 까지 나온 상태이며 깃허브에서 무료로 다운받아 사용할 수 있습니다. 윈도, 맥OS, 리눅스, 프리BDS를 지원합니다.

 

줄리아(Julia) 장점

줄리아는 원래 과학 및 수치 연산을 위해 설계되었다. 따라서 줄리아가 연관 응용 분야에서 여러 유리한 기능을 가진 것은 새삼스러울 게 없다.

  • 빠르다. 줄리아는 JIT 컴파일과 유형 선언문에 의해 순수하고 최적화되지 않은 파이썬에 비해 언제나 훨씬 월등하다. 파이썬은 외부 라이브러리, 써드파티 JIT 컴파일러(PyPy), 사이썬(Cython) 같은 툴에 의한 최적화로 더 빨라질 수 있다. 그러나 줄리아는 처음부터 더 빠르도록 설계되었다.
  • 수학 친화적 구문으로 만들어졌다. 줄리아는 매트랩, R, 매스매티카(Mathematica), 옥타브(Octave) 같은 과학 연산 언어 및 환경을 이용하는 사람을 주요 대상으로 한다. 줄리아의 수학 연산 구문은 컴퓨팅 세계 외부에서 작성된 수학 공식처럼 보인다. 따라서 프로그래머가 아닌 사람이 선택하기가 더 용이하다.
  • 자동 메모리 관리 기능이 있다. 파이썬과 마찬가지로 줄리아는 메모리를 할당하고 비우는 일로 이용자에게 부담을 주지 않는다. 나아가 가비지 컬렉션(garbage collection)에 대한 수동 제어 수단을 제공한다. 따라서 줄리아로 전환하더라도 파이썬이 주는 일반적 편의를 놓치거나 하지는 않는다.
  • 줄리아는 우월한 병렬성을 제공한다. 수학 및 과학 컴퓨팅은 일정 기기, 특히 다중 코어 상에서 전체 리소스를 활용할 수 있을 때 성장한다. 파이썬과 줄리아는 병렬 연산을 수행할 수 있다. 그러나 파이썬의 병렬 연산 방식은 스레드나 노드 사이의 데이터 직렬화 및 역직렬화를 필요로 한다. 반면 줄리아의 병렬화는 한층 정교하다. 아울러 줄리아의 병렬화 구문은 파이썬보다 덜 무거워서 사용하기가 더 용이하다.
  • 줄리아는 자체적인 네이티브 머신러닝 라이브러리를 개발 중이다. 플럭스(Flux)는 줄리아의 머신러닝 라이브러리이고, 보편적 응용 분야를 위한 여러 모델 패턴을 보이고 있다. 전적으로 줄리아로 작성됐기 때문에 이용자는 필요할 때마다 이를 수정할 수 있고, 또한 줄리아의 독창적인 적시 컴파일링에 의해 프로젝트를 전체적으로 최적화할 수 있다. 

 

 

참고사이트 & 출처

 

 

'Programming' 카테고리의 다른 글

Jetty - Java Servlet Container  (0) 2023.06.22
프로그래밍 언어 순위  (0) 2023.06.02
Lua 기본 문법 익히기 (1)  (0) 2022.11.29
YAML & yaml-cpp 라이브러리 설치  (0) 2022.09.05
protobuf 사용하기  (0) 2022.05.09