Язык программирования Julia — это компьютерный язык, предназначенный для научного программирования. Впервые он был выпущен чуть более 10 лет назад. Вы можете увидеть причины, по которым разработчики Julia создали этот язык на https://julialang.org/blog/2012/02/why-we-created-julia/, но в двух словах, они хотели язык, который C-подобная производительность, но при этом обеспечивающая многие из простых в использовании функций, которые можно найти в современных языках, таких как Python или Matlab.

Впервые я попробовал Джулию вскоре после того, как она впервые была представлена. У меня было довольно много научных программ, уже написанных на других языках, таких как C и Python, поэтому я взял их и перенес на Джулию, чтобы понять, насколько хорошо этот новый язык будет работать с ними. Однако в то время язык находился в постоянном движении по мере добавления новых функций и изменения существующих функций. Этого следовало ожидать от молодого языка, но меня и других очень расстроило то, что код, написанный всего за несколько недель до этого, больше не будет работать в последней версии языка. Вспомогательные пакеты, такие как для построения графиков, обычно были еще менее стабильны. Я хотел делать дело, а не играть с новым языком, поэтому в конце концов отказался от него.

В последние годы Юлия стабилизировалась, как и многие наиболее важные внешние пакеты. Когда я вернулся к Джулии, я был приятно удивлен тем, что многие из первоначальных целей языка были достигнуты. Он действительно обеспечивает C-подобную производительность, хотя вы должны быть готовы следовать рекомендациям, установленным для его достижения.

В мире компьютерных языков есть две большие категории: интерпретируемые языки и компилируемые языки. Короче говоря, интерпретируемый язык транслируется в машинный код и выполняется построчно, тогда как скомпилированный язык полностью транслируется в машинный код перед запуском. Компилируемый язык выполняется намного быстрее, чем интерпретируемый язык, потому что интерпретация происходит во время выполнения программы, что замедляет весь процесс. В мире научных вычислений, где преобладает обработка чисел, компилируемые языки, такие как FORTRAN или C, обычно использовались для достижения максимальной скорости.

Однако интерпретируемые языки, как правило, были проще в использовании для программистов. Вместо внесения изменений и последующей перекомпиляции всей программы, как это делается в компилируемых языках, интерпретируемый код можно изменять «на лету», обеспечивая интерактивный опыт. Если бы вы могли жить с их относительно низкой скоростью выполнения, интерпретируемые языки были бы подходящим вариантом. Python по сути является интерпретируемым языком, и его огромная популярность обусловлена ​​простотой и удобством использования.

Julia — компилируемый язык, но компиляция встроена в сам язык, так что он очень похож на интерпретируемый язык. Вы просто пишете свой код Julia, а затем запускаете его. Весь процесс компиляции происходит за кулисами. При этом разработчики смогли достичь своей цели высокой производительности при интерактивном использовании!

Я также упомяну одну вещь: исходный код Джулии по сути является открытым в том, как вы делитесь им с другими. Нет встроенного способа взять только скомпилированный код и передать его другим. Есть несколько умных программистов, которые нашли довольно искаженные способы обойти это, но серьезно, если вы не хотите делиться своим исходным кодом, вам, вероятно, следует подумать об использовании чего-то другого, например C или FORTRAN.