Выпущена Julia 1.0


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

Julia 1.0

Julia — это динамический язык для технических вычислений, который особенно хорош для запуска программ в стиле MATLAB и R. Разработка Julia началась в Массачусетском технологическом институте в 2009 году профессором компьютерных наук Аланом Эдельманом вместе с Джеффом Безансоном, Стефаном Карпински и В. Б. Шахом.

Когда Julia была впервые объявлена, список того, что хотели разработчики, был впечатляюще амбициозным:

Нам нужен язык с открытым исходным кодом, с либеральной лицензией. Нам нужна скорость C с динамизмом Ruby. Нам нужен гомоиконический язык с настоящими макросами, такими как Lisp, но с очевидной, знакомой математической нотацией, такой как Matlab. Нам нужно что-то такое же удобное для общего программирования, как Python, такое же простое для статистики, как R, такое же естественное для обработки строк, как Perl, такое же мощное для линейной алгебры, как Matlab, такое же хорошее для склеивания программ, как оболочка. Что-то такое, чему очень просто научиться, но что делает счастливыми самых серьезных хакеров. Мы хотим, чтобы он был интерактивным, и мы хотим, чтобы он был скомпилирован.

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

Для общего использования стандартная библиотека предоставляет асинхронный ввод-вывод, управление процессами, ведение журнала, профилирование и менеджер пакетов. Изменения с версии 0.6 начинаются с нового встроенного менеджера пакетов, который работает быстрее, чем предыдущая версия, и поддерживает среды пакетов для каждого проекта.

Новая версия также предоставляет новое каноническое представление для отсутствующих значений, чтобы облегчить разработчикам представление и работу с отсутствующими данными.  Любой универсальный тип коллекции может поддерживать отсутствующие значения, просто позволяя элементам включать в себя заранее определенное отсутствующее значение. Именованные кортежи также были добавлены в новую версию.

Другие улучшения включают изменения встроенного строкового типа, позволяющие хранить произвольные данные. Разработчики говорят:

«Ваша программа не будет отказывать в работе часами или днями из-за одного случайного байта недопустимого Юникода. Все строковые данные сохраняются, указывая, какие символы являются допустимыми или недопустимыми.»

Еще одним улучшением является возможность перегрузки оператора dot, чтобы типы могли использовать синтаксис obj.property для значений, отличных от получения и установки полей структуры. Разработчики говорят, что это особенно полезно для более плавного взаимодействия с языками, основанными на классах, такими как Python и Java.


Добавить комментарий