Комментарии 7
Можно явно указывать типы для переменных и функций, что не характерно для чисто динамических языков.
Можно, не характерно, ага, но ерунда же написана. Речь в Джулии не о типах, речь об альтернативной релизации полиморфизма. И всё остальное на примерно том же уровне.
Как раз сейчас Джулия - моя новая игрушка, такие статьи конкретно бесят.
Больше интересного из мира машинного обучения эксперты OTUS рассказывают в рамках онлайн-курсов.
Вывод: рекламу курсов нельзя делегировать тем, кто и не очень разбирается и не очень заинтересован.
Совет: если кому стало интересно (т.е. ценность статьи таки положительная), то прочитанному не особо верим, на курсы не ходим, прочитываем любую книгу и переходим к документации. После чего отважно - считайте меня коммунистом бакалавром.
А можете кратко сравнить с каким-нибудь другим языком, который знаете? Несколько есть смысл изучать Джулию?
Насколько есть смысл изучать Джулию?
Для себя я получил ответ на этот вопрос: https://habr.com/ru/articles/666332/
Откровенно говоря, статья очень сумбурная. В половине описанных проблем проблемой является сам автор. Остальные - или закрыты, или не проблемы. Поэтому единственный ответ, который даёт эта статья - крайне осторожно читать критику на языки программирования. И никому не доверять. А лучше проверить самостоятельно.
Насколько есть смысл изучать Джулию?
Изучать, чтобы изучать - наверное, это неумно. Для каких целей изучать? - это самый главный вопрос.
Julia позиционируется Процедурный и Объектно-Ориентированный язык с соответствующим синтаксисом для числовых и научных вычислений, который может работать намного быстрее Python. Глубоко под капотом у языка Julia находится Lisp-машина.
Есть плюсы, но и есть некоторые косяки как в самой реализации языка, так и в библиотеках, качество которых, считается, хуже чем в библиотеках для языков Python и R.
Посмотрите на кол-во вакансий в вашем местоположении и думайте - изучать или не изучать. Изучать, только если вы не научный работник, наверное, не стоит, а посмотреть можно, также, как впрочем, и языке Mojo, который тоже позиционируются как "намного быстрее Python", при этом с синтаксисом, похожим, но не одинаковым с Python.
Но всегда можно не "изучать", а "посмотреть" - это нетрудно для людей, которые знают другие Языки программирования, особенно если это С/C++ (хотя и другие тоже подойдут).
Сейчас, в общем случае, ориентируясь на кол-во вакансий и величину заработной платы, изучать стоит C/C++(после их изучения приходит понимание как работают все остальные языки программирования), SQL, Python, Java, Go, JavaScript/TypeScript, HTML/CSS.
Изучать/посмотреть R - если вы занимаетесь статистикой или около областями, типа эконометрии, биостатистики и т.д. - хотя Python и C++ закроют и это направление (мало вакансий по R и область узка).
Изучать/посмотреть Rust - как замену C/C++, Go, Fortran. (мало вакансий)
Если предстоит заниматься научными вычислениями или изобретать новые математические методы, то ответ да, однозначно надо изучать Julia. В остальных случаях неоднозначно. Но как язык со своими инструментами разработки Julia довольно приятна.
А можете кратко сравнить
Могу, но с трудом. Размножение языков с целью остановки (ещё позавчера написал бы "торможения") прогресса потому и работает изумительно, что чтобы узнать нужно ли изучать - обязательно нужно основательно изучить. Из "обязательно" следует, что рассказы тоже не работают...
Джулия минимально ориентирована на создание бинарника, хотя может. К ней в этом ближе всего Python и Lisp, а от неё дальше всего C++ и Go. REPL Джулии, пожалуй, лучший - выполнение, справка, менеджер пакетов, терминал и поиск по всему этому в одном флаконе.
Джулия одновременно универсальна и ориентирована на вычисления, в широком смысле. Всё остальное либо никуда не ориентировано (Python), либо устарело до смерти (FORTRAN), либо ушедшего поколения ориентированного на создание GUI (C++, Dart), либо равно ушедшего поколения ориентированного на раздачу HTML (PHP, Java). Поэтому в Джулии самая мощная какую видел встроенная система работы с матрицами, включая синтаксис для различения операции над матрицей целиком и её элементами по отдельности, и числами (комплексные, рациональные, десятичные, произвольной точности... и можно добавить ещё).
И вообще, 2а есть синоним 2*а. NULL аналогов не имеет, но есть nothing и missing и NaN, что вместо глупых (как выяснилось по знакомству с Джулией) танцев вокруг sound null safety или int? даёт возможность ds(x::Union{Int64, String, Missing}) = x^2 и будет тогда ds(45) -> 2025, ds("45") -> "4545", ds(missing) -> missing, ds([1,2]) -> ошибка, но только если нигде не написано вроде ds(q::Any) = 42, тогда ds([1,2]) -> 42 и ds([11, 12 : 3 : 21, 22]) тоже 42. И √(-1+0im) есть 0+1im (набирать, например, \sqrt<tab>...)
У Джулии уникальная система наследования когда вместо неё фактически дерево тэгов которыми обладает каждый объект, каковой набор тэгов и есть, собственно, тип. Какая из перегруженных функций (как выше) будет вызвана - определяется типом всех аргументов и во время выполнения. Аналогов не знаю.
У Джулии система метапрограммирования не хуже, а то и лучше, чем у Lisp со товарищи. Иными словами, всё сколь либо популярное - отдыхает.
Несколько есть смысл изучать Джулию?
Я бы так советовал... Если Вас интересуют языки программирования сами по себе - изучение абсолютно обязательно. Если Вы являетесь одновременно программистом и потребителем результатов програмирования, хотя бы в составе комманды, то изучение желательно. Если Вы производите приложения в системе сеньор - тестер, то изучение Джулии смысла не имеет, а противопоказания к таковому изобильны.
Чтобы быстрее всего самостоятельно проверить имеет ли смысл изучать, изучите как "рецепты" позволяют получить красивые графики из чудоковатых данных в пакете Plots. Много особенностей Джулии затронуто, а материал довольно компактный.
Julia в машинном обучение: база