개발자

데이터 과학 판도를 바꾸는 3가지 프로그래밍 언어

Serdar Yegulalp | InfoWorld 2024.08.23
가장 강력하고 유연한 데이터 과학 툴은 프로그래밍 언어다. 불과 몇 줄의 코드라 해도 자체 솔루션이 데이터 과학 문제를 해결하는 유일한 방법인 경우가 종종 있다. 그러나 프로그래밍 언어는 마스터하는 데 시간이 걸리고, 기존 프로그래밍 경험, 문제의 범위, 실행 속도와 개발 속도 중 무엇을 더 중시하는 등을 포함해 언어의 선택에 영향을 미치는 요소도 많다.
 
ⓒ Getty Images Bank
 
이 기사에서는 현대 데이터 과학에 가장 큰 영향을 미치는 세 가지 프로그래밍 언어를 살펴본다. 이 세 언어는 강력한 기능과 속도뿐만 아니라 편의성, 써드파티 라이브러리를 통해 데이터 기반 작업을 구현하는 방법 측면에서도 중요하다.
 

파이썬

파이썬을 빼고 현대 데이터 과학을 논할 수는 없다. 몇 십년 전에 탄생한 언어지만 데이터 과학을 위한 사실상의 표준 언어가 되면서 지난 10년 동안 폭발적으로 인기가 높아졌다.
 
여기에는 파이썬의 두 가지 특징이 중요하기 작용한다. 첫째, 파이썬은 프로그램하기가 비교적 쉬운 언어다. 작동하는 소프트웨어 프로토타입을 빠르게 만들고 필요에 따라 점진적으로 성능을 개선해 나갈 수 있다. 다른 언어보다 파이썬을 사용할 때 더 빠르게 데이터 과학 프로젝트를 준비하고 실행할 수 있다. 또한 기존 데이터 과학 커뮤니티에서 파이썬 기반 프로젝트에 사용할 수 있는 빠른 템플릿이 많이 제공된다는 점도 도움이 된다.
 
두 번째 중요한 특징은 파이썬의 서드파티 라이브러리 생태계다. 어떤 문제에 직면하든 대부분의 경우 다른 사람이 개발해서 패키지로 만들어둔 해결책이 이미 있다. 이 생태계에는 수치 계산 라이브러리(넘파이, 판다스, 폴라스), 그래프 및 플롯 툴(보케, 플로틀리), 재현 가능한 작업을 위한 노트북 환경(주피터), 머신 러닝 및 AI 툴킷(파이토치), 분석 툴(덕DB) 등 데이터 과학을 위한 유용한 툴이 넘칠 만큼 많다.
 
다만 높은 인기와 매력에도 불구하고 일부 데이터 과학 애플리케이션의 개발과 배포를 어렵게 하는 단점도 존재한다.
 
파이썬에는 파이썬 애플리케이션을 독립적인 프로그램으로 배포하기 위한 기본 메커니즘이 없다. 파이썬 라이브러리를 작성한다면 이 라이브러리를 패키지화해서 파이PI를 통해 다른 사용자에게 배포할 수 있다. 그러나 이 말은 다른 사용자가 이 코드를 사용하기 위해 파이썬 환경을 설정하는 방법을 알아야 한다는 것을 의미한다. 파이썬 경험이 없는 사람이 간단히 다운로드해서 실행할 수 있도록 파이썬 프로그램을 패키지화하는 것은 훨씬 더 어렵다. 물론 불가능하지는 않다. 다만 어렵고, 파이썬 툴체인에서 기본적으로 지원되지 않는다.
 
자신이 만든 파이썬 툴을 다른 사람들이 사용할 수 있도록 리패키징하려는 데이터 과학자에게 선택지는 한계가 있다. 다른 사람들이 파이썬을 잘 안다고 전제하고 라이브러리로 배포하거나(파이썬을 모르는 사람들도 있음), 웹 인터페이스를 통해 배포하거나(항상 가능한 방법은 아님), 도커와 같은 컨테이너 시스템을 통해 배포하거나(이 방법 역시 다른 사람에게 익숙하지 않을 수 있음), 서드파티 툴을 사용해서 앱 및 라이브러리와 함께 파이썬 런타임을 패키징하는 방법이 있다(안정성이 보장되지 않음).
 
또 다른 단점은 네이티브 파이썬 코드의 속도다. CPU 기반 계산을 수행할 때 C, 러스트, 줄리아 또는 다른 언어에 비해 훨씬 더 느리다. 즉, 고성능 파이썬 코드는 일반적으로 파이썬 자체로 작성되지 않아서 사용자와 사용자가 수행하는 작업 사이에 가외의 추상화 수준이 들어갈 수밖에 없다. 네이티브 파이썬의 속도를 높이기 위한 작업이 진행 중이지만 빠른 시일 내에 머신 네이티브 코드와 같은 정도의 속도를 낼 가능성은 높지 않다.
 

줄리아

2012년에 처음 출시된 줄리아 언어는 데이터 과학자를 위해 만들어진 언어다. 줄리아를 만든 사람들은 파이썬만큼 다루기 쉬우면서 C 또는 포트란만큼 빠르고, 동시에 두 가지 이상의 언어로 작업하지 않아도 최선의 결과를 얻을 수 있는 언어를 목표로 했다.
 
줄리아의 핵심은 LLVM 컴파일러 시스템을 통한 "Just-In-Time", 즉 JIT 컴파일되는 머신 네이티브 코드다. 줄리아 코드는 파이썬 구문만큼 간소하므로 쉽게 작성해서 빠르게 결과를 얻을 수 있다. 처음에는 컴파일러가 형식을 추론하도록 한 다음 나중에 형식 주석을 제공해 성능을 높일 수 있다.
 
줄리아의 패키지 모음에는 일반적인 수학 함수(예를 들어 선형 대수 또는 행렬 이론), AI, 통계, 병렬 컴퓨팅 또는 GPU 기반 컴퓨팅 작업을 위한 툴 등 대부분의 일반적인 데이터 과학 또는 분석 작업을 위한 라이브러리가 포함돼 있다. 이러한 패키지 중 다수는 네이티브 줄리아로 작성됐지만 텐서플로우와 같은 잘 알려진 서드파티 라이브러리를 활용하기도 한다. 또한 공유 라이브러리에 기존 C 또는 포트란 코드가 있는 경우 최소한의 오버헤드로 줄리아에서 직접 이를 호출할 수 있다.
 
데이터 과학자는 빠르게 코드를 작성하고 공유하기 위해 인터랙티브 주피터 노트북 환경을 사용한다. I줄리아(IJulia) 패키지는 주피터와 주피터랩 IDE에 줄리아 코드 지원을 추가한다.
 
줄리아를 사용할 때의 단점은 무엇일까? 한 가지 문제는 파이썬의 중대한 제약 중 하나와 동일하다. 줄리아 런타임이 없는 다른 사람이 사용할 수 있도록 줄리아 프로그램을 쉽게 번들로 만들 수 있는 방법이 아직 없다. 다양한 임시방편이 존재하지만 재배포 가능한 앱을 만들기 위한 전체 워크플로우를 처리하는 하나의 "만능" 솔루션은 없다.
 
또 다른 문제는 줄리아를 배우는 과정에서 일찍 직면하는 "첫 X까지의 시간" 문제(첫 플롯까지의 시간, 줄여서 "TTFP"라고도 함)에 있다. 줄리아는 JIT 컴파일되므로 프로그램이 처음 실행될 때의 속도는 이후 실행에 비해 훨씬 더 느릴 수 있다. 숙련된 줄리아 사용자는 첫 실행 지연을 줄이기 위한 툴과 기법을 빠르게 학습한다.
 
세 번째 잠재적인 장애물은 다른 언어에서는 코어 라이브러리에 포함된, 일반적으로 사용되는 몇 가지 요소가 줄리아에서는 써드파티 항목으로만 제공된다는 점에 있다. 예를 들어 파이썬의 pathlib 라이브러리는 객체 지향적인 파일 경로 처리 방법을 제공한다. 줄리아에서 경로는 기본적으로 문자열로 처리되기 때문에 몇 가지 일반적인 경로 연산이 필요 이상으로 복잡해진다.
 

러스트

요즘 전반적으로 가장 인기 있는 새로운 언어 중 하나인 러스트는 데이터 과학 분야에서 입지를 높이는 중이다. 개발자는 러스트를 사용하면 실행 속도가 빠르고 진정한 병렬 처리를 사용하며 메모리에 안전하고 많은 버그를 피해가는 데이터 과학 툴을 만들 수 있다. 모두 데이터를 대규모로 다룰 때 중요한 특징이다.
 
많은 데이터 과학자가 러스트로 개발된 툴을 사용해본 적이 있을 것이다. 예를 들어 데이터프레임을 위한 폴라스 라이브러리는 러스트로 작성됐으며 파이썬을 포함한 다른 많은 언어에서 사용 가능하다. 그러나 러스트의 네이티브 패키지 컬렉션("크레이트(crate)"라고 함)을 사용하면 해당 언어에서 바로 데이터 과학 작업을 할 수 있다. ndarray 크레이트는 파이썬의 넘파이와 비슷한 강력한 행렬 수학 툴을 제공한다. plotters 크레이트는 차트와 그래프를 그린다. evcxr_jupyter 프로젝트는 노트북 환경에서 러스트를 사용하기 위한 주피터 커널을 제공한다.
 
러스트 프로젝트에서 재배포 가능 바이너리 생성하기는 파이썬이나 줄리아를 사용할 때보다 쉬우며 이는 데이터 과학에서 큰 장점이다. 러스트는 프로젝트만이 아니라 데이터 과학 툴(예를 들어 폴라스)을 더 쉽게 만들 수 있게 해준다.
 
정확성과 메모리 안전성에 대한 러스트의 고집은 가치 있는 특징이면서 가장 큰 단점이기도 하다. 파이썬, 그리고 가끔 줄리아가 실행 속도를 내주고 개발 속도를 얻는다면 러스트는 그 반대다. 러스트는 파이썬이나 줄리아보다 배우기가 어렵고 러스트 프로그램을 작성하는 데는 파이썬이나 줄리아 프로그램보다 더 오랜 시간이 걸릴 수 있다.

이러한 이유로 러스트는 단기간에 프로토타입을 만들어야 하는 프로젝트에는 적합하지 않고, 정확성과 안전성이 더 중요한 프로젝트에 잘 맞는다. 러스트의 안전 기능은 데이터 과학 라이브러리 또는 공개 애플리케이션을 개발하는 데 이상적이지만 내부 전용으로 사용할 프로젝트에는 최선의 선택이 아닐 수 있다.
 

결론

데이터 과학 용도로 파이썬을 선택해서 잘못될 일은 거의 없다. 가장 빠르거나 재배포하기가 가장 쉬운 솔루션이 되기 위해서는 다른 솔루션에 비해 더 많은 작업이 필요할 수 있지만 지원 범위가 넓고 전체적인 성능도 우수하기 때문이다.

줄리아는 처음부터 데이터 과학을 위해 만들어졌고 전체적으로 더 적은 양의 작업으로 더 빠른 속도를 약속하며 실제로 그 약속을 실현하지만, 독립족인 줄리아 프로그램을 재배포하기가 어려운 단점이 있다. 러스트의 속도와 정확성은 최고 수준이고 그래서 많은 일반적인 데이터 과학 툴에서 선택하는 언어다. 그러나 빠른 반복 또는 빠른 프로토타이핑이 필요한 프로젝트에는 최선의 선택이 아니다.
editor@itworld.co.kr 
Sponsored

회사명 : 한국IDG | 제호: ITWorld | 주소 : 서울시 중구 세종대로 23, 4층 우)04512
| 등록번호 : 서울 아00743 등록발행일자 : 2009년 01월 19일

발행인 : 박형미 | 편집인 : 박재곤 | 청소년보호책임자 : 한정규
| 사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.