Документация Engee

Советы по рабочим процессам

Вот несколько советов по эффективной работе с Julia.

Рабочий процесс на основе REPL

Как уже говорилось в главе REPL Julia, REPL Julia предоставляет широкие функциональные возможности, способствующие реализации эффективного интерактивного рабочего процесса. Вот несколько советов, которые позволят еще более продуктивно работать с командной строкой.

Базовый рабочий процесс редактора или REPL

В самых основных рабочих процессах Julia предусматривается использование текстового редактора в сочетании с командной строкой julia. Общая схема состоит из следующих шагов.

  • Размещение разрабатываемого кода во временном модуле. Создайте файл, скажем Tmp.jl, и включите в него следующий фрагмент.

    module Tmp
    export say_hello
    
    say_hello() = println("Hello!")
    
    # Здесь находятся другие ваши определения
    
    end
  • Размещение тестового кода в другом файле. Создайте другой файл, скажем tst.jl, который выглядит следующим образом.

    include("Tmp.jl")
    import .Tmp
    # using .Tmp # можно использовать `using` для добавления экспортированных символов в `Tmp` в пространство имен
    
    Tmp.say_hello()
    # say_hello()
    
    # Здесь находится другой ваш тестовый код

    и содержит тесты для содержимого Tmp. Или можно заключить содержимое тестового файла в модуль, как показано ниже:

    module Tst
        include("Tmp.jl")
        import .Tmp
        #using .Tmp
    
        Tmp.say_hello()
        # say_hello()
    
        # Здесь находится другой ваш тестовый код
    end

    Преимущество в том, что тестовый код теперь находится в модуле и не использует глобальную область в Main для определений, а это выглядит аккуратнее.

  • Включите (include) файл tst.jl в REPL Julia с помощью include("tst.jl").

  • Намылить. Смыть. Повторить. Изучите идеи с помощью командной строки julia. Сохраните хорошие мысли в файл tst.jl. Чтобы выполнить файл tst.jl после его изменения, просто включите его с помощью include еще раз.

Рабочий процесс на основе браузера

Взаимодействовать с Julia в браузере можно несколькими способами:

  • с помощью интерактивных скриптов Pluto посредством Pluto.jl;

  • с помощью интерактивных скриптов Jupyter посредством IJulia.jl.

Рабочие процессы на основе Revise

Независимо от того, находитесь ли вы в REPL или в IJulia, вы можете усовершенствовать навыки разработки с помощью Revise. Как правило, Revise можно настроить так, чтобы он запускался при каждом запуске Julia. См инструкции в документации по Revise. После настройки Revise будет отслеживать изменения файлов в любых загруженных модулях и в любых файлах, загруженных в REPL с помощью includet (но не с помощью обычного include). Затем можно редактировать файлы, и изменения вступят в силу без перезапуска сеанса Julia. Стандартный рабочий процесс похож на описанный выше рабочий процесс на основе REPL со следующими изменениями.

  1. Поместите код в модуль в каком-либо месте в пути загрузки. Существует несколько вариантов выполнения этой задачи. Рекомендуется выбрать два из них.

     — Для долгосрочных проектов используйте PkgTemplates.

    julia using PkgTemplates t = Template() t("MyPkg")

    Будет создан пустой пакет "MyPkg" в каталоге .julia/dev. Обратите внимание, что PkgTemplates позволяет управлять множеством различных вариантов с помощью конструктора Template.

    На шаге 2 ниже отредактируйте файл MyPkg/src/MyPkg.jl, чтобы изменить исходный код, и файл MyPkg/test/runtests.jl для тестов.

     — В пробных проектах можно избежать очистки, выполняя работу во временном каталоге (например, /tmp).

    Перейдите во временный каталог, запустите Julia, затем выполните следующие действия.

    julia-repl pkg> generate MyPkg # Введите ] для входа в режим pkg julia> push!(LOAD_PATH, pwd()) # Нажмите клавишу «Пробел» для выхода из режима pkg

    При перезапуске сеанса Julia придется заново выполнить эту команду, изменяющую LOAD_PATH.

    На шаге 2 ниже отредактируйте файл MyPkg/src/MyPkg.jl, чтобы изменить исходный код, и создайте любой тестовый файл.

  2. Создайте пакет

    Перед загрузкой кода убедитесь в том, что запущен Revise, например с помощью using Revise, или следуйте документации по его настройке для автоматического запуска.

    Затем перейдите в каталог, содержащий тестовый файл (здесь предполагается, что это "runtests.jl"), и сделайте следующее.

     julia> using MyPkg
    
     julia> include("runtests.jl")

    Вы можете итеративно изменять код в MyPkg в редакторе и повторно запускать тесты с помощью include("runtests.jl"). Как правило, не нужно перезапускать сеанс Julia, чтобы увидеть, что изменения вступили в силу (с учетом некоторых ограничений).