Languages
[Julia] Julia 란? / 머신러닝의 미래
MOONCO
2023. 9. 6. 22:09
Julia 란?
MIT 출신 개발자가 만든
수학 계산을 쉽게 할수 있도록 만들어진 프로그래밍언어
특징
수학 식 작성이 쉽다.
Python과 합쳐서 사용가능하고, 더 빠르다. (C,Rust보다 약간 느림)
수학식을 작성하는데 C,Rust 보다 더 적은 코드가 필요하다.
C의 속도와, Python의 쉬움 그 중간에 위치하고,
위의 특징 때문에, 머신러닝에 특화되어있다.
신기한 점
모든 유니코드를 이름으로 지정할 수 있다.
# 변수
α ̂⁽²⁾ = 10
안녕하세요 = "Hello"
수학식 처럼 변수를 만들 수 있다 (선언)
a = b = c = 11 # 셋다 11
함수 계산 속도를 측정할 수 있다.
자신이 작성한 코드와, 다른 코드의 성능 비교가능
@time println(a)
# 10
# 0.020050 seconds (8.13 k allocations: 598.283 KiB, 99.28% compilation time)
함수가 실제로 어떻게 컴파일되는지, 확인 할 수 있다 (어셈블리)
똑같은 기능을 하지만, 작성 내용이 다른 (알고리즘이 다른) 코드의
성능이 다른, 그 이유를 찾을 수 있다
( 목적에 맞는 알고리즘 선택 가능 )
julia> @code_native println(a)
.section __TEXT,__text,regular,pure_instructions
.build_version macos, 13, 0
.globl _julia_println_92 ; -- Begin function julia_println_92
.p2align 2
_julia_println_92: ; @julia_println_92
; ┌ @ coreio.jl:4 within `println`
.cfi_startproc
; %bb.0: ; %top
sub sp, sp, #96
stp x22, x21, [sp, #48] ; 16-byte Folded Spill
stp x20, x19, [sp, #64] ; 16-byte Folded Spill
stp x29, x30, [sp, #80] ; 16-byte Folded Spill
.cfi_def_cfa_offset 96
.cfi_offset w30, -8
.cfi_offset w29, -16
.cfi_offset w19, -24
.cfi_offset w20, -32
.cfi_offset w21, -40
.cfi_offset w22, -48
mov x19, x0
movi v0.2d, #0000000000000000
stp q0, q0, [sp]
mov x8, #60944
movk x8, #33980, lsl #16
movk x8, #1, lsl #32
mov w0, #261
blr x8
mov x20, x0
mov w8, #8
str x8, [sp]
ldr x8, [x0]
str x8, [sp, #8]
mov x8, sp
str x8, [x0]
mov x8, #57136
movk x8, #8712, lsl #16
movk x8, #1, lsl #32
ldr x21, [x8]
str x21, [sp, #24]
Lloh0:
adrp x8, _ijl_box_int64@GOTPAGE
Lloh1:
ldr x8, [x8, _ijl_box_int64@GOTPAGEOFF]
mov x0, x19
blr x8
str x0, [sp, #16]
stp x21, x0, [sp, #32]
Lloh2:
adrp x8, _ijl_apply_generic@GOTPAGE
Lloh3:
ldr x8, [x8, _ijl_apply_generic@GOTPAGEOFF]
add x1, sp, #32
mov x0, #46896
movk x0, #7523, lsl #16
movk x0, #1, lsl #32
mov w2, #2
blr x8
ldr x8, [sp, #8]
str x8, [x20]
ldp x29, x30, [sp, #80] ; 16-byte Folded Reload
ldp x20, x19, [sp, #64] ; 16-byte Folded Reload
ldp x22, x21, [sp, #48] ; 16-byte Folded Reload
add sp, sp, #96
ret
.loh AdrpLdrGot Lloh2, Lloh3
.loh AdrpLdrGot Lloh0, Lloh1
.cfi_endproc
; └
; -- End function
.subsections_via_symbols
julia>
책 추천
수학 모델 적용한 프로그래밍
관련영상
Julia 탄생 스토리
반응형