LINUX.ORG.RU

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

 , ,


5

7

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

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

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

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

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

★★

Проверено: jollheef ()

Ответ на: комментарий от Slackware_user

BLAS и LAPACK это 77 фортран

Ну это не правда. Всё уже давно переписано на как минимум на 95. Какая там версия используется в julia я лично не разбирался, и не хочу. Работает, и прекрасно.

yvv ★★☆ ()

Вспомнилось

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

https://imgs.xkcd.com/comics/standards.png

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

А рабочее место аналитика где взять? Mathematica?

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

Там свалившие есть. Вот тебе и большая мерзость. А пятизвездочные хуже модераторов.

anonymous ()

универсальный специализированный

... Исправьте, пожалуйста.

Судя по списку фич вдохновлялись они прежде всего Common Lisp'ом.

anonymous ()

Метапрограммирование выглядит в точности как предыдущие 100500 попыток прикостылить лисповые макросы к языку с инфиксным синтаксисом.

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

мне было бы очень интересно почитать про параметрические типы в Джулии. можно ссылку по-конкретнее? в доках не нашел ничего толкового.

val-amart ★★★★★ ()

Дайте-ка, я вброшу:

 b = Vector(1:3)
3-element Array{Int64,1}:
 1
 2
 3

julia> b + 1
ERROR: MethodError: no method matching +(::Array{Int64,1}, ::Int64)
Closest candidates are:
  +(::Any, ::Any, ::Any, ::Any...) at operators.jl:502
  +(::Complex{Bool}, ::Real) at complex.jl:292
  +(::Missing, ::Number) at missing.jl:93
  ...
Stacktrace:
 [1] top-level scope at none:0

Язык для математических вычислений не в курсе как складывать вектора со скалярами! Докатились...

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

впервые слышу что вектор и скаляр можно складывать

Через бродкастинг обычно можно, но соображать же нужно, что делаешь. В julia бродкастинг через "." вызывается.

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

в 6.2 кстати

b+1

работает. Это они в стабильной версии решили почистить.

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

.+

Ага-ага, с таким синтаксисом чудные ошибочки лезут, если написать

1.+2

Что и говорить, куда уж там проблема индексирования с 0 или единицы, мы зависимость от пробелов введем!

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

Ага-ага, с таким синтаксисом чудные ошибочки лезут, если написать

Как раз таки наоборот, не лезут.

c=a*b

Это одно, а

c.=a.*b

совсем другое. Всё математически корректно. Да, и есть макрос @dot, который облегчает жизнь ленивым.

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

c.=a.*b

Штаа??? .= тут зачем?

Кстати, да,

a = 2*b

Не требует броадкастинга.

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

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

Да я как бы тоже кфмн, и уж 12 лет в науке после... меня мало пугают регалии этих товарищей.

Но всё-таки я считаю введение .() и прочих dot-вызовов весьма странным решением, хотя понимаю, что ими двигало. Для чистой функции рантайм мог бы сам принять решение векторизовать или нет, а для матричных функций жульевская пара, например exp.()/exp() не сильно лучше exp()/expm() того же матлаба.

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

Так ты свои мысли выскажи создателям жулии. Они ребята нормальные, грамотные. Критику воспринимают очень серьёзно. Там https://discourse.julialang.org эти все проблемы уже обсуждались в 100500 постах, и вот к такому консенсусу они пришли. Есть лучше идеи? Предлагай.

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

Не, извини, я по поводу julia перегорел еще в 2012-14 — мне просто перестал нравиться синтаксис. Пока они были разумно близки к матлабу/октаве, я видел смысл это изучать, поскольку кривая обучения была не так крута, но потом полезли питонизмы, какие-то усложнения, пусть даже с благородной целью унифицировать, устрожить и проч. Потерялась другая цель: быть относительно простым языком для вычмата, чтобы по-быстрому прототипировать или проверить какие-то идеи, ведь для последнего немаловажна лаконичность (поменьше печатать) и возможность переносить идеи, так сказать, с бумаги. А смотри, что получается: теперь интерпретатор бьет по рукам, когда оказыватеся, что в выражении x+1 надо думать о том, вектор ли x или нет... Нет, в «большой» программе это хорошо, но стоит ли 3-х строчный скрипт «утолщения», а главное, мозговых усилий, чтобы это преодолеть? Вопрос, понятно, риторический.

Так что я пока посмотрю-погляжу пока в пассивном режиме.

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

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

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

Ага-ага, с таким синтаксисом чудные ошибочки лезут, если написать

не лезут, перед литерами, ели я правильно понял документацию, использование такой штуки запрещено и это отлавливается

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

Да я как бы тоже кфмн, и уж 12 лет в науке после... меня мало пугают регалии этих товарищей.

Ромбик-то носишь?

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

Зачем и почему текст этой новости писал человек, не являющийся программистом?

Программист я или нет, уж точно не тебе решать, клоун. Иди свои хелловорлды допиливай на 100 строчек кода. Когда дорастешь до 20 000 - 50 000 строк, тогда будешь свою пасть разевать.

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

да, после.
или там перед слитным ".+" всегда ожидается пробел, уже не помню

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

Тогда Товарищ Подгорелая Жопа не затруднитесь объяснить, что скрывается за процитированной ахинеей:

нестатическую типизацию

Кто-нибудь знает про такую типизацию, кроме тебя? Где можно прочитать определение? Я так понимаю, это не динамическая типизация, иначе была бы указана она.

составной тип

Что это? Тип-сумма, или у вас, программистов, какой-то особый сленг?

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

А мягкое более гладкое, чем тёплое. Что с чем сравнивается? Ты слышал про CLOS, объектную систему в Common Lisp, построенную на множественной диспетчеризации? Получается, лисперы реализовали менее продвинутый механизм <чего-то> с помощью более мощного и еще и гордятся этим. Ну и дела, зря время потратили.

Простой и легкий вызов функций языка Си.

Каких именно? printf? strlen? Вообще всех? Имелся в виду встроенный CFFI?

Итого половина пунктов написана по агитке маркетологов.

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

Итого половина пунктов написана по агитке маркетологов.

Чё ты возбухаешь? Половина пунктов написана так, чтобы хоть кому-нибудь понятно было, а зачем оно нужно. Не нравится, напиши свою новость.

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

Половина пунктов написана так, чтобы хоть кому-нибудь понятно было, а зачем оно нужно.

Кому нужно, про сабж узнали не по новости на ЛОР'е. И публика здесь подготовленная:

20 000 - 50 000 строк

— работают над сурьёзными проджектами.

Не нравится, напиши свою новость.

Не нравится мне, что тут некоторые пытаются быковать с места в карьер. А текст новости я критикую за содержание. Не нравится критика — не читай.

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

Теоретик, у которого проекты - либо убогие шаблончики для ЛОРа, либо недоплагины для FF на 100 строк - решил теоретическими познаниями в области определений блеснуть. Бугага!

Свободен, в общем, флудераст пятизвезочный.

И да, не нравиться новость - возьми и сделай лучше.

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

Дв никто тебе не завидует, упырь, достаточно твоих постов из талкс. Видимо, такой же уч0ный, уровня евгения с докинзом или sin_a с этологией.

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

Этот программист порвался, несите следующего, с проектами покрупнее.

На вопросы кто отвечать будет, практик? Новость лучше не станет от твоих переходов на личности.

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

Дв никто тебе не завидует, упырь, достаточно твоих постов из талкс. Видимо, такой же уч0ный ...

Зелен виноград дражайший анонимус, зелен виноград.

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

ТС ушел в неадекват, могу попробовать на часть ответить.

Что это? Тип-сумма, или у вас, программистов, какой-то особый сленг?

«Составной тип» - вполне встречается, термин обобщенный.

А мягкое более гладкое, чем тёплое. Что с чем сравнивается?

Сравнивается множественная диспетчеризация с единичной, которая в классическом ООП. Первая, конечно, мощнее, и почему бы их не сравнить. Хотя формулировка в виде «ООП против диспетчеризации» не особо точная.

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

А какая разница? ABI один.

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

По любому пункту можно прийти к компромиссу, да. А так — на ЛОР'е достаточно поставить табличку: «Срать разрешается», — и многим большего и не надо. И ты же читал новость о релизе Julia 1.0 здорового человека, а не сабжевую новость курильщика? Feel difference.

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

Множественная диспетчеризация и обобщённые функции. И в реализации используется терминология Common Lisp.

Но это не важно. Важно что они наследие лиспов и схем почему-то скрывают. <g>

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

на ЛОР'е достаточно поставить табличку: «Срать разрешается»

По дефолту выставлена. Пока у модуратора не подгорит.

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

Да ну, и что можно узнать из той новости: вышла НЁХ 1.0

Поддержка различных парадигм программирования

Блаблабла ни о чем.

Динамическая типизация

Не вся правда, важная информация о выводе типов отсутствует.

Синтаксис, превосходно подходящий для

Агитка и вкусовщина.

Возможность прямого вызова функций из библиотек на языке Си

Мало информации.

Итого, новость говно, ничем не лучше лоровской.

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

И ни слова о множественной диспетчеризации, фейспалм. Автор новости вероятно не вкурил, что это за зверь такой. Не ты писал?

anonymous ()

Пока одни спорили об индексации массивов и векторов, а другие флудерасты и эникейщики докапывались бомбящими пуканами до новости, я уже успел пару проектов с R переписать на Julia. Бугага!

PS. Множественная диспетчеризация рулит.

FilosofeM ★★ ()
Последнее исправление: FilosofeM (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.