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>
 
 
 
 
 
 
 
 
 

 

책 추천

 

수학 모델 적용한 프로그래밍

 

Math programming with Julia

 

www.man.dtu.dk

 

관련영상

 

Julia 탄생 스토리

 

 
반응형