Expressividade vs. Performance – Expressividade – Performance



Expressividade vs. Performance – Expressividade – Performance

0 0


IntroJulia

Introdução a Julia para um CMNário

On Github prcastro / IntroJulia

Expressividade vs. Performance

Expressividade

# Soma os números pares entre 1 e N
function foo(N)
   x = 0

   for i in 1:N
      if iseven(i)
         x += i
      end
   end

   return x
end
foo(N) = sum([iseven(i) ? i : 0 for i in 1:N])

Performance

Demonstração

O que mais?

Metaprogramação

Pipeline

Como Julia roda nossos programas?

Expressões e Símbolos

Macros

Geração de código dentro da própria linguagem (manipulando expressões e símbolos)

Muito mais

Ver a documentação e palestras sobre o assunto

Programação Paralela

# Experimento: alguma coroa em 3 jogadas de moeda?
# Roda 100 milhões de experimentos em paralelo
# e conta o número de sucessos

sucesses = @parallel (+) for i in 1:10^8
    Int(any(bitrand(3)))
end

CUDA.jl e OpenCL.jl

Chamando C ou FORTRAN

ccall( (:sqrt, "libm"), Float64, (Float64,), 100.0)
Uma linha!

PyCall.jl

using PyCall

@pyimport matplotlib.pyplot as plt
plt.plot(xs, ys)

Mathematica.jl, MATLAB.jl e RCall.jl

Cpp.jl e JavaCall.jl

Tipos

DataFrames