скачать книгу бесплатно
Julia. Язык программирования. Быстрый старт
Вадим Никитин
Начните писать программы на Julia в первый же день.Необходимы только минимальные знания в использовании компьютеров и программировании. Вы знаете что такое файл или каталог? Вам известны алгоритмы? Этого достаточно.Ничего лишнего. В этом справочнике раскрыты самые важные и часто затрагиваемые темы в краткой и ясной форме, а для желающих погрузиться в тему глубже представлены ссылки на необходимые источники информации.Подробные инструкции не упускают ни единого шага, а наглядные примеры полностью отображают в себе весь процесс работы. Вы всегда будете знать, что должно получиться в результате. Все примеры были протестированы на актуальной версии языка программирования Julia, доступной на момент написания данного справочника.Удобный дизайн оглавления позволяет быстро находить нужные примеры функции и команд. Нет нужды держать все в голове или постоянно лезть в интернет.
Вадим Никитин
Julia. Язык программирования. Быстрый старт
Начало работы
Для того, чтобы приступить к работе, вам необходимо загрузить и установить дистрибутив Julia для вашей операционной системы (Windows, macOS, Linux, FreeBSD), следуя инструкциям на сайте https://julialang.org/downloads/ (https://julialang.org/downloads/). Некоторые дистрибутивы Linux включают Julia в состав своих пакетов, но убедитесь, что вы устанавливаете актуальную версию.
Это руководство написано на основе версии Julia 1.9.0, которая является текущей выпущенной версией Julia. Концепции, описанные в книге, носят общий характер и применимы к более поздним версиям языка. Однако, возможно, что некоторые выходные данные более поздних версий Julia могут не соответствовать результатам и примерам, представленным в этой книге.
Самый простой способ изучать и экспериментировать с Julia – это запустить интерактивный сеанс рабочей среды, дважды щелкнув на исполняемом файле Julia или запустить julia из командной строки:
Чтобы закончить интерактивный сеанс, используйте команду exit() или комбинацию клавиш CTRL + D.
Рабочая среда Julia
Рабочая среда Julia – REPL (от англ. read-eval-print loop – «цикл „чтение – вычисление – вывод“»), оболочка с полнофункциональной интерактивной командной строкой, встроенная в исполняемый файл julia. С помощью этой оболочки мы взаимодействуем с JIT-компилятором (англ. Just-in-Time, компиляция «точно в нужное время») для тестирования и запуска нашего кода, помимо этого доступна история команд с возможностью поиска, автодополнение с помощью табуляции, множество полезных привязок клавиш, а также специальные режимы справки и оболочки. REPL имеет пять режимов работы.
Основной режим
Это режим работы по умолчанию, каждая новая строка изначально начинается с приглашения julia>. Именно здесь вы можете вводить выражения Julia от простых до многострочных конструкций. Нажатие клавиши Return или Enter после ввода выражения запускает выполнение и вывод результата. Например:
julia> 2 + 2
4
julia> 5 * (5 – 1)
20
julia> 5/2
2.5
Или сообщения об ошибке если что то пошло не так:
julia> 5/"A"
ERROR: MethodError: no method matching /(::Int64, ::String)
Справочная система
Julia имеет встроенную справочную систему, которая извлекает информацию об использовании большинства функций непосредственно из исходного кода. Это справедливо и для большинства сторонних пакетов.
Для перехода в справочную систему Julia наберите ? (знак вопроса) в начале строки основного режима. Приглашение командной строки примет вид:
help?>
Julia попытается найти и отобразить справку или документацию для всего, что было введено в режиме справки. Если вы не помните точное название функции, Julia вернет список похожих функций. Хотя фактическое возвращаемое содержимое может различаться, вы можете ожидать увидеть следующую информацию для каждой запрашиваемой функции:
? Написание
? Однострочное описание
? Список аргументов
? Подсказки к аналогичным или связанным функциям
? Один или несколько примеров использования
? Список методов (для функций, которые имеют несколько реализаций)
Возврат в режим по умолчанию производится нажатием комбинации клавиш CTRL-C или клавишей BACKSPACE в начале строки.
Дополнительно в дистрибутив Julia входит локальная копия официального сайта документации https://docs.julialang.org/en/v1/ (https://docs.julialang.org/en/v1/) расположенная:
[JULIA_INSTALL_FOLDER]/share/doc/julia/html/en (где JULIA_INSTALL_FOLDER – каталог, куда установлен Julia)
Что позволяет использовать сайт документации в системах изолированных от интернета.
Менеджер пакетов
После установки Julia вы получите компилятор, который преобразует написанный вами код на Julia в версию, которую может выполнить ваш компьютер, а так же стандартную библиотеку (иногда называемую Base), которая содержит базовую функциональность, встроенную в среду. Сюда входят такие вещи, как массивы и списки, числа и строки, некоторые основы линейной алгебры и статистики и т.д. Но в большинстве случаев, скорее всего, вам может потребоваться расширить функционал, загрузив и запустив внешние библиотеки, которые в Julia называются пакетами. Для работы с ними используется Pkg – встроенный менеджер пакетов Julia, который выполняет такие операции как: установка, обновление и удаление пакетов. Вход в него осуществляется нажатием клавиши ] в основном режиме. Приглашение командной строки примет вид:
(@v1.9) pkg>
Возврат в режим по умолчанию – нажатием комбинации клавиш CTRL-C или клавишей BACKSPACE в начале строки.
Системная оболочка
Режим позволяет использовать командную оболочку операционной системы для выполнения системных команд. Для перехода наберите ; (точка с запятой) в начале строки основного режима. Приглашение командной строки примет вид:
shell>
Возврат в режим по умолчанию – нажатием комбинации клавиш CTRL-C или клавишей BACKSPACE в начале строки.
Для пользователей Windows режим оболочки Julia не предоставляет команд оболочки windows напрямую, дополнительно необходимо задать командную оболочку PowerShell или cmd.exe.
? PowerShell:
shell> powershell
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
PS C:\Users\julia>
? cmd.exe:
shell> cmd
Microsoft Windows [version 10.0.17763.973]
(c) 2018 Microsoft Corporation. All rights reserved.
C:\Users\julia>
Поиск по истории
Во всех вышеперечисленных режимах выполненные строки сохраняются в файл истории, по которому можно производить поиск. Чтобы инициировать инкрементный поиск по предыдущей истории, нажмите CTRL-R. Подсказка изменится на (reverse-i-search)`':. По мере ввода поисковый запрос будет появляться между символами `'. Самый последний результат, соответствующий запросу, будет динамически обновляться справа от двоеточия по мере набора текста. Чтобы найти более старый результат по тому же запросу, просто введите CTRL-R еще раз.
Так же как CTRL-R – поиск по истории назад, CTRL-S – поиск по истории вперед, с подсказкой (forward-i-search)`':. Эти две функции можно использовать в сочетании друг с другом для перехода к предыдущему или следующему результату поиска соответственно.
Все выполненные команды в REPL записываются в ~/.julia/logs/repl_history.jl вместе с меткой времени, когда они были выполнены, и текущим режимом REPL, в котором вы находились. Режим поиска запрашивает этот файл журнала, чтобы найти команды, которые вы выполняли ранее.
Программы Julia
В то время как интерактивные выражения – это быстрый способ попробовать что-то в REPL и просмотреть результаты, реальные приложения требуют выполнения больших фрагментов кода. В Julia вы вводите весь программный код в обычный текстовой файл с расширением .jl. Запустите любой текстовый редактор на ваш вкус и введите следующий код в файл:
msg="Hello, World!"
println(msg)
Сохраните файл как example.jl в папке, где развернута Julia (только лишь для удобства, чтобы не указывать полный путь к файлу в команде). Запустите julia. Затем в командной строке julia вызовите команду, указанную ниже, и вы должны увидеть вывод:
julia> include("example.jl")
Hello, World!
Другой способ запустить программу Julia – запустить ее из командной строки терминала операционной системы. Откройте терминал в папке где развернута Julia (опять же лишь для удобства, чтобы не указывать полный путь к файлу в команде), наберите julia example.jl и нажмите Enter и вы снова должны увидеть вывод:
[vadim@void-linux julia-1.9.0]$ julia example.jl
Hello, World!
[vadim@void-linux julia-1.9.0]$
Программа: в первой строке мы создали переменную msg и присвоили ей текстовое значение, во второй строке функция println() выводит ее значение в поток вывода по умолчанию.
Вы можете определить глобальный (для всех пользователей компьютера) и локальный (для одного пользователя) файл программы Julia, который будет выполняться при любом запуске Julia, где могут быть определены функции или переменные, которые всегда должны быть доступны. Расположение этих двух файлов следующее:
? Глобальный файл Julia: [JULIA_INSTALL_FOLDER]\etc\julia\startup.jl (где JULIA_INSTALL_FOLDER – каталог, где установлена Julia)
? Локальный файл Julia: [USER_HOME_FOLDER]\.julia\config\startup.jl (где USER_HOME_FOLDER – домашний каталог локального пользователя, например %HOMEPATH% в Windows и ~ в Linux)
Обратите внимание, что локальный каталог конфигурации может не существовать. В этом случае вы можете просто создать отсутствующие каталоги и файл своими руками.
Дополнительные инструменты
Работа с кодом в обычном текстовом редакторе это конечно вопрос вкуса. Существует множество различных инструментов, созданных с целью облегчить и ускорить процесс работы в области программирования. Ниже приведен пример самых популярных в сообществе инструментов, которые регулярно обновляются, являются бесплатными, а также поддерживаются самими разработчиками языка программирования Julia.
Visual Studio Code
Visual Studio Code (сокращенно VS Code) – это мощный текстовой редактор исходного кода. Его отличительные особенности ниже:
? Подсветка синтаксиса и технология умного автодополнения.
? Отладка кода прямо в редакторе.
? Инструменты для работы с Git.
? Очень широкие возможности кастомизации.
Начните работу здесь: https://www.julia-vscode.org (https://www.julia-vscode.org)
Jupyter
JupyterLab и Jupyter Notebook – это веб приложения позволяющие работать с Julia и другими языками программирования через браузер. По сути, такие приложения представляют собой онлайн блокноты с дополнительными функциями. Некоторые из особенностей Jupyter:
? Блокнотами можно делиться с другими с помощью электронной почты, Dropbox, GitHub и Jupyter Notebook Viewer.
? Ваш код может создавать богатый интерактивный вывод: HTML, изображения, видео, LaTeX и пользовательские типы MIME.
? Централизованное развертывание
Pluto.jl
Pluto – это другой блокнот, созданный специально для работы с языком программирования Julia. Блокнот Pluto состоит из небольших блоков кода Julia (ячеек), и вместе они образуют реактивный блокнот. Когда вы меняете переменную, Pluto автоматически перезапускает ячейки, которые на нее ссылаются. Ячейки можно размещать в произвольном порядке – интеллектуальный синтаксический анализ определяет зависимости между ними и позаботится о выполнении. Некоторые отличительные черты Pluto:
? Реактивность – при изменении функции или переменной Pluto автоматически обновляет все затронутые ячейки.
? Pluto написан на Julia и прост в установке.
? Прост в использовании.
Пакеты в Julia
Julia имеет модульную конструкцию – компактное ядро, функциональность которого расширяется внешними «пакетами». Дистрибутив Julia поставляется с небольшим набором этих пакетов, называемым «стандартной библиотекой», и мощным менеджером пакетов, который может загружать пакеты, предварительно компилировать, обновлять и разрешать зависимости, и все это с помощью нескольких простых команд.
В то время как зарегистрированные пакеты можно установить, просто используя их имя, для незарегистрированных пакетов необходимо указать их исходное местоположение. На момент написания этого текста было опубликовано более 9000 зарегистрированных пакетов. Знание того, как работают пакеты, крайне необходимо для эффективной работы в Julia, и именно поэтому управление пакетами представлено в начале руководства.
Использование диспетчера пакетов
Есть два способа получить доступ к функциям управления пакетами, в интерактивном режиме или через API из кода программы Julia: