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.
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]
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:
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 ) slutetEtt exempel på parallell beräkning av 100 000 000 resultat av en slumpmässig myntkastning:
nheads = @ parallell ( + ) för i = 1 : 100000000 randbit () slutetI 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 .
Datoralgebrasystem | |
---|---|
Proprietär |
|
Fri | |
Gratis/shareware |
|
Stöds inte |
|
Matematisk programvara | |
---|---|
Symboliska beräkningar | |
Numeriska beräkningar |
Programmeringsspråk | |
---|---|
|