Julia: High Performance Programming

Leverage the power of Julia to design and develop high performing programs

Julia: High Performance Programming

Learning
Ivo Balbaert, Avik Sengupta, Malcolm Sherrington

2 customer reviews
Leverage the power of Julia to design and develop high performing programs
$69.99
RRP $69.99
eBook

Instantly access this course right now and get the skills you need in 2017

With unlimited access to a constantly growing library of over 4,000 eBooks and Videos, a subscription to Mapt gives you everything you need to learn new skills. Cancel anytime.

Free Sample

Book Details

ISBN 139781787125704
Paperback697 pages

Book Description

In this learning path, you will learn to use an interesting and dynamic programming language—Julia! You will get a chance to tackle your numerical and data problems with Julia. You’ll begin the journey by setting up a running Julia platform before exploring its various built-in types. We’ll then move on to the various functions and constructs in Julia. We’ll walk through the two important collection types—arrays and matrices in Julia.

You will dive into how Julia uses type information to achieve its performance goals, and how to use multiple dispatch to help the compiler emit high performance machine code. You will see how Julia’s design makes code fast, and you’ll see its distributed computing capabilities.

By the end of this learning path, you will see how data works using simple statistics and analytics, and you’ll discover its high and dynamic performance—its real strength, which makes it particularly useful in highly intensive computing tasks.

This learning path combines some of the best that Packt has to offer in one complete, curated package. It includes content from the following Packt products:

Table of Contents

Chapter 1: Installing the Julia Platform
Installing Julia
Working with Julia's shell
Startup options and Julia scripts
Packages
Installing and working with Julia Studio
Installing and working with IJulia
Installing Sublime-IJulia
Installing Juno
Other editors and IDEs
How Julia works
Summary
Chapter 2: Variables, Types, and Operations
Variables, naming conventions, and comments
Types
Integers
Floating point numbers
Elementary mathematical functions and operations
Rational and complex numbers
Characters
Strings
Regular expressions
Ranges and arrays
Dates and times
Scope and constants
Summary
Chapter 3: Functions
Defining functions
Optional and keyword arguments
Anonymous functions
First-class functions and closures
Recursive functions
Map, filter, and list comprehensions
Generic functions and multiple dispatch
Summary
Chapter 4: Control Flow
Conditional evaluation
Repeated evaluation
Exception handling
Scope revisited
Tasks
Summary
Chapter 5: Collection Types
Matrices
Tuples
Dictionaries
Sets
Example project – word frequency
Summary
Chapter 6: More on Types, Methods, and Modules
Type annotations and conversions
The type hierarchy – subtypes and supertypes
User-defined and composite types
Types and collections – inner constructors
Type unions
Parametric types and methods
Standard modules and paths
Summary
Chapter 7: Metaprogramming in Julia
Expressions and symbols
Eval and interpolation
Defining macros
Built-in macros
Reflection capabilities
Summary
Chapter 8: I/O, Networking, and Parallel Computing
Basic input and output
Working with files
Using DataFrames
Working with TCP sockets and servers
Interacting with databases
Parallel operations and computing
Summary
Chapter 9: Running External Programs
Running shell commands
Calling C and FORTRAN
Calling Python
Performance tips
Summary
Chapter 10: The Standard Library and Packages
Digging deeper into the standard library
Julia's package manager
Publishing a package
Graphics in Julia
Using Gadfly on data
Summary
Chapter 11: Julia is Fast
Julia – fast and dynamic
Designed for speed
How fast can Julia be?
Summary
Chapter 12: Analyzing Julia Performance
Timing Julia code
The Julia profiler
Analyzing memory allocation
Statistically accurate benchmarking
Summary
Chapter 13: Types in Julia
The Julia type system
Type-stability
Kernel methods
Types in storage locations
Summary
Chapter 14: Functions and Macros – Structuring Julia Code for High Performance
Using globals
Inlining
Closures and anonymous functions
Using macros for performance
Generated functions
Summary
Chapter 15: Fast Numbers
Numbers in Julia
Trading performance for accuracy
Subnormal numbers
Summary
Chapter 16: Fast Arrays
Array internals in Julia
Bound checking
Allocations and in-place operations
Array views
SIMD parallelization
Yeppp!
Writing generic library functions with arrays
Summary
Chapter 17: Beyond the Single Processor
Parallelism in Julia
Programming parallel tasks
Shared arrays
Summary
Chapter 18: The Julia Environment
Introduction
Getting started
A quick look at some Julia
Package management
What makes Julia special
Summary
Chapter 19: Developing in Julia
Integers, bits, bytes, and bools
Arrays
Char and strings
Real, complex, and rational numbers
Composite types
More about matrices
Data arrays and data frames
Dictionaries, sets, and others
Summary
Chapter 20: Types and Dispatch
Functions
Julia's type system
Enumerations (revisited)
Multiple dispatch
Summary
Chapter 21: Interoperability
Interfacing with other programming environments
Metaprogramming
Tasks
Executing commands
Summary
Chapter 22: Working with Data
Basic I/O
Structured datasets
DataFrames and RDatasets
Statistics
Selected topics
Summary
Chapter 23: Scientific Programming
Linear algebra
Signal processing
Differential equations
Optimization problems
Stochastic problems
Summary
Chapter 24: Graphics
Basic graphics in Julia
Data visualization
Graphic engines
Using the Web
Raster graphics
Summary
Chapter 25: Databases
A basic view of databases
Relational databases
NoSQL datastores
RESTful interfacing
Summary
Chapter 26: Networking
Sockets and servers
Working with the Web
Messaging
Cloud services
Summary
Chapter 27: Working with Julia
Under the hood
Performance tips
Developing a package
Community groups
What's missing?
Summary

What You Will Learn

  • Set up your Julia environment to achieve the highest productivity
  • Solve your tasks in a high-level dynamic language and use types for your data only when needed
  • Apply Julia to tackle problems concurrently and in a distributed environment
  • Get a sense of the possibilities and limitations of Julia's performance
  • Use Julia arrays to write high performance code
  • Build a data science project through the entire cycle of ETL, analytics, and data visualization
  • Display graphics and visualizations to carry out modeling and simulation in Julia
  • Develop your own packages and contribute to the Julia Community

Authors

Table of Contents

Chapter 1: Installing the Julia Platform
Installing Julia
Working with Julia's shell
Startup options and Julia scripts
Packages
Installing and working with Julia Studio
Installing and working with IJulia
Installing Sublime-IJulia
Installing Juno
Other editors and IDEs
How Julia works
Summary
Chapter 2: Variables, Types, and Operations
Variables, naming conventions, and comments
Types
Integers
Floating point numbers
Elementary mathematical functions and operations
Rational and complex numbers
Characters
Strings
Regular expressions
Ranges and arrays
Dates and times
Scope and constants
Summary
Chapter 3: Functions
Defining functions
Optional and keyword arguments
Anonymous functions
First-class functions and closures
Recursive functions
Map, filter, and list comprehensions
Generic functions and multiple dispatch
Summary
Chapter 4: Control Flow
Conditional evaluation
Repeated evaluation
Exception handling
Scope revisited
Tasks
Summary
Chapter 5: Collection Types
Matrices
Tuples
Dictionaries
Sets
Example project – word frequency
Summary
Chapter 6: More on Types, Methods, and Modules
Type annotations and conversions
The type hierarchy – subtypes and supertypes
User-defined and composite types
Types and collections – inner constructors
Type unions
Parametric types and methods
Standard modules and paths
Summary
Chapter 7: Metaprogramming in Julia
Expressions and symbols
Eval and interpolation
Defining macros
Built-in macros
Reflection capabilities
Summary
Chapter 8: I/O, Networking, and Parallel Computing
Basic input and output
Working with files
Using DataFrames
Working with TCP sockets and servers
Interacting with databases
Parallel operations and computing
Summary
Chapter 9: Running External Programs
Running shell commands
Calling C and FORTRAN
Calling Python
Performance tips
Summary
Chapter 10: The Standard Library and Packages
Digging deeper into the standard library
Julia's package manager
Publishing a package
Graphics in Julia
Using Gadfly on data
Summary
Chapter 11: Julia is Fast
Julia – fast and dynamic
Designed for speed
How fast can Julia be?
Summary
Chapter 12: Analyzing Julia Performance
Timing Julia code
The Julia profiler
Analyzing memory allocation
Statistically accurate benchmarking
Summary
Chapter 13: Types in Julia
The Julia type system
Type-stability
Kernel methods
Types in storage locations
Summary
Chapter 14: Functions and Macros – Structuring Julia Code for High Performance
Using globals
Inlining
Closures and anonymous functions
Using macros for performance
Generated functions
Summary
Chapter 15: Fast Numbers
Numbers in Julia
Trading performance for accuracy
Subnormal numbers
Summary
Chapter 16: Fast Arrays
Array internals in Julia
Bound checking
Allocations and in-place operations
Array views
SIMD parallelization
Yeppp!
Writing generic library functions with arrays
Summary
Chapter 17: Beyond the Single Processor
Parallelism in Julia
Programming parallel tasks
Shared arrays
Summary
Chapter 18: The Julia Environment
Introduction
Getting started
A quick look at some Julia
Package management
What makes Julia special
Summary
Chapter 19: Developing in Julia
Integers, bits, bytes, and bools
Arrays
Char and strings
Real, complex, and rational numbers
Composite types
More about matrices
Data arrays and data frames
Dictionaries, sets, and others
Summary
Chapter 20: Types and Dispatch
Functions
Julia's type system
Enumerations (revisited)
Multiple dispatch
Summary
Chapter 21: Interoperability
Interfacing with other programming environments
Metaprogramming
Tasks
Executing commands
Summary
Chapter 22: Working with Data
Basic I/O
Structured datasets
DataFrames and RDatasets
Statistics
Selected topics
Summary
Chapter 23: Scientific Programming
Linear algebra
Signal processing
Differential equations
Optimization problems
Stochastic problems
Summary
Chapter 24: Graphics
Basic graphics in Julia
Data visualization
Graphic engines
Using the Web
Raster graphics
Summary
Chapter 25: Databases
A basic view of databases
Relational databases
NoSQL datastores
RESTful interfacing
Summary
Chapter 26: Networking
Sockets and servers
Working with the Web
Messaging
Cloud services
Summary
Chapter 27: Working with Julia
Under the hood
Performance tips
Developing a package
Community groups
What's missing?
Summary

Book Details

ISBN 139781787125704
Paperback697 pages
Read More
From 2 reviews

Read More Reviews