Vai al contenuto

Julia (linguaggio di programmazione)

Da Wikipedia, l'enciclopedia libera.
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/

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.

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

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].

  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

[modifica | modifica wikitesto]

Collegamenti esterni

[modifica | modifica wikitesto]
Controllo di autoritàLCCN (ENsh2016000127 · BNF (FRcb18069381b (data) · J9U (ENHE987007417317505171
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica