Julie | |
---|---|
Jazyková třída | programovací jazyk |
Objevil se v | 23. srpna 2009 [1] [2] |
Autor | Jeff Besancon [d] , Alan Edelman [d] , Stefan Karpinski [d] a Viral Shah [d] |
Vývojář | Jeff Besanson [d] , Stefan Karpinski [d] , Alan Edelman [d] a Viral Shah [d] |
Přípona souboru | .jl[3] |
Uvolnění | 1.8.2 (29.09.2022) |
Byl ovlivněn | MATLAB |
webová stránka | julialang.org _ |
OS | Linux , Microsoft Windows [4] a macOS [4] |
Mediální soubory na Wikimedia Commons |
Julia je vysoce výkonný dynamicky typovaný bezplatný programovací jazyk určený pro matematické výpočty. Je také efektivní pro psaní programů pro všeobecné použití. [5] [6] [7] Syntaxe jazyka je podobná syntaxi jiných matematických jazyků (jako je MATLAB a Octave ), ale má některé významné rozdíly. Julia je napsána v C , C++ a Scheme . Má vestavěnou podporu pro multithreading a distribuované výpočty, které jsou také implementovány ve standardních provedeních.
Jazyk je dynamický a zároveň podporuje kompilaci JIT (standardně je součástí kompilátor JIT založený na LLVM ), díky čemuž jsou podle autorů jazyka aplikace psané výhradně v jazyce (bez použití nízkoúrovňových knihoven a vektorové operace) nejsou prakticky horší ve výkonu pro aplikace napsané ve staticky kompilovaných jazycích, jako je C nebo C++ [7] . Většina standardní knihovny jazyka je napsána v něm [8] .
Je podporováno přetížení funkcí a operátorů (což jsou vlastně také funkce) a volitelně můžete zadat typ pro argumenty funkce, což obvykle není případ dynamicky typovaných jazyků. To umožňuje vytvářet specializované varianty funkcí a operátorů pro urychlení výpočtů. Nejvhodnější varianta funkce se vybírá automaticky během provádění. Přetížení operátorů také umožňuje vytvářet nové datové typy, které se chovají jako vestavěné typy.
Diskuse o potřebě vytvořit nový jazyk začaly v srpnu 2009. Stefan Karpinski, který v té době pracoval s matematickým balíčkem Matlab a programovacím jazykem R , byl nespokojen s jejich omezeními. A poté, co ho Viral Shah představil Jeffu Besançonovi, začali tito tři diskutovat o konceptu nového jazyka. Pro volbu ženského jména jako názvu jazyka, jak vysvětlil hlavní vývojář jazyka Stefan Karpinski v rozhovoru, „neexistoval žádný zvláštní důvod“, vývojářům se jednoduše „líbilo toto jméno“ [7] . První otevřená verze byla zveřejněna v únoru 2012. [9] [10]
Hlavním úkolem při tvorbě bylo vyvinout univerzální jazyk, který dokáže pracovat s velkým množstvím výpočtů a zároveň garantuje maximální výkon. Vzhledem k tomu, že velké množství výpočtů se provádí v cloudových prostředích, jazyk okamžitě implementoval podporu pro cloudy a paralelní programování jako náhradu za mechanismus MPI [7] .
Jazyk zpočátku implementoval model pro vytváření velkých paralelních aplikací založených na globálně distribuovaném adresním prostoru. Takový model implikuje schopnost provádět operace (včetně jejich přenosu mezi stroji) s odkazem na objekt umístěný na jiném stroji, který se také účastní výpočtů. Tento mechanismus umožňuje sledovat, které výpočty se na kterých systémech provádějí, a také připojit k výpočtům nové stroje [7] .
Podle oficiálních stránek jsou hlavní rysy jazyka:
Příklad funkce:
funkce mandel ( z ) c = z maximum = 80 pro n = 1 : maxiter pokud abs ( z ) > 2 návrat n - 1 konec z = z ^ 2 + c konec návrat maxiter konec funkce randmatstat ( t ) n = 5 v = nuly ( t ) w = nuly ( t ) pro 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 = [ ab ; _ c d] v [ i ] = trace (( P . '* P ) ^ 4 ) w [ i ] = stopa (( Q . '* Q ) ^ 4 ) konec std ( v ) / střední ( v ), std ( w ) / střední ( w ) konecPříklad paralelního počítání 100 000 000 výsledků náhodného hodu mincí:
nheads = @ paralelní ( + ) pro i = 1 : 100000000 ranbit () konecV prosinci 2011 Stefan Boyer navrhl myšlenku grafické implementace jazyka, která by usnadnila práci s jazykem matematikům a dalším vědcům, kteří nemají programátorské dovednosti a pracují v prostředí Unix . Boyerovou myšlenkou bylo přejít od odesílání příkazů do výpočetního clusteru k pouhé práci s prohlížečem. Klientskou část, která mimo jiné implementuje grafické rozhraní a platformu pro vykreslování grafů, lze přitom implementovat pomocí tak moderních (v té době) technologií jako HTML5 , SVG a AJAX [11] .
K realizaci svého nápadu použil Boyer serverovou část napsanou v jazyce Julia, která pomocí speciálního správce relací protokolu SCGI interaguje s webovým serverem založeným na lighttpd . Takový přístup umožnil poměrně jednoduchým způsobem implementovat koncept REPL , který má následující možnosti: vykreslování na základě výpočtu funkcí, jednorozměrných polí a množin bodů libovolného číselného typu; pohodlí práce s prostředím (automatická detekce velikosti oken atd.); rozšiřitelnost a multiplatformní mezi prohlížeči. Funkce pro vykreslování v takovém prostředí lze zadat několika způsoby:
zápletka ( hřích , - pí , pí )nebo
plot ([ 0,0 , 0,1 , 0,4 , 0,3 , 0,4 ])[11] .
Julia Studio je první desktopové integrované vývojové prostředí pro Julii [12] , následně nahrazené prostředím Juno [13] , což je doplněk pro textový editor Atom .
Systémy počítačové algebry | |
---|---|
Proprietární |
|
Volný, uvolnit | |
Free/shareware |
|
Není podporováno |
|
Matematický software | |
---|---|
Symbolické výpočty | |
Numerické výpočty |
Programovací jazyky | |
---|---|
|