Julia в качестве второго языка
Общецелевое программирование с привкусом науки о данных
Покупка
Новинка
Тематика:
Программирование и алгоритмизация
Издательство:
ДМК Пресс
Автор:
Энгхейм Эрик
Перевод:
Логунов А. В.
Год издания: 2023
Кол-во страниц: 448
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
Дополнительное образование
ISBN: 978-5-93700-214-3
Артикул: 855990.01.99
В языке Julia идеально сочетаются простота, гибкость и производительность. Книга позволяет освоить этот язык с нуля, демонстрируя все его аспекты — от базового синтаксиса до продвинутых функциональных возможностей — на примере ряда проектов. Описываются применение базовых типов и структур данных при симуляции пуска ракеты, использование словарей для интерпретации римских цифр, множественная диспетчеризация Julia в симулированном сражении между рыцарями и лучниками. Попутно сравниваются объектно ориентированный и функциональный стили программирования (язык Julia поддерживает оба).
Издание подойдет читателям, уже знакомым с каким-либо языком программирования, например Python, JavaScript или C#.
- Полная коллекция по информатике и вычислительной технике
- ДМК Пресс. Информационные системы и технологии
- ДМК Пресс. ИТ-технологии для профессионалов
- Интермедиатор. Информационные системы и технологии (сводная)
- Интермедиатор. ИТ-технологии для профессионалов (сводная)
- Программирование и алгоритмизация
Тематика:
ББК:
УДК:
ОКСО:
- 00.00.00: ОБЩИЕ ДИСЦИПЛИНЫ ДЛЯ ВСЕХ СПЕЦИАЛЬНОСТЕЙ
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Эрик Энгхейм Julia в качестве второго языка
Julia as a Second Language GENERAL PURPOSE PROGRAMMING WITH A TASTE OF DATA SCIENCE ERIK ENGHEIM
Julia в качестве второго языка ОБЩЕЦЕЛЕВОЕ ПРОГРАММИРОВАНИЕ С ПРИВКУСОМ НАУКИ О ДАННЫХ ЭРИК ЭНГХЕЙМ Москва, 2023
УДК 004.04 ББК 32.372 Э62 Энгхейм Э. Э62 Julia в качестве второго языка / пер. с англ. А. В. Логунова. – М.: ДМК Пресс, 2023. – 446 с.: ил. ISBN 978-5-93700-214-3 В языке Julia идеально сочетаются простота, гибкость и производительность. Книга позволяет освоить этот язык с нуля, демонстрируя все его аспекты – от базового синтаксиса до продвинутых функциональных возможностей – на примере ряда проектов. Описываются применение базовых типов и структур данных при симуляции пуска ракеты, использование словарей для интерпретации римских цифр, множественная диспетчеризация Julia в симулированном сражении между рыцарями и лучниками. Попутно сравниваются объектно ориентированный и функциональный стили программирования (язык Julia поддерживает оба). Издание подойдет читателям, уже знакомым с каким-либо языком программирования, например Python, JavaScript или C#. УДК 004.04 ББК 32.372 Copyright © DMK Press 2023. Authorized translation of the English edition © 2023 Manning Publications. This translation is published and sold by permission of Manning Publications, the owner of all rights to publish and sell the same. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. ISBN 978-1-6172-9971-1 (англ.) © Manning Publications, 2023 ISBN 978-5-93700-214-3 (рус.) © Перевод, оформление, издание, ДМК Пресс, 2023
Посвящается моим бабушке и дедушке, которые приобрели мне мой первый компьютер – Amiga 1000
Оглавление Часть I ОСНОВЫ............................................................................................24 1 Почему именно Julia?...............................................................................25 2 Julia в качестве калькулятора..................................................................42 3 Поток управления....................................................................................63 4 Julia в качестве электронной таблицы....................................................92 5 Работа с текстом.....................................................................................122 6 Хранение данных в словарях................................................................144 Часть II ТИПЫ................................................................................................161 7 Понимание типов...................................................................................162 8 Сборка ракеты........................................................................................185 9 Конвертация и приведение типов........................................................208 10 Представление неизвестных значений................................................227 Часть III КОЛЛЕКЦИИ...................................................................................239 11 Работа со строковыми литералами.......................................................240 12 Понимание коллекций Julia..................................................................273 13 Работа с множествами...........................................................................302 14 Работа с векторами и матрицами.........................................................322 Часть IV ТЕХНОЛОГИЯ РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ..............................................................................336 15 Функциональное программирование на языке Julia..........................337 16 Организация и модуляризация исходного кода..................................363 Часть V УГЛУБЛЕННОЕ ИЗУЧЕНИЕ........................................................387 17 Ввод и вывод...........................................................................................388 18 Определение параметрических типов.................................................401
Содержание Оглавление.......................................................................................................... 6 Предисловие..................................................................................................... 15 Признательности............................................................................................. 16 Об этой книге................................................................................................... 17 Об авторе........................................................................................................... 22 Об иллюстрации на обложке........................................................................ 23 Часть I ОСНОВЫ......................................................................................... 24 1 Почему именно Julia?........................................................................ 25 1.1 Что из себя представляет язык Julia?.............................................. 26 1.1.1 Плюсы и минусы статически и динамически типизированных языков............................................................ 27 1.2 Julia сочетает в себе элегантность, продуктивность и производительность........................................................................ 28 1.3 Для чего был создан язык Julia......................................................... 29 1.3.1 Ученые нуждаются в интерактивном программировании, которое предлагается динамически типизированными языками...................................................... 30 1.3.2 Разработчикам в других областях тоже нужна интерактивность, предлагаемая динамически типизированным языком.......................................................... 32 1.4 Более высокая производительность языка Julia решает проблему двух языков......................................................................... 33 1.5 Julia для всех.......................................................................................... 34 1.6 Что можно разрабатывать на языке Julia?..................................... 36 1.6.1 Julia в науке................................................................................. 36 1.6.2 Использование Julia в ненаучных целях.................................... 37 1.7 Где язык Julia менее идеален............................................................ 37 1.8 Что вы узнаете из этой книги........................................................... 39 Резюме.................................................................................................... 40 2 Julia в качестве калькулятора................................................. 42 2.1 Командная строка Julia....................................................................... 43 2.2 Использование констант и переменных........................................ 44 2.2.1 Присваивание и привязывание значений к переменным........ 48
Содержание 2.2.2 Использование переменной ans................................................. 49 2.2.3 Что такое литеральный коэффициент?................................ 50 2.3 Разные типы чисел и их длина в битах........................................... 51 2.3.1 Написание чисел с использованием разных числовых форматов.................................................................................... 52 2.4 Числа с плавающей точкой................................................................ 54 2.4.1 Выполнение операций на целых числах и числах с плавающей точкой.................................................................. 55 2.5 Определение функций........................................................................ 56 2.5.1 Хранение определений функций в файле.................................. 57 2.5.2 Работа с функциями в интерактивной среде REPL............... 58 2.5.3 Функции повсюду........................................................................ 59 2.5.4 Функции для работы с числами................................................ 60 2.6 Как использовать числа на практике.............................................. 62 Резюме.................................................................................................... 62 3 Поток управления............................................................................... 63 3.1 Навигация и тригонометрия............................................................. 64 3.2 Булевы выражения............................................................................... 66 3.2.1 Составные инструкции............................................................. 68 3.3 Циклы...................................................................................................... 69 3.3.1 Блок-схема................................................................................... 71 3.3.2 Составление математической таблицы синусной функции ...................................................................................... 72 3.3.3 Объекты-диапазоны.................................................................. 74 3.3.4 Циклы for..................................................................................... 75 3.4 Многострочные функции................................................................... 76 3.4.1 Реализация тригонометрической синусной функции............. 77 3.5 Реализация факториала..................................................................... 79 3.6 Факториал с использованием рекурсии......................................... 80 3.7 Инструкции if........................................................................................ 80 3.7.1 Инструкции if-else...................................................................... 81 3.7.2 Подчиненный компонент elseif................................................. 82 3.8 Исключения для обработки ошибок................................................ 83 3.9 Поток управления в отличие от потока данных........................... 85 3.10 Подсчет кроликов................................................................................. 86 3.10.1 Базовый случай........................................................................... 89 3.10.2 Итерации по сравнению с рекурсией........................................ 89 3.10.3 Возвращать или не возвращать............................................... 90 Резюме............................................................................................................... 91 4 Julia в качестве электронной таблицы............................ 92 4.1 Анализ продажи пиццы...................................................................... 93 4.2 Различные типы массивов................................................................. 94 4.3 Выполнение операций на массивах................................................ 96 4.4 Работа с модулем Statistics................................................................ 98
Содержание 4.5 Доступ к элементам............................................................................100 4.6 Создание массивов.............................................................................103 4.7 Отображение значений в массиве..................................................105 4.8 Знакомство с буквенными символами и строковыми литералами...........................................................................................109 4.9 Хранение данных о пиццах в кортежах.........................................112 4.10 Фильтрация пицц на основе предикатов......................................116 4.10.1 Комбинирование функций более высокого порядка................117 4.11 Отображение и редукция массива..................................................118 4.11.1 Таблица синусов с использованием map и reduce....................119 4.12 Подсчет совпадений с использованием булевых массивов................................................................................................120 Резюме...................................................................................................121 5 Работа с текстом.............................................................................122 5.1 Создание хорошо отформатированной таблицы продажи пицц......................................................................................123 5.1.1 Функции print, println и printstyled...........................................124 5.1.2 Печать нескольких элементов.................................................128 5.1.3 Печать нескольких пицц...........................................................129 5.1.4 Выравнивание с помощью функций lpad и rpad......................130 5.1.5 Добавление линий......................................................................131 5.2 Распечатка тригонометрической таблицы...................................132 5.3 Чтение и запись продажи пицц в CSV-файлы.............................134 5.3.1 Запись продаж пицц в файл......................................................136 5.3.2 Чтение продаж пицц из файла.................................................137 5.4 Взаимодействие с пользователем...................................................140 Резюме...................................................................................................142 6 Хранение данных в словарях......................................................144 6.1 Синтаксический разбор римских цифр.........................................145 6.2 Использование типа Dict...................................................................147 6.3 Прокручивание буквенных символов в цикле.............................149 6.4 Перечисление значений и индексов..............................................150 6.5 Объяснение процесса конвертации...............................................151 6.6 Использование словарей...................................................................152 6.6.1 Создание словарей.....................................................................152 6.6.2 Доступ к элементам.................................................................154 6.7 Зачем использовать словарь?..........................................................155 6.8 Использование именованных кортежей в качестве словарей................................................................................................158 6.8.1 Когда применять именованный кортеж?...............................159 6.8.2 Связывание всего воедино.........................................................160 Резюме..............................................................................................................160
Содержание Часть II ТИПЫ................................................................................................161 7 Понимание типов...............................................................................162 7.1 Создание составных типов из примитивных..............................163 7.2 Обследование иерархий типов........................................................166 7.3 Создание симулятора сражений.....................................................170 7.3.1 Определение типов воинов.......................................................170 7.3.2 Добавление воинам поведения.................................................172 7.3.3 Использование множественной диспетчеризации для вызова методов...................................................................175 7.4 Как Julia выбирает метод, который следует вызвать.................179 7.4.1 Сравнение множественной диспетчеризации Julia с объектно ориентированными языками...............................181 7.4.2 Чем множественная диспетчеризация отличается от перегрузки функций?...........................................................183 Резюме...................................................................................................184 8 Сборка ракеты......................................................................................185 8.1 Сборка простой ракеты в исходном коде......................................186 8.2 Поддержание инвариантов в исходном коде............................... 191 8.3 Создание объектов с помощью функций-конструкторов.........192 8.4 Различия между внешними и внутренними конструкторами...................................................................................194 8.5 Моделирование ракетных двигателей и полезной нагрузки................................................................................................195 8.6 Сборка простой ракеты.....................................................................198 8.7 Создание ракеты с несколькими ступенями и двигателями......................................................................................199 8.8 Запуск ракеты в космос.....................................................................204 Резюме...................................................................................................207 9 Конвертация и приведение типов........................................208 9.1 Обследование системы приведения чисел...................................209 9.2 Понимание конвертации чисел.......................................................212 9.3 Определение конкретно-прикладных единиц измерения углов.......................................................................................................215 9.3.1 Определение конструкторов углов.........................................217 9.3.2 Определение арифметических операций на углах.................218 9.3.3 Определение функций доступа для извлечения градусов, минут и секунд..........................................................................219 9.3.4 Отображение углов DMS на экране........................................220 9.3.5 Определение конвертаций типов............................................221 9.3.6 Создание красивых литералов углов.......................................222 9.3.7 Приведения типов.....................................................................223 Резюме...................................................................................................225