Julia (linguaggio di programmazione)

Julia
linguaggio di programmazione
AutoreJeff Bezanson, Stefan Karpinski, Viral B. Shah, Alan Edelman (MIT Group Leader)
Data di origine2012
Ultima versione1.9.4 (14 novembre 2023) [1]
Utilizzocalcolo numerico, applicazioni scientifiche
Paradigmimultiparadigma, programmazione funzionale, procedurale
Tipizzazionedinamica con opzionale firma dei metodi, inferita
Estensioni comuni.jl
Influenzato daMATLAB, Scheme, Lisp, C, Python, Perl, Ruby
Implementazione di riferimento
Sistema operativoWindows, Linux, Mac
LicenzaMIT
Sito webjulialang.org/
Modifica dati su Wikidata · Manuale

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

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

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

  1. ^ "v1.9.4", su github.com.
  2. ^ (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.
  3. ^ Julia Documentation · The Julia Language, su docs.julialang.org. URL consultato il 16 dicembre 2023.
  4. ^ JuliaRegistries/General repository, su github.com.
  5. ^ Pkg · The Julia Language, su docs.julialang.org. URL consultato il 16 dicembre 2023.

Altri progetti

Altri progetti

  • Wikimedia Commons
  • Collabora a Wikimedia Commons Wikimedia Commons contiene immagini o altri file su Julia
  • Wikibooks - Calcoli scientifici con Julia

Collegamenti esterni

  • (EN) Sito ufficiale, su julialang.org. Modifica su Wikidata
  • (EN) Blog ufficiale, su julialang.org. Modifica su Wikidata
  • (EN) Julia, su GitHub. Modifica su Wikidata
  • Sito di segnalazione bug, su github.com. Modifica su Wikidata
  • (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 (ENHE) 987007417317505171
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica