Juila - Julia as a Second Language chapter 1
Julia as a Second Language chapter 1를 읽고 정리



image


Chapter 1

Chapter 1에서는 줄리아가 어떤 언어인지, 왜 만들어졌는지, 줄리아 프로그래밍 언어를 사용하면 어떤 이점이 있는지 설명합니다.


1 Why Julia?

본 1장은 다음 내용을 중심으로 다룹니다.


정리하면 다음과 같습니다.


1.1 What is Julia?

저자는 Julia가 general-purpose, multi-platform programming language라고 소개합니다. 하지만, 위에서 Julia가 그렇게 훌륭하다면, 왜 아직도 사람들은 C언어와 Python 프로그래밍 언어를 사용하는 걸까? 라는 질문에 패키지, 커뮤니티, 라이브러리 등이 앞서 말한 언어들에 비해 Juila는 아직 부족하다는 의미로 해석됩니다.

왜 저자는 Julia를 general-purpose, multi-platform programming language라고 소개한 것일까요?


1.1.1 Pros and cons of statically and dynamically typed languages

일반적으로 프로그래밍 언어는 크게 두가지로 나뉩니다.


In static languages, expressions have types; in dynamic languages, values have types.

—Stefan Karpinski Julia Creator


파이썬의 경우 인터프리터 방식을 통한 타입 검사와 동작을 모두 런타임에서 수행합니다. 다음은 파이썬의 add 함수의 예시입니다. 일일히 타입을 조건문을 통과하여 처리하기 때문에 수행 시간이 오래걸리게 됩니다.

def add(x, y):
    if isinstance(x, int) and isinstance(y, int):
        # 정수에 대한 처리
        return x + y
    elif isinstance(x, str) and isinstance(y, str):
        # 문자열에 대한 처리
        return x + y
    # 기타 타입에 대한 처리

반면, Julia는 런타임에서 just-in-time 컴파일을 통해 코드내에서 호출되는 부분만을 컴파일하여 최적화된 기계어 코드로 변환되고, multiple-dispatch는 해당 함수가 호출될때 작동하여, 함수의 인자에 알맞은 메소드를 선택하여 작업을 수행하게 됩니다.

julia> f(2.0, 3)
ERROR: MethodError: no method matching f(::Float64, ::Int64)

Closest candidates are:
  f(::Float64, !Matched::Float64)
   @ Main none:1

Stacktrace:
[...]

julia> f(Float32(2.0), 3.0)
ERROR: MethodError: no method matching f(::Float32, ::Float64)

Closest candidates are:
  f(!Matched::Float64, ::Float64)
   @ Main none:1

Stacktrace:
[...]

따라서 한줄한줄 코드를 모두 읽어야 하는 파이썬 인터프리터와는 다르게 Julia의 JIT 컴파일과 multiple-dispatch는 보다 빠르게 작업을 수행할 수 있습니다.


1.2 Julia combines elegance, productivity, and performance

filter(!isempty, readlines(filename)) # strip out empty lines
filter(endswith(".png"), readdir())   # get PNG files
findall(==(4), [4, 8, 4, 2, 5, 1])    # find every index of the number 4
### julia
print("Hello world")
### java
public class Main {
    public static void main(String[] args) {
        System.out.print("hello world");
    }
}

같은 “Hello World”를 출력하는 코드이지만, java에 비하여 julia는 매우 간단했습니다.


1.3 Why Julia was created


1.3.1 Scientists need the interactive programming that dynamically typed languages offer

image

image


1.3.2 Developers in other fields also need the interactivity a dynamically typed language offers


1.4 Julia’s higher performance solves the two-language problem

Julia walks like Python, runs like C.

—Popular saying in Julia community

You can do things in an hour that would otherwise take weeks or months.

—Michael Stumpf


1.5 Julia is for everyone


1.6 What can I build with Julia?


1.6.1 Julia in the sciences

I would be happier if Julia were the main language for AI.

—Peter NorvigAuthor of Artificial Intelligence, A Modern Approach


1.6.2 Nonscience uses of Julia

줄리아를 반드시 과학적인 영역에만 사용해야 하는 것은 아닙니다. 다른 관심사를 위한 다양한 패키지도 있습니다.


1.7 Where Julia is less ideal


1.8 What you will learn in this book


Summary