Julia는 2012년 MIT에서 발표된 고성능 과학 컴퓨팅 언어로, Python의 생산성과 C의 속도를 목표로 설계되었다. JIT 컴파일과 멀티플 디스패치가 핵심이며, 수치 해석, ML, 데이터 과학에 활용된다.
핵심 특성
| 특성 | 설명 |
|---|
| JIT 컴파일 | LLVM 기반, C와 유사한 속도 |
| 멀티플 디스패치 | 모든 인자 타입 기반 메서드 선택 |
| 동적 타입 | 타입 추론으로 최적화 |
| Julia-to-C 인터페이스 | 네이티브 C 라이브러리 호출 |
| 병렬/분산 | 내장 병렬 처리 지원 |
기본 문법
julia
# 타입 어노테이션 (선택적)
function factorial(n::Int)::Int
n == 0 ? 1 : n * factorial(n - 1)
end
# 멀티플 디스패치
function area(shape::Circle) = π * shape.radius^2
function area(shape::Rectangle) = shape.width * shape.height
# 벡터화 연산 (브로드캐스팅)
x = [1.0, 2.0, 3.0]
y = x .^ 2 .+ 1.0 # [2.0, 5.0, 10.0]
# 배열 컴프리헨션
squares = [x^2 for x in 1:10 if iseven(x)]
성능 비교
julia
# Fibonacci (재귀) 성능 테스트
function fib(n)
n <= 1 ? n : fib(n-1) + fib(n-2)
end
using BenchmarkTools
@benchmark fib(40)
# Julia: ~0.4초 vs Python: ~30초
과학 컴퓨팅 생태계
julia
using Flux # 딥러닝
using DifferentialEquations # 미분방정식
using Plots # 시각화
using DataFrames # 데이터프레임
using Turing # 확률적 프로그래밍
관련 개념