Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Julia - это высокоуровневый , высокопроизводительный динамический язык программирования . Хотя это язык общего назначения и может использоваться для написания любых приложений, многие из его функций хорошо подходят для численного анализа и вычислений . [19] [20] [21] [22]

Отличительные аспекты дизайна Джулии включают систему типов с параметрическим полиморфизмом на языке динамического программирования ; с множественной отправкой в качестве основной парадигмы программирования . Юлия поддерживает одновременную , (наборный) параллельно и распределенные вычислительные (с использованием или без использования MPI [23] и / или встроенный в соответствующих [ разъяснение необходимости ] [24] , чтобы « OpenMP -Style» нитей [25] ), и прямое призвание из C и Fortranбиблиотеки без связующего кода . Джулия использует своевременный (JIT) компилятор, который в сообществе Julia называют « опережающим » (JAOT), поскольку Джулия компилирует (с настройками по умолчанию) в машинный код перед его запуском. [26] [27]

Julia собирает мусор , [28] использует энергичные вычисления и включает эффективные библиотеки для вычислений с плавающей запятой , линейной алгебры , генерации случайных чисел и сопоставления регулярных выражений . Доступно множество библиотек, в том числе некоторые (например, для быстрых преобразований Фурье ), которые ранее были связаны с Julia, а теперь являются отдельными. [29]

Некоторые инструменты разработки поддерживают кодирование в Julia, например, интегрированные среды разработки (например, Microsoft Visual Studio Code с доступными расширениями, добавляющими поддержку Julia в IDE, например, обеспечивая поддержку отладки и линтинга [30] ); со встроенными инструментами, например профилировщиком (и поддержка графа пламени доступна [31] [32] для встроенного), отладчик, [33] и пакет Rebugger.jl «поддерживает отладку с повторным выполнением » [a] и др. . [35]

История [ править ]

Работа над Джулией была начата в 2009 году Джеффом Безансоном , Стефаном Карпински , Виралом Б. Шахом и Аланом Эдельманом , которые намеревались создать свободный язык, который был бы одновременно высокоуровневым и быстрым. 14 февраля 2012 года команда запустила веб-сайт с сообщением в блоге, объясняющим миссию языка. [36] В интервью InfoWorld в апреле 2012 года Карпински сказал о имени «Джулия»: «На самом деле, для этого нет веской причины. Это просто казалось красивым именем». [37] Безансон сказал, что выбрал это имя по рекомендации друга. [38]

С момента запуска в 2012 году сообщество Джулии выросло, и «Юлию загрузили пользователи более чем 10 000 компаний» [39] с более чем 25 000 000 скачиваний по состоянию на февраль 2021 года , что на 87% за год (другая статистика, связанная с Джулией. выросла на 113%), [40] и используется более чем в 1500 университетах, [41] [42] [43] Академическая конференция JuliaCon для пользователей и разработчиков Julia проводится ежегодно с 2014 года, а в последние годы - 2020 JuliaCon приветствуя более 28 900 уникальных зрителей. [44]

Версия 0.3 была выпущена в августе 2014 года, версия 0.4 в октябре 2015 года, версия 0.5 в октябре 2016 года [45] и версия 0.6 в июне 2017 года. [46] И Julia 0.7 (полезный выпуск для тестирования пакетов и для понимания того, как обновлять) их для 1.0 [47] ) и версии 1.0 были выпущены 8 августа 2018 года. Работа над Julia 0.7 была «огромным мероприятием» (например, из-за «совершенно нового оптимизатора»), и некоторые изменения были внесены в семантику, например, итерация упрощен интерфейс; [48] и немного изменился синтаксис (теперь синтаксис стабилен, то же самое для 1.x и 0.7).

Релиз-кандидат для Julia 1.0 (Julia 1.0.0-rc1) был выпущен 7 августа 2018 года, а финальная версия - днем ​​позже (и к настоящему времени Julia 1.0.x являются самыми старыми версиями, которые все еще поддерживаются и имеют долгосрочную поддержку ; минимум год). Julia 1.1 была выпущена в январе 2019 года, например, с новой функцией языка «стек исключений». Выпуски исправлений ожидаются примерно ежемесячно, для версий 1.4.x и 1.0.x и Julia 1.0.1 до 1.0.5 следовали этому графику. Julia 1.2 была выпущена в августе 2019 года и имеет, например, некоторую встроенную поддержку веб-браузеров (для тестирования при работе в виртуальной машине JavaScript ) [49]и Julia 1.5 в августе 2020 года (а с ним выпуски Julia 1.4.x, 1.3.x, 1.2.x и Julia 1.1.x больше не поддерживаются). Julia 1.3 добавила, например, составной многопоточный параллелизм и систему двоичных артефактов для пакетов Julia. [50]

Julia 1.4 позволила улучшить синтаксис индексации массивов для обработки, например, массивов, начинающихся с 0 , с A[begin+1]использованием второго элемента массива A. [51] Модель памяти также была изменена. [52] В второстепенном выпуске 1.4.2 исправлена, например, проблема с Zlib , удвоение скорости декомпрессии. [53]

В Julia 1.5 добавлена поддержка отладки записи и воспроизведения [54] для инструмента Mozilla rr . Это большой выпуск с измененным поведением в REPL (soft scope), таким же, как в Jupyter , но полностью совместимым с кодом, отличным от REPL. Большая часть API потока была помечена как стабильная, и в этом выпуске «произвольные неизменяемые объекты - независимо от того, имеют ли они поля, которые ссылаются на изменяемые объекты или нет - - теперь могут быть выделены стеком» [55], уменьшая выделение кучи, напримерviewsбольше не распределяют. Все версии работали над производительностью, но особенно работа над Julia 1.5 нацелена на так называемую производительность «time-to-first-plot», в целом скорость самой компиляции (в отличие от производительности сгенерированного кода) и добавляет инструменты для разработчиков, чтобы улучшить загрузку пакетов. [56] Julia 1.6 также еще больше улучшает такую ​​производительность.

Пакеты, которые работают в Julia 1.0.x, должны работать в 1.1.x или новее, что обеспечивается гарантией синтаксиса прямой совместимости . Заметным исключением были библиотеки интерфейса иностранного языка, такие как JavaCall.jl (для языков JVM, таких как Java или Scala ) и Rcall.jl ( язык R ) из-за некоторых изменений, связанных с потоками (в то время, когда все функции потоковой передачи в Julia были помечены как экспериментальные). [57] Проблема была особенно сложной для Java JVM, поскольку у нее есть некоторые особые ожидания относительно того, как используется адресное пространство стека . Обходной путь JULIA_ALWAYS_COPY_STACKSбыл опубликован для Julia 1.3.0, а полное исправление для Java находится на рассмотрении и не имеет установленного срока. [58]Кроме того, в версиях JVM, начиная с Java 11, эта проблема не возникает. [59] Срок исполнения Julia 1.6 был перенесен на конец 2020 года [60], а Julia 1.7 находится в разработке. Вехи для Julia 1.7 и 2.0 (и более поздних, например, 3.0) в настоящее время не имеют установленных сроков выполнения. [61]

Известные применения [ править ]

Джулия привлекла некоторых известных пользователей, от инвестиционного менеджера BlackRock , который использует его для анализа временных рядов , до британской страховой компании Aviva , которая использует его для расчета рисков . В 2015 году Федеральный резервный банк Нью-Йорка использовал Джулию для создания моделей экономики Соединенных Штатов, отметив, что этот язык сделал оценку модели «примерно в 10 раз быстрее», чем его предыдущая реализация MATLAB . Соучредители Джулии основали компанию Julia Computing в 2015 году, чтобы предоставлять клиентам платную поддержку, обучение и консультационные услуги, хотя Джулия по-прежнему может пользоваться ею бесплатно. На конференции JuliaCon [62] 2017 года Джеффри Регье и Кено Фишери другие заявили [63], что проект Celeste [64] использовал Джулию для достижения «пиковой производительности 1,54  петафлопс с использованием 1,3 миллиона потоков» [65] на узлах 9300 Knights Landing ( KNL) суперкомпьютера Cori II (Cray XC40) (тогда 6-й по скорости компьютер в мире). [66] Джулия, таким образом, присоединяется к C, C ++ и Fortran как к языкам высокого уровня, на которых были выполнены вычисления в петафлопс.

Трое из соавторов Джулии являются лауреатами Премии Джеймса Х. Уилкинсона в области программного обеспечения для числовых вычислений 2019 года (присуждаемой каждые четыре года) «за создание Джулии, инновационной среды для создания высокопроизводительных инструментов, позволяющих проводить анализ и решение задач вычислительной науки ". [67] Кроме того, Алан Эдельман, профессор прикладной математики в Массачусетском технологическом институте, был выбран для присуждения премии Сидни Фернбаха компьютерного общества IEEE 2019 года «за выдающиеся достижения в высокопроизводительных вычислениях, линейной алгебре и вычислительной науке, а также за вклад в программу Julia язык программирования." [68]

Julia Computing и NVIDIA объявляют о «доступности языка программирования Julia в качестве предварительно упакованного контейнера в реестре контейнеров NVIDIA GPU Cloud (NGC)» [69], при этом NVIDIA заявляет: «Легко развернуть Julia на x86 и Arm [..] Джулия предлагает пакет для комплексной экосистемы высокопроизводительных вычислений, охватывающей машинное обучение, науку о данных, различные научные области и визуализацию ". [70]

Кроме того, "Джулия была выбрана Альянсом по моделированию климата в качестве единственного языка реализации для их глобальной климатической модели следующего поколения. Этот многомиллионный проект направлен на создание климатической модели земного масштаба, обеспечивающей понимание последствий и проблем изменения климата". " [69]

Julia используется НАСА [71] [72] и бразильским INPE для планирования космических миссий и моделирования спутников [73] (а другой пользователь работает над встроенным проектом по управлению спутником в космосе с помощью Julia для управления ориентацией ).

Спонсоры [ править ]

В 2014 году язык Julia стал финансируемым NumFOCUS финансовым проектом с целью обеспечить долгосрочную устойчивость проекта. [74] Доктор Джереми Кепнер из лаборатории Линкольна Массачусетского технологического института был спонсором-основателем проекта Джулия в его первые дни. Кроме того, средство от Гордона и Бетти Мура Фонда , в Слоуне Alfred , Intel и агентств , такие как NSF , DARPA , NIH , НАСА и FAA было необходимо для развития Юли. [75] Mozilla, производитель веб-браузера Firefox, с его исследовательскими грантами на первое полугодие 2019 года, спонсировал «члена официальной команды Джулии» для проекта «Привлечение Джулии к браузеру» [76], что означает Firefox и другие веб-браузеры. [77] [78] [79] [80]

Джулия Компьютинг [ править ]

Julia Computing, Inc. была основана в 2015 году Виралом Б. Шахом , Дипаком Винчи, Аланом Эдельманом , Джеффом Безансоном , Стефаном Карпински и Кено Фишером . [81]

В июне 2017 года Julia Computing привлекла 4,6  миллиона долларов начального финансирования от General Catalyst и Founder Collective , [82] и в том же месяце «Фонд Альфреда П. Слоана выделил 910 000 долларов на поддержку разработки Джулии с открытым исходным кодом, включая 160 000 долларов на продвижение». разнообразия в сообществе Джулии » [83], а в декабре 2019 года компания получила  от правительства США финансирование в размере 1,1 миллиона долларов на« разработку инструмента машинного обучения нейронных компонентов для снижения общего энергопотребления систем отопления, вентиляции и кондиционирования воздуха (HVAC). в зданиях ». [84]

Особенности языка [ править ]

Юлия является языком программирования общего назначения , [85] , а также первоначально разработаны для численных / технических вычислений. Это также полезно для низкоуровневых систем программирования , [86] в качестве языка спецификаций , [87] и для веб - программирования на сервере , так [88] [89] и клиентом [90] [12] сторону.

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

  • Множественная отправка : предоставление возможности определять поведение функции для многих комбинаций типов аргументов
  • Система динамического типа : типы для документации, оптимизации и отправки
  • Производительность приближается к статически типизированным языкам, таким как C
  • Встроенный менеджер пакетов
  • Lisp- подобные макросы и другие средства метапрограммирования
  • Вызов функций C напрямую: без оболочек или специальных API
  • Возможность взаимодействия с другими языками, например Python с PyCall, [b] R с RCall и Java / Scala с JavaCall.
  • Мощные возможности, подобные оболочке, для управления другими процессами
  • Разработан для параллельных и распределенных вычислений
  • Coroutines : легкая зеленая резьба
  • Типы, определяемые пользователем, такие же быстрые и компактные, как и встроенные
  • Автоматическая генерация эффективного специализированного кода для разных типов аргументов
  • Элегантные и расширяемые преобразования и акции для числовых и других типов
  • Эффективная поддержка Unicode , включая, помимо прочего, UTF-8

Множественная диспетчеризация (также называемые мультиметоды в Лиспе) является обобщением из одной рассылки  - полиморфный механизм используется совместно объектно-ориентированное программирование (ООП) языков - который использует наследование . В Julia все конкретные типы являются подтипами абстрактных типов, прямо или косвенно подтипами типа Any , который является вершиной иерархии типов. Конкретные типы не могут быть разделены на подтипы, как в других языках; Вместо этого используется композиция (см. также наследование и подтипирование ).

Джулия черпает вдохновение в различных диалектах Лиспа, включая Scheme и Common Lisp , и имеет много общих черт с Dylan , также ориентированным на множественную диспетчеризацию динамическим языком (который имеет инфиксный синтаксис свободной формы, подобный ALGOL, а не Lisp- как префиксный синтаксис, в то время как в Julia «все» [94] является выражением ), а также с Fortress , другим языком числового программирования (который имеет множественную диспетчеризацию и сложную систему параметрических типов). Хотя объектная система Common Lisp (CLOS) добавляет в Common Lisp множественную диспетчеризацию, не все функции являются универсальными функциями.

В Julia, Dylan и Fortress по умолчанию используется расширяемость, а все встроенные функции системы являются универсальными и расширяемыми. В Dylan множественная диспетчеризация так же фундаментальна, как и в Julia: все определяемые пользователем функции и даже базовые встроенные операции, такие +как общие. Система типа Дилана, однако, не полностью поддерживает параметрические типы, которые более характерны для ML рода языков . По умолчанию CLOS не позволяет отправлять параметрические типы Common Lisp; такая расширенная семантика отправки может быть добавлена ​​только как расширение через протокол метаобъектов CLOS. За счет конвергентной конструкции Fortress также поддерживает множественную диспетчеризацию параметрических типов; Однако, в отличие от Джулии, Fortress имеет статическую, а не динамическую типизацию, с отдельными этапами компиляции и выполнения. Возможности языка сведены в следующую таблицу:

По умолчанию среда выполнения Julia должна быть предварительно установлена ​​при запуске исходного кода, предоставленного пользователем. В качестве альтернативы, автономный исполняемый файл , для которого не требуется исходный код Julia, можно создать с помощью PackageCompiler.jl . [95]

Синтаксические макросы Джулии (используемые для метапрограммирования ), такие как макросы Lisp, более мощные, чем макросы подстановки текста, используемые в препроцессоре некоторых других языков, таких как C, потому что они работают на уровне абстрактных синтаксических деревьев (AST). Макросистема Джулии гигиенична , но также при желании поддерживает преднамеренный захват (например, для анафорических макросов ) с использованием escконструкции.

Взаимодействие [ править ]

Официальный дистрибутив Julia включает интерактивный цикл чтения-оценки-печати (REPL) из командной строки [96] с доступной для поиска историей, завершением табуляции , а также специальной справкой и режимами оболочки [97], которые можно использовать для экспериментов и тестирования код быстро. [98] Следующий фрагмент представляет собой пример сеанса, в котором строки автоматически объединяются функцией println: [99]

Юлия>  p ( x )  =  2 x ^ 2  +  1 ;  f ( x ,  y )  =  1  +  2 p ( x ) y julia>  println ( «Привет, мир!» ,  «Я в облаке» ,  f ( 0 ,  4 ),  «поскольку Джулия поддерживает узнаваемый синтаксис!» ) Привет Мир! Я нахожусь в облаке 9, так как Джулия поддерживает узнаваемый синтаксис!

REPL предоставляет пользователю доступ к системной оболочке и в режим помощи, нажимая ;или ?после приглашения (перед каждой командой), соответственно. Он также хранит историю команд, в том числе между сессиями. [100] Код, который можно протестировать в интерактивном разделе Julia или сохранить в файл с .jlрасширением и запустить из командной строки, набрав: [94]

$ julia <имя файла>

Julia поддерживается Jupyter , интерактивной интерактивной «записной книжкой» [101] и Pluto.jl , « реактивной записной книжкой» (где записные книжки сохраняются как чистые файлы Julia), возможной заменой первого типа. [102]

Используйте с другими языками [ править ]

На практике Julia совместима со многими языками (например, с большинством из 10–20 наиболее популярных языков). ccallКлючевое слово Джулии используется для индивидуального вызова функций общей библиотеки C-exported или Fortran, а также пакетов, позволяющих вызывать другие языки, например Python, R, MATLAB, Java или Scala. [103] И пакеты для других языков, например , Python (или R или Ruby), т.е. pyjulia, чтобы позвонить в Джулию.

У Джулии есть поддержка последней версии Unicode 13.0, [104] с UTF-8, используемым для строк (по умолчанию) и для исходного кода Julia (разрешающий только разрешенный UTF-8 в последней версии), что означает также возможность использования в качестве опции общих математических символов для многих операторов, например ∈ для inоператора.

У Джулии есть пакеты, поддерживающие языки разметки, такие как HTML (а также HTTP ), XML , JSON и BSON , а также для баз данных и использования в Интернете в целом.

Система пакетов [ править ]

У Джулии есть встроенный менеджер пакетов и система реестра по умолчанию. [105] Пакеты чаще всего распространяются в виде исходного кода, размещенного на GitHub , хотя также могут использоваться альтернативные варианты. Пакеты также могут быть установлены как двоичные файлы с использованием артефактов. [106] Диспетчер пакетов Джулии используется для запроса и компиляции пакетов, а также для управления средами. Поддерживаются объединенные реестры пакетов, что позволяет добавлять реестры, отличные от официальных. [107]

Использует [ редактировать ]

Джулия использовалась для выполнения петауровневых вычислений с библиотекой Celeste для съемки неба . [108] [109] Джулия используется аналитическими платформами BlackRock Engineering [110] .

Реализация [ править ]

Ядро Джулии реализовано на языках Julia и C вместе с C ++ для зависимости LLVM . Синтаксический анализ и понижение кода реализованы в FemtoLisp, диалекте схемы . [111] Проект инфраструктуры компилятора LLVM используется в качестве серверной части для генерации 64-битного или 32-битного оптимизированного машинного кода в зависимости от платформы, на которой работает Джулия. За некоторыми исключениями (например, PCRE ) стандартная библиотекареализована в Юлии. Наиболее примечательным аспектом реализации Джулии является ее скорость, которая часто в два раза по сравнению с полностью оптимизированным кодом C (и, следовательно, часто на порядок быстрее, чем Python или R ). [112] [113] [114] Разработка Julia началась в 2009 году, а версия с открытым исходным кодом была опубликована в феврале 2012 года. [4] [115]

Текущие и будущие платформы [ править ]

Хотя у Джулии есть поддержка macOS уровня 1, то есть для компьютеров Mac на базе Intel, поддержка совершенно новых компьютеров Mac на базе Apple M1 явно не указана (как и для Windows на ARM ). [116] Однако утверждают, что Джулия работает; [117] "хорошо" (при пониженной производительности) с Rosetta 2 (которая должна имитировать Julia). Работа над встроенной полноскоростной поддержкой M1 (то есть без эмуляции) в основном завершена, и многие программы могут работать, если используется такая сборка Julia, поскольку все тесты Julia, кроме одного, проходят успешно (за исключением «Слишком много открытых файлов»).

Поскольку Джулия использует JIT, Джулия генерирует собственный машинный код напрямую перед первым запуском функции (то есть другой подход, чем компиляция в байт-код , который вы распространяете по умолчанию для запуска на виртуальной машине (ВМ), например, в случае Java / JVM ; затем переводится из байт-кода во время работы, как это делал Dalvik в более старых версиях Android).

У Джулии четыре уровня поддержки. [118] Поддерживаются все процессоры IA-32 , полностью реализующие субархитектуру i686, и поддерживаются 64-битные x86-64 (также известные как amd64 ), возраст которых меньше десяти лет. Процессоры ARMv8 ( AArch64 ) полностью поддерживаются на первом уровне, а ARMv7 и ARMv6 (AArch32) поддерживаются с некоторыми оговорками (нижний уровень). [119] CUDA (то есть графические процессоры Nvidia; реализация PTX ) имеет поддержку уровня 1 с помощью внешнего пакета. Есть также дополнительные пакеты, поддерживающие другие ускорители, такие как TPU от Google , [120]и графические процессоры AMD также поддерживают, например, OpenCL ; и экспериментальная поддержка стека AMD ROCm . [121] На странице загрузок Джулии представлены исполняемые файлы (и исходный код) для всех официально поддерживаемых платформ.

На некоторых платформах, возможно, потребуется скомпилировать Julia из исходного кода (например, оригинального Raspberry Pi ) с конкретными параметрами сборки, что уже сделано и доступны неофициальные предварительно созданные двоичные файлы (и инструкции по сборке). [122] [123] Julia была создана на нескольких платформах ARM. PowerPC (64-разрядная версия) имеет поддержку уровня 3, что означает, что она «может быть построена, а может и не быть». Julia теперь поддерживается в Raspbian [124], тогда как поддержка лучше для более новых Pis, например, с ARMv7 или новее; Поддержка Джулии осуществляется Фондом Raspberry Pi . [125]

Также имеется поддержка веб-браузеров / JavaScript через JSExpr.jl; [90] и альтернативный язык веб-браузеров, WebAssembly , имеет минимальную поддержку [12] для нескольких предстоящих внешних проектов Julia. Юля умеет компилировать в ARM; таким образом, теоретически приложения для Android можно создавать с помощью NDK , но на данный момент Джулия работает под Android только косвенно, то есть с помощью chroot Ubuntu на Android. [126]

См. Также [ править ]

  • Сравнение программ численного анализа
  • Сравнение статистических пакетов

Примечания [ править ]

  1. ^ [С Rebugger.jl] вы можете:
    • проверяйте различные модификации кода или аргументов столько раз, сколько хотите; вы никогда не будете вынуждены выйти из «режима отладки» и сохранить файл
    • запускать один и тот же выбранный блок кода несколько раз (возможно, пробовать разные способы исправления ошибки) без необходимости повторять какую-либо работу по «настройке», которая могла быть необходима для доступа к какому-либо глубоко вложенному методу в исходном стеке вызовов. [34]
  2. ^ Для вызова более нового Python 3 (старое значение по умолчанию для вызова Python 2 также все еще поддерживается) [91] [92] и вызов в другом направлении, от Python к Julia, также поддерживается с помощью pyjulia . [93]

Ссылки [ править ]

  1. ^ "Сглаживание данных с помощью @generated функций Джулии" . 5 ноября 2015 . Дата обращения 9 декабря 2015 . Сгенерированные функции Джулии тесно связаны с парадигмой многоступенчатого программирования (MSP), популяризированной Тахой и Шеардом, которая обобщает этапы времени компиляции / времени выполнения выполнения программы, позволяя использовать несколько этапов отложенного выполнения кода.
  2. ^ a b "LICENSE.md" . GitHub .
  3. ^ «Авторы JuliaLang / julia» . GitHub .
  4. ^ a b c d e f g h «Почему мы создали Джулию» . Сайт Юлии . Февраль 2012 . Проверено 7 февраля 2013 года .
  5. ^ "v1.5.3" . Github.com . 9 ноября 2020 . Дата обращения 11 ноября 2020 .
  6. ^ "Скачать Юлию" . julialang.org . Проверено 7 февраля 2021 года .
  7. ^ "Backports для 1.6-RC2, автор: KristofferC · Запрос на включение # 39614 · JuliaLang / julia" . GitHub . Проверено 14 февраля 2021 года .
  8. ^ "[release-1.5] Установите ВЕРСИЮ на предварительную версию 1.5.4, разработанную ararslan · Запрос на извлечение # 38363 · JuliaLang / julia" . GitHub . Проверено 12 декабря 2020 .
  9. ^ Engheim, Erik (17 ноября 2017). «Языки с динамическим вводом - это не то, о чем вы думаете» . Средний . Проверено 27 января 2021 года .
  10. ^ "Джулия строго проверена (напечатана)?" . JuliaLang . 7 августа 2018 . Проверено 27 января 2021 года .
  11. ^ а б «Юля» . Юля . Проект NumFocus . Проверено 9 декабря +2016 . Базовая библиотека Джулии, в основном написанная на самой Джулии, также объединяет зрелые, лучшие в своем классе библиотеки C и Fortran с открытым исходным кодом для ...
  12. ↑ a b c Фишер, Кено (22 июля 2019 г.). «Бегущая Джулия на wasm» . Проверено 25 июля 2019 .
  13. ^ "Не-GPL Джулия?" . Groups.google.com . Дата обращения 31 мая 2017 .
  14. ^ «Введите флаг USE_GPL_LIBS Makefile для сборки Julia без библиотек GPL» . Обратите внимание, что эта фиксация не удаляет утилиты GPL, такие как git и busybox, которые включены в двоичные установщики Julia на Mac и Windows. Это позволяет создавать из исходного кода без каких-либо зависимостей библиотек GPL.
  15. ^ Stokel-Уокер, Крис. «Юлия: язык Златовласки» . Приращение . Полоса . Проверено 23 августа 2020 .
  16. ^ a b c d «Главная · Язык Джулии» . docs.julialang.org . Проверено 15 августа 2018 .
  17. ^ "Сеть языков программирования" . GitHub . Проверено 6 декабря +2016 .
  18. ^ "JuliaCon 2016" . JuliaCon . Проверено 6 декабря +2016 . Он был соавтором языка программирования Scheme, который сильно повлиял на дизайн Джулии.
  19. Перейти ↑ Bryant, Avi (15 октября 2012 г.). «Matlab, R и Julia: языки для анализа данных» . О'Рейли Страта. Архивировано из оригинального 26 апреля 2014 года.
  20. Сингх, Вики (23 августа 2015 г.). «Язык программирования Julia - настоящая альтернатива Python» . Технотификация.
  21. ^ Криль, Пол (18 апреля 2012). «Язык Новой Джулии стремится быть C для ученых» . InfoWorld .
  22. Рианна Финли, Клинт (3 февраля 2014 г.). «В открытую: человек создает один язык программирования, чтобы управлять ими всеми» . Проводной .
  23. ^ "GitHub - JuliaParallel / MPI.jl: оболочки MPI для Джулии" . Параллельная Юлия . Проверено 22 сентября 2019 .
  24. ^ «Вопросы о начале работы с параллельными вычислениями» . JuliaLang . 16 июня 2019 . Дата обращения 8 октября 2019 .
  25. ^ «Юлия и параллелизм» . JuliaLang . 24 июня 2019 . Проверено 22 сентября 2019 .
  26. ^ Фишер, Кено; Нэш, Джеймсон. «Развитие компилятора - переход к машинному обучению с помощью универсального компилятора» . Блог Julia Computing . Проверено 11 апреля 2019 года .
  27. ^ "Создание системного образа" . Документация по PackageCompiler .
  28. ^ "Приостановка сборки мусора для повышения производительности ... хорошая идея или плохая идея?" . Groups.google.com . Дата обращения 31 мая 2017 .
  29. ^ теперь доступнав текущих версиях (Эта зависимость - одна из многих, которые были перенесены из стандартной библиотеки в пакет, потому что она лицензирована GPL и, следовательно, не включена в Julia 1.0 по умолчанию.) "Удалите привязки FFTW from Base by ararslan · Запрос на включение # 21956 · JuliaLang / julia " . GitHub . Проверено 1 марта 2018 .using FFTW
  30. ^ "ANN: плагин linter-julia для Atom / Juno" . JuliaLang . 15 февраля 2017 . Проверено 10 апреля 2019 .
  31. Святой, Тим (13 сентября 2019 г.). «GitHub - timholy / ProfileView.jl: Визуализация данных профилирования Julia» . Проверено 22 сентября 2019 .
  32. Грегг, Брендан (20 сентября 2019 г.). «GitHub - brendangregg / FlameGraph: визуализатор трассировки стека» . Проверено 22 сентября 2019 .
  33. ^ "Интерпретатор и отладчик Джулии" . julialang.org . Проверено 10 апреля 2019 .
  34. ^ "[ANN] Rebugger: интерактивная отладка для Джулии 0.7 / 1.0" . JuliaLang . 21 августа 2018 . Проверено 10 апреля 2019 .
  35. ^ "Главная · Rebugger.jl" . timholy.github.io . Проверено 10 апреля 2019 .
  36. ^ Джефф Безансон, Стефан Карпински, Вирал Шах, Алан Эдельман. «Почему мы создали Юлию» . JuliaLang.org . Дата обращения 5 июня 2017 .CS1 maint: использует параметр авторов ( ссылка )
  37. Перейти ↑ Karpinski, Stefan (18 апреля 2012 г.). «Язык Новой Джулии стремится быть C для ученых» . InfoWorld .
  38. ^ Торре, Чарльз. «Стефан Карпински и Джефф Безансон о Джулии» . Канал 9 . MSDN . Проверено 4 декабря 2018 .
  39. ^ "Информационный бюллетень августа 2020" . juliacomputing.com . 14 августа 2020 . Дата обращения 7 сентября 2020 .
  40. ^ «Информационный бюллетень января 2021 - Julia Computing» . juliacomputing.com . Проверено 13 января 2021 года .
  41. ^ "Джулия Вычислительная техника" . juliacomputing.com . Проверено 12 августа 2020 .
  42. ^ "Информационный бюллетень ноябрь 2019" . juliacomputing.com . 7 ноября 2019 . Проверено 29 ноября 2019 .
  43. ^ «Информационный бюллетень Julia Computing, показатели роста» . juliacomputing.com . Проверено 11 февраля 2019 .
  44. ^ "Итоги JuliaCon 2020" . julialang.org . 11 августа 2020 . Проверено 20 декабря 2020 года .
  45. ^ "Блог Джулии" .
  46. ^ "Объявление о выпуске Julia 0.6" .
  47. ^ "Что такое Julia 0.7? Как оно соотносится с 1.0?" . JuliaLang . Проверено 17 октября 2018 года .
  48. ^ Дэвис, Эрик. «Написание итераторов в Julia 0.7» . julialang.org . Проверено 5 августа 2018 .
  49. ^ "Sys.isjsvm ([os])" . Язык Джулии. 20 августа 2019 . Проверено 20 августа 2019 . Предикат для тестирования, если Джулия работает на виртуальной машине JavaScript (JSVM), включая, например, внедрение JavaScript WebAssembly в веб-браузер.
  50. ^ Безансон, Джефф; Карпинский, Стефан; Шах, Вирал; Эдельман, Алан. «Язык Джулии» . julialang.org . Проверено 13 декабря 2019 .
  51. ^ "поддержать [начало] для [firstindex (a)] by stevengj · Запрос на вытягивание # 33946 · JuliaLang / julia" . GitHub . Проверено 7 апреля 2020 .
  52. ^ quinnj. «Для структур со всеми полями isbits или isbitsunion разрешить их встроенное хранение в массивы · Запрос на извлечение # 32448 · JuliaLang / julia» . GitHub . Проверено 7 апреля 2020 . Я все еще сталкиваюсь с проблемами, которые возникают внутри, потому что это было критическое изменение, которое меняет предположения, сделанные некоторыми пользователями, и вывод / кодогенерацию.
  53. ^ «Увеличьте выпуск Zlib BB до версии 'v1.2.11 + 10', которая включает оптимизацию '-O3' с помощью giordano · Pull Request # 35979 · JuliaLang / julia» . GitHub . Дата обращения 25 мая 2020 .
  54. Фишер, Кено (2 мая 2020 г.). «Выход в Julia 1.5: Сообщения об ошибках, связанные с путешествиями во времени (Linux)» . julialang.org . Дата обращения 5 мая 2020 . Накладные расходы на запись однопоточных процессов обычно ниже 2x, чаще всего от 2% до 50% (меньше для чисто численных расчетов, выше для рабочих нагрузок, взаимодействующих с ОС). Запись нескольких потоков или процессов, совместно использующих память (в отличие от передачи сообщений на основе ядра), сложнее. [..] Как и ожидалось, наихудшим нарушителем оказался тест потоков с накладными расходами около 600%.
  55. ^ Джефф Безансон, Стефан Карпински, Вирал Шах, Алан Эдельман и др. «Язык Джулии» . julialang.org . Дата обращения 14 августа 2020 . Существуют некоторые ограничения, зависящие от размера, до которых могут быть выделены структуры в стеке, но на практике они вряд ли будут превышены.CS1 maint: использует параметр авторов ( ссылка )
  56. ^ Джефф Безансон, Стефан Карпински, Вирал Шах, Алан Эдельман и др. «Язык Джулии» . julialang.org . Дата обращения 16 сентября 2020 .CS1 maint: использует параметр авторов ( ссылка )
  57. ^ "Исправление проблем с проверкой стека C в 1.1, автор: simonbyrne · Pull Request # 293 · JuliaInterop / RCall.jl" . GitHub . Проверено 10 августа 2019 .
  58. ^ «JVM не загружается в 1.1 (JavaCall.jl) · Проблема № 31104 · JuliaLang / julia» . GitHub . Проверено 18 августа 2019 . ДжеффБезансон изменил вехи: 1.3, 1.4.
  59. ^ "StackOverflowError в 'JavaCall.init' для Julia 1.1.0 · Проблема № 96 · JuliaInterop / JavaCall.jl" . GitHub . Проверено 21 октября 2019 года .
  60. ^ "ДжулияЛанг / Джулия" . GitHub . Проверено 7 января 2021 года .
  61. ^ "Вехи - JuliaLang / julia" . Юлия Язык . Проверено 13 декабря 2019 .
  62. ^ "JuliaCon 2017" . juliacon.org . Дата обращения 4 июня 2017 .
  63. ^ Фишер, Кено. «Проект Селеста» . juliacon.org . Проверено 24 июня 2017 года .
  64. ^ Региер, Джеффри; Памнани, Киран; Джордано, Райан; Томас, Роллин; Шлегель, Дэвид; МакОлиф, Джон; Прабат (2016). «Изучение астрономического каталога видимой Вселенной с помощью масштабируемого байесовского вывода». arXiv : 1611.03404 [ cs.DC ].
  65. ^ Кластер, Эндрю (12 сентября 2017). «Юлия присоединяется к клубу Petaflop» . Юлия Компьютинг (пресс-релиз). Celeste полностью написана на языке Julia, и команда Celeste загрузила в совокупности 178 терабайт данных изображений, чтобы создать наиболее точный каталог из 188 миллионов астрономических объектов всего за 14,6 минут [..], что в 1000 раз увеличивает производительность в однопоточном исполнении. .
  66. Шах, Вирал Б. (15 ноября 2017 г.). "Вирус Б. Шах в Твиттере" . Проверено 15 сентября 2019 . @KenoFischer говорит о Celeste в кинотеатре @Intel на @Supercomputing. 0,65 млн ядер, 56 ТБ данных, Cori - 6-й по величине суперкомпьютер в мире.
  67. ^ «Соавторы языка Julia выиграли премию Джеймса Х. Уилкинсона в области программного обеспечения для числовых вычислений» . MIT News . Проверено 22 января 2019 .
  68. ^ «Алан Эдельман из Массачусетского технологического института, удостоенный престижной премии IEEE Computer Society 2019 Sidney Fernbach Award | IEEE Computer Society» (пресс-релиз). 1 октября 2019 . Дата обращения 9 октября 2019 .
  69. ^ a b «Julia Computing и NVIDIA переносят вычисления на GPU Julia в руки» . juliacomputing.com . 3 декабря 2019 . Дата обращения 3 декабря 2019 .
  70. ^ Patel, Chintan (19 ноября 2019). «NVIDIA расширяет поддержку Arm с помощью контейнеров HPC, AI и визуализации на NGC | Блог NVIDIA» . Официальный блог NVIDIA . Дата обращения 3 декабря 2019 .
  71. ^ Circuitscape / Circuitscape.jl , Circuitscape, 25 февраля 2020 г. , получено 26 мая 2020 г.
  72. ^ «Сохранение через кодирование: 5 вопросов с Виральным Шахом | Управление научной миссии» . science.nasa.gov . Дата обращения 26 мая 2020 .
  73. ^ JuliaSpace / SatelliteToolbox.jl , JuliaSpace, 20 мая 2020 г. , получено 26 мая 2020 г.
  74. ^ «Джулия: Проект, спонсируемый NumFOCUS с 2014 года» . numfocus.org . Проверено 29 сентября 2020 .
  75. ^ "Язык Джулии" . julialang.org . Проверено 22 сентября 2019 .
  76. ^ Cimpanu, Каталин. «Mozilla финансирует способ поддержки Джулии в Firefox» . ZDNet . Проверено 22 сентября 2019 .
  77. ^ "Юлия в Йодиде" . alpha.iodide.io . Проверено 22 сентября 2019 .
  78. ^ "Языковые плагины - Документация Iodide" . iodide-project.github.io . Проверено 22 сентября 2019 .
  79. ^ «Mozilla Research Grants 2019H1» . Mozilla . Проверено 22 сентября 2019 . запуск языковых интерпретаторов в WebAssembly. Чтобы еще больше расширить доступ к ведущим инструментам науки о данных, мы ищем кого-нибудь для портирования R или Julia в WebAssembly и попытки предоставить языковой плагин уровня 3 для Iodide: автоматическое преобразование базовых типов данных между R / Julia и Javascript, а также возможность совместного использования экземпляров класса между R / Julia и Javascript.
  80. ^ «Грамотные научные вычисления и коммуникации в сети: йодид-проект / йодид» . йодид. 20 сентября 2019 . Проверено 22 сентября 2019 . Мы представляем себе будущий рабочий процесс, который позволит вам изменять данные в Python, подбирать быструю модель в R или JAGS, решать некоторые дифференциальные уравнения в Julia, а затем отображать ваши результаты с помощью интерактивной визуализации d3 + JavaScript в реальном времени ... и все такое. это в пределах одного переносимого, доступного для совместного использования и взломанного файла.
  81. ^ «О нас - Юлия Компьютинг» . juliacomputing.com . Проверено 12 сентября 2017 года .
  82. ^ «Джулия Компьютинг привлекает 4,6 млн долларов в виде начального финансирования» . Архивировано из оригинального 10 мая 2019 года.
  83. ^ «Julia Computing получила грант в размере 910 000 долларов от Фонда Альфреда П. Слоана, включая 160 000 долларов на развитие STEM» . juliacomputing.com . 26 июня 2017 . Проверено 28 июля 2020 .
  84. ^ «DIFFERENTIATE - Design Intelligence, способствующий значительному снижению энергопотребления (и) создание новых, полностью эффективных усовершенствований передовых технологий» (PDF) .
  85. ^ "Язык Джулии" (официальный сайт). Универсальное назначение [..] Julia позволяет писать пользовательские интерфейсы, статически компилировать код или даже развертывать его на веб-сервере.
  86. Грин, Тодд (10 августа 2018 г.). "Системное программирование низкого уровня в Джулии высокого уровня" . Архивировано из оригинала на 5 ноября 2018 года . Проверено 5 ноября 2018 .
  87. Мосс, Роберт (26 июня 2015 г.). «Использование Julia в качестве языка спецификации для системы предотвращения столкновений в воздухе нового поколения» (PDF) . Архивировано 1 июля 2015 года . Проверено 29 июня 2015 года . Бортовая система предотвращения столкновений
  88. Анайя, Ричард (28 апреля 2019 г.). «Как создать многопоточный HTTP-сервер в Юлии» . Средний . Проверено 25 июля 2019 . Таким образом, даже несмотря на то, что в настоящее время у Джулии отсутствует готовое к работе решение для многопоточного сервера, мы можем легко воспользоваться его функциями распределения процессов и очень популярной технологией балансировки нагрузки, чтобы полностью использовать ЦП для обработки HTTP.
  89. ^ Anthoff, Дэвид (1 июня 2019). "Установка Node.js для Юлии" . Проверено 25 июля 2019 .
  90. ^ a b «Перевести Юлию на JavaScript» . JuliaGizmos. 7 июля 2019 . Проверено 25 июля 2019 .
  91. ^ "PyCall.jl" . stevengj . github.com.
  92. ^ «Использование PyCall в julia на Ubuntu с python3» . julia-users в группах Google . для импорта модулей (например, python3-numpy)
  93. ^ "Интерфейс Python для Джулии" .
  94. ^ a b «Узнайте Джулию за Y минут» . Learnxinyminutes.com . Дата обращения 31 мая 2017 .
  95. ^ «GitHub - JuliaLang / PackageCompiler.jl: скомпилируйте свой пакет Julia» . Язык Джулии. 14 февраля 2019 . Проверено 15 февраля 2019 .
  96. ^ "Юлия REPL · Язык Джулии" . docs.julialang.org . Проверено 22 сентября 2019 .
  97. ^ «Представляем Джулию / REPL - Викиучебники, открытые книги для открытого мира» . en.wikibooks.org . Проверено 22 сентября 2019 . вы можете установить пакет Julia OhMyREPL.jl ( github .com / KristofferC / OhMyREPL .jl ), который позволяет настраивать внешний вид и поведение REPL
  98. ^ «Начало работы · Язык Джулии» . docs.julialang.org . Проверено 15 августа 2018 .
  99. ^ См. Также: docs .julialang .org / en / v1 / manual / strings / для интерполяции строк иstring(greet, ", ", whom, ".\n")пример предпочтительных способов объединения строк. У Джулии есть функции println и print, а также макрос @printf (т. Е. Не в форме функции) для устранения накладных расходов на форматирование во время выполнения (в отличие от той же функции в C).
  100. ^ «Документация Джулии» . JuliaLang.org . Проверено 18 ноября 2014 года .
  101. ^ "Проект Jupyter" .
  102. ^ Будро, Эммет (16 октября 2020). "Может ли Плутон быть настоящей заменой Юпитера?" . Средний . Проверено 8 декабря 2020 .
  103. ^ «Джулия и Спарк, лучше вместе» . juliacomputing.com . 2 июня 2020 . Дата обращения 14 июля 2020 .
  104. ^ "Поддержка Unicode 13 от stevengj · Запрос на извлечение № 179 · JuliaStrings / utf8proc" . GitHub . Проверено 29 марта 2020 года .
  105. ^ "JuliaRegistries / Общие" . Проверено 30 апреля 2020 .
  106. ^ «Pkg.jl - Артефакты» . Дата обращения 4 июня 2020 .
  107. ^ "Pkg.jl - Реестры" . Проверено 30 апреля 2020 .
  108. Фарбер, Роб (28 ноября 2017 г.). "Julia Language обеспечивает производительность высокопроизводительных вычислений на уровне петаскейла" . Следующая платформа . Проверено 22 апреля 2020 .
  109. ^ Кинкейд, Кэти (11 ноября 2016). «Улучшения Селесты создают новые возможности в исследованиях неба» . Лаборатория Беркли . Проверено 22 апреля 2020 .
  110. ^ Фрэнсис, Майкл (9 мая 2017 г.). "OS @ BLK: Юлия NamedTuples" . BlackRock Engineering . Проверено 22 апреля 2020 .
  111. ^ Bezanson, Джефф (6 июня 2019). "ДжеффБезансон / фемтолисп" . GitHub . Проверено 16 июня 2019 .
  112. ^ «Джулия: быстрый динамический язык для технических вычислений» (PDF) . 2012 г.
  113. ^ «Как заставить Python работать так же быстро, как Джулия» . 2015 г.
  114. ^ «Базовое сравнение Python, Julia, R, Matlab и IDL» . 2015 г.
  115. Рианна Гиббс, Марк (9 января 2013 г.). «Pure и Julia - классные языки, которые стоит попробовать» . Сетевой мир (колонка) . Проверено 7 февраля 2013 года .
  116. ^ "Проблема с отслеживанием Darwin / ARM64 · Проблема № 36617 · JuliaLang / julia" . GitHub . Проверено 8 декабря 2020 .
  117. ^ Carlton, Сэм (8 декабря 2020), ThatGuySam / doesitarm , извлекаться 8 Декабрь 2020
  118. ^ "Загрузки Джулии" . julialang.org . Дата обращения 17 мая 2019 .
  119. ^ "julia / arm.md" . Язык Джулии. 29 ноября 2019 . Проверено 29 ноября 2019 . Доступен список известных проблем для ARM.
  120. ^ «Юля на ТПУ» . ЮлияТПУ. 26 ноября 2019 . Проверено 29 ноября 2019 .
  121. ^ «AMD ROCm · JuliaGPU» . juliagpu.org . Проверено 20 апреля 2020 года .
  122. ^ 262588213843476. «Сборка Julia для RaspberryPi Zero» . Суть . Дата обращения 14 августа 2020 .CS1 maint: numeric names: authors list (link)
  123. ^ «Джулия Берри: Джулия на Raspberry Pi» . juliaberry.github.io . Дата обращения 14 августа 2020 .
  124. ^ «Джулия доступна в Raspbian на Raspberry Pi» . Джулия работает со всеми вариантами Pi, мы рекомендуем использовать Pi 3.
  125. ^ "Язык Джулии для Raspberry Pi" . Фонд Raspberry Pi .
  126. ^ "Используете Джулию на Android?" . JuliaLang . 27 сентября 2019 . Дата обращения 2 октября 2019 .

Дальнейшее чтение [ править ]

  • Нагар, Сандип (2017). Начало Юлия Программирование - для инженеров и ученых . Springer.
  • Безансон, Дж; Эдельман, А; Карпинский, С; Шах, В. Б. (2017). «Юлия: свежий подход к численным вычислениям». 59 (1). Обзор SIAM: 65–98. Cite journal requires |journal= (help)
  • Джоши, Аншул (2016). Джулия для науки о данных - исследуйте мир науки о данных с нуля вместе с Джулией . Packt Publishing.

Внешние ссылки [ править ]

  • Официальный веб-сайт
  • julia на GitHub