Для меня Julia - это что-то между C++ и Python. Комп считает быстро, когда ты условно говоришь ему, что делать. С++ сразу говорит, что нужно взять два инта и сложить их, используя сложение целых чисел. Процессор имеет это сложение встроенным, он точно знает, что делать и делает быстро. На интерпретируемом языке а-ля Python, ты говоришь ЦП взять две переменные, но концепт переменных ЦП не знаком, поэтому прежде чем ЦП что-то сделает, Python сначала должен выяснить, что содержат эти переменные. Для каждой операции он условно выясняет, целое это число, с плавающей точкой ли, что существенно его замедляет.
Julia также как и Python не знает, если явно не указать, float у нас или int. Но она умно планирует, когда происходит вызов функции. Julia просматривает каждую операцию функции и вычесояет точные инструкции ЦП, необходимые для этих конкретных аргументов. Поэтому у Julia есть особенность - при первом вызове функции всегда медленнее, чем при повторных вызовах. При первом вызове определяются все переменные и все функции для них, компилирует это все в быстрые и точные инструкции ЦП. Дальше она повторно использует этот код и может работать на скоростях С++.