Введение в программирование на Julia
Полное руководство по языку программирования Julia — высокопроизводительный, универсальный динамический язык, хорошо подходящий для научных и численных вычислений. Курс охватывает все аспекты от базового синтаксиса и типов данных до продвинутых тем, таких как метапрограммирование, работа с данными в виде таблиц, сетевые взаимодействия и подключение к базам данных.
Обзор курса
📚 Краткое содержание
Полное руководство по языку программирования Julia — высокопроизводительный, универсальный динамический язык, отлично подходящий для научных и численных вычислений. Курс охватывает всё — от базовой синтаксической структуры и типов данных до продвинутых тем, таких как метапрограммирование, работа с таблицами данных, сетевые взаимодействия и подключение к базам данных.
Овладейте высокопроизводительными научными вычислениями со скоростью С и простотой Python.
Автор: Tutorials Point (I) Pvt. Ltd.
Благодарности: Авторские права 2020 г. на материалы принадлежат компании Tutorials Point (I) Pvt. Ltd. Все контенты и графические элементы являются собственностью Tutorials Point.
🎯 Цели обучения
- Определить язык программирования Julia и выделить его ключевые особенности и исторический контекст.
- Отличать язык Julia от других языков технических вычислений с точки зрения производительности и синтаксиса.
- Успешно установить и настроить среду выполнения Julia и интерактивную оболочку (REPL) на системах Linux, Windows и macOS.
- Применять стилистические правила именования переменных в Julia и использовать одно- и многострочные комментарии для документирования кода.
- Создавать массивы различных типов и размерностей с использованием диапазонов, генераторов, пониманий и встроенных функций, таких как
zeros()иones(). - Выполнять сложные операции индексирования и модификации массивов с применением логики истинности, ключевого слова
endи функций с восклицательным знаком (например,push!,splice!). - Создавать и управлять кортежами и именованными кортежами, включая их использование как аргументов функций с ключевыми словами.
- Обнаруживать и управлять поведением переполнения целых чисел и ошибками деления с помощью стандартных и произвольной точности типов.
- Анализировать представление чисел с плавающей запятой, включая знаковые нули, специальные значения (NaN, Inf) и машинную эпсилон.
- Выполнять и комбинировать арифметические, побитовые и обновляющие операторы для манипуляций с типами данных.
🔹 Урок 1: Введение в Julia и настройка среды
Обзор: Этот урок представляет язык Julia — высокоуровневый, высокопроизводительный динамический язык программирования, разработанный специально для научных вычислений и анализа данных. Студенты изучат его историю, основные характеристики и сравнение с традиционными языками, такими как Python, R и MATLAB. Урок предоставляет подробное руководство по установке среды выполнения Julia на различных операционных системах и управлению мощной экосистемой пакетов.
Результаты обучения:
- Определить язык программирования Julia и выделить его ключевые особенности и исторический контекст.
- Отличать язык Julia от других языков технических вычислений с точки зрения производительности и синтаксиса.
- Успешно установить и настроить среду выполнения Julia и интерактивную оболочку (REPL) на системах Linux, Windows и macOS.
🔹 Урок 2: Основы синтаксиса и работа с массивами
Обзор: Этот урок знакомит с основами синтаксиса языка Julia, фокусируясь на правилах именования переменных, комментариях и надёжной работе с массивами. Студенты пройдут путь от простого присваивания переменных до сложной работы с массивами, включая создание многомерных массивов, понимания, и мутабельных операций, необходимых для высокопроизводительных научных вычислений.
Результаты обучения:
- Применять стилистические правила именования переменных в Julia и использовать одно- и многострочные комментарии для документирования кода.
- Создавать массивы различных типов и размерностей с использованием диапазонов, генераторов, пониманий и встроенных функций, таких как
zeros()иones(). - Выполнять сложные операции индексирования и модификации массивов с применением логики истинности, ключевого слова
endи функций с восклицательным знаком (например,push!,splice!).
🔹 Урок 3: Кортежи и числовые типы данных
Обзор: Этот урок даёт всесторонний технический обзор основных структур данных и числовых типов в Julia, с особым акцентом на неизменяемые кортежи и тонкости компьютерной арифметики. Студенты исследуют создание и работу с именованными кортежами, поведение целых чисел с фиксированной точностью (включая переполнение), а также характеристики точности чисел с плавающей запятой, рациональных и комплексных чисел. Эта основа критически важна для высокопроизводительных научных вычислений и приложений анализа данных.
Результаты обучения:
- Создавать и управлять кортежами и именованными кортежами, включая их использование как аргументов функций с ключевыми словами.
- Обнаруживать и управлять поведением переполнения целых чисел и ошибками деления с помощью стандартных и произвольной точности типов.
- Анализировать представление чисел с плавающей запятой, включая знаковые нули, специальные значения (NaN, Inf) и машинную эпсилон.
🔹 Урок 4: Операторы и математические функции
Обзор: Этот урок предлагает всестороннее исследование системы операторов в Julia и обширной библиотеки математических функций. Студенты будут проходить путь от простых арифметических и побитовых операций до продвинутых «точечных» векторизованных операций и сложных цепочек сравнений. Далее рассматриваются ключевые инструменты для научных вычислений, включая округление, специализированное деление, логарифмические и тригонометрические функции.
Результаты обучения:
- Выполнять и комбинировать арифметические, побитовые и обновляющие операторы для манипуляций с типами данных.
- Применять векторизованную «точечную» запись для выполнения операций над элементами массивов.
- Анализировать поведение оценки и правила приоритета при цепочках сравнений и сложных математических выражениях.
🔹 Урок 5: Строки и функциональное программирование
Обзор: Этот урок охватывает два ключевых аспекта обработки данных в Julia: манипулирование строками и функциональное программирование. Студенты изучат мощную поддержку Юникода/UTF-8 строк в Julia, расширенное индексирование и нестандартные литералы, а также основную силу функционального парадигма языка, включая множественную диспетчеризацию, анонимные функции и функции высшего порядка, такие как map и filter.
Результаты обучения:
- Манипулировать и искать строки с помощью индексирования по диапазону, вставки значений и регулярных выражений.
- Создавать гибкие функции с использованием опциональных аргументов, аргументов с ключевыми словами и рекурсии.
- Применять шаблоны функционального программирования (Map/Filter) и использовать Множественную диспетчеризацию для специализированного выбора методов.
🔹 Урок 6: Управление потоком и коллекции ключ-значение
Обзор: Этот урок охватывает основные структуры для управления выполнением программы и управления сложными коллекциями данных в Julia. Студенты научатся реализовывать условную логику с помощью тернарных выражений, булевых переключателей и стандартных блоков if-else, а также техники итерации с использованием циклов for и while. Кроме того, урок рассматривает высокий уровень структур данных, включая словари для сопоставления ключ-значение и множества для хранения уникальных элементов, с акцентом на их создание, манипуляцию и теоретико-множественные операции.
Результаты обучения:
- Реализовывать компактную условную логику с помощью тернарных операторов и коротких цепочек булевых выражений.
- Создавать надёжные циклы и обрабатывать ошибки во время выполнения с помощью исключений и блоков
do. - Управлять ассоциативными данными с помощью словарей, включая поиск, объединение и анализ частоты.
🔹 Урок 7: Даты, ввод-вывод и метапрограммирование
Обзор: Этот урок исследует три продвинутых направления языка программирования Julia: управление временной информацией с помощью модуля Dates, надёжные операции ввода-вывода (I/O) файлов, и мощность метапрограммирования. Студенты узнают, как работать с датами и временем, перемещаться и взаимодействовать с файловой системой, а также понять, как код на Julia разбирается, представляется в виде абстрактного дерева синтаксического анализа (AST) и изменяется с помощью макросов.
Результаты обучения:
- Выполнять сложные арифметические действия с датами, форматирование и округление, понимая внутреннюю иерархию типов временных объектов.
- Реализовывать эффективные техники работы с файлами, включая чтение по потоку, извлечение метаданных и безопасные шаблоны закрытия файлов.
- Анализировать структуру выражений на Julia и создавать макросы для автоматизации генерации и оценки кода.
🔹 Урок 8: Визуализация данных и работа с таблицами данных
Обзор: Этот урок рассматривает двойную необходимость визуального и статистического анализа в Julia, начиная с функциональной графики и текстовой визуализации (UnicodePlots). Затем переходит к управлению сложными наборами данных с использованием экосистемы DataFrames.jl, уделяя особое внимание критической роли очистки данных, моделирования регрессии и структурных изменений для подготовки данных к научным исследованиям.
Результаты обучения:
- Генерировать функциональные и текстовые графики с помощью
Plots.jl,UnicodePlotsиVegaLite. - Анализировать связь между описательной статистикой и визуализацией данных с использованием четвёрки Анскомба и моделей линейной регрессии.
- Выполнять продвинутую работу с таблицами данных, включая обработку пропущенных значений, структурные изменения (добавление/удаление строк и столбцов) и условное фильтрование.
🔹 Урок 9: Научные вычисления: данные, модули и графика
Обзор: Этот урок охватывает основную экосистему языка Julia для научных вычислений, с фокусом на три краеугольных камня: обработку данных (CSV, HDF5, XML, RDatasets), статистический анализ (описательная статистика и выборки) и модульную структуру программ на Julia. Наконец, рассматривается широкий спектр инструментов визуализации данных — от низкоуровневой текстовой графики до высокого уровня реализаций «грамматики графиков».
Результаты обучения:
- Выполнять ввод-вывод и манипуляции с данными: Импортировать и экспортировать файлы CSV и HDF5, парсить XML, выполнять подвыборку и сортировку в таблицах данных.
- Выполнять статистический анализ: Вычислять простую и взвешенную описательную статистику (среднее, дисперсия, стандартное отклонение) и применять различные методы выборки.
- Управлять структурой кода: Устанавливать и использовать модули/пакеты эффективно, понимая внутреннюю структуру каталогов пакета на Julia.
🔹 Урок 10: Сетевые технологии и взаимодействие с базами данных
Обзор: Этот урок исследует возможности языка программирования Julia в организации сетевого взаимодействия и подключения к различным системам баз данных. Рассматриваются низкоуровневые сети через протоколы TCP и именованные каналы, высокоуровневые сервисы (электронная почта, Twitter, WebSockets), интеграция с облачными платформами (AWS и Google Cloud). Также подробно описываются надёжные подключения к базам данных с использованием MySQL, JDBC, ODBC, SQLite и PostgreSQL, с акцентом на выполнение запросов и управление метаданными.
Результаты обучения:
- Настроить и развернуть сетевые службы с использованием протоколов TCP, именованных каналов и WebSockets.
- Интегрировать приложения на Julia с облачными средами (AWS/Google Cloud) и социальными/мессенджерскими API (Twitter/Email).
- Реализовывать решения для баз данных с использованием прямых интерфейсов (MySQL, SQLite) и абстракций через промежуточное ПО (JDBC, ODBC, DBI).