Introducing Julia

Introduction
The Julia programming language is easy to use, fast, and powerful. This wikibook is intended as an introduction to the language for the less experienced and occasional programmer. For more learning materials, including links to books, videos, articles/blogs and notebooks, refer to the learning section at Julia's official site. See Jobs for types of jobs and companies using Julia.

The official Julia documentation is the authoritative guide, and you should refer to it as often as possible as you learn. It's the "reference" guide both for the language itself and for the set of standard packages (the "standard library") that are provided as part of the basic installation.

A feature of Julia is the extensive use of add-on packages to add functionality and features, and to extend the syntax of built-in functions. Good places to look for packages (which are free to download from github.com) include the JuliaHub site. Packages provide their own documentation and many provide extensive tutorials.

The Julia community has established a good ethos of encouraging participation in the development of the language on github. The advantage of this wikibook is that it's made and edited by the Julia community – you can edit anything at any time. If you find something that's wrong, or unclear, feel free to correct it, or add examples. (Your first few edits are reviewed, just in case you have less than good intentions. And, as with the Wikipedia, you should expect your writing to be edited by others!) The focus should be largely on the new user, rather than the computer science expert.

Outline

 * Getting started: some introductory words, installation, paths, and various bits of magic


 * The REPL: Using the REPL; Julia as a calculator; getting help


 * Arrays and tuples: Storing data – Arrays and tuples; the core of Julia and scientific programming


 * Types: a quick introduction to types, the way to organize your code and the secret to making your programs fast


 * Controlling the flow: loops and decisions; ifs and elses


 * Functions: functions and methods; multiple dispatch


 * Dictionaries and sets: storing data in dictionaries and sets


 * Strings and characters: working with strings


 * Working with text files: reading data from text files; elementary file processing


 * Working with dates and times: working with date and time functions


 * Plotting: Plotting; an introduction to some of the plotting packages


 * Metaprogramming: metaprogramming, expressions and macros


 * Modules and packages: how Julia code is organized, and should be developed


 * DataFrames: data frames; organizing data in tables


 * Migrating From Other Languages: Julia for users of other programming languages


 * Introducing Julia/Games: Julia games, and some tools to make games