Переменные, имена и комментарии

Как объявлять переменные в Julia, какие имена допустимы и чем динамическая типизация отличается от Python.

Переменная — имя, связанное со значением. В Julia типизация динамическая: тип определяется по значению, но при желании его можно аннотировать.

Объявление переменных

Переменная создаётся обычным присваиванием — никаких ключевых слов не требуется:

age = 25
name = "Анна"
pi_value = 3.14159
is_active = true

Как и в Python, переменная может в любой момент сменить тип:

x = 10        # сейчас x — целое число
x = "текст"   # теперь x — строка, это допустимо

Unicode-имена: фишка Julia

В отличие от Python, Julia позволяет использовать в именах переменных греческие буквы, индексы и многие математические символы Unicode. В REPL их набирают через LaTeX-сокращения: например, \alpha и Tab превращается в букву α.

α = 0.5       # \alpha + Tab
λ = 2.0       # \lambda + Tab
x² = 16       # x\^2 + Tab
Δt = 0.01     # \Delta + Tab

println(α + λ)

Вывод:

2.5

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

Соглашения об именовании

Сообщество Julia придерживается стиля:

  • Переменные и функции — в snake_case или просто строчными: total_sum, area.
  • Типы и модули — в CamelCase: DataFrame, LinearAlgebra.
  • Функции, изменяющие свои аргументы, заканчиваются на !: push!, sort!.
  • Константы — обычно ЗАГЛАВНЫМИ: const MAX_ITER = 1000.

Константы

Ключевое слово const сообщает компилятору, что значение не изменится. Это помогает оптимизации, особенно для глобальных переменных:

const GRAVITY = 9.81
const SPEED_OF_LIGHT = 299_792_458   # подчёркивания в числах — для читаемости

Комментарии

# однострочный комментарий

#=
  многострочный
  комментарий
=#
x = 5  # комментарий в конце строки

Как работает под капотом

Хотя типизация динамическая, для скорости важно, чтобы тип переменной не менялся внутри «горячего» кода. Когда Julia компилирует функцию, она специализирует код под конкретные типы. Если переменная то целое, то строка, компилятор не может выбрать одну быструю версию. Поэтому смена типа переменной удобна в REPL, но в производительном коде её избегают — об этом подробно в разделе про производительность.

Частые ошибки

Глобальные переменные без const — главный убийца скорости в Julia. Если глобальная переменная может изменить тип в любой момент, компилятор вынужден перепроверять её при каждом обращении. Объявляйте глобальные константы через const или, ещё лучше, оборачивайте вычисления в функции.

Итоги

  • Переменные создаются присваиванием, без ключевых слов.
  • Типизация динамическая, но тип лучше не менять в производительном коде.
  • В именах можно использовать Unicode-символы (α, λ, Δ) — фишка для научного кода.
  • Константы объявляют через const; это помогает оптимизации.
  • Подчёркивания в числовых литералах (1_000_000) улучшают читаемость.
Проверьте себя
1. Чем имена переменных в Julia заметно отличаются от Python?
AДолжны начинаться со знака $
BМогут содержать Unicode-символы, например греческие буквы α и λ
CНе могут содержать цифры
DОбязаны быть объявлены через ключевое слово var
2. Зачем объявлять глобальную переменную через const?
AЧтобы её нельзя было прочитать
BЧтобы помочь компилятору оптимизировать код, зная, что тип не изменится
CЧтобы автоматически перевести значение в строку
DЭто обязательно для всех переменных