Для установки нажмите кнопочку Установить расширение. И это всё.

Исходный код расширения WIKI 2 регулярно проверяется специалистами Mozilla Foundation, Google и Apple. Вы также можете это сделать в любой момент.

4,5
Келли Слэйтон
Мои поздравления с отличным проектом... что за великолепная идея!
Александр Григорьевский
Я использую WIKI 2 каждый день
и почти забыл как выглядит оригинальная Википедия.
Статистика
На русском, статей
Улучшено за 24 ч.
Добавлено за 24 ч.
Что мы делаем. Каждая страница проходит через несколько сотен совершенствующих техник. Совершенно та же Википедия. Только лучше.
.
Лео
Ньютон
Яркие
Мягкие

Julia (язык программирования)

Из Википедии — свободной энциклопедии

Julia
Julia Programming Language Logo.svg
Класс языка мультипарадигмальный: процедурный, на основе мультиметодов, функциональный, мета
Тип исполнения компилируемый (JIT)
Появился в 23 августа 2009[2][3]
Автор Стефан Карпински,
Джефф Безансон,
Вирал Шах
Разработчик см. Julia. GitHub.
Расширение файлов .jl[4]
Выпуск
Система типов динамический с опциональными аннотациями типов[en] и выводом типов
Испытал влияние Си, Fortran, NumPy, Matlab, Lua, R, Scheme, Lisp, Python, Perl, Ruby
Сайт julialang.org​ (англ.)
ОС Linux, Microsoft Windows[5] и macOS[5]
Commons-logo.svg Медиафайлы на Викискладе

Julia — высокоуровневый высокопроизводительный свободный язык программирования с динамической типизацией, созданный для математических вычислений. Эффективен также и для написания программ общего назначения.[6][7][8] Синтаксис языка схож с синтаксисом других математических языков (например, MATLAB и Octave), однако имеет некоторые существенные отличия. Julia написан на Си, C++ и Scheme. В стандартный комплект входит JIT-компилятор на основе LLVM, благодаря чему, по утверждению авторов языка, приложения, полностью написанные на языке, практически не уступают в производительности приложениям, написанным на статически компилируемых языках вроде Си или C++[8]. Большая часть стандартной библиотеки языка написана на нём же.[9] Также язык имеет встроенную поддержку большого числа команд для распределенных вычислений.

Описание языка

Язык является динамическим, однако использует JIT-компиляцию. Благодаря этому достигается высокая скорость работы приложений, написанных на «чистом» языке, без использования низкоуровневых библиотек и векторных операций. Поддерживается перегрузка функций и операторов (которые фактически также являются функциями), при этом опционально можно указывать тип для аргументов функции, чего обычно нет в динамически типизируемых языках. Это позволяет создавать специализированные варианты функций и операторов для ускорения вычислений. Наиболее подходящий вариант функции выбирается автоматически в процессе выполнения. Также благодаря перегрузке операторов можно создавать новые типы данных, которые ведут себя подобно встроенным типам.

Одним из приоритетных направлений в развитии языка является поддержка распределённых вычислений. Присутствует большое количество стандартных конструкций для распараллеливания кода.

История создания

Обсуждение необходимости создания нового языка началось в августе 2009 года. Стефан Карпински, к тому времени поработавший с математическим пакетом Matlab и языком программирования R, испытывал неудовлетворённость их ограничениями. И после того, как Вирал Шах познакомил его с Джеффом Безансоном, все трое принялись обсуждать концепцию нового языка. Для выбора женского имени в качестве названия языка, как пояснял в интервью ведущий разработчик языка Стефан Карпински, «особой причины не было», разработчикам просто «понравилось это имя»[8]. Первая открытая версия была опубликована в феврале 2012.[10][11]

Идеология

Основной задачей при создании была разработка универсального языка, способного работать с большим объёмом вычислений и при этом гарантировать максимальную производительность. Поскольку большой объём вычислений выполняется именно в облачных средах, то в языке была сразу реализована поддержка облаков и параллельного программирования как замена механизму MPI[8].

В языке была изначально реализована модель построения больших параллельных приложений, основанная на глобальном распределенном адресном пространстве. Такая модель подразумевает возможность производить операции (в том числе и их передачу между машинами) со ссылкой на объект, расположенный на другой машине, также участвующей в вычислениях. Этот механизм позволяет отслеживать, какие вычисления на каких системах выполняются, а также подключать к производимым вычислениям новые машины[8].

Возможности Julia

Согласно официальному сайту, основные возможности языка:

Примеры кода

Пример функции:

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

Графическая реализация

В декабре 2011 года Стефан Бойер предложил идею графической реализации языка, которая облегчит работу с ним математикам и другим учёным, не обладающими навыками программирования и работы в UNIX-средах. Идея Бойера заключалась в переходе от отправки команд вычислительному кластеру к простой работе с браузером. При этом, клиентская часть, реализующая в том числе и графический интерфейс и платформу для построения графиков, может быть реализована при помощи таких современных (на тот момент) технологий как HTML5, SVG и AJAX[12].

Для реализации своей идеи Бойер использовал серверную часть, написанную на языке Julia, которая при помощи специального менеджера сессий протокола SCGI взаимодействует с веб-сервером на базе lighttpd. Подобный подход позволил довольно несложным путём реализовать концепцию REPL, обладающую следующими возможностями: построение графиков на основе вычислений функций, одномерных массивов и наборов точек любого числового типа; удобство работы со средой (автоматическое определение размера окон и т. д.); расширяемость и кросс-платформенность между браузерами. Функции для построения графиков в такой среде могут задаваться несколькими способами:

plot(sin, -pi, pi)

или

plot([0.0, 0.1, 0.4, 0.3, 0.4])

[12].

Инструменты

Julia Studio — это интегрированная среда разработки для Julia.[13] В настоящее время её заменила среда Juno[14], являющаяся надстройкой над Atom.

Примечания

  1. https://github.com/JuliaLang/julia/releases/tag/v1.6.1 — 2021.
  2. LICENSE.md file in the JuliaLang/julia repositoryGitHub Inc..
  3. Безансон Д. JuliaLang/julia - commit eb256df: "beginning work on parser"GitHub Inc..
  4. http://fileformats.archiveteam.org/wiki/Julia
  5. 1 2 https://julialang.org/downloads/
  6. The Julia Language (недоступная ссылка). Архивировано 24 мая 2013 года.
  7. Bryant, Avi Matlab, R, and Julia: Languages for data analysis (недоступная ссылка). O'Reilly Strata (Oct 2012). Дата обращения: 7 февраля 2013. Архивировано 24 мая 2013 года.
  8. 1 2 3 4 5 Пол Крил. Учёным предлагается альтернатива Си — язык Julia (недоступная ссылка). «Открытые системы» (27 апреля 2012). Дата обращения: 27 апреля 2012. Архивировано 13 сентября 2012 года. (оригинал Krill, Paul New Julia language seeks to be the C for scientists (недоступная ссылка). InfoWorld. Дата обращения: 7 февраля 2013. Архивировано 24 мая 2013 года.)
  9. Julia: A Fast Dynamic Language for Technical Computing (PDF(недоступная ссылка) (2012). Архивировано 24 мая 2013 года.
  10. Why We Created Julia (недоступная ссылка) (Feb 2012). Дата обращения: 7 февраля 2013. Архивировано 24 мая 2013 года.
  11. Mark, Gibbs Gear head (недоступная ссылка). Network World (2013‐1‐9). Дата обращения: 7 февраля 2013. Архивировано 24 мая 2013 года.
  12. 1 2 Stephan Boyer. A Graphical Front End for the Julia Programming Language (англ.) (недоступная ссылка). Массачусетский технологический институт (December 2011). Дата обращения: 23 июля 2012. Архивировано 13 сентября 2012 года.
  13. The Julia Studio (недоступная ссылка). Архивировано 24 мая 2013 года.
  14. Juno, the Interactive Development Environment

Литература

  • Bruce Tate, Fred Daoud, Jack Moffitt, Ian Dees. Julia // Seven More Languages in Seven Weeks. Languages That Are Shaping the Future. — The Pragmatic Bookshelf, 2015. — С. 171—207. — 320 с. — ISBN 978-1941222157.

Ссылки

Эта страница в последний раз была отредактирована 21 июня 2021 в 06:02.
Как только страница обновилась в Википедии она обновляется в Вики 2.
Обычно почти сразу, изредка в течении часа.
Основа этой страницы находится в Википедии. Текст доступен по лицензии CC BY-SA 3.0 Unported License. Нетекстовые медиаданные доступны под собственными лицензиями. Wikipedia® — зарегистрированный товарный знак организации Wikimedia Foundation, Inc. WIKI 2 является независимой компанией и не аффилирована с Фондом Викимедиа (Wikimedia Foundation).