1 Востаннє редагувалося Smolenkov_BN (13.08.2018 08:24:20)

Тема: Мова програмування 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
Мабуть тому в Україні статистика завжди шкутильгає відразу на обидві ноги.

Подякували: P.Y.1

2

Re: Мова програмування Julia

Smolenkov_BN написав:

Багато зарубіжних міністерств і корпорацій вже перейшли з безкоштовної мови програмування R на Julia.

Судячи з формулювання, Julia - не безкоштовна.
При цьому це "багато" знаходиться на 50-му місці в рейтингу, в той час як R тримає 18-е:
https://www.tiobe.com/tiobe-index/

3

Re: Мова програмування Julia

Киньте в тему пару прикладів коду, чи що. Щоб ми мали уявлення, на що взагалі ця Юлька схожа.

Подякували: koala, leofun012

4 Востаннє редагувалося leofun01 (13.08.2018 13:44:23)

Re: Мова програмування Julia

Пародія на Python

function _require_callback(mod::Base.PkgId)
    if Base.toplevel_load[] && myid() == 1 && nprocs() > 1
        # broadcast top-level (e.g. from Main) import/using from node 1 (only)
        @sync for p in procs()
            p == 1 && continue
            @async remotecall_wait(p) do
                Base.require(mod)
                nothing
            end
        end
    end
end

Тільки end доводиться дописувати.
Взято з github.

upd:

Як це виглядає

https://replace.org.ua/misc.php?action=pun_attachment&item=1873&download=0

Post's attachments

R_Julia_Python.png 219.42 kb, 179 downloads since 2018-08-13 

Подякували: P.Y.1

5

Re: Мова програмування Julia

Паскаль без ;

Подякували: leofun011

6 Востаннє редагувалося koala (13.08.2018 13:59:39)

Re: Мова програмування Julia

Добре, що Python ще не став цим...

https://turnoff.us/image/en/programming-languages-battle.png

Подякували: varkon, HetmanNet2

7

Re: Мова програмування Julia

leofun01 написав:

Пародія на Python
Тільки end доводиться дописувати.

koala написав:

Паскаль без ;

Щось схоже на Lua, але з більш навороченим синтаксисом?

8

Re: Мова програмування Julia

koala написав:
Добре, що Python ще не став цим...

https://turnoff.us/image/en/programming-languages-battle.png

Вирішив трохи ознайомитися з COBOL'ом

Вражає. Навіть додавання двох чисел (власне, як і хеловорд або програма, що нічого не робить) виглядає монструозно:

000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID. ADD01.
000300 ENVIRONMENT DIVISION.
000400 DATA DIVISION.
000500
000600 WORKING-STORAGE SECTION.
000700
000800 01  FIRST-NUMBER      PICTURE IS 99.
000900 01  SECOND-NUMBER     PICTURE IS 99.
001000 01  THE-RESULT        PICTURE IS 999.
001100
001200 PROCEDURE DIVISION.
001300
001400 PROGRAM-BEGIN.
001500
001600     DISPLAY "Enter the first number.".
001700
001800     ACCEPT FIRST-NUMBER.
001900
002000     DISPLAY "Enter the second number.".
002100
002200     ACCEPT SECOND-NUMBER.
002300
002400     COMPUTE THE-RESULT = FIRST-NUMBER + SECOND-NUMBER.
002500
002600     DISPLAY "The result is:".
002700     DISPLAY THE-RESULT.
002800
002900 PROGRAM-DONE.
003000     STOP RUN.
003100

Одразу відчувається дух епохи лампових суперкомп'ютерів — не надто функціональних, зате дууже великих.
Дивно, як воно могло конкурувати з суперлаконічним синтаксисом APL (нащадком якого є згадана вище мова R). Хоча, можливо, саме тому — можна майже нічого не зробити, а вже видно, що кодер накодив щось велике.

Утім, здається, COBOL втратив актуальність раніше, ніж Java почала набувати популярність.

Подякували: HetmanNet, leofun012

9

Re: Мова програмування Julia

P.Y. написав:

Утім, здається, COBOL втратив актуальність раніше, ніж Java почала набувати популярність.

декілька років тому мені пропонували позицію у проекті France Airlines (чи щось таке - точно не буду стверджувати) на COBOL. З досить непоганим рейтом. Так що "всенетакаднозначно".
Це ПЗ було призначене для керування службами аеропорту та відправленнями рейсів - було написано приблизно у 1978-82 роках.

Подякували: P.Y., leofun012

10

Re: Мова програмування Julia

«Втратив актуальність» означає, що нові програми на ньому, як правило, не пишуться — лише підтримка старого коду (яка може продовжуватись як-завгодно довго). Оскільки спеціалістів з таких мов зараз ніде масово не готують, то існує певний дефіцит кваліфікованих кадрів для таких вакансій — відповідно, й рівень зарплат достатньо високий.

Подякували: leofun011

11 Востаннє редагувалося koala (14.08.2018 15:23:13)

Re: Мова програмування Julia

P.Y. написав:

«Втратив актуальність» означає, що нові програми на ньому, як правило, не пишуться — лише підтримка старого коду (яка може продовжуватись як-завгодно довго). Оскільки спеціалістів з таких мов зараз ніде масово не готують, то існує певний дефіцит кваліфікованих кадрів для таких вакансій — відповідно, й рівень зарплат достатньо високий.

За цією логікою Java втратила актуальність раніше:
https://www.payscale.com/research/US/Jo … mer/Salary - $85,766
https://www.payscale.com/research/US/Jo … per/Salary - $99,224

Подякували: leofun011

12

Re: Мова програмування Julia

Не бачу суперечності. COBOL втратив актуальність і займає вузьку нішу підтримки legacy-коду з достаньо високим рівнем оплати. Java лишається популярною мовою й займає широку нішу актуальних комерційних проектів з достатньо високим рівнем оплати. І там, і там рівень оплати високий — але ринок Java-вакансій набагато ширший.

Подякували: leofun011

13

Re: Мова програмування Julia

varkon написав:
P.Y. написав:

Утім, здається, COBOL втратив актуальність раніше, ніж Java почала набувати популярність.

декілька років тому мені пропонували позицію у проекті France Airlines (чи щось таке - точно не буду стверджувати) на COBOL. З досить непоганим рейтом. Так що "всенетакаднозначно".
Це ПЗ було призначене для керування службами аеропорту та відправленнями рейсів - було написано приблизно у 1978-82 роках.

Де шукати вакансії на COBOL?

14

Re: Мова програмування Julia

HetmanNet написав:

Де шукати вакансії на COBOL?

За моїм посиланням не переходили?

Подякували: varkon1

15

Re: Мова програмування Julia

HetmanNet написав:

Де шукати вакансії на COBOL?

Тільки за посиланням шановного koala я нарахував від 5 позицій.
Наприклад: тут