LINUX.ORG.RU

Релиз языка Julia 1.0

 , ,


5

7

Спустя 9 лет активной разработки, свет увидел язык для инженерных и технических вычислений Julia 1.0!

Авторы языка многие годы работали с такими языками, как R, Matlab, Fortran и Python. Каждый язык, по мнению авторов, имел свои изъяны и недостатки, вследствие чего было решено разработать современный универсальный специализированный язык, который заменит все вышеперечисленные языки в инженерно-технических вычислениях.

Особенности языка:

  • Гибридная типизация с возможностью явно указывать типы.
  • Несмотря на нестатическую типизацию, имеет мощные средства для работы с типами. Например, два типа можно объединить в составной тип.
  • Имеет JIT-компилятор, который компилируется в LLVM-представление и далее в машинный код.
  • Вместо ООП используется множественная диспетчеризация, как более продвинутый механизм.
  • Простой и легкий вызов функций языка Си.
  • Поддержка многоядерности, в отличие от R, который всегда работает в одном потоке и использует одно ядро.
  • Поддержка модулей в стиле Python.
  • Макросы и метапрограммирование. Писать программы, создающие другие программы ― легко и просто!
  • Поддержка векторизации.
  • Свой пакетный менеджер.

>>> Подробности

★★

Проверено: jollheef ()
Ответ на: Re: W. Dijkstra - Why numbering should start at zero от anonymous

Дейкста просто объяснил один из этих простых фактов математикам(-недоучкам) на языке математики.

То есть полез в область (математику), в которой ничего не смыслит и начал рассказывать какой должны быть индексация у математиков в ИХ задачах.

Язык программирования это инструмент и «Си», в отличии от FORTRAN & co., создавался не для математиков. «Си» создавался для реализации операционной системы и чьи-то там советы как писать что-то другое не к месту.

grem ★★★★★ ()
Ответ на: комментарий от ugoday

Фортран безусловно рулит, но... на последней стадии. Я, напимер, почти дословно переписывал свою имплементацию с матлаба/октавы на фортран, когда делал неадиабатическую динамику в Quantum Espresso. Не представляю, сколько бы времени я потратил на написание с 0 сразу на фортране.

unanimous ★★★★★ ()
Ответ на: комментарий от grem

Дейкста просто объяснил один из этих простых фактов математикам(-недоучкам) на языке математики.

То есть полез в область (математику), в которой ничего не смыслит

after graduating from school in 1948, at his parents' suggestion he studied mathematics and physics and then theoretical physics at the University of Leiden.

так что он смыслил в математике как минимум не меньше среднего посетителя ЛОР.

tailgunner ★★★★★ ()
Ответ на: комментарий от grem

Дейкстра еще предлагал выкинуть ООП, и прейти на ФП. Однако что-то любители индексировать с нуля и пихать эту возможность везде - что-то умалчивают об этом. Бгг

FilosofeM ★★ ()
Ответ на: комментарий от tailgunner

в языках, где реализация скрыта от пользователя это не должно волновать пользователя что там с ячейками памяти происходит и как они нумеруются. Вон в том же фортране по умолчанию с 1, при объявлении можно хоть с 0, хоть и -100500 объявить индексацию - всё для удобства.

grem ★★★★★ ()
Ответ на: комментарий от grem

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

Да почитай ты уже, что сказал по этому поводу Дейкстра (hint: это не имеет отношения к ячейкам памяти).

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

А что там читать? Дейкстра придумал свою аксиматику и доказывает, что оно единственно верное, используя свой словарный запас (который нельзя описать математикой). Простыми словами - это догма. Можно принять, можно игнорировать, можно пойти крестовым походом, чтобы награбить золота.

anonymous ()
Ответ на: комментарий от FilosofeM

Это я понял уже, непонятно зачем, чтобы больше писать бессмысленного кода? Странный «убийца матлаба» получается... ладно, впрочем, посмотрим-поглядим, что из этой затеи выйдет.

unanimous ★★★★★ ()
Ответ на: комментарий от FilosofeM

Однако что-то любители индексировать с нуля и пихать эту возможность везде - что-то умалчивают об этом.

Потому что какой смысл делать как не везде ради того, чтобы сделать как не везде?

oldstable ()
Ответ на: комментарий от tailgunner

Почитал объяснения Дейкстры

Доводы Дейкстры совсем другие. Как задать последовательность целых неотрицательных чисел {1, 2, 3… 10}? Есть четыре варианта.

а) (0, 11); б) [1, 11); в) (0, 10]; г) [1, 10]. Дейкстра говорит: правильная нотация должна задавать два типа последовательностей: 1) которая включает минимальное неотрицательное число, 0;...

Правильная нотация должна делать то, что уважаемый господин Дейкстра считает должна делать правильная нотация! Вот такие правильные аргументы, однако.

anonymous ()

Язык хороший, годный. Смешно что больше всего обсуждения у индексации массивов. Вы +/-1 сделать не можете когда надо?

loz ★★★★★ ()
Ответ на: комментарий от anonymous

Да почитай ты уже, что сказал по этому поводу Дейкстра (hint: это не имеет отношения к ячейкам памяти).

А что там читать?

«Слова, слова» (ц)

Дейкстра придумал свою аксиматику

Главное, что ты понял, о чем говорит _Дейкстра_, а не голос в твоей голове.

Можно принять, можно игнорировать

Да. И еще можно оглядется вокруг и увидеть, что большинством она уже принята. Для протокола: нет, это ни к чему не обязывает ни лично тебя, ни авторов Julia.

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

Да. И еще можно оглядется вокруг и увидеть, что большинством она уже принята.

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

А принята она лишь потому, что так было принято в Си.

monk ★★★★★ ()
Ответ на: комментарий от loz

Вы +/-1 сделать не можете когда надо?

Off by one - едва ли не самая распрстраненная ошибка. И те, кто пишет одновременно на Julia и, например, Python, будут делать ее чаще обычного. Потому что авторы Julia такие элитные.

Хотя, конечно, довольно уныло, что обсуждение свелось к индексации.

tailgunner ★★★★★ ()
Ответ на: комментарий от monk

Людей, которые пользуются лифтами или текстовыми редакторами, больше чем программистов.

А насекомых больше, чем людей. Причем тут насекомые, ты хочешь спросить? А я хочу спросить, причем здесь не-программисты.

Нумерация этажей и строки начинается с 1.

Лифтами, говоришь... почитай оффтопик: http://elevation.wikia.com/wiki/Floor_numbering

tailgunner ★★★★★ ()
Последнее исправление: tailgunner (всего исправлений: 1)

Подскажите афтарам, чтоб индескацию настраиваемой сделали. Как в паскале и еще где-то. Треды про сабж тогда похудеют вдвое.

anonymous ()
Ответ на: комментарий от tailgunner

Дейкстра придумал свою аксиматику

Главное, что ты понял, о чем говорит _Дейкстра_, а не голос в твоей голове.

Люблю общаться с «психиатрами». Еще какие голоса в моей голове ты слышишь?

Можно принять, можно игнорировать

Да. И еще можно оглядется вокруг и увидеть, что большинством она уже принята. Для протокола: нет, это ни к чему не обязывает ни лично тебя, ни авторов Julia.

Можно показать это большинство «для протокола».

Для протокола

Еще и «юрист».

anonymous ()
Ответ на: комментарий от knovich

Почему тогда не сделать компилируемым?

Ку-ку! Julia компилируется по дефолту, это собственно основная фича. В отличии от всяких матлабов с питонами, где компилятор - костыль, который не очень хорошо работает.

yvv ★★★ ()
Ответ на: комментарий от unanimous

непонятно зачем

Чтобы сделать Base легче. Для скорости загрузки, как я понимаю. Тебе нужна линейная алгебра - ты её загружаешь. Не нужна - не загружаешь.

yvv ★★★ ()
Ответ на: комментарий от tailgunner

Off by one - едва ли не самая распрстраненная ошибка. И те, кто пишет одновременно на Julia и, например, Python, будут делать ее чаще обычного.

Это в детском саду для умственно отсталых разве что. Использую одновременно python и например fortran, про off by one никогда не слышал.

yvv ★★★ ()
Ответ на: комментарий от monk

Нумерация этажей ... начинается с 1.

Не везде. В Германии «1-й этаж» - это «первый верхний этаж», а то, что в России 1-й этаж, называется Erdgeschoss (этаж на уровне земли), и фактически это нулевой этаж. Ну и соотв, для этажей ниже уровня земли нумерация, начиная с 1.

seiken ★★★★ ()

Дети, вы запарили уже со своим индексом массива. Вас что, совсем не интересует, что в julia вся система типов и диспетчеризации методов устроены так, что компилятор легко переваривает всё это в быстрый нативный код? В питончике-то с этим сложно.

yvv ★★★ ()

А вот интересно, есть ли коммерческие пакеты для Julia? Или нет смысла, потому что есть тот же Matlab, где пользователи привыкли платить (??), а Julia в основном используется бесплатно?

dave ★★★★★ ()

Люблю я «велосипедистов».

Серьезно.

Это не троллинг.

«Велосипедисты» отвлекают на себя неадекватов от enterpriZe.

---

По теме -

R, который всегда работает в одном потоке и использует одно ядро

А я и не знал, что Oracle FastR не имеет средств для оптимизации.

R is neither the fastest nor most efficient programming language around.
FastR improves on the original by making extensive use of dynamic optimization 
features provided by the Truffle framework.
Bioreactor ★★★★★ ()
Последнее исправление: Bioreactor (всего исправлений: 1)
Ответ на: комментарий от tailgunner

Неа. За исключением некоторых особых случаев, julia компилятор отлично специализирует методы по конкретным типам, и производит такой же бинарный код, как и статический компилятор. В особых случаях, есть возможность указать явно, какой тип должен быть у переменной. Ради это весь новый язык как раз и придумывался.

yvv ★★★ ()
Последнее исправление: yvv (всего исправлений: 1)
Ответ на: комментарий от yvv

За исключением некоторых особых случаев, julia компилятор отлично специализирует методы по конкретным типам, и производит такой же бинарный код, как и статический компилятор

Насколько я понимаю https://juliacomputing.com/blog/2016/02/09/static-julia.html, приличный код без JIT генерируется только тогда, когда компилятор может вывести типы. Не вижу ничего необычного в системе типов Julia.

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

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

Да, и он это может почти всегда, без вмешательства со стороны юзера.

Не вижу ничего необычного в системе типов Julia.

Она параметрическая. В этом вся фишка. Кури доки.

yvv ★★★ ()
Последнее исправление: yvv (всего исправлений: 1)
Ответ на: комментарий от yvv

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

Да, и он это может почти всегда,

Известный факт, что и в динамических языках 90% кода статически типизировано. Если Julia умеет этим пользоваться - прекрасно, но это говорит только о том, что ее создатели сочли нужным вложить в это труд.

Не вижу ничего необычного в системе типов Julia.

Она параметрическая.

В этом нет ничего необычного.

Кури доки.

Какие именно? В руководстве по языку сказано: «Describing Julia in the lingo of type systems, it is: dynamic, nominative and parametric». Ты об этом?

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

но это говорит только о том, что ее создатели сочли нужным вложить в это труд.

Дак об этом и речь.

Она параметрическая.

В этом нет ничего необычного.

Это именно то, что позволяет компилятору легко выводить конкретный тип, не жертвуя при этом динамической типизацией.

Какие именно?

Тут всё есть https://docs.julialang.org/en/latest

yvv ★★★ ()