The OpenNET Project / Index page

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

Выпуск языка программирования Julia 1.8

18.08.2022 20:09

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

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

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



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

  • Новые возможности языка
    • Поля изменяемой структуры (mutable struct) теперь могут быть аннотированы как константы, чтобы предотвратить их изменения и обеспечить возможность оптимизации.
    • Аннотации типов можно добавлять к глобальным переменным.
    • Пустые n-мерные массивы можно создавать, используя несколько точек с запятой внутри квадратных скобок, например "[;;;]" создаёт массив 0×0×0.
    • Блоки try теперь могут дополнительно иметь блок else, который выполняется сразу после основного тела, если не было выдано никаких ошибок.
    • @inline и @noinline можно размещать внутри тела функции, что позволяет аннотировать анонимную функцию.
    • @inline и @noinline теперь можно применять к функции в месте вызова или в блоке, чтобы принудительно включить (или не включить) соответствующие вызовы функций.
    • ∀, ∃ и ∄ разрешены в качестве символов идентификатора.
    • Добавлена поддержка спецификации Unicode 14.0.0.
    • метод Module(:name, false, false) можно использовать для создания модуля, который не содержит имен, не импортирует Base или Core и не содержит ссылки на себя.
  • Изменения в языке
    • Вновь созданные объекты Task (@spawn, @async и т. д.) теперь world_age для методов из родительского Task при создании, что позволяет оптимизировать их исполнение. Предыдущий варианте активации доступен при помощи метода Base.invokelatest.
    • Директивы несбалансированного двунаправленного форматирования Unicode теперь запрещены в строках и комментариях во избежании инъекций.
    • Base.ifelse теперь определяется как общая функция, а не как встроенная, что позволяет пакетам расширять её определение.
    • Каждое присвоение глобальной переменной теперь сначала проходит через вызов convert(Any, x) или convert(T, x), если для глобальной переменной был объявлен тип T. Перед использованием глобальных переменных, убедитесь, что инвариант convert(Any, x) === x всегда истинен, иначе это может привести к неожиданному поведению.
    • Встроенные функции теперь похожи на универсальные функции и могут быть программно перечислены с помощью методов.
  • Улучшения компилятора/среды выполнения
    • Время начальной загрузки сокращено примерно на 25%.
    • Компилятор на основе LLVM был отделён от runtime-библиотеки в новую библиотеку libjulia-codegen. Он загружается по умолчанию, поэтому при обычном использовании изменений быть не должно. В развёртываниях, которым не нужен компилятор (например, системные образы, в которых весь необходимый код предварительно скомпилирован), эту библиотеку (и её LLVM-зависимость) можно просто исключить.
    • Вывод условного типа теперь возможен через передачу аргумента методу. Например, для Base.ifelse(isa(x, Int), x, 0) возвращает ::Int, даже если тип x неизвестен.
    • SROA (Scalar Replacement of Aggregates) улучшена: исключает вызовы getfield с постоянными глобальными полями, исключает изменяемые структуры с неинициализированными полями, повышает производительность и обработку вложенных вызовов getfield.
    • Вывод типов отслеживает различные эффекты — побочные изменения и отсутствие отбрасывания. Учитывается распространения констант, что значительно повышает производительность во время компиляции. В некоторых случаях, например, вызовы функций, которые не могут быть встроены по месту вызова, но не влияют на результат, будут отброшены на время выполнения. Правила для эффектов можно перезаписать вручную с помощью макроса Base.@assume_effects.
    • Предварительная компиляция (с явными директивами предварительной компиляции или заданными рабочими нагрузками) теперь сохраняет больше кода, определяемого типом, что приводит к сокращению времени первого запуска. Любые новые комбинации методов/типов, необходимые вашему пакету, независимо от того, где эти методы были определены, теперь могут кэшироваться в файле прекомпиляции, если они вызваны методом, принадлежащим вашему пакету.
  • Изменения параметров командной строки
    • Поведение по умолчанию для наблюдения за объявлениями @inbounds теперь является опцией auto в "--check-bounds=yes|no|auto".
    • Новая опция "--strip-metadata" для удаления строк документации, информации об исходном местоположении и имён локальных переменных при создании образа системы.
    • Новая опция "--strip-ir" ​​для удаления компилятором промежуточного представления исходного кода при сборке образа системы. Результирующий образ будет работать, только если используется "--compile=all" или если весь необходимый код предварительно скомпилирован.
    • Если вместо имени файла указан символ "-", то исполняемый код читается из стандартного потока ввода.
  • Изменения поддержки многопоточности
    • Threads.@threads по умолчанию использует новый параметр расписания :dynamic, который отличается от предыдущего режима тем, что итерации будут планироваться динамически для доступных рабочих потоков, а не закрепляться за каждым потоком. Такой режим позволяет лучше распределять вложенные циклы с @spawn и @threads.
  • Новые библиотечные функции
    • eachsplit(str) для многократного выполнения split(str).
    • allequal(itr) для проверки равенства всех элементов в итераторе.
    • hardlink(src, dst) можно использовать для создания жёстких ссылок.
    • setcpuaffinity(cmd, cpus) для установки соответствия ядра процессора запускаемым процессам.
    • diskstat(path=pwd()) для получения статистики о диске.
    • Новый макрос @showtime для отображения как оцениваемой строки, так и отчета @time.
    • LazyString и макрос lazy"str" добавлены для поддержки отложенного построения сообщений об ошибках в путях ошибок.
    • Устранена проблема параллельного доступа в Dict и других производных объектах, таких как keys(::Dict), values(::Dict) и Set. Методы итерации теперь можно вызывать для словаря или множества, при условии, что нет вызовов, изменяющих словарь или множество.
    • @time и @timev теперь имеют необязательное описание, позволяющее аннотировать источник отчётов о времени, например. @time "Evaluating foo" foo().
    • range принимает либо stop, либо length в качестве единственного аргумента ключевого слова.
    • precision и setprecision теперь принимают base в качестве ключевого слова
    • Объекты сокетов TCP теперь предоставляют closewrite метод и поддерживают использование полуоткрытого режима.
    • extrema теперь принимает аргумент init.
    • Iterators.countfrom теперь принимает любой тип, определяющий метод +.
    • @time теперь выделяет % времени, потраченного на перекомпиляцию методов с изменёнными типами.
  • Изменения стандартной библиотеки
    • Ключи со значением Nothing теперь удаляются из среды в addenv.
    • Iterators.reverse (и, следовательно, last) поддерживает eachline.
    • Функция length для диапазонов определенных типов больше не проверяет целочисленное переполнение. Доступна новая функция checked_length, содержит логику контроля переноса разряда. При необходимости, используйте SaferIntegers.jl, дляпостроении типа диапазона.
    • Итератор Iterators.Reverse реализует инвертирование eachindex, если это возможно.
  • Менеджер пакетов
    • Новые индикаторы ⌃ и ⌅ рядом с пакетами в статусе "pkg>", для которых доступны новые версии. ⌅ указывает, что новые версии не могут быть установлены.
    • Новый аргумент outdated::Bool для Pkg.status (--outdated или -o в режиме REPL), чтобы показать информацию о пакетах предыдущих версии.
    • Новый аргумент compat::Bool для Pkg.status (--compat или -c в режиме REPL), чтобы показать любые записи [compat] в Project.toml.
    • Новый режим "pkg> compat" (и Pkg.compat) для настройки записей совместимости проекта. Предоставляет интерактивный редактор через "pkg> compat" или прямое управление записью через "pkg> Foo 0.4,0.5", который может загружать текущие записи через автозавершение по табуляции. То есть "pkg> compat Fo<TAB>" автоматически дополняется до "pkg> Foo 0.4,0.5", чтобы можно было редактировать существующую запись.
    • Теперь Pkg пытается загрузить пакеты с сервера пакетов только в том случае, если сервер отслеживает реестр, содержащий пакет.
    • Pkg.instantiate теперь будет выводить предупреждение, когда Project.toml не синхронизирован с Manifest.toml. Он делает это на основе хэш записей deps и compat проекта (другие поля игнорируются) в манифесте при его разрешении, чтобы можно было обнаружить любое изменение в deps Project.toml или записях compat без повторного разрешения.
    • Если "pkg> add" не может найти пакет с указанным именем, теперь будут предложены пакеты с аналогичными именами, которые можно добавить.
    • Версия julia, хранящаяся в манифесте, больше не включает номер сборки, т. е. master теперь будет записываться как 1.9.0-DEV.
    • Прерывание теста "pkg>" теперь будет обнаруживаться стабильнее, и будет корректно возвращать в REPL.
  • InteractiveUtils
    • Новый макрос @time_imports для отчета о времени, потраченном на импорт пакетов и их зависимостей, с выделением времени компиляции и перекомпиляции в процентах на импорт.
  • Линейная алгебра
    • Подмодуль BLAS теперь поддерживает level-2 BLAS функции spr!.
    • Стандартная библиотека LinearAlgebra.jl теперь полностью независима от SparseArrays.jl как с точки зрения исходного кода, так и с точки зрения модульного тестирования. Как следствие, разреженные массивы больше не возвращаются (неявно) методами из LinearAlgebra, примененными к объектам Base или LinearAlgebra. В частности, это приводит к следующим критическим изменениям:
      • Конкатенации с использованием специальных "разреженных" матриц (например, диагональная) теперь возвращают плотные матрицы; Как следствие, поля D1 и D2 объектов SVD, созданные при вызовах getproperty, теперь являются плотными матрицами.
      • Метод similar(::SpecialSparseMatrix, ::Type, ::Dims) возвращает плотную нулевую матрицу. Как следствие, произведения двух-, трех- и симметричных трехдиагональных матриц друг на друга приводят к порождению плотной матрицы. Кроме того, построение подобных матриц с тремя аргументами из специальных "разреженных" матриц из (нестатических) матриц теперь не удается из-за "zero(::Type{Matrix{T}})".
  • Printf
    • Теперь для форматирования ширины %s и %c использует аргумент textwidth.
  • Profile
    • Профилирование загрузки процессора теперь записывает метаданные, включая потоки и задачи. Profile.print() имеет новый аргумент groupby, который позволяет группировать потоки, задачи или вложенные потоки/задачи, задачи/потоки, а также аргументы threads и tasks для обеспечения фильтрации. Кроме того, процент использования теперь сообщается или как общий, или по потокам, в зависимости от того, простаивает ли поток или нет в каждой выборке. Profile.fetch() включает новые метаданные по умолчанию. Для обратной совместимости с внешними потребителями данных профилирования его можно исключить, передав include_meta=false.
    • Новый модуль Profile.Allocs позволяет профилировать выделение памяти. Записывается трассировка стека, тип и размер каждого выделения памяти, а аргумент sample_rate позволяет пропускать настраиваемое количество распределений, снижая нагрузку на производительность.
    • Профилирование процессора с фиксированной продолжительностью теперь может запускаться пользователем во время выполнения задач без предварительной загрузки профиля, и отчёт будет отображаться во время выполнения. В MacOS и FreeBSD нажмите ctrl-t или вызовите SIGINFO. Для других платформ активируйте SIGUSR1, т.е. % kill -USR1 $julia_pid. В Windows это недоступно.
  • REPL
    • RadioMenu теперь поддерживает дополнительные сочетания клавиш для прямого выбора параметров.
    • Последовательность "?(x, y", за которой следует нажатие TAB, отображает все методы, которые можно вызвать с аргументами x, y, .... (Пробел в начале не позволяет войти в режим справки). "MyModule.?(x, y" ограничивает поиск "MyModule". Нажатие TAB требует, чтобы по крайней мере один аргумент имел тип, более конкретный, чем Any. Или используйте SHIFT-TAB вместо TAB, чтобы разрешить любые совместимые методы.
    • Новая глобальная переменная err позволяет получить последнее исключение, похожее на поведение ans с последним ответом. Ввод err повторно печатает информацию об исключении.
  • SparseArrays
    • Код SparseArrays перемещен из репозитория Julia во внешний репозиторий SparseArrays.jl.
    • Новые функции конкатенации sparse_hcat, sparse_vcat и sparse_hvcat возвращают тип SparseMatrixCSC независимо от типов входных аргументов. Это стало необходимым для унификации механизма склейки матриц после разделения кода LinearAlgebra.jl и SparseArrays.jl.
  • Logging
    • Стандартные уровни журналов BelowMinLevel, Debug, Info, Warn, Error и AboveMaxLevel теперь экспортируются из стандартной библиотеки Logging.
  • Unicode
    • Добавлена функция isequal_normalized для проверки эквивалентности Unicode без явного построения нормализованных строк.
    • Функция Unicode.normalize теперь принимает ключевое слово chartransform, которое можно использовать для предоставления пользовательских сопоставлений символов, а также предоставляется функция Unicode.julia_chartransform для воспроизведения сопоставления, используемого при нормализации идентификаторов синтаксическим анализатором Julia.
  • Test
    • '@test_throws "some message" triggers_error()' теперь можно использовать для проверки того, содержит ли отображаемый текст ошибки "some message", независимо от конкретного типа исключения. Также поддерживаются регулярные выражения, списки строк и функции сопоставления.
    • @testset foo() теперь можно использовать для создания набора тестов из заданной функции. Имя тестового набора - это имя вызываемой функции. Вызываемая функция может содержать @test и другие определения @testset, в том числе для вызовов других функций, при этом записывая все промежуточные результаты тестирования.
    • TestLogger и LogRecord теперь экспортируются из стандартной библиотеки Test.
  • Distributed
    • SSHManager теперь поддерживает рабочие потоки с обёрткой csh/tcsh через метод addprocs() и параметр shell=:csh.
  • Прочие изменения
    • GC.enable_logging(true) можно использовать для регистрации каждой операции сборки мусора с указанием времени и объема собранной памяти.


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


Обсуждение (105) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 21:26, 18/08/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Слишком много символов разрешено и используется.
     
     
  • 2.2, Урри (ok), 21:30, 18/08/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Они будут весь юникод по три символа добавлять. И минорную версию менять.
     
  • 2.4, Аноним (4), 21:34, 18/08/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А я вот считаю что мало половин.
     
     
  • 3.19, Владимир (??), 23:52, 18/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Реквестую язык Юрий ...
     
     
  • 4.25, Аноним (-), 00:54, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Реквестую язык Юрий ...

    По опыту последних лет 50-ти, языки с женскими именами получаются куда изящнее....

     
     
  • 5.27, Аноним (27), 01:23, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Сишечка
     
     
  • 6.46, Аноним (46), 09:14, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • +5 +/
    нет, язык С, он же Си, он же Си Цзиньпин.
     
  • 5.29, легион (?), 02:50, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Язык Ада
     
  • 5.31, Бывалый смузихлёб (?), 06:00, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ещё один ненавистник паскаля и фортрана :)
     
  • 5.37, Брат Анон (ok), 07:35, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Паскаль и Оберон форева!
    А Го вообще суслик!
     
  • 5.50, Аноним (50), 11:13, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Агриппина, Параша, Даздраперма - женские названия для импортозаместительнх языков
     
  • 4.35, beck (??), 07:04, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Реквестую язык Юрий

    Реквестирую языки "олег" и "оксана"

     
  • 4.39, Аноним (39), 08:06, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    А как вам Саша? Унисекс
     
     
  • 5.56, YetAnotherOnanym (ok), 13:56, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Валя же есть.
     
  • 5.83, Владимир (??), 23:07, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    >А как вам Саша? Унисекс

    Аркадий лучше ... Солиднее ... Ну, или Андрюшка хот бы.

     

  • 1.7, Аноним (7), 21:42, 18/08/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Много интересного появилось. При запуске бинарников, если весь код откомпилирован, теперь можно съэкономить 60МБ на LLVM компиляторе.
     
     
  • 2.22, Аноним (22), 00:30, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    уже лет пять вижу эти -60 мб в каждой новости
     
     
  • 3.60, Аноним (-), 15:14, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > уже лет пять вижу эти -60 мб в каждой новости

    Галюцинации

     
  • 3.68, kusb (?), 18:10, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Круто что они не растут. Типа за пять лет они могли стать 600 мб.
     

  • 1.8, Аноньимъ (ok), 21:48, 18/08/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Так и незашла эта жулия.
    Слишком много телодвижений нужно для всего.
    Пытался нагуглить что-то по типу питорча - то ли Гугл не едет то ли я не то гуглю.

    Давно не интересовался но хоть на видеокарте она считать умеет из коробки?

     
     
  • 2.9, Аноним (7), 21:54, 18/08/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Пытался нагуглить что-то по типу питорча - то ли Гугл не едет то ли я не то гуглю.

    Flux.jl и ONNX.jl для запуска чужих готовых моделей

    > Давно не интересовался но хоть на видеокарте она считать умеет из коробки?

    конечно:

    julia> using CUDA
    julia> CUDA.functional()

    И даже в M1/M2 умеет - Metal.jl

     
     
  • 3.10, Аноньимъ (ok), 21:59, 18/08/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну модели можно и на плюсах запускать и везде.
    А вот учить...

    Только куду кстати поддерживает?

    Надо будет как-то ещё раз взглянуть, может удастся от питона сбежать.

     
     
  • 4.11, Аноним (7), 22:07, 18/08/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Ну модели можно и на плюсах запускать и везде.

    А смысл? Остальной код всё равно хочется не на плюсах делать.

    > Только куду кстати поддерживает?

    CUDA.jl и https://github.com/JuliaGPU в целом

     
  • 3.23, Аноним (22), 00:31, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    на видеокарте, а не на невидии
     

  • 1.12, corvuscor (ok), 22:20, 18/08/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    С прошлого выпуска - очень проникся. После обычных ООП языков очень необычно пишется, абстрагировано, удобно для научных расчетов.

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

     
     
  • 2.13, ptr (??), 22:37, 18/08/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ну Julia почти в три раза моложе Python, у которого приличное комьюнити возникло лет этак через 20 с момента его появления.
     
     
  • 3.15, Аноним (7), 23:04, 18/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    До 2018-го (когда Julia 1.0 вышла), ею вообще мало кто пользовался. За 4 года прирост очень значительный.
     
  • 2.55, Аноним (55), 13:39, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Синтаксис хороший, но отсутствие полноценного отладчика, делает Джулию мало пригодной.
     
  • 2.115, _kp (ok), 11:06, 23/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Не может быть "популярность" и коммунити у специализированного языка быть такой же как у более массового, и тем более языка для обучения.
    Был бы язык для физиков-теоретиков, так о нём бы и вовсё почти не слышали, будь язык хоть трижды классным.
     

  • 1.14, Аноним (14), 23:01, 18/08/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    'производительности близкой к программам на языке Си'
    есть же Си и миллиард либ под любые нужды
     
     
  • 2.16, tty0 (?), 23:05, 18/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Когда вам нужно решить конкретную задачу, думать об особенностях си без соответствующего багажа знаний проводить к серьёзным провалам
     
     
  • 3.21, Аноним (21), 00:01, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Поэтому все начинают изучать джулию, чтобы накопить багаж знаний
     
  • 3.86, darkshvein (ok), 10:18, 20/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    более того, когда нужно решать серьёзные задачи вообще лучше не думать!
     
  • 2.114, том (?), 06:08, 23/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    В Юле я так понял прикол в том что код очень, очень динамический, что важно для датасатанистов.

    Например вы можете объявить на вашем типе операцию умножения между объектами этого типа, и все либы, которые умножали объекты одинаковых типов будут работать (ну, почти всегда). Юлия перекомпилирует весь их код под ваши типы.

     
     
  • 3.117, Аноним (7), 23:16, 26/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Это называется multiple dispatch и означает не полную перекомпиляцию, а генерацию отдельных методов функций под аргументы с указанными типами. Можно писать и без указания типов, но тогда кодогенерация под новые типы будет проходить в момент первого исполнения кода.

    По сути, это стандартный полиморфизм на типах аргументов функции.

     

  • 1.17, Аноним (21), 23:27, 18/08/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Поделитесь, кто на этом языке пишет в продакшене и что
     
     
  • 2.18, Аноним (-), 23:30, 18/08/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Поделитесь, кто на этом языке пишет в продакшене и что

    NLP-сервисы. Очистка, обогащение.

     
     
  • 3.20, Аноним (21), 23:58, 18/08/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Дайте пруфы)
     
     
  • 4.24, Аноним (-), 00:40, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Дайте пруфы)

    Ссылки на внутренний репозиторий и паспортные данные разработчиков?....

     
     
  • 5.48, Аноним (-), 09:51, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    покажи хотя бы кусок кода на пейстбине. inb4 - ничего не покажешь под любыми предлогами
     
     
  • 6.65, Аноним (-), 16:29, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вот интересно, каков процент компаний, готовых уволить разрабов за публикацию кусков рабочего кода без согласования?....
     
     
  • 7.71, Аноним (71), 18:25, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    а в чем проблема-то? судя по тому, что ты описал выше, ничего секретного, соответственно уникального там нет, для демонстрации можно выбрать кусок, не выдающий ни суть продукта. но ты ничего не выложишь не поэтому, а потому что тебе нечего показать
     
     
  • 8.75, Аноним (-), 19:02, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Когда работать начнёшь, может быть узнаешь, что такое интеллектуальная собственн... текст свёрнут, показать
     
  • 5.78, Аноним (21), 21:04, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Хотя бы просто названия компаний и продуктов
     
     
  • 6.84, Аноним (-), 04:11, 20/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    https://hrtool.dotin.us/ - большая часть NLP-сервисов именно на Julia
     
  • 2.30, Аноним (30), 03:15, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    У ACML тулинг для test coverage на нем пишется.
     
     
  • 3.42, Аноним (42), 08:36, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Поэтому ACML и не интел и не амд. Потому что занимается всякой ерундой вместо того чтобы делать бизнес.
     
     
  • 4.77, Аноним (77), 19:56, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ты о чем? У ACML(221.12) капитализация больше чем у Intel(145.52) и AMD (154.26).
     
  • 3.79, Аноним (21), 21:20, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ну такое себе... В чем выгода от эзотерики?
     

  • 1.26, Neon (??), 00:55, 19/08/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Опять наркоманский синтаксис как у большинства новых модных молодежных язычков ?
     
     
  • 2.28, topin89 (ok), 01:27, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Python, Php и Perl: ну да ну да, пошли мы нахер.

    За пределами C-подобных языков вообще любой синтаксис будет казаться наркоманским. Как по мне, только у APL получилось добиться реального безумия.

     
     
  • 3.32, Бывалый смузихлёб (?), 06:05, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Да он и у сишки казался наркоманским на момент её изучения - тонны всевозможных скобок и прочие прелести
     
     
  • 4.34, Аноним (34), 06:11, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Что там учить-то? Возьмите нормальные источники: Керниган-Ритчи или Уэйт-Прата.
     
     
  • 5.43, Аноним (42), 08:37, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Не думал что Си нужен был просто нормальный синтаксис чтобы его все использовали?
     
  • 4.53, Старший аноним (?), 13:21, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Синтаксис С не казался наркоманским , а так и есть наркоманский по сравнению с ... большой текст свёрнут, показать
     
     
  • 5.82, Аноним (21), 22:14, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Во-первых, не одни и те же инструкции. А во-вторых, батенька, вы знаете извращения с многословным паскалем
     
  • 3.49, Аноним (-), 09:52, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    заткнись, питон идеален
     
     
  • 4.52, Аноним (22), 12:49, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    загрязнение окружающей среды из-за отсутствия скорости выполнения и траты места на пробелы - это идеально?
     
     
  • 5.72, Аноним (71), 18:27, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    для тех задач, на которые нацелена решать julia есть нативные библиотеки, работающие быстрей этой самой julia. что ты там под тратой места имел ввиду, я даже знать не хочу, такие как ты (не работавшие ни с чем, ни с питоном, ни с джулией) еще любят упоминать gil
     
  • 4.62, Аноним (-), 15:30, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > заткнись, питон идеален

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

     
  • 4.80, topin89 (ok), 21:44, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Конечно он идеален. Даже больше, синтаксис C-подобных языков я считаю гораздо более наркоманским. Особенно плюсов. К нему можно привыкнуть, но чтение шаблонов шаблонов шаблонов требует интересной ментальной эквилибристики.
     
     
  • 5.81, Аноним (-), 21:58, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Питон идеален, поэтому пусть он лучше стоит в сторонке под бронированным колпаком. Чтобы никто своими грязными руками этот идеал в прод не тащил... Да и вообще, поменьше лапал, чтобы не испортить.
     

  • 1.33, Аноним (34), 06:09, 19/08/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > достижение производительности близкой к программам на языке Си

    Может, сразу взять С и не заморачиваться?

     
  • 1.36, beck (??), 07:05, 19/08/2022 Скрыто модератором [﹢﹢﹢] [ · · · ]
  • –1 +/
     
     
  • 2.38, Брат Анон (ok), 07:37, 19/08/2022 Скрыто модератором
  • +3 +/
     
     
  • 3.40, Аноним (34), 08:26, 19/08/2022 Скрыто модератором
  • +1 +/
     
     
  • 4.45, Брат Анон (ok), 08:51, 19/08/2022 Скрыто модератором
  • +1 +/
     
  • 2.41, Rnd (?), 08:32, 19/08/2022 Скрыто модератором
  • +/
     
     
  • 3.44, myhand (ok), 08:44, 19/08/2022 Скрыто модератором
  • +/
     
  • 2.47, Аноним (34), 09:36, 19/08/2022 Скрыто модератором
  • –2 +/
     

     ....ответы скрыты модератором (6)

  • 1.54, Аноним (55), 13:36, 19/08/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Отлаживаться как раз не удобно. Консольного отладчика как не было так и нет. А тыкать мышью занятие такое себе.
     
  • 1.57, DEF (?), 14:33, 19/08/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Отличный язык. Перешел на его с R. Использую его для Data Science и Big Data. Строю кучу графиков, гоняю данные, в том числе из базы данных. Работает все шустро. Питон никогда не использовал и даже нет желания его изучать. Julia умеет практически все.
     
     
  • 2.58, еак13245 (?), 14:42, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Как ты отлаживешь код?
     
     
  • 3.61, Аноним (-), 15:21, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Как ты отлаживешь код?

    Детальные модульные тесты и отладочный вывод.

     
     
  • 4.63, eak0981234 (?), 16:15, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Для своего проекта пойдет, но когда нужно разобраться в большом и сложном чужом проекте, такой метод не сработает. Поэтому для Джулии нужен отладчик, но разработчики не спешат. Всё, что есть это сторонние проекты.
     
     
  • 5.64, Аноним (7), 16:25, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это пошаговый отладчик вам не поможет в большом и сложном проекте. А модульные тесты для того и пишут, чтобы покрывать код по высокоуровневым функциям. И, если разработчики, которые их писали, достаточно квалифицированные, то проблем разобраться с кодом не будет.
     
     
  • 6.87, eak132 (?), 11:00, 20/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Совершенно согласен с тем, что пошаговый отладчик не поможет. Более того, я считаю, что пошаговые отладчики придуманы для слабаков. Настоящий программист должен уметь выполнять код в уме! Программисты Джулии видимо в совешенстве владеют этим навыком. Зачем вообще придумали все эти отладчики? Gdb и прочие? Отрасль деградирует.
     
     
  • 7.89, Аноним (7), 16:12, 20/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Просто нет у вас навыков отладки отладочной печатью. Julia далеко не единственный ЯП, у которого нет удобного пошагового отладчика (неудобный есть). В случае Julia, просто надо разбивать код на небольшие фрагменты для отладки и тестирования. Именно поэтому, надо использовать модульные тесты. Если эти тесты достаточно детальные, то проблем отладить кусок кода нет. То же в отношении Haskell, то же в отношении отладки кода на устройствах, куда просто так не подключишься. Отладка без пошагового отладчика, хоть и требует определённой привычки, но это совершенно не то же самое, что отлаживать код на листочке бумаги. И уж точно, не сложнее пошагового отладчика, хотя и требует определённой дисциплины написания кода.
     
     
  • 8.94, eak132 (?), 13:54, 21/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Да, уж чукча не читатель, чукча писатель Большую часть времени программисту п... текст свёрнут, показать
     
     
  • 9.95, Аноним (7), 15:17, 21/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    А как, по-вашему, отлаживают код во всяких Jupyter Notebook Или, например, ... текст свёрнут, показать
     
     
  • 10.96, eak132 (?), 15:24, 21/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Юпитер ноутбук инструмент, предназначенный для обучающих и демонстрационных целе... текст свёрнут, показать
     
     
  • 11.98, Аноним (7), 17:29, 21/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Возьмите да посмотрите этот код Зачем рассуждать о том, чего не понимаете Од... текст свёрнут, показать
     
     
  • 12.99, eak132 (?), 18:10, 21/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Еще как приходится ковырять Когда работал С-шником, как-то поручили переработат... текст свёрнут, показать
     
     
  • 13.100, Аноним (7), 19:15, 21/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Поймите, что каждый ЯП требует своего подхода На Julia просто невозможен моноли... большой текст свёрнут, показать
     
     
  • 14.101, eak132 (?), 19:51, 21/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Хорошо Как быть с интерактивностью Джулия позиционируется как язык научных выч... текст свёрнут, показать
     
     
  • 15.102, Аноним (7), 20:24, 21/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Если очень надо, точку останова в VS Code поставить можно Но если кода много, б... большой текст свёрнут, показать
     
     
  • 16.107, eok123 (?), 08:56, 22/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    В целом ясно, но раздражает, что некая модель разработки навязывается Например ... текст свёрнут, показать
     
     
  • 17.110, Аноним (7), 14:56, 22/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Нельзя писать без модульных тестов Именно их отсутствие и приводит к тому, что ... текст свёрнут, показать
     
  • 15.103, Аноним (7), 21:42, 21/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    https pretalx com juliacon-2022 talk JPYJS8 Про интерактивную работу в VS Cod... текст свёрнут, показать
     
     
  • 16.106, eok123 (?), 08:52, 22/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Даже по сравнению с Октавом, выглядит как поделка Не говоря уже о Р-студии Опя... текст свёрнут, показать
     
     
  • 17.111, Аноним (7), 14:59, 22/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    С чем можно согласиться, так это с тем, что Julia Computing не уделяет должного ... текст свёрнут, показать
     
     
  • 18.112, eok123 (?), 15:42, 22/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Октав не предназначен для чего-то высоко нагруженного Его ниша это создание про... текст свёрнут, показать
     
  • 12.116, economist (?), 16:44, 23/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    В JupyterLab есть пошаговый отладчик, окно переменных в т ч для структур, стек ... текст свёрнут, показать
     
  • 9.104, Аноним (-), 04:55, 22/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Не читай гавнакода Если в коде невозможно разобраться без отладчика, то пользов... большой текст свёрнут, показать
     
     
  • 10.105, eok123 (?), 08:47, 22/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Хороший совет Особенно можно рекомендовать тем, кто только устроился на новую р... текст свёрнут, показать
     
     
  • 11.113, Аноним (-), 19:13, 22/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Не, зачем же так Видишь гнокод, ищешь другую работу И молчишь о гнокоде здесь ... большой текст свёрнут, показать
     
  • 4.76, Аноним (-), 19:20, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Для Джулии, помимо всего прочего, модульные тесты с полным покрытием являются частью тех. процесса. Без них не соберёшь бинарники.
     
  • 3.93, Аноним (93), 11:37, 21/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Debugger.jl
     
     
  • 4.97, eak132 (?), 17:17, 21/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Пару лет назад пробовал использовать. Произвел впечатление грубого прототипа. До GDB явно не дотягивает.
     
  • 3.108, DEF (?), 09:18, 22/08/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Логгирование, трассировка, юнит-тесты. Я даже когда на Жабе писал конкурентный код, то тоже не использовал отладчик. Нахер он нужен вообще? Тем более в Джулии, где легко можно понять, где ошибка, там одни структуры данных.
     

  • 1.69, kusb (?), 18:12, 19/08/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Звучит как что-то нереально крутое. Скорость разработки скриптовых языков и скорость + прямота нескриптовых. Почему это не ...популярнее?
    Хотя выглядит что оно для расчётов.
     
     
  • 2.70, Аноним (7), 18:24, 19/08/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ему всего 4 года в проде
     

  • 1.85, Аноним (85), 07:48, 20/08/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Джулию сильно ругают. Баг-репорты висят годами. И множество других проблем  
     
     
  • 2.90, Аноним (-), 17:02, 20/08/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А есть хоть какой-нибудь ЯП, про который нельзя сказать тоже самое?
     
  • 2.118, DEF (?), 10:08, 16/09/2022 [^] [^^] [^^^] [ответить]  
  • +/
    По опросам на Stackoverflow, Julia один из самых любимых языков.
     

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



    Спонсоры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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