Julia — високорівнева динамічна мова програмування, яку було первинно розроблено для задоволення потреб високопродуктивного чисельного аналізу та обчислювальної науки, без потреби швидкої окремої компіляції, також підходить для вебу як для клієнтської так і серверної частини, програмного забезпечення низького рівня або як мова специфікації.
Julia | |
---|---|
Парадигма | Мультипарадигма: Мультиметод ("ООП"), Процедурна, Функційна, Метапрограмування |
Дата появи | 23 серпня 2009[1][2] |
Творці | Jeff Bezanson, , , |
Розробник | Jeff Bezanson, , , та інші |
Останній реліз | 1.0.0 and 0.7.0 (8 серпня, 2018 ) |
Система типізації | Динамічна, , |
Під впливом від | |
Платформа | IA-32, x86-64 |
Операційна система | Linux, macOS, Windows та підтримка спільноти FreeBSD |
Ліцензія | MIT (ядро) |
Звичайні розширення файлів | .jl |
Вебсайт | JuliaLang.org |
|
До особливих аспектів дизайну Julia належать система типізації з параметричним поліморфізмом та типи в повністю динамічній мові програмування та множинній диспетчеризації як основній парадигмі програмування. Це дає змогу виконувати одночасне, паралельне та розподілене обчислення, а також прямі виклики бібліотек C і Fortran без додаткового коду.
Синтаксис Julia близький до MATLAB з запозиченням деяких елементів з Ruby і Lisp. Метод маніпуляції рядками нагадує Perl. Julia має вбудованого збирача сміття, використовує незмінну оцінку та містить ефективні бібліотеки для розрахунків з рухомою комою, лінійної алгебри, генерації випадкових чисел та регулярних виразів. Набагато більше наукових (та інших) бібліотек доступні для використання.
Код проекту поширюється під ліцензією MIT.
Історія
Роботу над Julia було розпочато 2009 року Джефом Безансоном, , та , який поставив завдання створити вільну мову, яка була б високорівневою і водночас швидкою. 14 лютого 2012 року команда запустила вебсайт із повідомленням в блозі, що пояснює місію мови. Офіційної причини для назви «Julia» немає.
Особливості
Ключові особливості мови:
- Висока продуктивність: однією з ключових цілей проекту є досягнення продуктивності близької до програм мовою Сі. Компілятор Julia заснований на напрацюваннях проекту LLVM і генерує ефективний нативний машинний код для багатьох цільових платформ;
- Підтримка різних парадигм програмування, включно з елементами об'єктно-орієнтованого і функційного програмування. Стандартна бібліотека надає в тому числі функції для асинхронного вводу/виводу, управління процесами, ведення логів, профілювання і управління пакетами;
- Динамічна типізація: мова не потребує явного визначення типів для змінних за аналогією зі скриптовими мовами програмування. Підтримується інтерактивний режим роботи;
- Опціональна можливість явного вказування типів;
- Синтаксис, який чудово підходить для чисельних і наукових розрахунків, систем машинного навчання і візуалізації даних. Підтримка багатьох числових типів даних і засоби для розпаралелювання обчислень.
- Можливість прямого виклику функцій з бібліотек мови Сі без додаткових прошарків.
Приклад коду
Приклад функції:
function mandel(z) c = z maxiter = 80 for n = 1:maxiter if abs(z) > 2 return n-1 end z = z^2 + c end return maxiter end function randmatstat(t) n = 5 v = zeros(t) w = zeros(t) for 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] = trace((P.'*P)^4) w[i] = trace((Q.'*Q)^4) end std(v)/mean(v), std(w)/mean(w) end
Приклад паралельного обчислення 100.000.000 результатів випадкового підкидання монети:
nheads = @parallel (+) for i=1:100000000 randbit() end
JIT Компілятор
Цей розділ містить текст, що не відповідає . (березень 2019) |
Компілятор JIT (just-in-time), розроблений на основі LLVM Julia, у поєднанні з його дизайном, дозволяє мові відповідати продуктивності C-мови в декількох сценаріях. Щоб отримати уявлення про відносну продуктивність Julia в порівнянні з іншими мовами, які може бути використано для чисельного та наукового обчислення, ми пишемо невеликий набір мікро-тестів різними мовами: C, Fortran, Julia, Python, Matlab / Octave, R, JavaScript, Java, Lua, Go і Mathematica. Результати наступних мікро-тестів було отримано з використанням одноядерного (послідовного виконання) процесора Intel Core i7-3960X з частотою 3,30 ГГц із 64 Гб 1600 МГц оперативної пам'яті DDR3, за допомогою дистрибутиву openSUSE LEAP 42.3:
Взаємодія
Офіційний дистрибутив Julia містить інтерактивний командний рядок, який називають цикл читання-обчислення-друку (REPL), який можливо застосовувати для швидкого експерименту та тестування коду. Наступний фрагмент є прикладом демонстраційного сеансу, де стрічки об'єднуються автоматично завдяки println:
julia> p(x) = 2x^2 + 1; f(x, y) = 1 + 2p(x)y julia> println("Hello world!", " I'm on cloud ", f(0, 4), " as Julia supports recognizable syntax!") Hello world! I'm on cloud 9 as Julia supports recognizable syntax!
Посилання
- Офіційний сайт
- Початковий код [ 5 лютого 2021 у Wayback Machine.]
- LICENSE.md file in the JuliaLang/julia repository — GitHub Inc..
- Bezanson J. JuliaLang/julia - commit eb256df: "beginning work on parser" — GitHub Inc..
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Julia visokorivneva dinamichna mova programuvannya yaku bulo pervinno rozrobleno dlya zadovolennya potreb visokoproduktivnogo chiselnogo analizu ta obchislyuvalnoyi nauki bez potrebi shvidkoyi okremoyi kompilyaciyi takozh pidhodit dlya vebu yak dlya kliyentskoyi tak i servernoyi chastini programnogo zabezpechennya nizkogo rivnya abo yak mova specifikaciyi JuliaParadigma Multiparadigma Multimetod OOP Procedurna Funkcijna MetaprogramuvannyaData poyavi 23 serpnya 2009 1 2 Tvorci Jeff Bezanson Rozrobnik Jeff Bezanson ta inshiOstannij reliz 1 0 0 and 0 7 0 8 serpnya 2018 5 rokiv tomu 2018 08 08 Sistema tipizaciyi Dinamichna Pid vplivom vid C Lisp Lua Mathematica MATLAB Perl Python R Ruby SchemePlatforma IA 32 x86 64Operacijna sistema Linux macOS Windows ta pidtrimka spilnoti FreeBSDLicenziya MIT yadro Zvichajni rozshirennya fajliv jlVebsajt JuliaLang org Mediafajli u Vikishovishi Do osoblivih aspektiv dizajnu Julia nalezhat sistema tipizaciyi z parametrichnim polimorfizmom ta tipi v povnistyu dinamichnij movi programuvannya ta mnozhinnij dispetcherizaciyi yak osnovnij paradigmi programuvannya Ce daye zmogu vikonuvati odnochasne paralelne ta rozpodilene obchislennya a takozh pryami vikliki bibliotek C i Fortran bez dodatkovogo kodu Sintaksis Julia blizkij do MATLAB z zapozichennyam deyakih elementiv z Ruby i Lisp Metod manipulyaciyi ryadkami nagaduye Perl Julia maye vbudovanogo zbiracha smittya vikoristovuye nezminnu ocinku ta mistit efektivni biblioteki dlya rozrahunkiv z ruhomoyu komoyu linijnoyi algebri generaciyi vipadkovih chisel ta regulyarnih viraziv Nabagato bilshe naukovih ta inshih bibliotek dostupni dlya vikoristannya Kod proektu poshiryuyetsya pid licenziyeyu MIT IstoriyaRobotu nad Julia bulo rozpochato 2009 roku Dzhefom Bezansonom ta yakij postaviv zavdannya stvoriti vilnu movu yaka bula b visokorivnevoyu i vodnochas shvidkoyu 14 lyutogo 2012 roku komanda zapustila vebsajt iz povidomlennyam v blozi sho poyasnyuye misiyu movi Oficijnoyi prichini dlya nazvi Julia nemaye OsoblivostiKlyuchovi osoblivosti movi Visoka produktivnist odniyeyu z klyuchovih cilej proektu ye dosyagnennya produktivnosti blizkoyi do program movoyu Si Kompilyator Julia zasnovanij na napracyuvannyah proektu LLVM i generuye efektivnij nativnij mashinnij kod dlya bagatoh cilovih platform Pidtrimka riznih paradigm programuvannya vklyuchno z elementami ob yektno oriyentovanogo i funkcijnogo programuvannya Standartna biblioteka nadaye v tomu chisli funkciyi dlya asinhronnogo vvodu vivodu upravlinnya procesami vedennya logiv profilyuvannya i upravlinnya paketami Dinamichna tipizaciya mova ne potrebuye yavnogo viznachennya tipiv dlya zminnih za analogiyeyu zi skriptovimi movami programuvannya Pidtrimuyetsya interaktivnij rezhim roboti Opcionalna mozhlivist yavnogo vkazuvannya tipiv Sintaksis yakij chudovo pidhodit dlya chiselnih i naukovih rozrahunkiv sistem mashinnogo navchannya i vizualizaciyi danih Pidtrimka bagatoh chislovih tipiv danih i zasobi dlya rozparalelyuvannya obchislen Mozhlivist pryamogo vikliku funkcij z bibliotek movi Si bez dodatkovih prosharkiv Priklad koduPriklad funkciyi function mandel z c z maxiter 80 for n 1 maxiter if abs z gt 2 return n 1 end z z 2 c end return maxiter end function randmatstat t n 5 v zeros t w zeros t for 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 trace P P 4 w i trace Q Q 4 end std v mean v std w mean w end Priklad paralelnogo obchislennya 100 000 000 rezultativ vipadkovogo pidkidannya moneti nheads parallel for i 1 100000000 randbit endJIT KompilyatorCej rozdil mistit tekst sho ne vidpovidaye enciklopedichnomu stilyu Bud laska dopomozhit udoskonaliti cej rozdil pogodivshi stil vikladu zi stilistichnimi pravilami Vikipediyi Mozhlivo storinka obgovorennya mistit zauvazhennya shodo potribnih zmin berezen 2019 Kompilyator JIT just in time rozroblenij na osnovi LLVM Julia u poyednanni z jogo dizajnom dozvolyaye movi vidpovidati produktivnosti C movi v dekilkoh scenariyah Shob otrimati uyavlennya pro vidnosnu produktivnist Julia v porivnyanni z inshimi movami yaki mozhe buti vikoristano dlya chiselnogo ta naukovogo obchislennya mi pishemo nevelikij nabir mikro testiv riznimi movami C Fortran Julia Python Matlab Octave R JavaScript Java Lua Go i Mathematica Rezultati nastupnih mikro testiv bulo otrimano z vikoristannyam odnoyadernogo poslidovnogo vikonannya procesora Intel Core i7 3960X z chastotoyu 3 30 GGc iz 64 Gb 1600 MGc operativnoyi pam yati DDR3 za dopomogoyu distributivu openSUSE LEAP 42 3 VzayemodiyaOficijnij distributiv Julia mistit interaktivnij komandnij ryadok yakij nazivayut cikl chitannya obchislennya druku REPL yakij mozhlivo zastosovuvati dlya shvidkogo eksperimentu ta testuvannya kodu Nastupnij fragment ye prikladom demonstracijnogo seansu de strichki ob yednuyutsya avtomatichno zavdyaki println julia gt p x 2 x 2 1 f x y 1 2 p x y julia gt println Hello world I m on cloud f 0 4 as Julia supports recognizable syntax Hello world I m on cloud 9 as Julia supports recognizable syntax PosilannyaOficijnij sajt Pochatkovij kod 5 lyutogo 2021 u Wayback Machine LICENSE md file in the JuliaLang julia repository GitHub Inc d Track Q28771536 Bezanson J JuliaLang julia commit eb256df beginning work on parser GitHub Inc d Track Q20630572d Track Q28771536