第一步。技术计算入门 Engee
如果您刚刚开始技术计算之旅,*Engee*将是您的理想选择。该平台专门用于帮助工程师和程序员简单、清晰、方便地创建复杂的技术系统和算法。
交互式脚本开发环境 Engee 支持多种编程语言:Julia、Python、MATLAB、C/C++ 等,但主要是Julia - 一种现代、快速、方便的工程和科学任务语言。
如果您还没有选择要学习的语言,或者正在寻找替代语言,以下是 Julia 提供的优势:
优势 | 语言描述 |
---|---|
简单 |
语法与 Python 类似—易读、易学。 |
高性能 |
运行速度几乎与 C 语言相同,但没有 C/C++ 的复杂性。 |
强大的数学功能 |
Julia "开箱即用",支持向量、矩阵和数字数据处理。 |
可扩展性 |
轻松连接第三方库并与其他语言协同工作。 |
多功能性 |
Julia 既适用于简单任务,也适用于构建复杂算法、模拟和数据分析。 |
除了所有这些优势外,*Engee*还提供完整且定期更新的俄语Julia文档,这对任何经验的工程师和程序员都非常有用。如需灵感或案例研究,请访问Engee 社区,在这里用户可以分享他们的项目、脚本和想法。
如果您刚刚开始学习 Julia,我们建议您查看课程*欢迎来到恩吉* ,它将帮助您快速熟悉 Engee 环境。
对于那些已经有技术计算经验的人,examples 也会介绍 Julia 的各种使用场景,帮助您更深入地了解该语言的功能。
入门
*Engee*为您提供了处理代码所需的一切:
现在,让我们来详细了解一下 Engee 是如何编写和运行代码的。您可以使用 脚本编辑器 - 用于逐步处理代码、可视化和注释的便捷工具,也可以使用 命令行
- 为有经验的用户提供更熟悉的环境。
为使*Engee*中的代码工作更快、更方便,请使用热键。通过热键,您可以控制脚本、运行计算、浏览界面并节省时间。快捷键的完整列表可在文章Engee 热键 或直接在 Engee 中调用帮助(组合Shift+? )。 |
脚本编辑器
交互式脚本*是一种特殊的文档格式,它将代码、文本和图形组合成一个工作结构。您可以直接从界面 *Engee 中打开脚本编辑器—只需点击工具栏中的 图标即可。要创建脚本,请单击脚本编辑器中的 +,然后选择所需的格式:
->
或者,你也可以点击 File Browser* ,然后选择 *Create → Script:
默认情况下,Engee 脚本为
|
交互式脚本由单元组成—可独立运行的独立代码块。单元有两种类型:
-
代码 - 用于处理代码。这些单元格可以逐个运行,也可以只执行选定的片段或执行整个代码。
-
文本 - 用于解释、公式和可视化设计。支持 Markdown、LaTeX 和 HTML。
要运行脚本,只需点击启动面板上的 节省 按钮。所有代码单元都会按顺序执行。您也可以运行单个单元,甚至只运行选定的代码段:
执行结果直接显示在代码下方,并保存至重新启动。如有必要,可使用 Limit output 按钮折叠、清除或隐藏输出结果:
为了使脚本结构化,可以使用标题组成段落。段落可通过面板 目录 进行折叠和导航:
此外,您还可以在脚本中使用 代码单元掩码—特殊的交互式控件,如滑块、下拉列表或输入框。它们允许你更改代码参数,而无需重写代码本身。
屏蔽交互式脚本的代码单元 示例中详细介绍了如何使用代码单元屏蔽。 |
命令行
命令行 命令行 不仅可以执行代码,还可以使用 shell 命令、管理软件包、编辑文件、使用 Git 以及获取帮助,所有这些操作都可以在一个窗口中完成!
Engee*命令行支持多种操作模式,每种模式适用于不同的任务:
普通模式*是主界面,可交互执行命令并立即显示。
*帮助模式 - 允许您快速获取有关功能和模块的信息。用问号调用 。
Shell 模式 - 用于执行操作系统命令。使用符号 调用。
软件包管理器模式 - 允许管理 Julia 软件包和依赖关系。通过 ]调用。
搜索模式 - 可以搜索命令历史记录。使用组合键 (反向)和 (正向)调用。
文本编辑器模式 - 允许直接从命令行编辑文件。在 shell 模式下使用 vi
、vim
和 nano
命令调用。
有关每种模式的更多信息,请参阅文章 。
如果您正在处理 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 软件包.
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主要类型:
Type (English) | Type (Russian) | Example |
---|---|---|
Int |
Integer |
|
Float64 |
Fractional number |
|
Bool |
Logical value |
|
Char |
Character (one character) |
|
String |
Text string |
|
Vector |
Vector (homogeneous list) |
|
Tuple |
Tuple (immutable set of values) |
|
向量包含相同类型的元素(通常是数字),而元组包含不同类型的值,且一旦创建就无法修改。
函数
函数允许你组织代码并重复使用逻辑。以下是一个典型的函数示例:
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”
- 写入模式; -
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
的包用于此目的: