Julia (programmeringsspråk)

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 8 juni 2022; verifiering kräver 1 redigering .
Julia
Språkklass programmeringsspråk
Framträdde i 23 augusti 2009 [1] [2]
Författare Jeff Besancon [d] , Alan Edelman [d] , Stefan Karpinski [d] och Viral Shah [d]
Utvecklaren Jeff Besanson [d] , Stefan Karpinski [d] , Alan Edelman [d] och Viral Shah [d]
Filtillägg _ .jl[3]
Släpp 1.8.2 (29.09.2022)
Blivit påverkad MATLAB
Hemsida julialang.org
OS Linux , Microsoft Windows [4] och macOS [4]
 Mediafiler på Wikimedia Commons

Julia  är ett högnivå , högpresterande dynamiskt skrivet gratis programmeringsspråk designat för matematisk beräkning. Det är också effektivt för att skriva allmänna program. [5] [6] [7] Språkets syntax liknar den för andra matematiska språk (som MATLAB och Octave ), men har några betydande skillnader. Julia är skriven i C , C++ och Scheme . Den har inbyggt stöd för multithreading och distribuerad beräkning, som också är implementerade i standarddesigner.

Språket är dynamiskt, samtidigt som det stöder JIT-kompilering (en JIT-kompilator baserad på LLVM ingår som standard), på grund av vilket, enligt språkförfattarna, applikationer skrivna helt på språket (utan användning av lågnivåbibliotek och vektoroperationer) är praktiskt taget inte sämre i prestanda för applikationer skrivna på statiskt kompilerade språk som C eller C++ [7] . Det mesta av språkets standardbibliotek är skrivet i det [8] .

Överbelastning av funktioner och operatorer (som faktiskt också är funktioner) stöds, och du kan valfritt ange en typ för funktionsargument, vilket vanligtvis inte är fallet i dynamiskt typade språk. Detta gör att du kan skapa specialiserade varianter av funktioner och operatorer för att påskynda beräkningar. Den mest lämpliga varianten av funktionen väljs automatiskt under exekvering. Operatörsöverbelastning låter dig också skapa nya datatyper som beter sig som inbyggda typer.

Historik

Diskussioner om behovet av att skapa ett nytt språk började i augusti 2009. Stefan Karpinski, som vid det laget arbetat med Matlabs matematiska paket och programmeringsspråket R , var missnöjd med deras begränsningar. Och efter att Viral Shah introducerade honom för Jeff Besançon började de tre diskutera konceptet med ett nytt språk. För valet av ett kvinnonamn som namn på språket, som huvudutvecklaren av språket Stefan Karpinski förklarade i en intervju, "det fanns ingen speciell anledning", "gillade utvecklarna helt enkelt det här namnet" [7] . Den första öppna versionen publicerades i februari 2012. [9] [10]

Ideologi

Huvuduppgiften under skapandet var att utveckla ett universellt språk som kan fungera med en stor mängd beräkningar och samtidigt garantera maximal prestanda. Eftersom en stor mängd beräkningar utförs i molnmiljöer implementerade språket omedelbart stöd för moln och parallell programmering som en ersättning för MPI- mekanismen [7] .

Språket implementerade initialt en modell för att bygga stora parallella applikationer baserade på ett globalt distribuerat adressutrymme. En sådan modell innebär förmågan att utföra operationer (inklusive deras överföring mellan maskiner) med hänvisning till ett objekt som finns på en annan maskin som också deltar i beräkningarna. Denna mekanism låter dig hålla reda på vilka beräkningar som utförs på vilka system, samt koppla nya maskiner till beräkningarna [7] .

Enligt den officiella webbplatsen är språkets huvuddrag:

Exempel

Funktionsexempel:

funktion mandel ( z ) c = z max = 80 för n = 1 : maxiter om abs ( z ) > 2 retur n - 1 slutet z = z ^ 2 + c slutet retur maxiter slutet funktion randmatstat ( t ) n = 5 v = nollor ( t ) w = nollor ( t ) för i = 1 : t a = randn ( n , n ) b = randn ( n , n ) c = randn ( n , n ) d = randn ( n , n ) P = [ a b c d ] Q = [ a b ; c d] v [ i ] = spåra (( P . '* P ) ^ 4 ) w [ i ] = spåra (( Q . '* Q ) ^ 4 ) slutet std ( v ) / medelvärde ( v ), std ( w ) / medelvärde ( w ) slutet

Ett exempel på parallell beräkning av 100 000 000 resultat av en slumpmässig myntkastning:

nheads = @ parallell ( + ) för i = 1 : 100000000 randbit () slutet

Grafisk implementering

I december 2011 föreslog Stefan Boyer idén om en grafisk implementering av språket, vilket skulle göra det lättare för matematiker och andra vetenskapsmän som inte har programmeringskunskaper och arbetar i Unix- miljöer att arbeta med det. Boyers idé var att gå från att skicka kommandon till ett datorkluster till att helt enkelt arbeta med en webbläsare. Samtidigt kan klientdelen, som implementerar bland annat ett grafiskt gränssnitt och en plattform för att plotta grafer, implementeras med hjälp av så moderna (på den tiden) teknologier som HTML5 , SVG och AJAX [11] .

För att implementera sin idé använde Boyer en serverdel skriven på Julia-språket, som, med hjälp av en speciell sessionshanterare av SCGI- protokollet, interagerar med en lighttpd -baserad webbserver . Ett sådant tillvägagångssätt gjorde det möjligt att implementera REPL- konceptet på ett ganska enkelt sätt , som har följande möjligheter: plottning baserat på beräkning av funktioner, endimensionella arrayer och uppsättningar av punkter av vilken numerisk typ som helst; bekvämligheten med att arbeta med miljön (automatisk upptäckt av storleken på fönster och så vidare); utbyggbarhet och plattformsoberoende mellan webbläsare. Funktioner för att plotta i en sådan miljö kan specificeras på flera sätt:

plot ( sin , - pi , pi )

eller

plot ([ 0,0 , 0,1 , 0,4 , 0,3 , 0,4 ])

[11] .

Julia Studio är den första skrivbordsintegrerade utvecklingsmiljön för Julia [12] , ersatt av Juno-miljön [13] , som är ett tillägg för Atom - textredigeraren .

Anteckningar

  1. LICENSE.md-filen i JuliaLang/julia-arkivet - GitHub Inc. .
  2. Besancon D. JuliaLang/julia - commit eb256df: "börjar arbetet med parser" - GitHub Inc. .
  3. http://fileformats.archiveteam.org/wiki/Julia
  4. 1 2 https://julialang.org/downloads/
  5. The Julia Language (inte tillgänglig länk) . Arkiverad från originalet den 24 maj 2013. 
  6. Bryant, Avi Matlab, R och Julia: Språk för dataanalys (länk ej tillgänglig) . O'Reilly Strata (okt 2012). Datum för åtkomst: 7 februari 2013. Arkiverad från originalet 24 maj 2013. 
  7. 1 2 3 4 5 Paul Creel. Forskare erbjuds ett alternativ till C - språket Julia (otillgänglig länk) . " Öppna system " (27 april 2012). Hämtad 27 april 2012. Arkiverad från originalet 13 september 2012.   (original Krill, Paul New Julia-språket försöker vara C för forskare (länk ej tillgänglig) . InfoWorld. Hämtad 7 februari 2013. Arkiverad från originalet 24 maj 2013.  )
  8. Julia: A Fast Dynamic Language for Technical Computing ( PDF )  (länk ej tillgänglig) (2012). Arkiverad från originalet den 24 maj 2013.
  9. Varför vi skapade Julia (nedlänk) (feb 2012). Datum för åtkomst: 7 februari 2013. Arkiverad från originalet 24 maj 2013. 
  10. Mark, Gibbs Gear head (länk ej tillgänglig) . Nätverksvärld (2013-1-9). Datum för åtkomst: 7 februari 2013. Arkiverad från originalet 24 maj 2013. 
  11. 1 2 Stephan Boyer. Ett grafiskt gränssnitt för programmeringsspråket Julia  (engelska)  (länk ej tillgänglig) . Massachusetts Institute of Technology (december 2011). Hämtad 23 juli 2012. Arkiverad från originalet 13 september 2012.
  12. The Julia Studio (nedlänk) . Arkiverad från originalet den 24 maj 2013. 
  13. Juno, den interaktiva utvecklingsmiljön . Hämtad 5 juli 2015. Arkiverad från originalet 10 oktober 2016.

Litteratur

  • Bruce Tate, Fred Daoud, Jack Moffitt, Ian Dees. Julia // Sju fler språk på sju veckor. Språk som formar framtiden. - Den pragmatiska bokhyllan, 2015. - S. 171-207. — 320 s. — ISBN 978-1941222157 .

Länkar