Осваиваем язык Julia
Покупка
Издательство:
ДМК Пресс
Автор:
Шеррингтон Малкольм
Перевод:
Логунов А. В.
Год издания: 2017
Кол-во страниц: 416
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-97060-370-3
Артикул: 712478.01.99
Доступ онлайн
В корзину
Julia — это хорошо структурированный язык программирования с большим быстродействием, устраняющий классическую проблему выполнения анализа на одном языке и трансляции его результатов на второй с целью повышения производительности. Приведены этапы инсталляции и выполнения Julia в разных операционных средах. Описываются различные способы работы с языком, его ключевой функционал, пошагово разбираются практические примеры. Рассмотрена работа Julia с внешними процессами, благодаря которым происходит значительное улучшение качества визуализации графиков и данных. Не обделено вниманием метапрограммирование, формирующее сетевую и распределенную вычислительную среду языка. Издание предназначено для специалистов в области анализа данных, а также разработчиков, желающих познакомиться с новым языком программирования.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов.
Для полноценной работы с документом, пожалуйста, перейдите в
ридер.
Малкольм Шеррингтон Осваиваем язык Julia
Malcolm Sherrington Mastering Julia Develop your analytical and programming skills further in Julia to solve complex data processing problems BIRMINGHAM - MUMBAI
Малкольм Шеррингтон Осваиваем язык Julia Совершенствование мастерства в области аналитики и программирования при помощи Julia в целях решения задач комплексной обработки данных Москва, 2017
УДК 004.438Julia ББК 32.973.2 Ш49 Шеррингтон М. Ш49 Осваиваем язык Julia / пер. с анг. А. В. Логунова. – М.: ДМК Пресс, 2017. – 416 с.: ил. ISBN 978-5-97060-370-3 Julia – это хорошо структурированный язык программирования с большим быстродействием, устраняющий классическую проблему выполнения анализа на одном языке и трансляции его результатов на второй с целью повышения производительности. Приведены этапы инсталляции и выполнения Julia в разных операционных средах. Описываются различные способы работы с языком, его ключевой функционал, пошагово разбираются практические примеры. Рассмотрена работа Julia с внешними процессами, благодаря которым происходит значительное улучшение качества визуализации графиков и данных. Не обделено вниманием метапрограммирование, формирующее сетевую и распределенную вычислительную среду языка. Издание предназначено для специалистов в области анализа данных, а также разработчиков, желающих познакомиться с новым языком программирования. УДК 004.438Julia ББК 32.973.2 Copyright ©Packt Publishing, 2015. First published in the English language under the title «Mastering Julia -(9781783553310)» Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги. ISBN 978-0-13-407770-3 (анг.) Copyright © Packt Publishing, 2015. ISBN 978-5-97060-370-3 (рус.) © Перевод, оформление, издание, ДМК Пресс, 2017
Содержание Осваиваем язык Julia ......................................................12 Об авторе ......................................................................13 О рецензентах................................................................14 Предисловие .................................................................15 О чем рассказывает эта книга ..................................................................................................16 Что вам потребуется для работы ............................................................................................17 Для кого эта книга .......................................................................................................................17 Соглашения ....................................................................................................................................18 Обратная связь .........................................................................................................................19 Скачивание исходного кода программ ............................................................................19 Ошибки и опечатки ................................................................................................................19 Нарушение авторских прав .................................................................................................19 Вопросы ......................................................................................................................................20 Readme от автора ..........................................................................................................................20 Комментарий переводчика .......................................................................................................20 Выполнение примеров программного кода на Julia ....................................................21 Установка среды разработки Julia .....................................................................................22 Установка пакетов в среду разработки Julia ..................................................................23 Установка и удаление IDE Juno/Atom ............................................................................25 Установка и работа с плагином для Eclipse ....................................................................25 Работа с Julia в облаке JuliaBox ..........................................................................................26 Установка и удаление дистрибутива Anaconda Python .............................................26 Запуск сервера записных книжек Jupyter ......................................................................27 Факультативные настройки среды ...................................................................................27 Среда разработки Julia ....................................................29 Введение ..........................................................................................................................................29 Философия ................................................................................................................................30 Роль в науке о данных и в области больших данных .................................................31 Сопоставление с другими языками ..................................................................................32 Характеристики .......................................................................................................................34 Начало работы ...............................................................................................................................35 Исходные тексты Julia ...........................................................................................................36 Сборка из исходников ...........................................................................................................37 Изучение стека исходного кода .........................................................................................41 Интегрированная среда разработки Juno .......................................................................42
Содержание Плагин JuliaDT для среды программирования Eclipse .............................................43 Среда программирования IJulia .........................................................................................44 Краткий обзор языка Julia ........................................................................................................46 Julia через консоль ..................................................................................................................47 Установка некоторых пакетов .............................................................................................50 Мои эталонные испытания ..................................................................................................52 Управление пакетами .................................................................................................................53 Вывод перечня пакетов, добавление и удаление..........................................................53 Выбор и ознакомление с пакетами ...................................................................................54 Как деинсталлировать Julia .................................................................................................58 Добавление незарегистрированного пакета ..................................................................59 Особенности языка Julia ............................................................................................................59 Параллельная обработка ......................................................................................................59 Множественная диспетчеризация ....................................................................................60 Гомоиконные макрокоманды ..............................................................................................60 Межязыковое взаимодействие ...........................................................................................60 Заключение ....................................................................................................................................61 Разработка на Julia .........................................................62 Целые числа, биты, байты и логические значения ...........................................................62 Целое ...........................................................................................................................................63 Логические и арифметические операторы .....................................................................65 Логический тип ........................................................................................................................65 Массивы ..........................................................................................................................................66 Операции на матрицах ..........................................................................................................68 Поэлементные операции ......................................................................................................68 Простая марковская цепь – кошки и мышки ................................................................69 Символьный и строковый типы .............................................................................................70 Символьный тип .....................................................................................................................70 Строковый тип .........................................................................................................................71 Пример: игра «Быки и коровы» .........................................................................................74 Вещественные, комплексные и рациональные числа .....................................................76 Вещественные ..........................................................................................................................77 Рациональные числа ..............................................................................................................78 Комплексные числа ................................................................................................................78 Составные типы ............................................................................................................................82 Дополнительно о матрицах ......................................................................................................82 Векторизованный и девекторизованный программный код ...................................83 Многомерные массивы .........................................................................................................83 Разреженные матрицы ..........................................................................................................85 Массивы и таблицы данных .....................................................................................................86
Содержание 7 Словари, множества и прочее ..................................................................................................87 Словари ......................................................................................................................................87 Множества .................................................................................................................................89 Другие структуры данных....................................................................................................90 Заключение ....................................................................................................................................91 Типы и диспетчеризация ..................................................92 Функции..........................................................................................................................................92 Объекты первого класса .......................................................................................................92 Передача аргументов .............................................................................................................96 Область видимости.............................................................................................................. 100 Задача о восьми ферзях ..................................................................................................... 103 Система типов Julia .................................................................................................................. 104 Обзор рационального типа ............................................................................................... 104 Тип данных для транспортных средств ........................................................................ 107 Перечисляемый тип ............................................................................................................ 116 Множественная диспетчеризация ...................................................................................... 118 Параметрические типы ...................................................................................................... 119 Операции преобразования и приведения .................................................................... 121 Модуль для фиксированного 3D-вектора ................................................................... 122 Заключение ................................................................................................................................. 124 Функциональная совместимость .....................................125 Взаимодействие с другими программными средами ................................................... 125 Обращение к программам на C и Fortran .................................................................... 126 Язык Python ........................................................................................................................... 131 Некоторые другие языки ................................................................................................... 133 Программный интерфейс Julia ........................................................................................ 133 Обращение к API из C ........................................................................................................ 134 Метапрограммирование ......................................................................................................... 136 Символические имена ........................................................................................................ 136 Макрокоманды ...................................................................................................................... 138 Тестирование ......................................................................................................................... 141 Макрокоманда enum ........................................................................................................... 143 Объект Task и многозадачность ........................................................................................... 145 Параллельные операции .................................................................................................... 146 Распределенные массивы .................................................................................................. 148 Простая модель MapReduce ............................................................................................. 151 Исполнение команд .................................................................................................................. 152 Запуск команд на исполнение ......................................................................................... 153 Работа с файловой системой ............................................................................................ 155
Содержание Перенаправление ввода-вывода и конвейеры ........................................................... 157 Заключение ................................................................................................................................. 160 Работа с данными .........................................................161 Базовая система ввода-вывода ............................................................................................. 161 Терминальный ввод-вывод ............................................................................................... 161 Дисковые файлы .................................................................................................................. 163 Обработка текста .................................................................................................................. 165 Двоичные файлы .................................................................................................................. 167 Структурированные наборы данных ................................................................................. 169 Файлы CSV и DLM ............................................................................................................. 169 Файлы HDF5 ......................................................................................................................... 173 Файлы XML ........................................................................................................................... 176 DataFrames и RDatasets .......................................................................................................... 179 Пакет DataFrames ................................................................................................................ 179 Таблицы данных DataFrame ............................................................................................. 180 Пакет RDatasets .................................................................................................................... 183 Статистика ................................................................................................................................... 187 Простые статистики ............................................................................................................ 188 Выборки и их оценка .......................................................................................................... 190 Модуль Pandas ...................................................................................................................... 190 Отдельные темы ........................................................................................................................ 192 Временные ряды ................................................................................................................... 192 Распределения вероятностей ........................................................................................... 195 Проверка статистических гипотез ................................................................................. 197 Обобщенная линейная модель ........................................................................................ 199 Заключение ................................................................................................................................. 202 Научное программирование ...........................................203 Линейная алгебра ...................................................................................................................... 204 Система уравнений .............................................................................................................. 204 Разложение матриц ............................................................................................................. 206 Собственные значения и собственные векторы ........................................................ 207 Матрицы специального вида ........................................................................................... 210 Обработка сигналов ................................................................................................................. 211 Частотный анализ ................................................................................................................ 211 Фильтрация и сглаживание .............................................................................................. 211 Цифровые фильтры ............................................................................................................. 214 Обработка изображений .................................................................................................... 214 Дифференциальные уравнения ........................................................................................... 217 Решение обыкновенных дифференциальных уравнений ...................................... 217
Содержание 9 Нелинейные обыкновенные дифференциальные уравнения .............................. 219 Дифференциальные уравнения в частных производных ...................................... 222 Оптимизационные задачи ...................................................................................................... 224 Пакет JuMP ............................................................................................................................ 225 Пакет Optim ........................................................................................................................... 227 Пакет NLopt ........................................................................................................................... 229 Стохастические задачи ............................................................................................................ 233 Стохастическое моделирование ...................................................................................... 233 Байесовские методы и марковские процессы ............................................................ 237 Заключение ................................................................................................................................. 243 Графика ......................................................................244 Базовая графика в Julia ........................................................................................................... 245 Построение текстовых графиков .................................................................................... 245 Пакет Cairo ............................................................................................................................. 246 Пакет Winston ....................................................................................................................... 248 Визуализация данных ............................................................................................................. 251 Пакет Gadfly ........................................................................................................................... 252 Пакет Compose ...................................................................................................................... 257 Графические движки ................................................................................................................ 259 Пакет PyPlot .......................................................................................................................... 259 Пакет Gaston .......................................................................................................................... 262 Пакет PGFPlots .................................................................................................................... 264 Использование сети Интернет ............................................................................................. 267 Пакет Bokeh ........................................................................................................................... 267 Пакет Plotly ............................................................................................................................ 268 Растровая графика .................................................................................................................... 271 Возвращаясь к пакету Cairo ............................................................................................. 272 Возвращаясь к пакету Winston ........................................................................................ 273 Пакеты Images и ImageView ............................................................................................. 274 Заключение ................................................................................................................................. 276 Базы данных ................................................................278 Общий обзор баз данных ........................................................................................................ 278 Вот две таблетки: красная и синяя. Выбирай! ........................................................... 279 Взаимодействие с базами данных .................................................................................. 280 Другие соображения ........................................................................................................... 282 Реляционные базы данных .................................................................................................... 283 Создание и загрузка ............................................................................................................ 283 Нативные интерфейсы ....................................................................................................... 286 Программный интерфейс ODBC ................................................................................... 289
Содержание Другие методы взаимодействия...................................................................................... 293 Интерфейс DBI ..................................................................................................................... 294 Пакет PyCall .......................................................................................................................... 296 Стандарт взаимодействия JDBC .................................................................................... 298 Хранилища данных NoSQL ................................................................................................... 299 Системы «ключ-значение» ............................................................................................... 300 Документоориентированные хранилища данных .................................................... 303 Взаимодействие с RESTful .................................................................................................... 306 Данные в формате JSON .................................................................................................... 307 Интернет-СУБД ................................................................................................................... 308 Графовые системы хранения данных ............................................................................ 311 Заключение ................................................................................................................................. 314 Сетевое взаимодействие ...............................................315 Сокеты и серверы ...................................................................................................................... 315 Стандартные порты ............................................................................................................. 315 Сокеты UDP и TCP в Julia ............................................................................................... 316 «Зазеркальный» эхо-сервер.............................................................................................. 317 Именованные каналы ......................................................................................................... 320 Работа в сети Интернет ........................................................................................................... 321 Веб-служба на основе TCP ............................................................................................... 321 Группа пакетов JuliaWeb .................................................................................................... 323 Сервер цитат .......................................................................................................................... 326 Технология WebSocket ....................................................................................................... 328 Обмен сообщениями ................................................................................................................ 332 Электронная почта .............................................................................................................. 332 Социальная сеть Twitter .................................................................................................... 333 СМС-сообщения .................................................................................................................. 335 Облачные службы ..................................................................................................................... 338 Введение в веб-службы Amazon ...................................................................................... 339 Пакет AWS.jl .......................................................................................................................... 340 Платформа Google Cloud .................................................................................................. 344 Заключение ................................................................................................................................. 347 Работа с Julia ...............................................................348 Внутреннее устройство ........................................................................................................... 348 Язык Femtolisp ...................................................................................................................... 349 Программный интерфейс Julia ........................................................................................ 350 Генерация машинных кодов ............................................................................................. 352 Советы относительно производительности .................................................................... 355 Наиболее успешная практика .......................................................................................... 355
Содержание 11 Профилирование .................................................................................................................. 357 Статический анализ кода .................................................................................................. 359 Отладка .................................................................................................................................... 361 Разработка пакета ..................................................................................................................... 363 Анатомия ................................................................................................................................. 363 Классификация ..................................................................................................................... 366 Использование Git............................................................................................................... 367 Публикация ............................................................................................................................ 369 Сообщества программистов .................................................................................................. 370 Классификации .................................................................................................................... 371 Группа пакетов JuliaAstro .................................................................................................. 371 Группа пакетов JuliaGPU .................................................................................................. 378 Что не вошло в книгу? ............................................................................................................. 381 Заключение ................................................................................................................................. 382 Символическая математика с Julia ..................................384 Введение ....................................................................................................................................... 384 О пакете ................................................................................................................................... 385 Уравнения ............................................................................................................................... 386 Элементарная алгебра ........................................................................................................ 386 Решение уравнений ............................................................................................................. 387 Построение графиков выражений ................................................................................. 390 Пределы ................................................................................................................................... 392 Производные ......................................................................................................................... 393 Экстремумы ........................................................................................................................... 394 Интегрирование.................................................................................................................... 394 Применения ........................................................................................................................... 395 Глоссарий основных терминов и сокращений ....................398 Предметный указатель ..................................................406
Осваиваем язык Julia Julia – это хорошо структурированный язык программирования с большим быстродействием, устраняющий классическую проблему выполнения анализа на одном языке и трансляции его результатов на второй с целью повышения производительности. Эта книга поможет вам развить и усовершенствовать свои навыки программирования на Julia для решения задач автоматизации, возникающих в реальной жизни. Книга начинается с небольшого инструктажа по поводу инсталляции и выполнения Julia в разных операционных средах. Затем вы сравните самые разные способы работы с языком и подробно изучите его ключевой функционал, разбирая практические примеры, построенные на основе пошагового принципа. Пользуясь простыми статистическими и аналитическими показателями, вы откроете для себя быстродействие языка, его реальную мощь, которая делает его особенно полезным в высокоинтенсивных вычислительных задачах, и отметите, что язык Julia способен сотрудничать с внешними процессами, получая значительное улучшение качества графики и визуализации данных. Наконец, вы займетесь метапрограммированием и узнаете, как оно укрепляет мощь языка и формирует его сетевую и распределенную вычислительную среду. Для кого эта книга написана Это практическое руководство предназначено для специалистов в области науки о данных. Книга предполагает наличие некоторых навыков работы с Julia и навыков программирования на скриптовом языке, таком как Python и R, либо на компилируемом языке, таком как C или Java. Чему вы научитесь, прочитав эту книгу Инсталлировать среду разработки и выполнять ее сборку и настройку под вашу операционную среду. Создавать проекты в области науки о данных в рамках полного цикла ETL, анализа и визуализации данных. Понимать систему типов и принципы множественной диспетчеризации для получения большей отдачи от программирования на Julia. Взаимодействовать с файлами и таблицами данных с целью изучения простых статистических и аналитических показателей. Отображать графики и визуальные данные с целью проведения на Julia имитационного моделирования. Использовать Julia для взаимодействия с базами данных SQL и NoSQL. Работать с распределенными системами в веб-среде и в облаке. Разрабатывать свои собственные программные пакеты и участвовать в деятельности сообщества программистов на Julia в качестве соавтора.
Об авторе Малкольм Шеррингтон работает в сфере информационных технологий более 35 лет. Он имеет степени в области математики, химии и инженерно-технических наук и читал лекции в двух различных университетах Великобритании, а также работал в аэрокосмической и медицинской отраслях экономики. В настоящее время руководит собственной компанией в финансовом секторе, с определенными интересами к высокоэффективным вычислениям и приложениям на основе графического процессора и параллельных вычислений. Будучи деятельным специалистом, Малкольм начал программировать научные задачи на Fortran и C, совершенствуя навыки программирования на Ada и Common LISP, и недавно занялся обработкой данных и аналитикой на Perl, Python и R. Малкольм Шеррингтон является организатором Лондонской ассоциации программистов на Julia. Кроме того, он является coорганизатором британской meetupгруппы по высокопроизводительным вычислениям и финансовым технологиям и лондонской meetup-группы финансовых аналитиков. Я бы хотел посвятить эту книгу памяти моей покойной жены, Хэйзел Шеррингтон, без поддержки которой я бы не взялся осваивать Julia и которой не суждено было увидеть подтверждения своей проницательности. Кроме того, хочу выразить особую благодарность Барбаре Доре и Джеймсу Уэймсу за их существенную помощь и материальную поддержку при подготовке этой книги.
О рецензентах Гурурагав Гопал в настоящее время работает консультантом по управлению рисками в стартапах. Ранее он работал в Paterson Securities в качестве разработчика в области финансовой аналитики и консультанта по трейдингу. Кроме того, занимал должность консультанта по анализу данных и был связан с организацией электронной торговли. Он преподавал студентам и аспирантам в Технологическом университете VIT в Веллуру (Индия), специализируясь на распознавании образов, машинном обучении и больших данных. Как научный сотрудник связан с несколькими исследовательскими организациями, а именно IFMR и NAL. Кроме того, выступил рецензентом книги Learning Data Mining with R («Изучение интеллектуального анализа данных при помощи R»), вышедшей в издательстве Packt Publishing, а также нескольких журналов и конференций. Он имеет степень бакалавра в области электротехники и электроники, а также степень магистра в области информатики и инженерии. Позже он выполнил свою курсовую работу от Института финансового управления и исследования (IFMR), Индия, по финансовой инженерии и управлению рисками, и с тех пор был занят в финансовой отрасли. Завоевал множество наград и имеет несколько международных публикаций. Гурурагав Гопал интересуется программированием, обучением и выполняет консалтинговые услуги, а в свободное время слушает музыку. По вопросам профессиональных консультаций к нему можно обратиться на его странице в соцсети LinkedIn (in.linkedin. com/in/gururaghavg). Жуо СЛ – свободный разработчик из Китая с десятилетним опытом разработок в Linux, на C, C++, Java и Perl. Любит принимать участие в деятельности сообщества программистов (разумеется, включая сообщество программистов на Julia), в том числе в качестве соватора. Ведет свой личный веб-сайт на http://kdr2.com, где о Жуо можно узнать еще больше. Дэн Власюк – автор различных пакетов Julia, включая пакеты TimeSeries и Quandl; основатель группы JuliaQuant на веб-сайте Github, связанной с программными пакетами в области квантитативных финансов.
Предисловие Julia – относительно молодой язык программирования. Первоначальные проектные работы по языку Julia начались в Массачусетском технологическом институте (MIT)1 в августе 2009 года, и к февралю 2012-го он стал общедоступным. Заслуга по созданию этого языка в основном принадлежит трем разработчикам: Стефану Карпински, Джеффу Безансону и Виралу Шаху. Все трое, наряду с Аланом Эдельманом, до сих пор активно развивают проект Julia в MIT, где в настоящее время проводится ряд курсов по Julia, многие из которых доступны в Интернете. Первоначально разработчики задумывали Julia как язык для научного программирования с быстродействием, достаточным для восполнения потребности в моделировании на интерактивном языке с последующей неизбежной переработкой кода на компилирующем языке, таком как C или Fortran. В то время главные языки для научного программирования, как, например, MATLAB и Mathematica, были защищены правами интеллектуальной собственности и до сих пор остаются относительно медленными. При этом имеются клоны этих языков в области открытого программного обеспечения, например GNU Octave и Scilab, но они работают еще медленнее. Когда язык Julia был запущен, сообщество программистов увидело в нем замену MATLAB, однако это не совсем верно. Несмотря на то что синтаксис Julia похож на MATLAB настолько, что любой компетентный в MATLAB специалист может легко изучить Julia, он не разрабатывался как клон. Это язык с более развитым функционалом и со многими существенными отличиями, которые будут подробно рассмотрены далее. Период с 2009 года засвидетельствовал рост двух новых вычислительных дисциплин: больших данных / облачных вычислений и науки о данных. Обработка больших данных на Hadoop традиционно рассматривается как область программирования на Java, поскольку Hadoop выполняется в виртуальной машине Java. Разумеется, существует возможность обрабатывать большие данные при помощи языков программирования помимо тех, которые основаны на Java и используют парадигму jar-файлов с потоковой передачей, и тут Julia может применяться по аналогии с тем, как это делается на C++, C# и Python. Появление науки о данных возвестило о начале использования языков программирования, которые просты для аналитиков, обладающих некими навыками программирования, но не являющихся специалистами в этой области. Два языка, развитие которых ускорилось, чтобы заполнить этот пробел, – R и Python. Оба они относительно стары и уходят своими корнями в 1990-е годы. Однако популярность обоих демонстрирует стремительный рост, по иронии, примерно с того 1 Массачусетский технологический институт – университет и исследовательский центр, расположенный в Кембридже (штат Массачусетс, США). Также известен как Массачусетский институт технологий и Массачусетский технологический университет.
Предисловие времени, когда общественности был представлен язык Julia. Тем не менее, даже имея такую признанную и солидную оппозицию, этот язык взволновал научное программистское сообщество и продолжает проводить рейды в этом направлении. Цель этой книги состоит в том, чтобы охватить все аспекты языка Julia, которые делают его привлекательным для аналитиков данных. Язык развивается быстро. Двоичные дистрибутивы доступны для Linux, Mac OS X и Windows, но они отстают от текущих исходников. Поэтому, чтобы выполнять при помощи Julia серьезную работу, важно понимать, как получать и собирать рабочую систему из исходных текстов. Кроме того, для Julia доступны интерактивные среды разработки (IDE), и в данной книге будут проанализированы IDE Jupyter, Juno и плагин JuliaDT для среды Eclipse. О чем рассказывает эта книга Глава 1 «Среда разработки Julia» рассказывает о том, как запустить дистрибутив Julia и привести его в состояние готовности к работе. Важно уметь получать самые последние исходные тексты и собирать систему с нуля, а также находить и устанавливать надлежащие пакеты и при необходимости их удалять. Глава 2 «Разработка на Julia» содержит краткий обзор части стандартных синтаксических конструкций языка. Julia – язык новый, но он отнюдь не покажется новым читателям с компетенцией в MATLAB, R или Python, поэтому цель главы состоит в том, чтобы с помощью примеров кратко довести до читателей информацию о Julia и направить их к онлайновым источникам. Кроме того, важно понимать разницу работы через консоль и с интегрированными средами разработки Jupyter/Juno/JuliaDT. Глава 3 «Типы и диспетчеризация» посвящена системе типов Julia и показывает, каким образом она предоставляет разработчику мощные методы посредством ее de facto функциональной системы диспетчеризации. Глава 4 «Функциональная совместимость» касается методов, посредством которых Julia может взаимодействовать с операционной системой и другими языками программирования. Эти методы являются в основном нативными для Julia. Глава заканчивается введением в параллелизм, который будет рассмотрен подробнее в главе 9. Глава 5 «Работа с данными» рассматривает выполняемую аналитиком данных процедуру – от источника данных до результатов анализа. Большинство проектов начинается с данных, которые нужно прочесть, очистить и отобрать. Об этом и идет речь в главе. Далее описываются простые статистические и аналитические показатели. Глава 6 «Научное программирование» фактически освещает главную причину для программирования на Julia. Мощь языка заключена в его быстродействии в сочетании с простотой разработки на языке сценариев, что делает его особенно ценным при решении задач c процессами, вычислительно ограниченными возможностями ЦПУ. В главе рассматриваются различные подходы, используемые при решении математических и естественнонаучных задач.
Для кого эта книга 17 Глава 7 «Графика» описывает тот аспект, в котором Julia часто не выдерживает сравнения с другими альтернативными языками, такими как MATLAB и R. Действительно, более ранние версии языка имели достаточно ограниченную поддержку графики, но теперь дело обстоит иначе. В главе представлено большое разнообразие сложных подходов к визуализации графики на экране и сохранению ее в дисковых файлах. Глава 8 «Базы данных» рассказывает о взаимодействии языка Julia с базами данных. В базе данных могут храниться данные для анализа – либо там требуется сохранить результаты анализа. В этой главе будет проанализировано несколько подходов к хранению данных в хранилищах SQL и NoSQL. Они не встроены в язык, а скорее полностью опираются на сторонние пакеты, поэтому в ближайшем будущем могут быть усовершенствованы. Глава 9 «Сетевое взаимодействие» касается аспектов работы с распределенными источниками данных. В науке о данных большие данные и облачные системы приобретают все большую популярность, и в этой главе рассказывается о сетевом программировании на уровне сокета и взаимодействии через сеть Интернет. Кроме того, она посвящена анализу работы Julia в веб-службах Amazon и с вычислительным сервером Google. Глава 10 «Работа с Julia» предоставляет читателям дополнительную информацию и побуждает продолжить работу, участвуя в совместной разработке на Julia. Можно попробовать свои силы в качестве соавтора, вносящего свой вклад в существующий пакет, либо просто примкнуть к одному из сообществ программистов на Julia. Что вам потребуется для работы Разработка на Julia может выполняться в любой из известных вычислительных операционных систем: Linux, OS X и Windows. В целях углубленного исследования языка читатель может захотеть получить последние версии и собрать язык из исходников под Linux. Однако для того, чтобы начать работать с языком в любой из трех операционных платформ, предусмотрена простая и удобная инсталляция языка с использованием двоичного дистрибутива. Кроме того, можно отдельно скачать и установить интегрированную среду разработки (IDE) Juno и плагин для среды разработки Eclipse. Некоторые примеры в более поздних главах, касающиеся поддержки баз данных, сетевого взаимодействия и облачных служб, потребуют установки дополнительных компонентов и использования дополнительных ресурсов, и вопросы их получения будут обсуждаться в соответствующих частях книги. Для кого эта книга Эта книга не является введением в программирование, и потому предполагается, что читатель знаком с понятийным аппаратом по крайней мере одного языка программирования. Для тех, кто знаком с языками сценариев, такими как Python, R
Доступ онлайн
В корзину