The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Доступен язык программирования Julia 1.9

10.05.2023 21:53

Опубликован релиз языка программирования Julia 1.9, сочетающего такие качества как высокая производительность, поддержка динамической типизации и встроенные средства для параллельного программирования. Синтаксис Julia близок к MATLAB с заимствованием некоторых элементов из Ruby и Lisp. Метод манипуляции строками напоминает Perl. Код проекта распространяется под лицензией MIT.

Ключевые особенности языка:

  • Высокая производительность: одной из ключевых целей проекта является достижение производительности близкой к программам на языке Си. Компилятор Julia основан на наработках проекта LLVM и генерирует эффективный нативный машинный код для многих целевых платформ;
  • Поддержка различных парадигм программирования, включая элементы объектно-ориентированного и функционального программирования. Стандартная библиотека предоставляет в том числе функции для асинхронного ввода/вывода, управления процессами, ведения логов, профилирования и управления пакетами;
  • Динамическая типизация: язык не требует явного определения типов для переменных по аналогии со скриптовыми языками программирования. Поддерживается интерактивный режим работы;
  • Опциональная возможность явного указания типов;
  • Синтаксис, превосходно подходящий для численных вычислений, научных расчётов, систем машинного обучения и визуализации данных. Поддержка многих числовых типов данных и средств для распараллеливания вычислений.
  • Возможность прямого вызова функций из библиотек на языке Си без дополнительных прослоек.



Основные изменения в Julia 1.9:

  • Новые возможности языка
    • Разрешено выполнение присвоений в другом модуле с помощью "setproperty!(::Module, ::Symbol, x)".
    • Разрешено множественное присваивание не в финальной позиции. Например строка "a, b..., c = 1, 2, 3, 4" будет обработана как "a = 1; b..., = 2, 3; c = 4". Это обрабатывается через Base.split_rest.
    • Литералы отдельных символов теперь поддерживают тот же синтаксис, что и строковые литералы; т.е. синтаксис может представлять недопустимые последовательности UTF-8, как это разрешено типом Char.
    • Добавлена поддержка спецификации Unicode 15.
    • Вложенные комбинации кортежей и именованные кортежи символов теперь можно использовать в качестве параметров типа.
    • Новые встроенные функции "getglobal(::Module, ::Symbol[, order])" и "setglobal!(::Module, ::Symbol, x[, order])" для чтения и записи исключительно в глобальные переменные. Метод getglobal теперь должен быть предпочтительнее для доступа к глобальным переменным, чем метод getfield.
  • Изменения в языке
    • Макрос "@invoke", представленный в версии 1.7, теперь экспортируется и доступен для использования. Кроме того, теперь он использует метод "Core.Typeof(x)", а не "Any" в случае, когда аннотация типа опущена для аргумента "x". Это необходимо для того, чтобы типы, передаваемые в качестве аргументов, обрабатывались правильно.
    • Включено экспортирование функции "invokelatest" и макроса "@invokelatest", появившихся в версии 1.7.
  • Улучшения компилятора/среды выполнения
    • Значительно сокращено время до первого выполнения (TTFX - Time to first execution). Предварительная компиляция пакета теперь сохраняет машинный код в "pkgimage", что означает, что код, сгенерированный в процессе предварительной компиляции, не потребует повторной компиляции после загрузки пакета. Использование режима pkgimages можно отключить с помощью опции "--pkgimages=no".
    • Исправлена известная проблема квадратичной сложности выведения типов, и в целом вывод использует меньше памяти. Некоторые граничные случаи с автоматически сгенерированными длинными функциями (например, ModelingToolkit.jl с уравнениями в частных производных и большими причинно-следственными моделями) компилируются намного быстрее.
    • Вызовы с аргументами без конкретных типов теперь могут быть оптимизированы методом Union-splitting для внедрения или статического разрешения, даже если существует несколько разнотиповых кандидатов для диспетчеризации. Это может улучшить производительность в определённых ситуациях, когда типы объектов не полностью статически разрешены, за счёт статического разрешения сайтов вызова "@nospecialize-d" и избежания повторной компиляции.
    • Все варианты использования макроса @pure в модуле Base заменены на Base.@assume_effects.
    • Вызовы invoke(f, invokesig, args...) с менее конкретными типами чем обычно используются для f(args...) больше не приводят к перекомпиляции пакета.
  • Изменения параметров командной строки
    • В Linux и Windows параметр "--threads=auto" теперь пытается определить доступное количество процессоров на основе CPU affinity, маска которого обычно устанавливается в средах высокопроизводительных вычислений и облачных средах.
    • Отключён параметр "--math-mode=fast", вместо которого рекомендуется использовать макрос "@fastmath", имеющий чётко определённую семантику.
    • Параметр "--threads" теперь имеет формат "auto | N[,auto|M]", где M указывает количество создаваемых интерактивных потоков (в настоящее время auto означает 1).
    • Добавлена опция "--heap-size-hint=<size>", устанавливающая порог, после которого начинается активная сборку мусора. Размер может быть указан в байтах, килобайтах (1000 КБ), мегабайтах (300 МБ) или гигабайтах (1,5 ГБ).
  • Изменения в многопоточности
    • "Threads.@spawn" теперь имеет опциональный первый аргумент со значением ":default" или ":interactive". Интерактивная задача требует малой задержки отклика и рассчитана быть короткой или часто выполняемой. Интерактивные задачи будут выполняться в интерактивных потоках, если они указаны при запуске Julia.
    • Потоки, запущенные вне среды выполнения Julia (например, из C или Java), теперь могут вызывать код Julia, используя "jl_adopt_thread". Это происходит автоматически при вводе кода Julia через "cfunction" или точку входа "@ccallable". Как следствие, количество потоков теперь может изменяться во время выполнения.
  • Новые библиотечные функции
    • Новая функция "Iterators.flatmap".
    • Новая функция "pkgversion(m::Module)" для получения версии пакета, который загрузил данный модуль, аналогично "pkgdir(m::Module)".
    • Новая функция "stack(x)", которая обобщает "reduce(hcat, x::Vector{<:Vector})" до любой размерности и допускает любой итератор итераторов. Метод "stack(f, x)" обобщает "mapreduce(f, hcat, x)" и является более эффективным.
    • Новый макрос для анализа выделенной памяти "@allocations", аналогичный "@allocated", за исключением того, что возвращает количество операций выделения памяти, а не общий размер выделенной памяти.
  • Новые возможности библиотеки
    • "RoundFromZero" теперь работает для типов, отличных от "BigFloat".
    • "Dict" теперь можно уменьшить вручную с помощью "sizehint!".
    • "@time" теперь указывает отдельно процент времени, потраченного на перекомпиляцию недействительных методов.
  • Изменения в стандартной библиотеке
    • Устранена проблема параллельного доступа в методах итерации для Dict и других производных объектов, таких как keys(::Dict), values(::Dict) и Set. Эти методы итерации теперь можно вызывать для Dict или Set параллельно для неограниченного количества потоков при условии, что нет действий, изменяющих словарь или набор.
    • Отрицание функции-предиката "!f" теперь возвращает составную функцию "(!) ∘ f" вместо анонимной функции.
    • Функции среза размерности теперь работают в нескольких измерениях: "eachslice", "eachrow" и "eachcol" возвращают объект "Slices", который позволяет выполнять диспетчеризацию для предоставления более эффективных методов.
    • В общедоступный API добавлен макрос "@kwdef".
    • Исправлена проблема с порядком операций в "fld1".
    • Сортировка теперь всегда стабильна по времени (переработан QuickSort).
    • "Base.splat" теперь экспортируется. Возвращаемое значение представляет собой тип "Base.Splat", а не анонимную функцию, что позволяет его красиво выводить.
  • Менеджер пакетов
    • "Package Extensions": поддержка загрузки фрагмента кода из других пакетов, загружаемых в сеансе Julia. Применение сходное с пакетом "Requires.jl", но поддерживается предварительная компиляция и совместимость настроек.
  • Библиотека LinearAlgebra
    • Из-за риска путаницы с поэлементным делением удалены методы "a / b" и "b \ a" со скаляром "a" и вектором "b", которые были эквивалентны "a * pinv(b)".
    • Для вызова BLAS и LAPACK теперь применяется "libblastrampoline (LBT)". OpenBLAS поставляется по умолчанию, но сборка образа системы с другими библиотеками BLAS/LAPACK не поддерживается. Вместо этого рекомендуется использовать механизм LBT для замены BLAS/LAPACK на иной имеющийся комплект библиотек.
    • "lu" поддерживает новую стратегию поворота матрицы "RowNonZero()", которая выбирает первый ненулевой элемент поворота для использования с новыми арифметическими типами и для учебных целей.
    • "normalize(x, p=2)" теперь поддерживает любое нормированное векторное пространство "x", включая скаляры.
    • Количество потоков BLAS по умолчанию теперь равно количеству потоков CPU на архитектуре ARM и половине числа потоков CPU на других архитектурах.
  • Printf: Для лучшей читаемости переработаны сообщения об ошибках для строк неправильного формата.
  • Profile: Новая функция "Profile.take_heap_snapshot(file)", которая записывает файл в формате ".heapsnapshot" на основе JSON, поддерживаемом в Chrome.
  • Random: randn и randexp теперь работают для любого типа AbstractFloat, определяющего rand.
  • REPL
    • Нажатие комбинации клавиш "Alt-e" теперь открывает текущий ввод в редакторе. Содержимое (если оно изменено) будет выполнено при выходе из редактора.
    • Текущий контекст модуля, активный в REPL, можно изменить (по умолчанию это Main) с помощью функции "REPL.activate(::Module)" или путём ввода модуля в REPL и нажатия комбинации клавиш "Alt-m".
    • Режим "нумерованной подсказки", который выводит числа для каждого входа и выхода и сохраняет оценённые результаты в Out, может быть активирован с помощью "REPL.numbered_prompt!()".
    • Автодополнение с помощью табуляции отображает доступные аргументы ключевого слова.
  • SuiteSparse: Код для решателя "SuiteSparse" перемещён в "SparseArrays.jl". Решатели теперь повторно экспортируются "SuiteSparse.jl".
  • SparseArrays
    • Решатели "SuiteSparse" теперь доступны как подмодули "SparseArrays".
    • Режимы защиты потоков UMFPACK и CHOLMOD улучшены за счет исключения глобальных переменных и использования блокировок. Многопоточный "ldiv!" объектов UMFPACK теперь можно выполнять безопасно.
    • Экспериментальная функция "SparseArrays.allowscalar(::Bool)" позволяет отключать или включать скалярное индексирование разрежённых массивов. Эта функция предназначена для обнаружения случайного скалярного индексирования объектов "SparseMatrixCSC", что является распространённым источником проблем с производительностью.
  • Новый отказоустойчивый режим для наборов тестов, который досрочно завершает тестовый запуск в случае сбоя или ошибки. Устанавливается либо через "@testset kwarg failfast=true", либо "export JULIA_TEST_FAILFAST=true". Подобное бывает необходимо в запусках CI для досрочного получения сообщений об ошибке.
  • Dates: Пустые строки больше не анализируются неправильно как допустимые значения "DateTime", "Dates" или "Times" и вместо этого выдают ошибку "ArgumentError" в конструкторах и синтаксическом анализе, в то время как "tryparse" ничего не возвращает.
  • Пакет Distributed
    • Конфигурация пакета (активный проект, "LOAD_PATH", "DEPOT_PATH") теперь распространяется при добавлении локальных рабочих процессов (например, с помощью "addprocs(N::Int)" или с помощью флага командной строки "--procs=N").
    • "addprocs" для локальных рабочих процессов теперь принимает аргумент с именем "env" для передачи переменных окружения рабочим процессам.
  • Unicode: "graphemes(s, m:n)" возвращает подстроку от m-й до n-й графемы в "s".
  • Пакет DelimitedFiles вынесен из системных библиотек и теперь распространяется как отдельный пакет, который должен быть явно установлен для использования.
  • Внешние зависимости
    • В Linux автоматически определяется версия системной библиотеки libstdc++ и если она новее, то загружается. Старое поведение загрузки, встроенной libstdc++ независимо от версии системы, можно восстановить, установив переменную окружения "JULIA_PROBE_LIBSTDCXX=0".
    • Из бинарного файла julia удалён "RPATH", что может привести в Linux к поломке библиотек, которым не удалось определить переменную "RUNPATH".
    • Улучшения инструментов: Вывод "MethodError" и методов (например, из "methods(my_func)") теперь оформлен и раскрашен в соответствии с принципом вывода методов при трассировке стека.


  1. Главная ссылка к новости (https://julialang.org/blog/202...)
  2. OpenNews: Выпуск языка программирования Julia 1.8
  3. OpenNews: Новый открытый динамический язык программирования Julia, использующий наработки проекта LLVM
  4. OpenNews: Релиз языка программирования Haxe 4.2
  5. OpenNews: В языке программирования Zig обеспечена поддержка самораскрутки (bootstraping)
  6. OpenNews: Релиз языка программирования Nim 1.6.0
Автор новости: Аноним
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/59112-julia
Ключевые слова: julia
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (87) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 23:01, 10/05/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Уже есть Mojo о Julia можно полностью и навсегда забыть.
     
     
  • 2.2, Аноним (2), 23:07, 10/05/2023 [^] [^^] [^^^] [ответить]  
  • +9 +/
    Это о Mojo можно забыть навсегда, учитывая проблемы концепта и реализации - https://discourse.julialang.org/t/did-modular-just-reinvent-julia/98214
     
     
  • 3.3, Аноним (1), 23:13, 10/05/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Так и вижу трясущиеся от страха коленки адептов Julia, которые выдумывают проблемы которых не существует лишь бы верить в то что их Julia выплывает. Mojo это завтрашний день что бы кто не говорил.
     
     
     
     
    Часть нити удалена модератором

  • 6.49, RND (?), 09:50, 11/05/2023 [ответить]  
  • +4 +/
    Очень субъективно, но всё же - если нужно считать время от времени что-то по ме... большой текст свёрнут, показать
     
     
  • 7.50, 1 (??), 09:59, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Спасибо !
    > и он без всяких оптимизаций стал где-то на три порядка быстрее

    3 порядка - это в 1000 раз ? O_o

     
     
  • 8.55, RND (?), 10:58, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    В моём случае да, именно так, стало в несколько тысяч раз быстрее Но это очень ... большой текст свёрнут, показать
     
     
  • 9.73, Дед Ананий (?), 14:06, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Что-то ты свистишь про Fortran Современный Fortran является ООП-языком и имеет ... большой текст свёрнут, показать
     
     
  • 10.78, 1 (??), 15:26, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем использовать C C вместе с Fortran если можно использовать C C вместо F... текст свёрнут, показать
     
     
  • 11.82, Дед Ананий (?), 16:18, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Fortran проще и для написания математических операций имеет поддержку на уровне ... текст свёрнут, показать
     
     
  • 12.87, RND (?), 17:40, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Fortran мне очень симпатичен как язык Его незаслуженно забывают, хотя он и быст... большой текст свёрнут, показать
     
  • 10.103, Ананас (?), 00:35, 12/05/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Julia проги тоже можно компилить в бинарь - зайди на сайт джульки и посмотри... текст свёрнут, показать
     
     
  • 11.111, Дед Ананий (?), 22:24, 12/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Теперь можно, но дико неудобно, с привлечением языка С - это как почесать левой ... текст свёрнут, показать
     
     
  • 12.114, Аноним (2), 18:31, 14/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    с привлечением языка С - это 5 лет назад надо было делать А сейчас PackageCom... текст свёрнут, показать
     
  • 4.5, Аноним (2), 23:27, 10/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Так и вижу трясущиеся от страха коленки адептов Julia

    галлюцинации

    > Mojo это завтрашний день что бы кто не говорил.

    так им в теории маркетологов и останется

     
     
  • 5.9, Аноним (1), 23:41, 10/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Нечего по делу сказать? Оно и понятно Julia как язык прям не получился. Опять же трудно сказать в чем причина плохой маркетинг или несовместимость с питоном. Но результат на лицо Julia даже в десятки популярных языков не входит.
     
     
  • 6.21, _kp (ok), 00:19, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну так, Julia это изначально нишевый язык, в первую очередь с упором на вычисления, их скорость, и читаемость.

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

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

    C тем же успехом можно сравнивать популярность VHDL и Питона. ;)

     
     
  • 7.33, Аноним (1), 07:17, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Только ты сейчас описал Mojo. То что Mojo вряд ли будет системным языком это факт, потому что уже существуют для этого C/C++, но то что Mojo прямой и действительно действующий конкурент для Julia это факт принепременнейший. То что Mojo выдет победителем совершенно очевидно в силу того что просто использует новые концепции, которые Julia не сможет себе позволить, хотя бы в силу легаси и совместимости.
     
     
  • 8.47, 1 (??), 09:16, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Ну да просто использует новые концепции эмодзи в названии файла в v2 буде... текст свёрнут, показать
     
     
  • 9.58, Аноним (1), 11:43, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ну конечно ты только это запомнил И это при том что эмодзи ты можешь в названии... текст свёрнут, показать
     
  • 8.74, Дед Ананий (?), 14:11, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну вот откуда берутся такие всезнайки Mojo еще толком никто не щупал руками, ... текст свёрнут, показать
     
     
  • 9.77, Аноним (77), 15:24, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Откуда берутся такие хейтеры как ты Концепция языка уже объяснена и понятна Он... текст свёрнут, показать
     
  • 4.109, DEF (?), 08:41, 12/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Julia уже выплыла и активно используется в нише Data science, активно вытесняя убогий Python. А Mojo лишь очередной костыль, который еще и недоступен никому для тестов. А ты уже трясешься и дергаешься, болезный.
     
  • 2.38, Аноним (38), 08:43, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Если программировать типа как доставать что-то правой рукой из левого кармана, причем через спину - а такие большинство проектов и 100% примеров на русскоязычных программистских сайтах, то можно обо всех языках программирования забыть.
     
     
  • 3.92, Аноним (92), 19:47, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вот, всё же, чем хороша Julia - в России школьники до неё не добрались и код на ней не выкладывают. Но вот студенческий код уже попадается.
     

  • 1.6, DEF (?), 23:29, 10/05/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    После Julia я выкинул R на свалку, а на Python как не написал ни одной строчки кода, так тем более не собираюсь.
     
     
  • 2.7, Проффесор (?), 23:33, 10/05/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Зайди еще через время и под десятью постами этим похвастайся
     
     
  • 3.11, Аноним (1), 23:42, 10/05/2023 [^] [^^] [^^^] [ответить]  
  • +5 +/
    А я написал Хеллоу ворлд на Хаскеле прикинь какой я умный!
     
  • 3.15, DEF (?), 23:49, 10/05/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Интересно, почему все хейтеры Джулии такие неграмотные и озлобленные? Неужели за недокодинг на убогом Пистоне, даже миску риса больше не выдают? Ты даже свой никнейм без ошибок написать не можешь, а уже открываешь свою пасть на Julia.
     
     
  • 4.17, tty0 (?), 00:07, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Судя по их значению синтаксиса и области применения - у них неприятные воспоминания про ту, которая им не дала.
     
  • 4.34, Аноним (1), 07:18, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    А ты чего озлобленный? Мало хеллоу ворлдов на джулии написал?
     
     
  • 5.68, Аноним (68), 13:37, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Он за кодинг на Джулии вообще никогда риса не видел.
     
  • 4.107, Проффесор (?), 08:31, 12/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Расширяй кругозор. Глаза Julieй заплыли.
     
  • 2.10, Аноним (1), 23:42, 10/05/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Да хоть на Хаскеле. На нём кроме тебя никто и не пишет. Это не тренд и не будущее. Язык для отщепенцев.
     
  • 2.36, Бывалый смузихлёб (?), 07:46, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    но чем оно лучше того же Zig ?
     
     
  • 3.64, Аноним (64), 12:45, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Из другой весовой категории. Уровнем значительно повыше по отношению к железу.
     
  • 2.76, Дед Ананий (?), 14:14, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > После Julia я выкинул R на свалку, а на Python как не написал ни одной строчки кода, так тем более не собираюсь.

    И ты хочешь сказать после этого, что ты умный человек? Julia и ее пакетная база, как ты раньше написал "на порядок" имеет меньше возможностей, чем экосистемы R и Python.

     
  • 2.80, Профессор (?), 16:17, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Значит твои задачи можно хоть на visual basic писать. Сравнил R с его пакетами с этим недоязыком - всем кто любит сочетание Lisp хоть с чем надо голову проверять насильно.
     
     
  • 3.104, Ананас (?), 00:40, 12/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Эй, пля, лисп не тронь
     
     
  • 4.113, Прохожий (??), 13:16, 14/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Только что потрогал. И он зашевелился в ответ
     

  • 1.18, Вы забыли заполнить поле Name (?), 00:12, 11/05/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Кто где использует из местных экспертов?
     
     
  • 2.20, Аноним (2), 00:13, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Конкретные вопросы давайте
     
     
  • 3.27, Аноним (27), 03:05, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Конкретный вопрос:
    - Перечислите открытые проекты где использован Julia?
     
     
  • 4.85, Аноним (2), 17:00, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Открываем github и смотрим https://github.com/search?l=Julia&q=language%3AJulia&type=Repositories&s=
     

  • 1.22, Жяваман (?), 00:20, 11/05/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В итоге так и не понял что это и зачем. А значит особо и не нужно.
     
     
  • 2.28, Аноним (27), 03:06, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > В итоге так и не понял что это и зачем. А значит особо и не нужно.

    А ты понимаешь как у человека мозг устроен или сердце? А то по аналогии страно даже представить к чему такая философия приводит.

     
     
  • 3.65, Вы забыли заполнить поле Name (?), 12:52, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вопрос не в том как устроен, а зачем. Огромное кол-во людей пользуются машинами, но слабо представляют себе их внутреннее устройство. Это абстракция. Можно писать на джулии, но не знать как устроен компилятор языка.
     
  • 2.88, Аноним (88), 17:41, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Это чтобы убрать из научной деятельности тормозной и неудобный в сопровождении питон.
     

  • 1.23, cheburnator9000 (ok), 01:43, 11/05/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Автор новости вообще не в теме, что rpath это про организацию "портабельных" сборок бинарников, и ни к какой поломке библиотек это не приводит, это приводит к поломке выполнения бинарного julia - да, так как искать runtime зависимости so libs оно будет только в стандартных LD_LIBRARY_PATH определенных в env.

    В данном случае это очередная выходка борцов за инклюзивность когда люди с шизой делать "по своему" везде только делают хуже. Если посмотреть на бинарный архив julia-1.9.0-linux-x86_64.tar.gz то становится понятно что это не портабельная сборка которая должна распаковываться поверх корня, иными словами засирать систему, еще хуже чем в венде. Как надо? Надо делать как в Go, в NIM, в Rust.

     
     
  • 2.25, Аноним (25), 02:00, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Автор новости вообще не в теме

    В оригинале: Removed RPATH from the julia binary. On Linux this may break libraries that have failed to set RUNPATH.

    > Если посмотреть на бинарный архив julia-1.9.0-linux-x86_64.tar.gz то становится понятно...

    Если посмотреть на https://julialang.org/downloads/, то становится понятно, что Julia в бинарниках распакоывается куда угодно и прекрасно оттуда работает. А для установки сейчас вообще рекомендуется https://github.com/JuliaLang/juliaup. И всего лишь надо посмотреть, а не придумывать непонятно что.

     
     
  • 3.105, cheburnator9000 (ok), 01:37, 12/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > и прекрасно оттуда работает

    Потому что в опции -R линкера перечислили все библиотеки относительными путями вместо указания одного единого каталога, LD за них удалил rpath, это его дефолтное поведение. Ну если для них окей что в некоторых конфигурациях оно будет не работать пусть так будет.

    > juliaup

    Более 300 багов, 90 не решенных. Rust. Браво 👏 вот так и надо писать на расте. Любой сисадмин напишет на баше более надежную альтернативу.

     
     
  • 4.106, Аноним (-), 02:22, 12/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Любой сисадмин напишет на баше более надежную альтернативу.

    особенно на баше под виндовс.... Хоть раз приходилось кроссплатформенный конфигуратор писать?

    Теперь не нравится код на Rust... И не нравится прямо противоположное, раскритикованному ранее...

    А для "некоторых конфигураций" можно собрать Джулию и из исходников.

     

  • 1.24, warlock66613 (ok), 01:45, 11/05/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Многие изменения выглядят как будто задачей было подтолкнуть программиста на совершение как можно большего числа незаметных ошибок. Наверно это не проблема для целевого использования данного языка, но со стороны выглядит забавно.
     
     
  • 2.26, Аноним (25), 02:03, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Наиболее существенное изменение этой сборки - полностью переработанная схема кэширования бинарного кода. Это позволило практически избавиться от самого неприятного эффеткта времени первого запуска пакета (using Plots, например).

    Не сказать что это было большой проблемой. Серверный код и так запускается однократно. Но это очень раздражало при интерактивной работе.

     

  • 1.30, Аноним (30), 06:32, 11/05/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Динамическая типизация - этого достаточно. В морг. Больше 100 строчек с динамической типизацией писать нельзя.
     
     
  • 2.51, kusb (?), 10:01, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Звучит странно. Прости.
    Динамическая типизация это полезно и то что решает типизация можно решать иначе.
     

  • 1.40, Аноним (40), 08:45, 11/05/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Отсутствие отладчика делает использование Джулии чуть менее чем невозможным.
     
     
  • 2.83, Mail (?), 16:29, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >> Разрешено выполнение присвоений в другом модуле с помощью "setproperty!(::Module, ::Symbol, x)"

    Представил отладку этого навоза...

     

  • 1.42, Diozan (ok), 08:49, 11/05/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Больше языков, разных и непонятных....
     
     
  • 2.45, Аноним (30), 09:11, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    В академическом плане - конечно.
     

  • 1.48, Аноним (48), 09:28, 11/05/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Синтаксис Julia близок к MATLAB с заимствованием некоторых элементов из Ruby и Lisp. Метод манипуляции строками напоминает Perl.

    Ccccombo!

     
  • 1.52, Аноним (52), 10:06, 11/05/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    При наличии Julia не понятно, почему еще не рипнулся Python? Ведь в Julia есть все, что есть в Python, даже синтаксис максимально похож на Python и при этом скорость в сотни раз быстрее.
     
     
  • 2.60, Аноним (1), 11:44, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Потому что появился Mojo. Теперь Питон и Можо будут дружить вместе.
     
     
  • 3.89, Аноним (-), 19:08, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Есть один нюанс. На Julia код для промышленного использования пишем уже сейчас. А вот когда кто-нибудь сможет это сделать на Mojo - это большой вопрос. И сможет ли или же этот язык нереализованными обещаниями и останется....
     
  • 2.62, Вячеслав (??), 12:15, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Django, flask, fastapi итд пока не портиртвали. И не известно когда портируют.
     
     
  • 3.67, Аноним (68), 13:27, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А также NumPy, SciPy, Matplotlib
     
  • 3.86, Аноним (2), 17:02, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Django, flask, fastapi

    никогда. У Julia есть HTTP.jl и множество фреймворков на её основе, включая Genie.jl. Но копировать довольно кривую Django - это уж точно незачем.

     
     
  • 4.97, Аноним (97), 20:48, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    ты только что ожидаемо вскрыл свою некомпетентность, типичную для хейтеров питона и неофитов джулии, суть django не в http-сервере
     
     
  • 5.98, Аноним (-), 21:02, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Проблема некоторых питонистов - они не способны воспользоваться гуглом и посмотреть что же такое Genie.jl. И уж точно не знают, что их любимая django - лишь тень Ruby on Rails, которая так и не стала такой же удобной и гибкой.
     
     
  • 6.110, Дед Ананий (?), 10:04, 12/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ну а джуликовский Genie Builder в свою очередь слямзен с продукт Shiny языка R. Да и другие вещи в Julia и Python (библиотеках) сделаны на основе механизмов языка R, который в свою очередь создан на фундаменте языка S. И что из этого следует?
     
  • 4.118, Сергей (??), 12:54, 28/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Жаль по бенчмаркам сильно медленный, странно это всё, заявляют о близости по производительности к си но глядим на http и говорим нет.
     
  • 2.108, DEF (?), 08:36, 12/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >даже синтаксис максимально похож на Python

    Протри очки. Синтаксис Julia не имеет ничего общего с синтаксисом Python.

     

  • 1.54, Аноним (54), 10:27, 11/05/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Язык Юлия (Julia) уже есть, теперь очередь за языкам Даша ,)))
     
     
  • 2.63, Аноним (64), 12:42, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Это будет 100% отечественный язык с Оберон-подобным синтаксисом.
     
     
  • 3.72, Аноним (54), 14:02, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, ты пишешь про функциональный язык "Баба Яга" до переименования "Старая дева".
     
  • 2.81, Down (?), 16:17, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Julia, Daria, Maria, Optimus Primia
     
     
  • 3.91, Аноним (2), 19:35, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Существование Ada и Ruby не смущает?
     
     
  • 4.102, Котофалк (?), 23:40, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Существование Ада многих смущало.
     
     
  • 5.116, Аноним (116), 01:11, 16/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    РПЦ точно смущает.
     

  • 1.59, Аноним (59), 11:43, 11/05/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Не надоело статься из за ЯП? Как по мне, если язык справляется с поставленной задачей и делает это хорошо-то не важно какой он, хоть Бейсик, хоть Паскаль,хоть Ява, хоть Джулия.
     
     
  • 2.66, Аноним (66), 12:57, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    ППКС. Все языки хороши.

    Кроме питона.

     
     
  • 3.79, Мимокрокодил (?), 15:50, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это потому что питон не язык, питон это как эпоксидка =)
    Можно годно склеить решение задачи из кусков разного размера, а можно уляпать всё вокруг и удивляться.
     
     
  • 4.84, Mail (?), 16:30, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >> это как эпоксидк

    для перла это минус, а для питона оказывается плюс. Хотя и тот отстой,  и тот отстой. ))

     
  • 2.112, Аноним (112), 13:05, 14/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > "Не надоело статься из за ЯП?"

    А как же по другому показать всю важность своего мнения? Это вам не запад, где приходят к компромиссу! Традиции срача в рунете крепли из года в год, их нарушать нельзя!!!
    Сегодня вы говорите о вежливости в диалоге, а завтра будите говорить что надо отказаться от костюма аддидас с семечками, что нужно саморазвиваться и повышать культуру!?

     

  • 1.69, Аноним (69), 13:40, 11/05/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > одной из ключевых целей проекта является достижение производительности близкой к программам на языке Си

    на Mojo напишут сетку которая сама всё сможет написать на С безопасно и свербыстрый код, а растовики будут стирать носки сишникам

     
     
  • 2.70, Аноним (70), 14:01, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > а растовики будут стирать носки сишникам

    Ты так говоришь будто кроме растовиков этого никто не делает

     
     
  • 3.75, Аноним (69), 14:11, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Ты так говоришь будто кроме растовиков

    у растовиков получается безопасней, до дыр не протирают

     
  • 2.71, Аноним (66), 14:01, 11/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    ... и заплакал, вспоминая свои натёртые костяшки.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру