Первые шаги. Введение в технические расчеты 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. Для этого используются Редактор скриптов — удобный инструмент для пошаговой работы с кодом, визуализациями и комментариями, или же Командная строка
— более привычная среда для опытных пользователей.
Чтобы работать с кодом в Engee еще быстрее и удобнее, используйте горячие клавиши. Они позволяют управлять скриптами, запускать вычисления, перемещаться по интерфейсу и экономить время. Полный список сочетаний доступен в статье Горячие клавиши Engee или по вызову справки прямо в Engee (комбинация Shift+?). |
Редактор скриптов
Интерактивные скрипты — это особый формат документов, в которых код, текст и графика объединены в единую рабочую структуру. Открыть редактор скриптов можно прямо из интерфейса Engee — достаточно нажать на иконку в панели инструментов. Чтобы создать скрипт, нажмите + в редакторе скриптов и выберите нужный формат:
→
Также можно кликнуть на Файловый браузер и выбрать Создать → Скрипт:
По умолчанию скрипты Engee имеют формат
|
Интерактивный скрипт состоит из ячеек — отдельных блоков, которые можно запускать независимо. Ячейки бывают двух типов:
-
Кодовые — предназначены для работы с кодом. Такие ячейки можно запускать по одной, выполнять только выделенный фрагмент или выполнять весь код целиком.
-
Текстовые — для пояснений, формул и визуального оформления. Поддерживаются Markdown, LaTeX и HTML.
Для запуска скрипта достаточно нажать кнопку Сохранить в панели запуска. При этом выполняются все кодовые ячейки по порядку. Можно также запускать отдельные ячейки или даже только выделенный участок кода:
Результаты выполнения появляются прямо под кодом и сохраняются до перезапуска. Если нужно, то вывод можно свернуть, очистить или скрыть кнопкой Ограничить вывод :
Для структурирования скрипта удобно использовать заголовки, которые формируют параграфы. Параграфы можно сворачивать, а навигация по ним осуществляется через панель Содержание :
Кроме того, в скриптах можно использовать маски кодовых ячеек — специальные интерактивные элементы управления, такие как слайдеры, выпадающие списки или поля ввода. Они позволяют изменять параметры кода без необходимости переписывать сам код.
Работа с масками кодовых ячеек подробно рассмотрена в примере Маскирование кодовых ячеек интерактивных скриптов. |
Командная строка
Если вы привыкли работать в терминале, то Командная строка 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 # целочисленное деление и множественное присваивание
Целочисленное деление ( Чтобы ввести
Или напишите \div в командной строке и нажмите клавишу Tab. Также будут полезны и другие часто применяемые специальные символы:
|
В коде выше переменным не давались типы, однако несмотря на динамическую типизацию, Julia — это язык для вычислений, а значит, производительность играет ключевую роль. Чтобы максимально эффективно использовать Julia, крайне рекомендуется явно указывать типы. Например:
x::Int64 = 42
y::Float64 = 3.14
Это позволяет Julia выполнять точную оптимизацию и избежать ненужных преобразований типов во время исполнения кода. Рекомендуем ознакомиться с основными типами Julia в следующей таблице:
Тип (англ) | Тип (рус) | Пример |
---|---|---|
Int |
Целое число |
|
Float64 |
Дробное число |
|
Bool |
Логическое значение |
|
Char |
Символ (один знак) |
|
String |
Строка текста |
|
Vector |
Вектор (однородный список) |
|
Tuple |
Кортеж (неизменяемый набор значений) |
|
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(…)
— загружает данные из файла обратно в таблицу.