Обновить
32K+

Julia *

Высокоуровневый высокопроизводительный язык

2,08
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Matlab vs. Julia vs. Python

Время на прочтение9 мин
Охват и читатели17K
Я использовал MATLAB более 25 лет. (А до этого я даже использовал MATRIXx, земля ему пухом.) Это не первый язык, на котором я научился программировать, но это тот язык, с которым я достиг математического совершеннолетия. Знание MATLAB было полезным для моей карьеры.

Тем не менее, невозможно игнорировать рост Python в научных вычислениях. MathWorks должен чувствовать то же самое: они не только добавили возможность вызывать Python напрямую из MATLAB, но и заимствовали некоторые его языковые функции, такие как более агрессивную передачу для компонентов бинарных операторов.

Наступил момент, когда я подверг сомнению мое постоянное использование MATLAB как в исследованиях, так и в преподавании. Тем не менее я столько вложил в материалы, что было трудно найти мотивацию, чтобы научиться чему-то новому.
Читать дальше →

Сможет ли Julia побороть Python так же, как Python поборол Java

Время на прочтение4 мин
Охват и читатели12K
image

Язык программирования Python прошел большой путь с момента своего появления в 1990-х. Едва ли Гвидо Ван Россум знал, что Python станет одним из самых популярных языков в мире, в то время, когда он его разрабатывал. На сегодняшний день Python является одним из наиболее широко используемых языков программирования на планете и имеет множество различных применений. Будь то приложения корпоративного уровня, машинное обучение, модели искусственного интеллекта или работа в области Data Science, Python активно используется практически во всех процветающих отраслях и областях.

Текущий сценарий для Python


В мире более 8 миллионов разработчиков на Python, которые регулярно используют этот язык для самых разных целей. Благодаря своей гибкости и простой масштабируемости, Python уже стал предпочтительным языком для многих разработчиков. Это стало причиной, по которой Python смог обойти Java, которая долгое время была любимым языком у разработчиков. Но это также может быть связано с естественным процессом старения языка, с которым Java приближается к своему концу. Большинство новых языков предназначены для решения современных задач. Хотя языки, разработанные давно, наиболее эффективны для решения задач своего времени, им становится чрезвычайно трудно оставаться актуальными для меняющихся отраслей и сценариев.
Читать дальше →

Julia и дистрибутивная семантика

Время на прочтение17 мин
Охват и читатели5.7K


С момента выхода прошлой публикации в мире языка Julia произошло много интересного:



В то же время заметен рост интереса со стороны разработчиков, что выражается обильными бенчмаркингами:



Мы же просто радуемся новым и удобным инструментам и продолжаем их изучать. Сегодняшний вечер будет посвящен текстовому анализу, поиску скрытого смысла в выступлениях президентов и генерации текста в духе Шекспира и джулиа-программиста, а на сладкое — скормим рекуррентной сети 40000 пирожков.

Читать дальше →

Julia NLP. Обрабатываем тексты

Время на прочтение27 мин
Охват и читатели6.6K


Анализ и обработка текстов на естественном языке является постоянно актуальной задачей, которая решалась, решается и будет решаться всеми доступными способами. На сегодня хотелось бы поговорить о средствах решения для решения этой задачи, именно, на языке Julia. Безусловно, в виду молодости языка, здесь нет столь развитых средств анализа, как, например Stanford CoreNLP, Apache OpenNLP, GATE и пр., как, например, для языка Java. Однако, даже уже разработанные библиотеки, вполне могут использоваться как для решения типовых задач, так и быть рекомендованными в качестве точки входа для студентов, которым интересна область обработки текстов. А синтаксическая простота Julia и её развитые математические средства, позволяют с лёгкостью погрузиться в задачи кластеризации и классификации текстов.

Читать дальше →

Julia и нейронные сети: Flux

Время на прочтение11 мин
Охват и читатели11K


Прошло чуть больше года, с тех пор как MIT объявил о релизе высокопроизводительного языка общего назначения Julia. С тех пор язык набирает популярность: он используется в более чем 1500 университетах (в некоторых преподается в качестве первого ЯП), а области применения охватывают от медицинской диагностики и планирования космических миссий до таких насущных проблем, как оптимизация трафика школьных автобусов.


Одним из ключевым полей деятельности многих проектов, как не трудно догадаться, является машинное обучение, для которого на Julia есть множество мощных инструментов, а недавно вышел в свет довольно интересный проект — Система вероятностного программирования общего назначения "GEN".


Сегодня же мы обратим внимание на, как понятно из названия, пакет Flux, предоставляющий всю мощь нейронных сетей. Постараемся пройти путь от обработки и исследования наборов изображений до обученной нейронной сети, чтобы получить полноценный классификатор!

Читать дальше →

Julia. С чего начать проект?…

Время на прочтение19 мин
Охват и читатели16K


Очень часто, при решении задач анализа и подготовки данных, пишут одноразовые скрипты, поддержка и развитие которых не предусматривается вообще. Такой подход имеет право на существование, особенно в студенческой среде. Однако, когда появляется более одного человека, работающего с кодом, или же код необходимо поддерживать больше одного рабочего дня, то вариант организации работы в виде кучи файлов, не является приемлемым.
Поэтому, сегодня поговорим о такой важной теме, как создание с проекта с нуля на языке Julia, как его наполнить и какие технологические инструменты существую для поддержки разработки.

Читать дальше →

Непостижимая эффективность множественной диспетчеризации

Время на прочтение13 мин
Охват и читатели7.5K

Под катом предлагается расшифровка доклада Стефана Карпински, одного из ключевых разработчиков языка Julia. В докладе он рассуждает о том, к каким неожиданным результатам привела удобная и эффективная множественная диспетчеризация, взятая за основную парадигму Julia.

Julia: пользовательские типы

Время на прочтение8 мин
Охват и читатели4.8K

В этой статье рассмотрим добавление в программу на Julia пользовательского типа данных и перегрузку стандартных функций для удобной работы с новым типом.

Читать дальше →

Решаем судоку с помощью Алгоритма X

Время на прочтение6 мин
Охват и читатели38K

В этой статье рассмотрим "Алгоритм X" Кнута и его применение для решения судоку. Прелесть алгоритма в том, что судоку при этом решается быстро без программирования каких-то продвинутых техник решения.

Читать дальше →

Сбалансированные двоичные деревья поиска: реализация на Julia

Время на прочтение20 мин
Охват и читатели29K


Иллюстрация из работы Г.М. Адельсон-Вельского и Е.М. Ландиса 1962 года


Деревья поиска — это структуры данных для упорядоченного хранения и простого поиска элементов. Широко применяются двоичные деревья поиска, в которых у каждого узла есть только два потомка. В этой статье рассмотрим два метода организации двоичных деревьев поиска: алгоритм Адельсон-Вельского и Ландиса (АВЛ-деревья) и ослабленные АВЛ-деревья (WAVL-деревья).

Читать дальше →

Luxor

Время на прочтение13 мин
Охват и читатели8K

Сегодня мы рассмотрим графический пакет для языка Julia, который называется Luxor. Это один из тех инструментов, которые превращают процесс создания векторных изображений в решение логических задачек с сопутствующей бурей эмоций.


Осторожно! Под катом 8.5 Мб легковесных картинок и гифок изображающих психоделические яйца и четырехмерные объекты, просмотр которых может вызвать лёгкое помутнение рассудка!

Читать дальше →

Дифференцируемое программирование

Время на прочтение10 мин
Охват и читатели14K


С четырьмя параметрами я могу задать слона, а с пятью я могу заставить его шевелить хоботом.
– John Von Neumann

Идея «дифференцируемого программирования» очень популярна в мире машинного обучения. Для многих не ясно, отражает ли этот термин реальный сдвиг в том, как исследователи понимают машинное обучение, или это просто (еще один) ребрендинг «глубокого обучения». В этом посте разъясняется, что нового дает дифференцируемое программирование (или ∂P) в таблице машинного обучения.


Самое главное, дифференцируемое программирование — это сдвиг, противоположный направлению глубокого обучения; от все более сильно параметризованных моделей к более простым, которые в большей степени используют структуру проблемы.


Далее мы пролистаем полотно неинтересного текста, захотим узнать, что такое автодифференцирование и даже популяем из катапульты!

Читать дальше →

Распределенные вычисления в Julia

Время на прочтение19 мин
Охват и читатели7K


Если прошлая статья была скорее для затравки, то теперь пришло время проверить способности Джулии в распараллеливании на своей машине.

Читать дальше →

Ближайшие события

Джулия и параллельные вычисления

Время на прочтение18 мин
Охват и читатели13K


С момента выхода в августе 2018, язык Julia активно набирает популярность, войдя в топ 10 языков на Github и топ 20 самых популярных профессиональных навыков по версии Upwork. Для начинающих стартуют курсы и выпускаются книги. Julia используется для планирования космических миссий, фармакометрики и климатического моделирования.


Перед тем как приступить к распределенным вычислениям в Julia обратимся к опыту тех, кто уже испробовал данную возможность нового ЯП для прикладных задач — от уравнения диффузии на двух ядрах, до астрономических карт на суперкомпьютере.

Читать дальше →

Джулия в лабиринте

Время на прочтение11 мин
Охват и читатели11K


Разбирая одну олимпиадную задачу мы отправимся по петляющим коридорам генерации лабиринтов и их прохождения, а также увидим, что на языке Julia простота реализаций алгоритмов граничит с их псевдокодом.

Читать дальше →

Julia: функции и структуры-как-функции

Время на прочтение12 мин
Охват и читатели6.2K
Несмотря на то, что в языке Julia по замыслу отсутствует «классическое» объектно-ориентированное программирование с классами и методами, язык предоставляет средства абстрагирования, ключевую роль в которых играет система типов и элементы функционального программирования. Рассмотрим подробнее второй пункт.
Читать дальше →

Ускорение запуска Julia при помощи PackageCompiler.jl

Время на прочтение2 мин
Охват и читатели1.7K

Зайдя на официальный сайт языка программирования Julia, можно увидеть утверждение: "Julia is fast!". Однако, новые пользователи на практике сталкиваются с проблемой медленной загрузки модулей, в особенности графических [1,2]. Диалектически, причиной медленного запуска является использование JIT компиляции, использование которой и обеспечивает высокую производительность языка. При желании, с особенностями JIT можно ознакомиться в других статьях. В данной статье пойдёт речь о более практической задаче — о том, как ускорить запуск модулей в Julia при помощи PackageCompiler.jl.

Читать дальше →

Julia: типы, мультиметоды и арифметика над полиномами

Время на прочтение13 мин
Охват и читатели7.1K
В этой публикации речь пойдёт об основной, на мой взгляд, отличительной особенности языка Julia — представлении функций в виде методов с множественной диспетчеризацией. Это позволяет повысить производительность вычислений, не снижая читаемости кода и не портя абстрагируемость, с одной стороны, и позволяет работать с математическими понятиями в более привычной нотации, с другой. Для примера рассмотрен вопрос единообразной (с точки зрения линейных операций) работы с полиномами в представлении списка коэффициентов и с интерполяционными полиномами.
Читать дальше →

Julia. Веб-сервисы

Время на прочтение14 мин
Охват и читатели5.7K


Продолжаем рассматривать технологии Julia. И сегодня речь пойдёт о пакетах, предназначенных для построения веб-сервисов. Не секрет, что основная ниша языка Julia — высокопроизводительные вычисления. Поэтому, довольно логичным шагом является непосредственное создание веб-сервисов, способных выполнять эти вычисления по запросу. Безусловно, веб-сервисы — не единственный способ коммуникации в сетевой среде. Но, поскольку, именно они сейчас наиболее широко используются в распределённых системах, то рассмотрим именно создание сервисов, обслуживающих HTTP-запросы.


Отметим, что в силу молодости Julia, имеется набор конкурирующих пакетов. Поэтому попробуем разобраться как и для чего их использовать. Попутно сравним реализации одного и того же JSON-веб-сервиса с их помощью.

Читать дальше →

Джулия в латексе

Время на прочтение3 мин
Охват и читатели10K


В научной среде очень важную роль играет визуализация данных и оформление теории. Для удобного и красивого представления формул часто используются инструменты реализующие LaTeX-команды, например Markdown и MathJax.


Для Джулии также существует набор пакетов позволяющих использовать синтаксис LaTeX 'a, а в связке с средствами символьной алгебры мы получаем мощный инструмент для оперирования формулами.

Читать дальше →