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

Пример кода на языке Julia
Разработка Джулии началась в 2009 году, и язык стал популяризироваться, когда в 2012 году компилятор стал открытым исходным кодом. В настоящее время он доступен по лицензии MIT. Цель - создать язык с преимуществами Python (простота и динамизм), R (статистическая обработка), C (скорость выполнения), Perl (обработка строк), Mathlab (линейная алгебра) и другие. Он тоже хочет, чтобы его распространяли, обобщали.
В традиции Паскаля название языка происходит от французского математика Гастона Джулии, первооткрывателя фракталов.
Его простота и научные возможности делают его возможной альтернативой Python. Но лучше ли он? Обычно он значительно быстрее Python, который использует библиотеки, написанные на языке C, чтобы компенсировать медленную работу интерпретатора. Для выполнения алгоритма важно, но главное, как они ведут себя на больших наборах данных, например, матричных вычислениях. К Бенчмаркам.
Преимущество Python в том, что библиотеки также могут быть написаны на Julia и скомпилированы, в то время как для добавления быстрых функций в Python необходимо использовать другой язык.
Будут также сопоставлены функции и синтаксис. Оба языка хотят легко понять и адресованы прежде всего аудитории, которая не заинтересована в hardware, а значит, и в языках, полученных из C, таких как Go, которые сделаны для упрощения задачи компилятора, а не повышения производительности программиста.
Подобия
- Они могут использоваться в командной строке и в интерактивном режиме.
- Динамические переменные.
- Тупики.
- Вложенные функции.
- Поиск самого краткого кода.
Разногласия
Python использует отступы для обозначения иерархии программных блоков и, следовательно, конца. Джулия более классична и любая конструкция заканчивается эндом, как это делает Матлаб (происхождение этого синтаксиса восходит к Алголу).
Когда энды накапливаются в алгоритме, становится труднее понять, какой блок заканчивается. Но современные издатели показывают скобки, которые показывают иерархию блоков (как на изображении справа), также это не большая проблема. Они должны поддерживать язык, который придет со временем.- Python интерпретируется, даже если существуют версии, скомпилированные в C или байтекод Java.
Джулия использует JIT-компилятор LLVM и ведет себя как интерпретатор. Так что в употреблении есть сходство, но другой бэкенд. - Картины Юлии ориентированы на 1.
- Юлия использует ключевое слово function, как JavaScript, в то время как Python использует def. Первый точнее.
- Однобокость. Как и Tcl или Prolog, программа Julia реализуется как представление данных. Это позволяет программе манипулировать собой, трансформироваться, расширяться. Или создать другую программу и выполнить ее, что было бы очень полезно в робототехнике.
- Полиморфизм. Одни и те же функции могут поддерживать разные типы данных и, следовательно, генерируются JIT в нескольких экземплярах (множественном dispatch). Это нужно добавить в Python с помощью внешнего модуля.
- Coroutines, с той же простотой, что и Go.
- Метапрограммирование. Это следует из однобокости.
- Даже если переменные по умолчанию не имеют типа, их можно дать, добавив аннотацию:: type, например:
x::int8 = 10.
В - Julia можно найти эквивалент структур C с составными типами, которые также используются для объявления объектов.
Типы, созданные программистом, так же быстры, как и типы языка.struct nom ... séquence de variables ... end
- a: b означает интервал, в то время как Python использует функцию range (a, b) и Mathlab что-то подобное .
- [a, b] - список, присвоенный массиву для его инициализации, или способ объединения двух массивов или добавления элемента в массив. Python требует метода append.
- Джулия это узнает, продолжает код на следующей строке или нет. Питону нужно указать это в коде.
- Определить макрос для вставки сложных выражений в код просто:
macro nom(expr,expr) ...code... end
- Юля предназначена для распределенной обработки, функций, выполняемых параллельно. Это позволяет выполнять обработку одной программой в облаке.
- Можно использовать библиотеки, написанные прямо на C (или на Python тоже).
Введение в синтаксис Юлии
Функция
Определение начинается с ключевого слова function и заканчивается end. Это обычно, но не оптимально, язык Script упрощается, завершая функцию возвращением или возвращением, за которым следует возвращаемое значение.
Функция также может быть определена путем назначения выражения имени с аргументами. Например:
fun(x) = x * 5
println(fun(2))
Что должно показать 10.
Что характерно для этого языка, так это то, что возвращаемое значение является результатом последнего оцениваемого выражения, если только инструкция return явно не вставлена в тело функции.
Таблицы передаются по ссылкам на аргументы и, следовательно, могут быть изменены в результате вызова функции.
Операторы - это функции. Можно назначить символ + функции f и выполнить вызов f (x, y), который вернет сумму двух аргументов .
Контрольные структуры
Структура if похожа на структуру PHP или Python.
Цикл для фигуры :
for i = 1:n
...
end
Что так же просто, как Python, как с другим синтаксисом.
Итерация на контейнере, в той же форме, что и в Script или других современных языках:
for s in [1, 2, 3]
...
end
Петля while классическая:
while a < 5
a += 5
end
Другой структуры контроля нет. Нет, нет, нет, нет. Маттерн не рассматривается создателями.
Классы и однородность
Классы - это составные типы, в которые вложены функции, которые таким образом становятся их методами.
type myclass
function f(x, y)
....
end
end
Нет таких прототипов, как в JavaScript для динамического добавления членов, но поскольку программа может изменяться и расширяться из-за однородности, то должна быть возможность редактировать объекты и добавлять к ним атрибуты и методы...
Это трактуется в учебнике, но примеры не очень яркие. На данный момент я полагаю, что функция eval, как и в JavaScript, позволяет оценивать и интегрировать код в программу, и что существуют различные команды для «самоанализа», доступа к коду даже в соответствии с данными.
Я должен использовать Джулию ?
Я действительно впечатлен возможностями этого языка. Ты и Дарт, похоже, были разработаны в другое время. Питон оставлен очень далеко назад, но у него есть оправдание, что он был действительно разработан в другое время.
У Юли есть все возможности Python и даже гораздо больше, код так же прост в написании, он имеет аналогичные библиотеки в научной области и поэтому кажется альтернативой. Он даже позволяет использовать библиотеки Python.
Но он не идеален. Для маттерна ничего не предусмотрено, что-то очень развито в Scala, другом современном и инновационном языке. Объекты не поддерживают наследство или композиции, что вызывает широкое применение.
Документация краткая и непонятная. Большинство примеров находятся в командной строке и не очень читаемы.
Сообщения об ошибках в основном были слабым местом во время моей первой попытки в 2014 году. Большинство ошибок внутри функции отмечаются в строке 1, которая является строкой или начинается функцией и поэтому ее трудно найти.
Мой опыт реализации критерия Erasthothenes был трудоемким в то время, но был бы легким с нынешней версией.
Обновлено 23 апреля 2017
Язык сильно изменился после первого теста, проведенного в 2014 году:
- Возможные ошибки теперь четко определены с номером строки в источнике.
- Расширения добавляют шаблон-совпадение.
- Теперь сайт предлагает полную документацию по языку.
Julia Studio - бесплатный EDI, посвященный этому языку.
Джулия против Питона. Сравнение языков.
Джулия Он Васм. Как скомпилировать Джулию в WebAssembly. Экспериментальный .
Ссылки: Сайт Юлии. Авторы - Джефф Безансон, Стефан Карпинский, Вирал Б. Шах, Алан Эдельман.