이전 글 '데이터 사이언스를 위한 최고의 프로그래밍 언어' 첫 번째 편에서는 빅데이터 분야에서 가장 널리 사용되는 7가지 언어를 소개했습니다.
이번 2편에서는 나머지 절반의 목록을 다룹니다. 이번에 소개할 언어들은 앞선 편에서 다룬 언어들에 비해 상대적으로 신생 언어들이지만, 일부는 이미 Java, Hadoop, R, SQL에 버금가는 인기를 얻었으며, 또 다른 일부는 독보적인 기능 덕분에 시장에서 확고한 입지를 구축하고 있습니다.
데이터 사이언스를 위한 프로그래밍 언어 목록
1. Python(파이썬)
파이썬은 빅데이터 처리에 필요한 대규모이자 복잡한 데이터 세트를 다루기 위한 최고의 오픈소스 프로그래밍 언어 중 하나입니다. 객체 지향 언어를 사용하는 개발자들 사이에서 특히 인기가 높으며, R보다 직관적이고 배우기 쉽다는 장점이 있습니다. 최근 몇 년간 플랫폼이 비약적으로 성장하면서 이제는 R에 필적하는 통계 분석 능력도 갖추게 되었습니다. 파이썬의 가장 큰 강점은 무엇보다도 뛰어난 가독성과 코드의 간결함입니다.
Pinterest나 Instagram 같은 현대적인 애플리케이션도 파이썬으로 개발되었습니다. 전통적인 객체 지향 언어로서 생산성과 가독성을 중시하는 파이썬은 신경망을 다루는 빅데이터 프로젝트에도 최적의 선택입니다.
2. MATLAB
MATLAB은 행렬(matrix) 작업이 많은 데이터 사이언스 업무에 가장 적합한 프로그래밍 언어 중 하나입니다. 오픈소스는 아니지만 수학적 모델링과 데이터 수집에 탁월한 성능을 발휘하기 때문에 학계에서 널리 사용되고 있습니다. MATLAB은 처음부터 행렬 연산을 위해 설계된 언어인 만큼 통계 모델링과 알고리즘 개발에 매우 좋은 선택지입니다. 선형대수 계산, 시뮬레이션, 행렬 연산이 포함된 데이터 사이언스 작업에도 유용하게 활용됩니다.
다만 MATLAB의 단점은 코드 이식성(portability)에 제약이 있다는 점입니다.
3. Scala(스칼라)
스칼라는 객체 지향 프로그래밍과 함수형 프로그래밍이 융합된 언어로, 견고하고 확장 가능한 데이터 사이언스 애플리케이션을 구축하는 데 도움을 줍니다. Java 및 JavaScript와 함께 사용할 수 있으며, 여러 언어의 장점을 하나의 컴팩트하고 사용하기 쉬운 도구 안에 담아냈습니다.
스칼라는 Java 기반으로 만들어졌으며 컴파일된 코드가 JVM 생태계에서 실행되기 때문에, 어떤 플랫폼에서든 구동될 수 있어 처음부터 강력하고 유연합니다. 다만 데이터 사이언스에 스칼라를 활용하려면 추상화와 관련된 추가적인 사고력이 조금 필요합니다. 뛰어난 확장성과 고성능 수치 연산 기능 덕분에 스칼라는 데이터 사이언스를 위한 최고의 언어 중 하나로 자리매김했습니다.
4. Hive QL
Apache Hive는 Hadoop 위에 구축된 데이터 웨어하우스 인프라로, 데이터 요약, 쿼리, 분석 기능을 제공합니다. Hive QL은 Hive의 쿼리 언어로서 SQL과 유사한 인터페이스를 통해 Hadoop과 통합된 다양한 데이터베이스 및 파일 시스템에 저장된 데이터를 조회할 수 있습니다. 단, Hive는 행(row) 단위의 삽입, 수정, 삭제는 지원하지 않습니다.
Hive QL은 Apache Hadoop은 물론 Amazon S3 같은 분산 스토리지 플랫폼 위에서 동작하도록 설계되었습니다. Hive에서 말하는 데이터베이스란 본질적으로 테이블들의 카탈로그 혹은 네임스페이스에 불과합니다. Hive를 활용하면 저수준의 Java API로 쿼리를 직접 구현하지 않고도 SQL의 필요한 추상화 계층을 통해 Hive QL 쿼리를 Java API 위에 손쉽게 실행할 수 있습니다.
5. Julia(줄리아)
줄리아는 데이터 언어 중에서는 비교적 신생 언어입니다. 현재 가장 많이 선택되는 언어는 R, Python, Java지만, 여전히 채워야 할 공백이 존재합니다. 등장한 지 몇 년 되지 않았음에도 줄리아는 훌륭한 대안으로 자신의 가치를 입증하고 있습니다. 줄리아는 고수준(high-level) 언어면서도 놀랄 만큼 빠르고 표현력이 뛰어난 것이 특징입니다.
줄리아의 핵심 기능들이 언어 자체에 내장되어 있기 때문에 실시간 빅데이터 스트림 처리에 특히 적합합니다. 확장 기능과 라이브러리 생태계는 아직 오래된 언어들만큼 성숙하지 않지만, 주요 함수들은 대부분 제공되고 있으며 꾸준히 새로운 기능이 추가되고 있습니다.
6. Pig Latin
Pig Latin 역시 데이터 사이언스를 위한 최고의 프로그래밍 언어 중 하나로, Hadoop과 밀접하게 연관된 오픈소스 시스템입니다. Pig Latin은 Apache Pig 플랫폼의 언어 계층을 구성하며, 대규모 분산 데이터 세트를 정렬하고 수학적 함수를 적용하는 데 사용됩니다.
Pig는 MapReduce, Apache Tez, Apache Spark 등의 방식으로 Hadoop 잡(job)을 실행할 수 있습니다. 또한 사용자 정의 함수(UDF)를 통해 확장이 가능하며, 이러한 함수는 Java, Python, JavaScript, Ruby, Groovy처럼 지원되는 어떤 언어로든 작성할 수 있습니다. 작성된 함수는 Pig Latin 코드에서 바로 호출하여 사용할 수 있습니다.
7. GO(고)
Go는 2007년 Google이 개발한 자유롭고 오픈소스인 프로그래밍 언어입니다. 데이터 사이언스 세계에는 신생 언어지만, 그 단순함 덕분에 빠르게 주목받고 있습니다. 원래 통계 컴퓨팅을 목적으로 개발된 것은 아니었지만, 뛰어난 속도와 익숙한 문법 덕분에 곧바로 메인스트림에 진입하게 되었습니다.
Go의 문법은 C를 기반으로 하고 있어 개발자들의 도입에 큰 도움이 되었습니다. 또한 Go는 다른 프로그래밍 언어로 작성된 루틴 프로그램을 호출할 수 있어, 예를 들어 Python으로 작성된 코드를 통해 Go 자체에서 제공하지 않는 기능까지 구현할 수 있습니다.
지금까지 소개한 두 편의 글을 통해 빅데이터 조직에서 활용할 수 있는 최고의 데이터 언어 15가지를 살펴보았습니다.
이것으로 기능 계층 아키텍처(Functional Layer Architecture) 시리즈를 마무리하지만, 빅데이터의 세계는 끝나지 않습니다. 빅데이터에 대해서는 매일 새로운 미스터리가 밝혀지고 있습니다. 모든 도구를 학습했다 해도 빅데이터 분야에서 아직 알아야 하고, 이해해야 하며, 분석하고, 익혀서 달성해야 할 것들은 산더미처럼 남아 있습니다.