1.2. Запуск программ#

Программы в Julia можно запускать в интерактивном (REPL) или скриптовом режиме. Кроме того, есть возможность работать в ноутбуках.

  • Julia REPL хорошо подходит для изучения нового, получения помощи и установки библиотек. Его также удобно использовать как калькулятор.

  • Скриптовый режим позволяет запускать сохранённый ранее исходный код программ.

  • Работа в ноутбуках удобна для конспектов и экспериментов.

1.2.1. Интерактивный режим#

Знакомство языка начнём с интерактивного режима. Для этого необходимо запустить Julia REPL (Read-Evaluate-Print-Loop), Julia REPL также называют Julia терминалом.

В терминале необходимо набрать команду julia

% julia
               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.6.2 (2021-07-14)
 _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org/ release
|__/                   |

julia>

Строки до julia> это приветственное сообщение. Здесь есть ссылка на документацию к языку, команды для получения помощи и версия релиза.

Julia REPL обладает четыремя режимами работы

  • Интерпретатор;

  • Помощь;

  • Менеджер пакетов;

  • Командная оболочка.

Чтобы их отличать, в начале ввода появляется prompt-сообщение (например, julia>), а если терминал поддерживает цвета, то prompt-сообщения режимом окрашены по-разному.

При запуске REPL работает в режиме интерпретатора. Из него можно переключиться в другие режимы, а чтобы вернуться в режим интерпретатора из любого другого, нужно очистить строку (быстрее всего это сделать так: Ctrl+E, Ctrl+U) и нажать Backspace.

Чтобы выйти из REPL, нужно очистить строку и нажать Ctrl+D. Для прерывания команды используется стандартное сочетания Ctrl+C.

Ниже показано, для чего каждый режим используется.

В нём вы можете исполнять команды языка и переходить в другие режимы. Prompt-сообщение julia>.

julia> println("Hello, world")
Hello, world

julia>

Здесь можно получить помощь и документацию к коду. Переход по нажатию ?. Prompt-сообщение help?>.

julia> ?

help?> println
search: println printstyled print sprint isprint

  println([io::IO], xs...)

  Print (using print) xs followed by a newline. If io is not supplied, prints to stdout.

  ...

Посвящён работе c окружениями и сторонними пакетами [1]. Команда перехода ]. Prompt-сообщение (@v1.6) pkg>. Для знакомых с Python, этот режим обладает функционалом pip и virtualenv. Чтобы установить какую-то библиотеку, необходимо выполнить команду add <PackageName>.

julia> ]

(v1.6) pkg> help
  Welcome to the Pkg REPL-mode. To return to the julia> prompt, ...

В этом режиме можно работать с командной оболочкой, не выходя из Julia REPL. Команда перехода ;. Prompt-сообщение shell>.

julia> ;

shell> echo 'Привет, мир!'
Привет, мир!

1.2.2. Скриптовый режим#

Исходный код программы в Julia это текстовый файл, стандартное расширение .jl. Сохраняйте исходный код в UTF кодировке.

Чтобы опробовать, создайте текстовый файл с названием hello.jl с содержимым

using Random

maze_width = 50
maze_height = 10

for i in 1:maze_height
    println(join(rand(1:4) > 2 ? "+" : " " for i in 1:maze_width))
end

Программа запускается командой julia с указанием полного пути до файла с исходным кодом. Перейдите в терминале в директорию, где вы сохранили hello.jl и выполните команду julia hello.jl

% julia hello.jl
  + + ++++ +++ + + ++ +  +++++ + ++ + + +  + ++ ++
+ ++   + +++      +    + +  ++ +++++ +++ + + +    
 + ++     ++++++ + ++  ++ ++  + +  +++ + ++ + +++ 
 + + + ++++      +++ ++     +  +     + +   ++++ ++
 ++   ++   ++ +   + + + +++   ++   ++    ++ + + ++
 +        ++  +   ++ ++++    ++  + + + ++ ++  +  +
+     ++ ++ ++  +++   ++++  +   ++ + + +++++++   +
+  + + +++     + +         ++++++ ++++ +  + + + ++
+ +    ++  + ++++++    +  + + +  +++ +   +++      
+ + +  +  + ++++     + +++ ++++ + +  ++ ++ + ++ + 

У интерпретатора много полезных опций. Например, с опцией -i интерпретатор переходит в интерактивный режим после исполнения программы.

% julia -i hello.jl
 + +++ ++++ +++    +++ +++    + + +++++  +++   ++ 
+ +   ++ + + ++ +++ +  ++  ++   ++ +++      ++ +++
++++   +  + +      +   +++++  ++ +++   +++ +++++  
    +   +  ++ ++  + + + + ++ +   + ++ +    + + +++
+++ ++ + + + + +   ++++++   ++++ + ++    + +  +  +
+ ++    ++++ ++  ++++ +   ++     + ++    + +++ +++
+ +++ ++++ +++  ++ ++++  +    + + ++++++++     +  
 +  + +   +++ +   +   ++++ +++    + +++ +++     + 
++ +++++ + ++++    ++  ++    + +  ++ ++++++ ++ +++
    + +++++ + ++ + +++ ++++  +   + +++  +++ + ++++
               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.6.2 (2021-07-14)
 _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org/ release
|__/                   |

julia> maze_height
10

Редакторы кода

На момент 2023 года не существует специализированных IDE (Integrated Development Environment) для языка Julia. В целом, в них нет потребности.

Для данного курса вам достаточно редактора кода. Популярные редакторы: Visual Studio Code, vim (или его версии, например, neovim), Sublime Text и Notepad++. Если ранее вы не использовали редакторы, попробуйте Visual Studio Code.

Перечисленные редакторы расширяемы, т.е. имеют механизмы для установки дополнительного функционала. В случае Julia стоит установить подсветку синтаксиса, если в редакторе этот язык не распознаётся. Расширения для многих редакторов есть здесь. Для других редакторов механизм установки собственный, например, для Visual Studio Code плагин для Julia устанавливается из самого редактора.

1.2.3. Работа в ноутбуках#

Для Julia есть две опции работы в ноутбуках: Jupyter Notebook и Pluto.jl. Ноутбуки удобны для создания конспектов и экспериментирования.

Jupyter Notebook

Для работы в Jupyter вам понадобится сама интерактивная среда Jupyter Notebook и IJulia.jl. IJulia.jl предоставляет Julia-ядро для Jupyter. Если Jupyter уже установлен, то команда в REPL ] add IJulia установит ядро и произведёт необходимые настройки. Чтобы начать работу с ноутбуком, можно воспользоваться стандартной командой jupyter notebook в терминале и выбрать в качестве ядра Julia. Либо запустить Julia REPL и выполнить команду using IJulia; notebook(). Подробнее о работе с Julia в Jupyter здесь.

Pluto.jl

Pluto.jl также представляет собой ноутбук, но в отличие от Jupyter, является реактивным. В Jupyter при изменении переменной в какой-либо ячейке с кодом необходимо перезапускать зависящие от этой переменной ячейки. В Pluto это делается автоматически. Как результат, Pluto удобен для небольших и наглядных численных экспериментов и конспектов. Для установки необходимо выполнить ] add Pluto в Julia REPL, а для запуска import Pluto; Pluto.run() (тоже из Julia REPL). Кроме реактивности, исходный файл с Pluto-ноутбуком хранит точную информацию об используемых библиотеках, что упрощает обмен ноутбуками с другими людьми.

Попробовать Pluto без установки можно онлайн здесь.

../_images/ijulia-example.png

Jupyter Notebook + IJulia.jl

../_images/pluto-example.png

Pluto.jl