Сегодня обсудим, как язык Julia в Engee стирает границы между низкоуровневым и высокоуровневым программированием. Для примера разберем наш демо-проект по решению уравнений акустической волны, где Julia выступает мостом между скоростью и удобством.
This browser does not support the video element.
🔗 Вы тоже хотите глубже погрузиться в Julia? Присоединяйтесь к Зимней школе!
Сперва рассмотрим два полюса программирования:
«Низкий уровень» (например, C) ⚙️ + Прямой доступ к памяти и высокая производительность – Ручное управление ресурсами усложняет разработку
«Высокий уровень» (например, Python) 🐍 + Интуитивный синтаксис и быстрое прототипирование –Серьезные потери скорости на абстракциях
А как Julia объединяет преимущества?
В нашем проекте мы демонстрируем: 🔹Оптимизацию критических участков кода через встраивание функций с помощью @inline, 🔹Анализ сгенерированного «ассемблера» при помощи @code_llvm, 🔹Ускорение с помощью применения кортежей вместо массивов, 🔹Реализацию метода конечных разностей для гиперболических уравнений, 🔹Визуализацию с настраиваемым шагом при помощи Plots.jl.
В конечном счете Julia позволяет: 🔹Писать выразительный код на уровне Python, 🔹Достигать скорости C за счёт JIT-компиляции, 🔹Легко интегрировать низкоуровневые оптимизации (за это мы ее и любим!).