시작하기

줄리아의 설치는 어렵지 않다. 미리 만들어진 실행파일을 사용하거나, 소스로부터 직접 컴파일하는 두 방법이 있다. https://julialang.org/downloads/에서 알려주는 방법에 따라 Julia를 다운로드하고 설치하면 된다.

Julia 대화형 실행 환경(REPL)은 Julia를 가장 쉽게 익힐 수 있는 수단이다. 대화형 실행 환경은 단순히 Julia 실행파일을 더블 클릭하거나, 명령창에 julia를 입력해 실행할 수 있다.

$ julia

               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.7.0-DEV.1006 (2021-04-24)
 _/ |\__'_|_|_|\__'_|  |  Commit 248c02f531* (1 day old master)
|__/                   |


julia> 1 + 2
3

julia> ans
3

대화형 실행 환경을 종료하기 위해서는 CTRL-D(컨트롤 키와 d 키를 함께 누른다) 를 누르거나 exit()를 입력한다. 대화형 실행 환경을 실행하면, 위와 같이 julia 배너가 보여지고, 커서창이 사용자의 입력을 기다리며 깜빡이고 있다. 사용자가 1 + 2와 같은 표현식을 입력한 뒤 엔터 버튼을 누르면 Julia는 표현식을 계산하고 결과를 보여준다. 만약 사용자가 입력한 표현식이 세미콜론(;)으로 끝난다면, 대화형 실행 환경은 결과를 화면에 보여주지 않는다. 대신 ans 라는 변수가 가장 마지막으로 계산된 표현식의 결과를 저장하고 있으므로 이를 활용할 수 있다. ans 변수는 대화형 실행 환경에서만 존재하며, 다른 방식으로 동작하는 Julia 코드 상에서는 나타나지 않는다.

file.jl라는 소스 파일에 저장되어 있는 코드를 실행하기 위해서는include("file.jl")을 입력하면 된다.

대화형 실행 환경을 이용하지 않고 파일에 저장되어 있는 코드를 실행하기 위해서는, 소스 파일 이름을 julia 명령어의 첫번째 매개 변수로 넣어서 실행한다.

명령어:

$ julia script.jl arg1 arg2...

예제와 같이 julia 실행 명령 뒤에 오는 매개변수들은 전역 상수 ARGS라고 불리우는 script.jl라는 프로그램의 명령줄 인자로 작동한다. 이 프로그램의 이름은 전역 상수 PROGRAM_FILE 에도 설정된다. 또한 ARGS는 이 뿐만이 아니라-e 옵션을 통해서 julia 스크립트를 실행할 때도 설정할 수 있음을 알 필요가 있다. 그러나 이 경우에는 PROGRAM_FILE 은 아무것도 설정되지 않은 채로 실행될 것이다. (아래의 julia 도움말을 보도록 하자.) 예를 들어, 단순히 스크립트에 주어진 명령줄 인자를 출력할 때는 다음과 같이 입력하면 된다.

$ julia -e 'println(PROGRAM_FILE); for x in ARGS; println(x); end' foo bar

foo
bar

아니면 저 코드를 스크립트 파일에 넣고 실행시켜도 가능하다.

$ echo 'println(PROGRAM_FILE); for x in ARGS; println(x); end' > script.jl
$ julia script.jl foo bar
script.jl
foo
bar

-- 구분자는 명령어와 줄리아에 넘겨줄 인자를 구분하는데 사용한다.

$ julia --color=yes -O -- foo.jl arg1 arg2..

See also Scripting for more information on writing Julia scripts.

Julia는 -p 옵션이나 --machine-file 옵션을 이용하여 병렬 환경에서 실행시킬 수 있다. -p n 옵션은 n개의 worker 프로세스를 생성하지만, --machine-file file 옵션은 file의 각 행에 지정된 노드마다 worker를 생성한다. file 에 지정된 노드(machine)들은 ssh 로그인을 통해 패스워드가 필요없이 실행할 수 있어야 하며, Julia는 현재 호스트와 같은 경로에 설치가 되어 있어야 한다. file 에 작성되는 노드는 [count*][user@]host[:port] [bind_addr[:port]] 와 같은 형식으로 작성한다. user 는 현재 user id를 나타내고, port 는 기본 ssh port, count 는 각 노드당 생성하는 worker의 개수 (기본값 : 1) bin-to bind_addr[:port] 은 선택적인 옵션으로 다른 worker들이 현재의 worker로 연결하기 위해 필요한 특정 IP 주소와 포트를 지정한다.

만약 Julia가 실행할 때마다 실행되는 코드가 있다면, 그 코드를 ~/.julia/config/startup.jl 에 넣으면 된다.

$ echo 'println("Greetings! 你好! 안녕하세요?")' > ~/.julia/config/startup.jl
$ julia
Greetings! 你好! 안녕하세요?

...

perlruby 와 같이, Julia 코드를 실행하고 옵션을 지정하는 방법은 다음과 같이 여러가지가 있다.

julia [switches] -- [programfile] [args...]
스위치설명
-v, --version버전 정보를 표시한다
-h, --helpcommand-line 옵션(이 메세지)을 표시한다
--project[={<dir>|@.}]Set <dir> as the home project/environment. The default @. option will search through parent directories until a Project.toml or JuliaProject.toml file is found.
-J, --sysimage <file>주어진 시스템 이미지 파일로 실행한다
-H, --home <dir>julia 실행파일의 위치를 지정한다
--startup-file={yes|no}~/.julia/config/startup.jl 를 불러온다
--handle-signals={yes|no}Julia의 기본 시그널 핸들러를 켜거나 끈다
--sysimage-native-code={yes|no}시스템 이미지의 기존 코드 사용/사용하지 않는다
--compiled-modules={yes|no}모듈의 사전 증분 컴파일을 활성화/비활성화 한다
-e, --eval <expr><expr>를 실행만 한다
-E, --print <expr><expr>를 실행하고 결과를 표시한다
-L, --load <file><file>을 모든 프로세서에 로드한다
-p, --procs {N|auto}N개의 로컬 worker 프로세스를 추가로 생성한다; auto는 로컬 CPU 스레드 (논리적 코어) 만큼의 worker 프로세스를 생성한다
--machine-file <file><file>에 나열된 호스트에서 worker 프로세스를 실행한다
-i대화형 모드; PEPL을 돌리며 ininteractive()는 true이다
-q, --quiet깔끔히 시작하기: 배너 없이, REPL 경고도 안 보여준다
--banner={yes|no|auto}시작 배너 사용/사용하지 않는다
--color={yes|no|auto}모든 텍스트에 색상을 표시하거나 표시하지 않는다
--history-file={yes|no}작업내역을 저장하거나 로드한다
--depwarn={yes|no|error}문법과 함수가 폐기됐다는 경고를 활성화/비활성화 한다 (error는 경고를 에러로 바꾼다)
--warn-overwrite={yes|no}메소드 오버라이딩 경고를 활성화/비활성화 한다
-C, --cpu-target <target><target>까지의 CPU 기능만을 사용한다; 사용 가능한 옵션을 보려면 help로 설정
-O, --optimize={0,1,2,3}코드 실행시간에 관련된 최적화를 실행한다 (지정되지 않을 경우 2단계 실행, 레벨 이외의 값을 사용할 경우 3단계 실행)
-g, -g <level>디버그 정보 생성 수준을 활성화/비활성화 합니다 (지정되지 않을 경우 레벨 1, 레벨 이외의 값을 사용할 경우 레벨 2)
--inline={yes|no}@inline으로 선언된 함수를 덮어쓰는 경우를 포함해서, 인라이닝을 허용할지 결정한다
--check-bounds={yes|no}배열의 경계 체크를 항상 실행/생략한다 (변수 선언을 무시)
--math-mode={ieee,fast}unsafe 부동소수점 최적화를 끄거나 켠다 (@fastmath 선언을 오버라이드한다)
--code-coverage={none|user|all}소스 코드 라인의 실행 횟수를 기록한다
--code-coverage--code-coverage=user와 같다
--track-allocation={none|user|all}각 소스 코드 라인에 의해 할당되는 바이트 수를 기록한다
--track-allocation--track-allocation=user와 같다
Julia 1.1

In Julia 1.0, the default --project=@. option did not search up from the root directory of a Git repository for the Project.toml file. From Julia 1.1 forward, it does.

참고 자료

줄리아 웹사이트의 배우기 페이지에 사용자가 보면 유용한 자료를 엄선하여 모아두었다.