На предстоящей европейской конференции проекта LLVM в Лондоне будет официально представлен новый язык программирования Julia, использующий JIT-компилятор на базе наработок проекта LLVM. Julia является динамическим языком высокого уровня с открытым исходным кодом (лицензия MIT), нацеленный прежде всего на техническое программирование в статистико-математических областях, с областью применения аналогичной таким известным решениям, как Matlab, язык R и связка из Python и NumPy.

Julia мультипарадигменный язык, который может комбинировать разные стили программирования, такие как императивный, объектно-ориентированный и функциональный. Синтаксис Julia очень близок к синтаксису MATLAB. По мнению создателей этого языка, к его достоинствам также следует отнести множество заимствований из синтаксиса Ruby и Lisp, удобная работа со строками в стиле Perl, кроме того обеспечена очень гибкая встроенная поддержка Hadoop. Уже идет работа по реализации полиморфных функций, поддержки задействования GPU для ускорения вычислений, автовекторизации и прочего.

Отдельно следует подчеркнуть, что язык Julia изначально спроектирован с учетом поддержки параллельного программирования (например, реализованы так называемые Coroutines), поэтому эта среда очень хорошо подходит для таких актуальных сегодня областей, как виртуализация и облачные вычисления, практическая работа со стороны разработчиков языка по экспериментированию в этих областях уже начата.

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

Ещё одна важная особенность Julia - язык исповедует "бесшаблонную" философию: внешние функции могут вызываться из Julia напрямую без какого-либо "кода для сопряжения" параметров вызова и библиотеки, и это можно делать не только из скомпилированного кода программы на Julia, но даже из интерактивной командной строки. Единственное ограничение для такого подхода - библиотеки с вызываемыми функциями должны быть представлены в виде " "разделяемой библиотеки". Впрочем, большинство библиотек для C или Fortran'a распространяются как раз именно в таком виде. Машинные инструкции, которые генерирует JIT-компилятор Julia в этом вызове - полностью аналогичны тому коду, который сгенерировал бы C-компилятор, поэтому накладные расходы от вызова внешней функции из Julia здесь почти такие же, как и в C. В этой области возможно ещё множество оптимизаций, которые будут реализованы в этом языке в ближайшем будущем.

Другие интересные особенности этого нового динамического языка:

  • Ядро языка очень невелико, его стандартная библиотека включает минимальный набор примитивных операций, такие как например арифметические операции, т.е. гибкая масштабируемость языка;
  • Богатый язык типов для описания и конструирования объектов;
  • Возможность определять поведение функции при передачи разного количества аргументов через multiple dispatch;
  • Автоматическая генерация максимально эффективного кода для разных типов аргументов и переменных;
  • Полная поддержка Unicode;
  • Мощные shell-подобные функции для запуска и управления внешними программами и процессами.


Источник: http://www.opennet.ru/opennews/art.shtml?num=33315