https://github.com/cartesian-school/introduction-to-julia
Learn the fundamentals of the Julia language in this 13-part course using Jupyter Notebook
https://github.com/cartesian-school/introduction-to-julia
basic-programming data-science data-structures data-visualization dispatch function functional-programming julia julia-language julia-library julialang jupyter-notebook matrix-factorization multiple-dispatch
Last synced: 8 months ago
JSON representation
Learn the fundamentals of the Julia language in this 13-part course using Jupyter Notebook
- Host: GitHub
- URL: https://github.com/cartesian-school/introduction-to-julia
- Owner: Cartesian-School
- License: mit
- Created: 2025-02-10T21:11:35.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2025-03-30T10:32:22.000Z (9 months ago)
- Last Synced: 2025-03-30T11:27:01.421Z (9 months ago)
- Topics: basic-programming, data-science, data-structures, data-visualization, dispatch, function, functional-programming, julia, julia-language, julia-library, julialang, jupyter-notebook, matrix-factorization, multiple-dispatch
- Language: Jupyter Notebook
- Homepage: https://github.com/Cartesian-School/Introduction-to-Julia
- Size: 719 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
[](https://opensource.org/licenses/MIT)
[](https://julialang.org/)
[](https://jupyter.org/)
[](https://www.linux.org/)
[](https://www.microsoft.com/windows)
[](https://www.freebsd.org/)
# Introduction-to-Julia
### Learn the language basics in this 12-part course

# **Основы Julia. Слияние Простоты и Мощи**
### ***🚀 13 Уроков в блокнотах Jupyter***
**Основано на работе Андреаса Ноака Йенсена (MIT & JuliaComputing)**
**С обновлениями, дополнениями и переводом Сергея Соболевского**
### **1️⃣ Julia – революция в вычислениях**
Julia появилась в **2012 году** благодаря **четырём разработчикам**:
- **Джефф Безансон**
- **Стефан Карпински**
- **Вирал Би Шах**
- **Алан Эдельман**
Какова была их цель? - **Создать язык программирования**, который:
- Был бы **таким же лёгким, как Python** 🐍
- Работал бы **так же быстро, как C** ⚡
- Обладал бы **динамичностью Ruby** 💎
- Имел бы **математические возможности MATLAB** 📊
- Поддерживал бы **метапрограммирование, как Lisp** 🧠
#### **🔹 Julia = Простота + Скорость + Гибкость**
Julia сочетает **интерпретируемость Python** и **производительность C/Fortran** благодаря **JIT-компиляции через LLVM**.
📌 **Что делает её мощной?**
1. **JIT-компиляция (Just-In-Time) – высокая скорость выполнения**
2. **Гибкость: динамическая и строгая типизация**
3. **Множественная диспетчеризация (Multiple Dispatch)**
4. **Отличная работа с массивами (Zero-based copy-on-write)**
5. **Масштабируемость: от ноутбука до суперкомпьютеров**
6. **Глубокая интеграция с Python, C, R, MATLAB**
7. **Машинное обучение (Flux.jl, MLJ.jl, Turing.jl)**
**Экосистема Julia** содержит более 10 000 пакетов, зарегистрированных в [Общем реестре](https://github.com/JuliaRegistries/General), что означает, что поиск нужного пакета может быть сложной задачей.
К счастью, существуют сервисы, которые могут помочь ориентироваться в экосистеме, в том числе:
- [JuliaHub](https://juliahub.com/ui/Packages) — a [JuliaHub](https://juliahub.com/) service that includes search of all registered open source package documentation, code search, and navigation by tags/keywords.
- [Julia Packages](https://juliapackages.com/) — просматривайте пакеты Julia, фильтруйте по категориям и сортируйте их по популярности, дате создания или последнего обновления. Также поддерживается просмотр пакетов разработчиков.
- [Julia.jl](https://github.com/svaksha/Julia.jl) — систематизация пакетов Julia, созданная вручную (информация о категориях для JuliaPackages также является производной от этой).
### **2️⃣ JIT-компиляция: Julia быстрее Python**
Julia использует **JIT-компиляцию через LLVM**, что позволяет выполнять код **сопоставимо с C/Fortran**.
#### **📌 Сравнение скорости выполнения (Python vs Julia)**
```python
# Цикл в Python
import time
def sum_python(n):
s = 0
for i in range(n):
s += i
return s
start = time.time()
sum_python(10**7)
print("Python time:", time.time() - start)
```
```julia
# Julia быстрый JIT-компилированный код
function sum_julia(n)
s = 0
for i in 1:n
s += i
end
return s
end
@time sum_julia(10^7) # JIT-компиляция + выполнение
@time sum_julia(10^7) # Только выполнение (в разы быстрее)
```
✅ **Julia гораздо быстрее, чем Python!** 🏎💨
---
### **3️⃣ Машинное обучение в Julia**
Julia **активно развивается в области машинного обучения**, предоставляя мощные библиотеки для **нейронных сетей, вероятностных моделей и AutoML**.
#### **📌 Основные библиотеки для ML в Julia**
| **Библиотека** | **Описание** |
|--------------|-------------|
| **Flux.jl** | Глубокое обучение (аналог PyTorch) |
| **MLJ.jl** | Классическое ML (аналог Scikit-Learn) |
| **Turing.jl** | Байесовские модели и вероятностное программирование |
| **Zygote.jl** | Автоматическое дифференцирование |
| **DataFrames.jl** | Работа с табличными данными (аналог pandas) |
| **CUDA.jl** | Запуск нейросетей на GPU (аналог TensorFlow GPU) |
---
## **4️⃣ Глубокое обучение в Julia с Flux.jl**
Flux.jl – **главная библиотека для нейросетей в Julia**.
Поддерживает **глубокие нейросети, сверточные сети, рекуррентные сети и трансформеры**.
#### **🔹 Пример: Создание нейросети**
```julia
using Flux
# Определяем модель
model = Chain(
Dense(28*28, 128, relu),
Dense(128, 64, relu),
Dense(64, 10),
softmax
)
# Функция потерь
loss(x, y) = Flux.Losses.crossentropy(model(x), y)
# Оптимизатор Adam
opt = ADAM(0.001)
# Тренировка
Flux.train!(loss, params(model), [(rand(28*28), rand(10))], opt)
```
✅ **Flux.jl похож на PyTorch, но намного проще!**
---
### **5️⃣ Julia против Python для машинного обучения**
| **Фактор** | **Julia** | **Python** |
|------------|-----------|------------|
| **Скорость** | 🏎 Почти как C | 🐢 Медленный (интерпретируемый) |
| **JIT-компиляция** | ✅ Есть (LLVM) | ❌ Нет (только Numba) |
| **Глубокое обучение** | Flux.jl, MLJ.jl | PyTorch, TensorFlow |
| **Масштабируемость** | ✅ Отличная (GPU, распределённые вычисления) | ⚠️ Ограниченная (GIL) |
| **Совместимость** | ✅ Вызов C/Python/R | ✅ Совместим с C, R |
| **Множественная диспетчеризация** | ✅ Да | ❌ Нет |
💡 **Выводы**:
Julia быстрее, легче, мощнее, но Python пока более популярен.
---
### **6️⃣ AutoML и Probabilistic ML в Julia**
#### **📌 MLJ.jl: Альтернатива Scikit-Learn**
MLJ.jl – мощная библиотека для **классического машинного обучения**.
```julia
using MLJ
# Загружаем датасет
data, schema = @load_iris
# Разделение на train/test
train, test = partition(eachindex(data.species), 0.7)
# Выбираем модель (RandomForest)
DecisionTree = @load DecisionTreeClassifier pkg=DecisionTree
model = DecisionTree(max_depth=3)
# Создаем машину обучения
mach = machine(model, select(data, Not(:species)), data.species)
# Обучаем модель
fit!(mach, rows=train)
# Делаем предсказания
y_pred = predict(mach, rows=test)
```
✅ **MLJ.jl – аналог Scikit-Learn, но мощнее и быстрее.**
---
### **7️⃣ GPU-ускорение в Julia**
Julia **поддерживает CUDA прямо из коробки**.
📌 Для работы на GPU используйте `CUDA.jl`:
```julia
using CUDA
# Создаём массив на GPU
X = cu(rand(1000, 1000))
# Ускоряем вычисления на GPU
Y = X .^ 2
```
✅ **Julia может ускорять матричные операции в 100 раз!**
---
### **8️⃣ Julia в индустрии машинного обучения**
Julia активно используется в **исследовательских центрах и компаниях**:
- **NASA** – моделирование космических аппаратов
- **MIT** – анализ больших данных
- **BlackRock** – финансовые модели
---
#### **🎯 Подведём итог:**
🔹 **Julia объединяет простоту Python и скорость C**
🔹 **Flux.jl – мощный инструмент для глубокого обучения**
🔹 **MLJ.jl – альтернатива Scikit-Learn в Julia**
🔹 **Julia работает на GPU и суперкомпьютерах**
🔹 **Будущее машинного обучения за Julia!**
💡 **Julia – это язык будущего для AI, ML и High-Performance Computing!** 🚀
---
> [!IMPORTANT]
> **🚫 Ethical Restrictions**
>
> This work may not be used in:
>
> - Military applications or systems
> - Surveillance technologies
> - Any activity violating human rights
---
## 📬 Contact
**Siergej Sobolewski**
[](mailto:s.sobolewski@hotmail.com)
[](https://github.com/SSobol77)
[](https://cartesianschool.com)
---