Julia (linguaggio di programmazione)

Da Wikipedia, l'enciclopedia libera.
Julia
Autore Jeff Bezanson, Stefan Karpinski, Viral B. Shah, Alan Edelman
Data di origine 2012
Ultima versione 0.2.0 (Novembre 2013)
Utilizzo
Paradigmi multiparadigma, funzionale, procedurale
Tipizzazione dinamica con opzionale firma dei metodi, inferita
Estensioni comuni .jl
Influenzato da MATLAB, Scheme, Lisp, C, Python, Perl, Ruby
Implementazione di riferimento
Sistema operativo Windows, Linux, Mac
Licenza MIT

Julia, è un linguaggio di programmazione, multi-paradigma, open source pubblicato a partire dal 2012 (anche se le basi furono poste nel 2009) da un gruppo di programmatori impegnati professionalmente nel campo del calcolo numerico pensato con lo scopo di fornire uno strumento ad alte prestazioni dedicato in maniera particolare al mondo della programmazione scientifica. Scritto in C++ e Scheme questo linguaggio si basa su di un compilatore JIT (Just In Time) che si appoggia a sua volta sul noto framework LLVM. Fin dalle prime fasi dello sviluppo gli autori si sono impegnati nel fornire al linguaggio un adeguato supporto di librerie implementate tra l'altro in gran parte in Julia stesso ponendo nel contempo grande enfasi sulle prestazioni che dovevano essere comparabili con quelle ottenute in C o Fortran. Pur essendo stato ideato per applicazioni di carattere numerico e scientifico non è tuttavia precluso il suo utilizzo come strumento general purpose.

Hello, World[modifica | modifica sorgente]

Il seguente esempio propone il classico "Hello, World!":

   print ("ciao")

come esempio più complesso ma significativo ecco il modo in cui si può risolvere con questo linguaggio il noto problema delle 8 regine

  addqueen(queens::Array{Vector{Int}}, queen::Vector{Int}) = push!(copy(queens), queen)
 
  hitsany(queen::Vector{Int}, queens::Array{Vector{Int}}) = any(map((x) -> hits(queen, x), queens))
  hits(a::Array{Int}, b::Array{Int}) = any(a .== b) || abs(a-b)[1] == abs(a-b)[2]
 
  function solve(x::Int, y::Int, n::Int, d::Array{Vector{Int}})
  if n == 0
    return d
  end
  for px = 1:x
    for py = 1:y
      if !hitsany([px, py], d)
        s = solve(x, y, n-1, addqueen(d, [px, py]))
        if !isequal(s, None)
          return s
        end
      end
    end
  end
  return None
  end
 
  solve(x, y, n) = solve(x, y, n, Array(Vector{Int}, 0))
  for i = 1:8
    print("Solve for $i\n")
    print(solve(8, 8, i))
    print("\n")
  end

Collegamenti esterni[modifica | modifica sorgente]