Julia is an open source programming language created in 2012 by Jeff Bezanson and Alan Edelman and Stefan Karpinski and Viral B. Shah.
#34on PLDB | 12Years Old | 54kRepos |
git clone https://github.com/JuliaLang/julia
Julia is a high-level dynamic programming language designed to address the needs of high-performance numerical analysis and computational science, without the typical need of separate compilation to be fast, while also being effective for general-purpose programming, web use or as a specification language. Distinctive aspects of Julia's design include a type system with parametric polymorphism and types in a fully dynamic programming language and multiple dispatch as its core programming paradigm. It allows concurrent, parallel and distributed computing, and direct calling of C and Fortran libraries without glue code. Read more on Wikipedia...
println("Hello, world!")
println("Hello World")
# Hello world in Julia
println("Hello, World!")
#!/usr/bin/env julia
# From https://github.com/JoshCheek/language-sampler-for-fullpath/blob/b766dcdbd249ec63516f491390a75315e78cba95/julia/fullpath
help_screen = """
usage: fullpath *[relative-paths] [-c]
Prints the fullpath of the paths
If no paths are given as args, it will read them from stdin
If there is only one path, the trailing newline is omitted
The -c flag will copy the results into your pasteboard
"""
help = false
copy = false
dir = pwd()
paths = []
for arg = ARGS
if arg == "-h" || arg == "--help"
help = true
elseif arg == "-c" || arg == "--copy"
copy = true
elseif arg != ""
push!(paths, arg)
end
end
if help
print(help_screen)
exit()
end
function notempty(string)
return !isempty(string)
end
if length(paths) == 0
paths = filter(notempty, map(chomp, readlines()))
end
function print_paths(stream, paths)
if length(paths) == 1
path = paths[1]
print(stream, "$dir/$path")
else
for path = paths
println(stream, "$dir/$path")
end
end
end
if copy
read, write, process = readandwrite(`pbcopy`)
print_paths(write, paths)
close(write)
end
print_paths(STDOUT, paths)
julia> p(x) = 2x^2 + 1; f(x, y) = 1 + 2p(x)y
julia> println("Hello world!", " I'm on cloud ", f(0, 4), " as Julia supports recognizable syntax!")
Hello world! I'm on cloud 9 as Julia supports recognizable syntax!
begin while if for try return break continue function macro quote let local global const do struct abstract typealias bitstype type immutable module baremodule using import export importall end else catch finally true false
Feature | Supported | Example | Token |
---|---|---|---|
Standard Library | ✓ | println("Hello, World!") | |
Binary Literals | ✓ | # 0b[01]+((_[01]+)+)? | |
Floats | ✓ | # (\d+((_\d+)+)?\.(?!\.)(\d+((_\d+)+)?)?|\.\d+((_\d+)+)?)([eEf][+-]?[0-9]+)? | |
Hexadecimals | ✓ | # 0x[a-fA-F0-9]+((_[a-fA-F0-9]+)+)? | |
Octals | ✓ | # 0o[0-7]+((_[0-7]+)+)? | |
Conditionals | ✓ | ||
Functions | ✓ | ||
Constants | ✓ | ||
While Loops | ✓ | ||
Line Comments | ✓ | # A comment | # |
Module Pattern | ✓ | module MyModule using Lib using BigLib: thing1, thing2 import Base.show export MyType, foo struct MyType x end bar(x) = 2x foo(a::MyType) = bar(a.x) + 1 show(io::IO, a::MyType) = print(io, "MyType $(a.x)") end | |
Pipes | ✓ | [1,2,3] |> (y -> f(3, y)) | |
Mixins | ✓ | # Including the same code in different modules provides mixin-like behavior. module Normal include("mycode.jl") end module Testing include("safe_operators.jl") include("mycode.jl") end | |
File Imports | ✓ | # Files and file names are mostly unrelated to modules; modules are associated only with module expressions. # One can have multiple files per module, and multiple modules per file: using MyModule using MyModule: x, p import MyModule import MyModule.x, MyModule.p import MyModule: x, p module Foo include("file1.jl") include("file2.jl") end | |
Print() Debugging | ✓ | print("hello world") | println |
Integers | ✓ | 80766866 | |
Booleans | ✓ | true false | |
Garbage Collection | ✓ | ||
MultiLine Comments | ✓ | #= A comment. =# | #= =# |
Comments | ✓ | # A comment | |
Unicode Identifers | ✓ | δ = 0.00001 | |
Multiple Dispatch | ✓ | collide_with(x::Asteroid, y::Asteroid) = ... # deal with asteroid hitting asteroid collide_with(x::Asteroid, y::Spaceship) = ... # deal with asteroid hitting spaceship collide_with(x::Spaceship, y::Asteroid) = ... # deal with spaceship hitting asteroid collide_with(x::Spaceship, y::Spaceship) = ... # deal with spaceship hitting spaceship | |
Strings | ✓ | "hello world" | " |
Macros | ✓ | # https://jkrumbiegel.com/pages/2021-06-07-macros-for-beginners/ macro show_value(variable) quote println("The ", $(string(variable)), " you passed is ", $(esc(variable))) end end @show_value(orange) @show_value(apple) | |
Case Insensitive Identifiers | X | ||
Semantic Indentation | X |