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.

Hello, World

modifica

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

Julia offre un ampio ecosistema di librerie per molti campi della computazione, raggruppati nel registro generale[4]. Il linguaggio offre uno strumento integrato per gestire le librerie (package), ovvero Pkg.jl[5].

Note

modifica
  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

Collegamenti esterni

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

📚 Artikel Terkait di Wikipedia

JavaScript

oggetto // costruttore function MyObject(attributeA, attributeB) { this.attributeA = attributeA; this.attributeB = attributeB; } // crea un Oggetto obj

B. T. Express

convenzioni di Wikipedia. Segui i suggerimenti del progetto di riferimento. B. T. Express è stato un gruppo musicale statunitense, che annoverò diversi

Hierophis viridiflavus

il 17-04-2019 ^ Alessandro Paterna, The role of modified teeth in the function of prolonged bites in Hierophis viridiflavus (Serpentes: Colubridae), in

Myc (biologia)

Microbiol. Immunol., vol. 258, 2002, pp. 153–60, PMID 11443860. Lüscher B, Function and regulation of the transcription factors of the Myc/Max/Mad network

Disastro di Seveso

Patterson Jr.; Angela C. Pesatori; Pier Alberto Bertazzi, Neonatal Thyroid Function in Seveso 25 Years after Maternal Exposure to Dioxin, su medicine.plosjournals

Gunnerales

Farris, PS Soltis y DE Soltis. 2004. Phylogeny and diversification of B-function MADS-box genes in angiosperms: evolutionary and functional implications

Funzione zeta di Riemann

Si veda (EN) H. M. Bui, M. B. Milinovich; N. C. Ng, A note on the gaps between consecutive zeros of the Riemann zeta-function, in Proc. Amer. Math. Soc

Carcinoma del polmone

 467-89, DOI:10.1016/S0076-6879(07)00432-6, PMID 18374183. ^ Lüscher B, Function and regulation of the transcription factors of the Myc/Max/Mad network