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

Первые шаги. Введение в технические расчеты Engee

Страница в процессе разработки.

Если вы только начинаете свой путь с техническими расчетами, то Engee — это отличное место. Платформа специально разработана для того, чтобы помогать инженерам и программистам создавать сложные технические системы и алгоритмы просто, наглядно и удобно.

Среда разработки интерактивных скриптов Engee поддерживает несколько языков программирования: Julia, Python, MATLAB, C/C++ и др., но основным все же является Julia — современный, быстрый и удобный язык для инженерных и научных задач.

Если вы еще не выбрали язык для изучения или ищите альтернативы, то вот преимущества, которые предлагает Julia:

Преимущество Описание

Простота

Синтаксис похож на Python — легко читается и быстро осваивается.

Высокая производительность

Работает почти с такой же скоростью, как C, но без сложностей C/C++.

Мощная математика

Julia "из коробки" поддерживает векторы, матрицы, работу с числовыми данными.

Расширяемость

Легко подключать сторонние библиотеки и работать с другими языками.

Универсальность

Julia подходит как для простых задач, так и для построения сложных алгоритмов, симуляций и анализа данных.

Помимо всех этих преимуществ, в Engee представлена полная и регулярно обновляемая документация по Julia на русском языке, которая будет полезна инженерам и программистам с любым опытом. А если хочется вдохновения или примеров из практики — загляните в Сообщество Engee, где пользователи делятся своими проектами, скриптами и идеями.

Если вы только начинаете свой путь с Julia, то рекомендуем ознакомиться с курсом Курс «Добро пожаловать в Engee», который поможет быстро освоиться в среде Engee.

Для тех, кто уже имеет опыт в технических расчетах, в примерах также представлены различные сценарии использования Julia, которые помогут глубже понять возможности языка.

Начало работы

В Engee есть все необходимое, чтобы работать с кодом:

Теперь давайте подробнее рассмотрим, как именно пишется и запускается код в Engee. Для этого используются Редактор скриптов interactive script icon — удобный инструмент для пошаговой работы с кодом, визуализациями и комментариями, или же Командная строка img 41 1 2 — более привычная среда для опытных пользователей.

Чтобы работать с кодом в Engee еще быстрее и удобнее, используйте горячие клавиши. Они позволяют управлять скриптами, запускать вычисления, перемещаться по интерфейсу и экономить время. Полный список сочетаний доступен в статье Горячие клавиши Engee или по вызову справки прямо в Engee (комбинация Shift+?).

Редактор скриптов

Интерактивные скрипты — это особый формат документов, в которых код, текст и графика объединены в единую рабочую структуру. Открыть редактор скриптов можно прямо из интерфейса Engee — достаточно нажать на иконку interactive script icon в панели инструментов. Чтобы создать скрипт, нажмите + в редакторе скриптов и выберите нужный формат:

img36cimg36c 1

Также можно кликнуть на Файловый браузер file browser 7 и выбрать СоздатьСкрипт:

script creation fb

По умолчанию скрипты Engee имеют формат ngscript, однако можно работать и с форматом jl и ipynb:

  • jl — формат скриптов на языке Julia. Редактор скриптов поддерживает рефакторинг и запуск скриптов в этом формате;

  • ipynb — универсальный формат написания скриптов на языке Python. Редактор скриптов поддерживает весь доступный функционал на уровне с ngscript.

Интерактивный скрипт состоит из ячеек — отдельных блоков, которые можно запускать независимо. Ячейки бывают двух типов:

script editor 1

  • Кодовые — предназначены для работы с кодом. Такие ячейки можно запускать по одной, выполнять только выделенный фрагмент или выполнять весь код целиком.

    img52

  • Текстовые — для пояснений, формул и визуального оформления. Поддерживаются Markdown, LaTeX и HTML.

    img44

Для запуска скрипта достаточно нажать кнопку Сохранить в панели запуска. При этом выполняются все кодовые ячейки по порядку. Можно также запускать отдельные ячейки или даже только выделенный участок кода:

img 49 1

Результаты выполнения появляются прямо под кодом и сохраняются до перезапуска. Если нужно, то вывод можно свернуть, очистить или скрыть кнопкой Ограничить вывод colapse button:

in long hide 1

Для структурирования скрипта удобно использовать заголовки, которые формируют параграфы. Параграфы можно сворачивать, а навигация по ним осуществляется через панель Содержание content button 1:

in scripts par

Кроме того, в скриптах можно использовать маски кодовых ячеек masks script pool 1 — специальные интерактивные элементы управления, такие как слайдеры, выпадающие списки или поля ввода. Они позволяют изменять параметры кода без необходимости переписывать сам код.

Работа с масками кодовых ячеек подробно рассмотрена в примере Маскирование кодовых ячеек интерактивных скриптов.

Командная строка

Если вы привыкли работать в терминале, то Командная строка img 41 1 2 Engee является прекрасным решением. Командная строка позволяет не только выполнять код, но и использовать команды оболочки, управлять пакетами, редактировать файлы, работать с Git и обращаться к справке — все из одного окна!

Командная строка Engee поддерживает несколько режимов работы, каждый из которых подходит для разных задач:

  • Обычный режим — основной интерфейс, в котором команды выполняются интерактивно и выводятся сразу.

  • Режим справки — позволяет быстро получать информацию о функциях и модулях. Вызывается с помощью вопросительного знака ?.

  • Режим оболочки — используется для выполнения команд операционной системы. Вызывается с помощью символа ;.

  • Режим пакетного менеджера — позволяет управлять пакетами и зависимостями Julia. Вызывается с помощью символа ].

  • Режимы поиска — обеспечивают поиск по истории команд. Вызываются с помощью комбинаций клавиш Ctrl+R для обратного (reverse) и Ctrl+S для прямого (forward) поиска.

  • Режимы текстового редактора — позволяют редактировать файлы прямо из командной строки. Вызываются из режима оболочки (shell) с помощью команд vi, vim и nano.

Подробнее о каждом режиме читайте в статье Командная строка.

Если вы работаете с проектами под Git, клонируете репозитории, вносите правки и делаете коммиты — командная строка в Engee предоставляет все необходимые инструменты. Более подробно об этом читайте в отдельной серии статей Работа с Git.

Более того, в Engee можно совмещать оба подхода: писать код в редакторе скриптов, а отдельные команды или утилиты запускать через командную строку. Такой гибридный подход позволяет эффективно решать как небольшие задачи, так и работать над крупными проектами.

Работа с Julia

Язык Julia создан для того, чтобы быть одновременно простым, читаемым и очень быстрым. Он отлично подходит для инженерных и научных задач, но при этом его синтаксис интуитивно понятен — особенно тем, кто знаком с Python или MATLAB. Вот пример простого кода на Julia:

println("Привет, мир!")

println — это встроенная функция для вывода текста в консоль. Вы можете запускать этот код напрямую в командной строке или редакторе скриптов.

Julia сразу поддерживает работу с числами, строками, массивами, циклами, условиями и функциями. Например:

  • Сумма элементов массива:

    arr = [1, 2, 3, 4, 5]
    println(sum(arr))
  • Пользовательская функция:

    f(x) = x^2 + 2x + 1
    println(f(3))

Начать можно с базовых конструкций, постепенно подключать пакеты и использовать дополнительные возможности языка по мере необходимости. Подробнее смотрите ниже.

Пакеты Julia

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

Визуализация данных

Нужна визуализация ваших расчетов? В Engee вы можете создавать и настраивать графики прямо в коде, используя пакет Plots, подробнее см. Построение графиков.

Программное управление моделированием

В Engee вы можете создавать и управлять моделями программно, используя встроенные методы и команды. Это позволяет автоматизировать процесс создания моделей: добавлять блоки, соединять их сигнальными линиями, настраивать параметры и свойства, а также выполнять другие операции. Подробнее о программном управлении моделированием вы можете узнать в статье Программное управление моделированием.

Основные конструкции Julia

Julia максимально дружелюбна к пользователю, но при этом предоставляет доступ ко всей производительной составляющей языка. Далее разберем ее базовые возможности и конструкции.

Переменные и типы данных

Julia — это язык с динамической типизацией: переменные можно объявлять без указания типа. Рассмотрим пример:

a = 3           # без точки с запятой — результат выводится в консоль
b = 4;          # с точкой с запятой — результат не выводится
c = a + b       # сумма двух переменных
println("Сумма: ", c)  # явный вывод текста и значения

m = n = a ÷ b   # целочисленное деление и множественное присваивание

Целочисленное деление (÷) возвращает только целую часть результата без остатка. Например, 7 ÷ 3 вернет 2.

Чтобы ввести ÷ используйте:

  • На Windows/Linux — клавиша Alt и наберите 0247 на цифровой клавиатуре;

  • На macOS — нажмите Option (⌥) + /.

Или напишите \div в командной строке и нажмите клавишу Tab. Также будут полезны и другие часто применяемые специальные символы:

  • π\pi + Tab (число Пи);

  • \sqrt + Tab (квадратный корень);

  • \sum + Tab (суммирование);

  • \rightarrow + Tab (стрелка).

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

x::Int64 = 42
y::Float64 = 3.14

Это позволяет Julia выполнять точную оптимизацию и избежать ненужных преобразований типов во время исполнения кода. Рекомендуем ознакомиться с основными типами Julia в следующей таблице:

Тип (англ) Тип (рус) Пример

Int

Целое число

a = 5

Float64

Дробное число

b = 3.14

Bool

Логическое значение

is_valid = true

Char

Символ (один знак)

letter = 'A'

String

Строка текста

name = "Julia"

Vector

Вектор (однородный список)

numbers = [1, 2, 3]

Tuple

Кортеж (неизменяемый набор значений)

data = (1, "hello", true)

Vector содержит элементы одного типа (обычно числа), а Tuple — значения разных типов и не может быть изменен после создания.

Функции

Функции позволяют структурировать код и использовать повторяющуюся логику. Вот пример обычной функции:

function add(a, b)
    return a + b
end

Здесь мы определяем функцию add, которая принимает два аргумента и возвращает их сумму. Можно записать такую же функцию в более коротком виде:

add2(a, b) = a + b

А вот как ее можно вызвать:

result = add(5, 7)
println("Сумма: ", result)

Подробнее о функциях см. в статье Функции.

Условия и циклы

Чтобы выполнять код при определенных условиях или повторять действия, используются управляющие конструкции: if, for, while.

Условный оператор:

x = -1

if x > 0
    println("Положительное число")
elseif x == 0
    println("Ноль")
else
    println("Отрицательное число")
end

Цикл for выполняет действие для каждого значения в диапазоне:

for i in 1:5
    println("Итерация ", i)
end

Цикл while выполняется, пока условие истинно:

n = 3
while n > 0
    println("Осталось: ", n)
    n -= 1
end

Подробнее см. в статье Базовые конструкции.

Массивы и векторы

Массивы позволяют хранить последовательности данных, например, результаты измерений или параметров.

v = [1, 2, 3, 4]
println(v[2])    # доступ ко второму элементу
v[3] = 10        # изменение значения по индексу

Подробнее см. в статье Массивы, векторы и матрицы в Engee.

Векторизация и индексирование

Julia позволяет применять операции ко всему массиву сразу, без явных циклов — это называется векторизацией. Это не только удобно, но и быстро.

v = [1, 2, 3, 4]
v_squared = v .^ 2         # возведение каждого элемента в квадрат
positive = v .> 2          # логическое сравнение: больше 2
filtered = v[positive]     # выборка элементов по условию

Полезные примеры

Когда вы уже научились работать с переменными, функциями и условиями — пора переходить к взаимодействию с внешними данными: файлами, таблицами, структурами. Ниже — несколько полезных примеров, с которыми можно легко столкнуться в разных рабочих ситуациях.

Чтение и запись файлов

Иногда нужно сохранить данные в файл или, наоборот, загрузить их из него.

open("output.txt", "w") do f # Запись строки в файл
    write(f, "Hello, file!")
end

Здесь:

  • "output.txt" — имя файла;

  • "w" — режим записи (write);

  • do f …​ end — специальная форма, которая автоматически закрывает файл после записи.

Теперь прочитаем этот же файл:

content = read("output.txt", String) # Чтение содержимого файла
println("Прочитано: ", content)

Функция read(filename, String) загружает содержимое целиком как строку.

Работа с JSON

Формат JSON (JavaScript Object Notation) — один из самых популярных способов хранения и обмена данными между программами. В Julia для работы с ним используется библиотека JSON.

using JSON

data = Dict("name" => "Alice", "age" => 30) # Создаем словарь

json_str = JSON.json(data) # Преобразуем словарь в строку в JSON
println(json_str)

parsed = JSON.parse(json_str) # Разбираем JSON обратно в структуру
println(parsed["name"])

Здесь:

  • Dict — это словарь (структура ключ-значение);

  • JSON.json(…​) — превращает словарь или другие данные в строку в формате JSON, чтобы можно было сохранить или передать данные;

  • JSON.parse(…​) — преобразует строку обратно в словарь.

Работа с таблицами (CSV и DataFrame)

Таблицы — один из самых удобных форматов работы с данными. В Julia для этого есть пакет DataFrames:

using DataFrames, CSV

df = DataFrame(Name=["Alice", "Bob"], Age=[30, 25]) # Создаем таблицу

CSV.write("people.csv", df) # Сохраняем в CSV-файл

df2 = CSV.read("people.csv", DataFrame) # Загружаем обратно из файла
println(df2)

Здесь:

  • DataFrame(…​) — создает таблицу из столбцов;

  • CSV.write(…​) — сохраняет таблицу в файл people.csv;

  • CSV.read(…​) — загружает данные из файла обратно в таблицу.