Языки программирования

Учебник Julia для начинающих

20 уроков · 6 разделов · бесплатно, без регистрации

Julia — молодой язык программирования, созданный, чтобы решить «проблему двух языков»: писать прототипы на удобном Python, а затем переписывать узкие места на C ради скорости. Julia предлагает и удобство, и скорость в одном инструменте, поэтому её всё чаще выбирают для науки, анализа данных, машинного обучения и численных методов.

В этом курсе вы начнёте с установки и REPL, разберёте переменные, числа и строки, освоите массивы и матрицы с их фирменной 1-индексацией и broadcasting, изучите управление потоком и функции. Затем мы дойдём до главной фишки Julia — множественной диспетчеризации и системы типов, поймём, почему язык такой быстрый, и посмотрим на экосистему пакетов: DataFrames, Plots, линейную алгебру, метапрограммирование и параллелизм. По ходу мы будем постоянно сравнивать Julia с Python, R и MATLAB.

Курс «Julia: язык для научных вычислений» состоит из 6 разделов и 20 уроков: Знакомство с Julia, Числа, строки и базовые типы, Массивы, матрицы и broadcasting, Управление потоком и функции, Множественная диспетчеризация и типы и Производительность, экосистема и практика. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.

Программа курса

  1. 1 Знакомство с Julia

    1. Что такое Julia и зачем она нужна

      Julia — язык со скоростью C и удобством Python, созданный для научных вычислений, данных и численных методов.

    2. Установка, REPL и запуск кода

      Как установить Julia, работать в интерактивном REPL, запускать скрипты и пользоваться режимами help и Pkg.

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

      Переменные в Julia: динамическая типизация, Unicode-имена, соглашения об именовании, комментарии и константы.

  2. 2 Числа, строки и базовые типы

    1. Числа и арифметика

      Целые и дробные числа в Julia, типы Int64 и Float64, переполнение, деление и операторы арифметики.

    2. Рациональные, комплексные и произвольная точность

      Богатая числовая система Julia: рациональные дроби, комплексные числа, BigInt и BigFloat произвольной точности.

    3. Строки и интерполяция

      Строки в Julia: создание, интерполяция через $, конкатенация, методы, символы Char и многострочные литералы.

  3. 3 Массивы, матрицы и broadcasting

    1. Массивы и 1-индексация

      Векторы и массивы в Julia: создание, 1-индексация, срезы, добавление элементов, отличия от Python-списков.

    2. Матрицы и многомерные массивы

      Матрицы в Julia: создание, индексация по строкам и столбцам, транспонирование, column-major хранение и операции.

    3. Broadcasting и точечные операции

      Broadcasting в Julia: точечные операторы .+ .* sin., поэлементные вычисления над массивами без циклов и их преимущества.

  4. 4 Управление потоком и функции

    1. Условия и циклы

      Управление потоком в Julia: if/elseif/else, циклы for и while, ключевое слово end, диапазоны и тернарный оператор.

    2. Comprehension и генераторы

      Array comprehension в Julia: компактное создание массивов, условия фильтрации, вложенные comprehension и ленивые генераторы.

    3. Функции: синтаксис и аргументы

      Функции в Julia: полный и краткий синтаксис, множественный возврат, анонимные функции, аргументы по умолчанию и именованные.

  5. 5 Множественная диспетчеризация и типы

    1. Множественная диспетчеризация — сердце Julia

      Multiple dispatch в Julia: выбор метода по типам всех аргументов, отличие от ООП Python и почему это главная фишка языка.

    2. Система типов: абстрактные и конкретные

      Система типов Julia: абстрактные и конкретные типы, иерархия, struct, и почему типы важны для скорости и диспетчеризации.

    3. Параметрические типы

      Параметрические типы в Julia: Vector{T}, обобщённые структуры, type parameters и почему они дают скорость без потери гибкости.

  6. 6 Производительность, экосистема и практика

    1. Почему Julia быстрая: JIT и стабильность типов

      Производительность Julia: JIT-компиляция через LLVM, type stability, @code_warntype, оборачивание кода в функции и BenchmarkTools.

    2. Пакеты, Pkg и работа с данными

      Менеджер пакетов Pkg в Julia, окружения и Project.toml, экосистема, обзор DataFrames.jl для работы с табличными данными.

    3. Линейная алгебра, графики, метапрограммирование и параллелизм

      Обзор инструментов Julia: встроенная линейная алгебра LinearAlgebra, Plots.jl, макросы и метапрограммирование, параллелизм.

    4. Julia против Python, R и MATLAB

      Сравнение Julia с Python, R и MATLAB: когда Julia выигрывает по скорости и выразительности, а когда лучше остаться на Python.

    5. Применения: наука, машинное обучение, оптимизация

      Где применяют Julia: наука и численное моделирование, машинное обучение Flux.jl, оптимизация JuMP, и куда двигаться дальше.