{"id":26844273,"url":"https://github.com/cartesian-school/introduction-to-julia","last_synced_at":"2025-04-30T19:34:33.826Z","repository":{"id":276868446,"uuid":"930572348","full_name":"Cartesian-School/Introduction-to-Julia","owner":"Cartesian-School","description":"Learn the fundamentals of the Julia language in this 13-part course using Jupyter Notebook","archived":false,"fork":false,"pushed_at":"2025-03-30T10:32:22.000Z","size":736,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-30T11:27:01.421Z","etag":null,"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"],"latest_commit_sha":null,"homepage":"https://github.com/Cartesian-School/Introduction-to-Julia","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Cartesian-School.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-10T21:11:35.000Z","updated_at":"2025-03-30T10:32:25.000Z","dependencies_parsed_at":"2025-03-30T11:22:51.387Z","dependency_job_id":"d24bb3c2-93d5-4a6f-bae4-b777f60db719","html_url":"https://github.com/Cartesian-School/Introduction-to-Julia","commit_stats":null,"previous_names":["cartesian-school/introduction-to-julia"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cartesian-School%2FIntroduction-to-Julia","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cartesian-School%2FIntroduction-to-Julia/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cartesian-School%2FIntroduction-to-Julia/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cartesian-School%2FIntroduction-to-Julia/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Cartesian-School","download_url":"https://codeload.github.com/Cartesian-School/Introduction-to-Julia/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246365623,"owners_count":20765549,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["basic-programming","data-science","data-structures","data-visualization","dispatch","function","functional-programming","julia","julia-language","julia-library","julialang","jupyter-notebook","matrix-factorization","multiple-dispatch"],"created_at":"2025-03-30T19:19:13.836Z","updated_at":"2025-04-30T19:34:33.802Z","avatar_url":"https://github.com/Cartesian-School.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Julia](https://img.shields.io/badge/-Julia-%23A270BA?style=flat\u0026logo=julia\u0026logoColor=white)](https://julialang.org/)\n[![Jupyter Notebook](https://img.shields.io/badge/Made%20with-Jupyter-orange?logo=Jupyter)](https://jupyter.org/)\n[![Linux](https://img.shields.io/badge/Linux-FCC624?style=flat\u0026logo=linux\u0026logoColor=black)](https://www.linux.org/)\n[![Windows](https://img.shields.io/badge/Windows-0078D6?style=flat\u0026logo=windows\u0026logoColor=white)](https://www.microsoft.com/windows)\n[![FreeBSD](https://img.shields.io/badge/-FreeBSD-%23870000?style=flat\u0026logo=FreeBSD\u0026logoColor=white)](https://www.freebsd.org/)\n\n# Introduction-to-Julia\n\n### Learn the language basics in this 12-part course\n\n![Julia_mini](https://github.com/user-attachments/assets/539096ea-39a1-4c54-beeb-2625474cf90f)\n\n\n\n# **Основы Julia. Слияние Простоты и Мощи** \n\n### ***🚀 13 Уроков в блокнотах Jupyter***\n\u003cbr\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n\n**Основано на работе Андреаса Ноака Йенсена (MIT \u0026 JuliaComputing)**\u003cbr\u003e\n**С обновлениями, дополнениями и переводом Сергея Соболевского**\n\n\u003cbr\u003e\u003cbr\u003e\n\n### **1️⃣ Julia – революция в вычислениях**\n\nJulia появилась в **2012 году** благодаря **четырём разработчикам**:\n\n- **Джефф Безансон**\n  \n- **Стефан Карпински**\n   \n- **Вирал Би Шах**\n    \n- **Алан Эдельман**\n  \n\u003cbr\u003e\n\nКакова была их цель? - **Создать язык программирования**, который:\n\n- Был бы **таким же лёгким, как Python** 🐍\n  \n- Работал бы **так же быстро, как C** ⚡\n   \n- Обладал бы **динамичностью Ruby** 💎\n   \n- Имел бы **математические возможности MATLAB** 📊\n  \n- Поддерживал бы **метапрограммирование, как Lisp** 🧠\n  \n\u003cbr\u003e\n\n#### **🔹 Julia = Простота + Скорость + Гибкость**\n\nJulia сочетает **интерпретируемость Python** и **производительность C/Fortran** благодаря **JIT-компиляции через LLVM**.\n\n\u003cbr\u003e\n\n📌 **Что делает её мощной?**\n\n1. **JIT-компиляция (Just-In-Time) – высокая скорость выполнения**\n   \n2. **Гибкость: динамическая и строгая типизация**\n     \n3. **Множественная диспетчеризация (Multiple Dispatch)**\n \n4. **Отличная работа с массивами (Zero-based copy-on-write)**\n \n5. **Масштабируемость: от ноутбука до суперкомпьютеров**\n\n6. **Глубокая интеграция с Python, C, R, MATLAB**\n  \n7. **Машинное обучение (Flux.jl, MLJ.jl, Turing.jl)**\n\n\u003cbr\u003e\n\n**Экосистема Julia** содержит более 10 000 пакетов, зарегистрированных в [Общем реестре](https://github.com/JuliaRegistries/General), что означает, что поиск нужного пакета может быть сложной задачей. \n\nК счастью, существуют сервисы, которые могут помочь ориентироваться в экосистеме, в том числе:\n\n- [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.\n\n- [Julia Packages](https://juliapackages.com/) — просматривайте пакеты Julia, фильтруйте по категориям и сортируйте их по популярности, дате создания или последнего обновления. Также поддерживается просмотр пакетов разработчиков.\n\n- [Julia.jl](https://github.com/svaksha/Julia.jl) — систематизация пакетов Julia, созданная вручную (информация о категориях для JuliaPackages также является производной от этой).\n  \n  \n\u003cbr\n\n---\n\n\u003cbr\u003e\n\n### **2️⃣ JIT-компиляция: Julia быстрее Python**\n\nJulia использует **JIT-компиляцию через LLVM**, что позволяет выполнять код **сопоставимо с C/Fortran**.\n\n#### **📌 Сравнение скорости выполнения (Python vs Julia)**\n\n```python\n#  Цикл в Python\nimport time\ndef sum_python(n):\n    s = 0\n    for i in range(n):\n        s += i\n    return s\n\nstart = time.time()\nsum_python(10**7)\nprint(\"Python time:\", time.time() - start)\n```\n\n```julia\n# Julia быстрый JIT-компилированный код\nfunction sum_julia(n)\n    s = 0\n    for i in 1:n\n        s += i\n    end\n    return s\nend\n\n@time sum_julia(10^7)  # JIT-компиляция + выполнение\n@time sum_julia(10^7)  # Только выполнение (в разы быстрее)\n```\n\n✅ **Julia гораздо быстрее, чем Python!** 🏎💨\n\n---\n\n\u003cbr\u003e\n\n### **3️⃣ Машинное обучение в Julia**\n\nJulia **активно развивается в области машинного обучения**, предоставляя мощные библиотеки для **нейронных сетей, вероятностных моделей и AutoML**.\n\n#### **📌 Основные библиотеки для ML в Julia**\n| **Библиотека** | **Описание** |\n|--------------|-------------|\n| **Flux.jl** | Глубокое обучение (аналог PyTorch) |\n| **MLJ.jl** | Классическое ML (аналог Scikit-Learn) |\n| **Turing.jl** | Байесовские модели и вероятностное программирование |\n| **Zygote.jl** | Автоматическое дифференцирование |\n| **DataFrames.jl** | Работа с табличными данными (аналог pandas) |\n| **CUDA.jl** | Запуск нейросетей на GPU (аналог TensorFlow GPU) |\n\n---\n\n\u003cbr\u003e\n\n## **4️⃣ Глубокое обучение в Julia с Flux.jl**\nFlux.jl – **главная библиотека для нейросетей в Julia**.  \nПоддерживает **глубокие нейросети, сверточные сети, рекуррентные сети и трансформеры**.\n\n#### **🔹 Пример: Создание нейросети**\n```julia\nusing Flux\n\n# Определяем модель\nmodel = Chain(\n    Dense(28*28, 128, relu),\n    Dense(128, 64, relu),\n    Dense(64, 10),\n    softmax\n)\n\n# Функция потерь\nloss(x, y) = Flux.Losses.crossentropy(model(x), y)\n\n# Оптимизатор Adam\nopt = ADAM(0.001)\n\n# Тренировка\nFlux.train!(loss, params(model), [(rand(28*28), rand(10))], opt)\n```\n✅ **Flux.jl похож на PyTorch, но намного проще!**\n\n---\n\n\u003cbr\u003e\n\n### **5️⃣ Julia против Python для машинного обучения**\n| **Фактор** | **Julia** | **Python** |\n|------------|-----------|------------|\n| **Скорость** | 🏎 Почти как C | 🐢 Медленный (интерпретируемый) |\n| **JIT-компиляция** | ✅ Есть (LLVM) | ❌ Нет (только Numba) |\n| **Глубокое обучение** | Flux.jl, MLJ.jl | PyTorch, TensorFlow |\n| **Масштабируемость** | ✅ Отличная (GPU, распределённые вычисления) | ⚠️ Ограниченная (GIL) |\n| **Совместимость** | ✅ Вызов C/Python/R | ✅ Совместим с C, R |\n| **Множественная диспетчеризация** | ✅ Да | ❌ Нет |\n\n💡 **Выводы**:  \nJulia быстрее, легче, мощнее, но Python пока более популярен.\n\n---\n\n\u003cbr\u003e\n\n### **6️⃣ AutoML и Probabilistic ML в Julia**\n#### **📌 MLJ.jl: Альтернатива Scikit-Learn**\nMLJ.jl – мощная библиотека для **классического машинного обучения**.\n```julia\nusing MLJ\n\n# Загружаем датасет\ndata, schema = @load_iris\n\n# Разделение на train/test\ntrain, test = partition(eachindex(data.species), 0.7)\n\n# Выбираем модель (RandomForest)\nDecisionTree = @load DecisionTreeClassifier pkg=DecisionTree\n\nmodel = DecisionTree(max_depth=3)\n\n# Создаем машину обучения\nmach = machine(model, select(data, Not(:species)), data.species)\n\n# Обучаем модель\nfit!(mach, rows=train)\n\n# Делаем предсказания\ny_pred = predict(mach, rows=test)\n```\n✅ **MLJ.jl – аналог Scikit-Learn, но мощнее и быстрее.**\n\n---\n\n\u003cbr\u003e\n\n### **7️⃣ GPU-ускорение в Julia**\nJulia **поддерживает CUDA прямо из коробки**.  \n\n📌 Для работы на GPU используйте `CUDA.jl`:\n```julia\nusing CUDA\n\n# Создаём массив на GPU\nX = cu(rand(1000, 1000))\n\n# Ускоряем вычисления на GPU\nY = X .^ 2\n```\n✅ **Julia может ускорять матричные операции в 100 раз!**\n\n---\n\n\u003cbr\u003e\n\n### **8️⃣ Julia в индустрии машинного обучения**\n\nJulia активно используется в **исследовательских центрах и компаниях**:\n- **NASA** – моделирование космических аппаратов  \n- **MIT** – анализ больших данных  \n- **BlackRock** – финансовые модели  \n\n---\n\n\u003cbr\u003e\n\n#### **🎯 Подведём итог:**\n🔹 **Julia объединяет простоту Python и скорость C**  \n🔹 **Flux.jl – мощный инструмент для глубокого обучения**  \n🔹 **MLJ.jl – альтернатива Scikit-Learn в Julia**  \n🔹 **Julia работает на GPU и суперкомпьютерах**  \n🔹 **Будущее машинного обучения за Julia!**  \n\n💡 **Julia – это язык будущего для AI, ML и High-Performance Computing!** 🚀\n\n\u003cbr\u003e\n\n---\n\n\u003cbr\u003e\n\n\u003e [!IMPORTANT]\n\u003e **🚫 Ethical Restrictions**\n\u003e \n\u003e This work may not be used in:\n\u003e \n\u003e - Military applications or systems  \n\u003e - Surveillance technologies  \n\u003e - Any activity violating human rights  \n\n\u003cbr\u003e\n\n---\n\n\u003cbr\u003e\n\n## 📬 Contact\n\n**Siergej Sobolewski**  \n\n[![Email](https://img.shields.io/badge/Email-s.sobolewski@hotmail.com-blue?logo=protonmail)](mailto:s.sobolewski@hotmail.com)  \n\n[![GitHub](https://img.shields.io/badge/GitHub-SSobol77-black?logo=github)](https://github.com/SSobol77)  \n\n[![Website](https://img.shields.io/badge/Website-Cartesian_School-orange?logo=internet-explorer)](https://cartesianschool.com)\n\n\u003cbr\u003e\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcartesian-school%2Fintroduction-to-julia","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcartesian-school%2Fintroduction-to-julia","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcartesian-school%2Fintroduction-to-julia/lists"}