Julia (linguaggio di programmazione)
Julia linguaggio di programmazione | |
---|---|
Autore | Jeff Bezanson, Stefan Karpinski, Viral B. Shah, Alan Edelman (MIT Group Leader) |
Data di origine | 2012 |
Ultima versione | 1.9.4 (14 novembre 2023) [1] |
Utilizzo | calcolo numerico, applicazioni scientifiche |
Paradigmi | multiparadigma, programmazione 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 |
Sito web | julialang.org/ |
Julia[2] è 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.[3]
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 wikitesto]Il seguente esempio propone il classico "Hello, World!":
print("Hello, World!")
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, queen) = push!(copy(queens), queen)
hitsany(queen, queens) = any(map(x -> hits(queen, x), queens))
hits(a, b) = any(a .== b) || first(abs.(a .- b)) == last(abs.(a .- b))
function solve(x, y, n, d = Vector{Tuple{Int, Int}}())
if iszero(n)
return d
end
for px in 1:x, py in 1:y
if !hitsany((px, py), d)
s = solve(x, y, n - 1, addqueen(d, (px, py)))
if s !== nothing
return s
end
end
end
return nothing
end
for i in 1:8
println("# Solve for $i:\n", solve(8, 8, i))
end
Ecosistema
[modifica | modifica wikitesto]Julia offre un ampio ecosistema di librerie per molti ampi della computazione, raggruppati nel registro generale[4]. Il linguaggio offre uno strumento integrato per gestire le librerie (package), ovvero Pkg.jl
[5].
Note
[modifica | modifica wikitesto]- ^ "v1.9.4", su github.com.
- ^ (EN) Jeff Bezanson, Alan Edelman e Stefan Karpinski, Julia: A Fresh Approach to Numerical Computing (PDF), in SIAM Review, vol. 59, n. 1, 2017-01, pp. 65–98, DOI:10.1137/141000671. URL consultato il 16 dicembre 2023.
- ^ Julia Documentation · The Julia Language, su docs.julialang.org. URL consultato il 16 dicembre 2023.
- ^ JuliaRegistries/General repository, su github.com.
- ^ Pkg · The Julia Language, su docs.julialang.org. URL consultato il 16 dicembre 2023.
Altri progetti
[modifica | modifica wikitesto]- Wikimedia Commons contiene immagini o altri file su Julia
- Wikibooks - Calcoli scientifici con Julia
Collegamenti esterni
[modifica | modifica wikitesto]- (EN) Sito ufficiale, su julialang.org.
- (EN) Blog ufficiale, su julialang.org.
- (EN) Julia, su GitHub.
- Sito di segnalazione bug, su github.com.
- (EN) Articolo su Infoworld, su infoworld.com.
- (EN) Articolo su Networkworld, su networkworld.com. URL consultato il 13 luglio 2013 (archiviato dall'url originale il 22 maggio 2013).
Controllo di autorità | LCCN (EN) sh2016000127 · BNF (FR) cb18069381b (data) · J9U (EN, HE) 987007417317505171 |
---|