Тема: Мова програмування Julia
Julia - високорівнева високопродуктивна вільна мова програмування з динамічною типізацією, створена для обробки інформації під впливом достоїнств C, Lisp, Matlab, NumPy, Octave, Python, Perl, R, Ruby, Scheme. Ефективна для написання програм загального призначення. Написана на C, C++ і Scheme. У стандартний комплект входить JIT -компилятор на основі LLVM, тому швидкість виконання програм не поступається програмам на C і C++. Є вбудована підтримка команд для розподілених і статистичних обчислень. Є динамічною, але використовує JIT - компіляцію, тому досягається висока швидкість роботи програм на "чистій" мові без використання низькорівневих бібліотек і векторних операцій. Підтримується перевантаження функцій і операторів. Опционально можна вказувати тип аргументів функції для створення спеціалізованих варіантів функцій і операторів з прискореним обчисленням, чого зазвичай немає в мовах, що динамічно типізуються. Найбільш відповідний варіант функції вибирається автоматично в процесі виконання. Завдяки перевантаженню операторів можна створювати нові типи даних, які поводяться подібно до вбудованих типів. Є присутньою велика кількість стандартних конструкцій для розпаралелювання коду. Перша відкрита версія була опублікована в лютому 2012. Основним завданням при створенні була розробка універсальної мови, здатної працювати з великим об'ємом обчислень при гарантії максимальної продуктивності. У мові була відразу реалізована підтримка хмарних обчислень і паралельного програмування як заміна механізму MPI. Спочатку реалізована модель побудови великих паралельних застосувань, заснована на глобальному розподіленому адресному просторі. Така модель має на увазі можливість робити операції, включаючи і їх передачу між комп'ютерами, з посиланням на об'єкт, розташований на іншому комп'ютері, що також бере участь в обчисленнях. Цей механізм дозволяє відстежувати усі обчислення на усіх комп'ютерах, а також підключати нові комп'ютери.
Основні можливості мови:
- мультиметод (можливість визначати поведінку функції залежно від типу передаваних аргументів);
- динамічна типізація;
- висока продуктивність;
- вбудована система управління пакетами;
- макроси і інші можливості метапрограмування;
- виклик функцій Python за допомогою PyCall;
- виклик функцій C без додаткових надбудов і API;
- можливість управління усіма процесами;
- паралельні і розподілені обчислення;
- співпрограми (легковагі зелені потоки "green threads");
- можливість визначати додаткові типи, що не поступаються в швидкості і зручності вбудованим;
- елегантні і розширювані перетворення для числових і інших типів;
- підтримка Юникоду, що включає і не обмежує UTF-8.
Сайти основної версії:
https://julialang.org/
https://docs.julialang.org/
https://docs.julialang.org/en/stable/
https://github.com/JuliaLang/julia
Сайт комерційної версії з необов'язковими примочками:
https://juliacomputing.com/products/juliapro.html
https://juliacomputing.com/docs/
Відео:
https://www.youtube.com/user/JuliaLanguage
Книги:
- Mastering Julia
https://books.google.com.ua/books?id=P- … &hl=uk
- Julia: High Performance Programming
https://books.google.com.ua/books?id=PJ … &hl=uk
- Julia for Data Science
https://books.google.com.ua/books?id=MB … &hl=uk
Шпаргалки:
- за абеткою
http://www.jlhub.com/julia/manual/en/
- по функціональних групах
http://www.jlhub.com/julia/manual/en/function-reference
Багато зарубіжних міністерств і корпорацій вже перейшли з безкоштовної мови програмування R на Julia. І тільки в Україні продовжують ігнорувати обидві мови, що добре видно на сторінці "CRAN Mirrors":
https://cran.r-project.org/mirrors.html
Мабуть тому в Україні статистика завжди шкутильгає відразу на обидві ноги.