Engee 文档

第一步。技术计算入门 Engee

如果您刚刚开始技术计算之旅,*Engee*将是您的理想选择。该平台专门用于帮助工程师和程序员简单、清晰、方便地创建复杂的技术系统和算法。

交互式脚本开发环境 Engee 支持多种编程语言:Julia、Python、MATLAB、C/C++ 等,但主要是Julia - 一种现代、快速、方便的工程和科学任务语言。

如果您还没有选择要学习的语言,或者正在寻找替代语言,以下是 Julia 提供的优势:

优势 语言描述

简单

语法与 Python 类似—​易读、易学。

高性能

运行速度几乎与 C 语言相同,但没有 C/C++ 的复杂性。

强大的数学功能

Julia "开箱即用",支持向量、矩阵和数字数据处理。

可扩展性

轻松连接第三方库并与其他语言协同工作。

多功能性

Julia 既适用于简单任务,也适用于构建复杂算法、模拟和数据分析。

除了所有这些优势外,*Engee*还提供完整且定期更新的俄语Julia文档,这对任何经验的工程师和程序员都非常有用。如需灵感或案例研究,请访问Engee 社区,在这里用户可以分享他们的项目、脚本和想法。

如果您刚刚开始学习 Julia,我们建议您查看课程*欢迎来到恩吉* ,它将帮助您快速熟悉 Engee 环境。

对于那些已经有技术计算经验的人,examples 也会介绍 Julia 的各种使用场景,帮助您更深入地了解该语言的功能。

入门

*Engee*为您提供了处理代码所需的一切:

  • 文件浏览器 file browser 7 - 文件管理器,用于处理脚本和项目。

  • 命令行 img 41 1 2 - 用于高级用户和高级任务的命令行。

  • 脚本编辑器 interactive script icon - 带有语法高亮和自动完成功能的脚本编辑器。

  • 可变窗口 variables article 2 1 - 用于分析和调试的变量面板。

现在,让我们来详细了解一下 Engee 是如何编写和运行代码的。您可以使用 脚本编辑器 interactive script icon - 用于逐步处理代码、可视化和注释的便捷工具,也可以使用 命令行 img 41 1 2 - 为有经验的用户提供更熟悉的环境。

为使*Engee*中的代码工作更快、更方便,请使用热键。通过热键,您可以控制脚本、运行计算、浏览界面并节省时间。快捷键的完整列表可在文章Engee 热键 或直接在 Engee 中调用帮助(组合Shift+? )。

脚本编辑器

交互式脚本*是一种特殊的文档格式,它将代码、文本和图形组合成一个工作结构。您可以直接从界面 *Engee 中打开脚本编辑器—​只需点击工具栏中的interactive script icon 图标即可。要创建脚本,请单击脚本编辑器中的 +,然后选择所需的格式:

40%-> img36c 1 cn

或者,你也可以点击 File Browser*file browser 7 ,然后选择 *CreateScript

script creation fb

默认情况下,Engee 脚本为 ngscript 格式,但也可以使用 jlipynb 格式:

  • jl "是 Julia 脚本的格式。脚本编辑器支持重构和运行这种格式的脚本;

  • ipynb` 是一种通用的 Python 脚本格式。脚本编辑器支持与 ngscript 相同级别的所有可用功能。

交互式脚本由单元组成—​可独立运行的独立代码块。单元有两种类型:

script editor 1 cn

  • 代码 - 用于处理代码。这些单元格可以逐个运行,也可以只执行选定的片段或执行整个代码。

    img52 cn

  • 文本 - 用于解释、公式和可视化设计。支持 Markdown、LaTeX 和 HTML。

    img44 cn

要运行脚本,只需点击启动面板上的 节省 按钮。所有代码单元都会按顺序执行。您也可以运行单个单元,甚至只运行选定的代码段:

img 49 1 cn

执行结果直接显示在代码下方,并保存至重新启动。如有必要,可使用 Limit outputcolapse button 按钮折叠、清除或隐藏输出结果:

in long hide 1 cn

为了使脚本结构化,可以使用标题组成段落。段落可通过面板 目录 content button 1 进行折叠和导航:

in scripts par cn

此外,您还可以在脚本中使用masks script pool 1 代码单元掩码—​特殊的交互式控件,如滑块、下拉列表或输入框。它们允许你更改代码参数,而无需重写代码本身。

屏蔽交互式脚本的代码单元 示例中详细介绍了如何使用代码单元屏蔽。

命令行

命令行 img 41 1 2 命令行 不仅可以执行代码,还可以使用 shell 命令、管理软件包、编辑文件、使用 Git 以及获取帮助,所有这些操作都可以在一个窗口中完成!

Engee*命令行支持多种操作模式,每种模式适用于不同的任务:

普通模式*是主界面,可交互执行命令并立即显示。 *帮助模式 - 允许您快速获取有关功能和模块的信息。用问号调用 。 Shell 模式 - 用于执行操作系统命令。使用符号 调用。 软件包管理器模式 - 允许管理 Julia 软件包和依赖关系。通过 ]调用。 搜索模式 - 可以搜索命令历史记录。使用组合键 (反向)和 (正向)调用。 文本编辑器模式 - 允许直接从命令行编辑文件。在 shell 模式下使用 vivimnano 命令调用。

有关每种模式的更多信息,请参阅文章 。

如果您正在处理 Git 项目、克隆版本库、进行编辑和提交,Engee 的命令行将为您提供所需的所有工具。如需了解更多信息,请访问 。


此外,在 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主要类型:

Type (English) Type (Russian) Example

Int

Integer

a = 5

Float64

Fractional number

b = 3.14

Bool

Logical value

is_valid = true

Char

Character (one character)

letter = 'A'

String

Text string

name = "Julia"

Vector

Vector (homogeneous list)

numbers = [1, 2, 3]

Tuple

Tuple (immutable set of values)

data = (1, "hello", true)

向量包含相同类型的元素(通常是数字),而元组包含不同类型的值,且一旦创建就无法修改。

函数

函数允许你组织代码并重复使用逻辑。以下是一个典型的函数示例:

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

这里我们定义了一个名为`add`的函数,该函数接受两个参数并返回它们的和。我们可以以更简洁的形式重写该函数:

add2(a, b) = a + b

以下是其名称的具体形式:

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

有关函数的更多信息,请参阅文章 功能.

===条件和循环

为了在特定条件下执行代码或重复操作,使用控制结构:ifforwhile

条件运算符:

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” - 写入模式;

  • do f …​ end - 特殊形式,写入后自动关闭文件。

现在我们来读取同一个文件:

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

read(filename, String) 函数将整个文件内容加载为字符串。

处理 JSON

JSON(JavaScript 对象表示法)是程序之间存储和交换数据最流行的一种方式。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)

这里:

  • Dict 是一个字典(键值结构);

  • JSON.json(…​) - 将字典或其他数据转换为 JSON 格式的字符串,以便保存或传输数据;

  • JSON.parse(…​) - 将字符串转换回字典。

===处理表格(CSV 和 DataFrame)

表格是处理数据最方便的格式之一。Julia 提供了一个名为 DataFrames 的包用于此目的: