Привет!
Сегодня я представлю вам мой любимый язык программирования loli.
Чем меня он так заинтересовал?
Новый язык программирования очень близок по скорости с C++, но интерпретируется.
Для начала немного расскажу про сам язык.
Loli — это встраиваемый объектно-ориентированный язык программирования, в последнее время набирающий популярность. Проще говоря, это скриптовой язык программирования.
Сразу покажу вам пример на loli:
import time
fn thread_function
{
for i in 0...10000000: {
var e = i * i
}
}
import threads
var start_time = time.Time.clock()
var thread = threads.create(thread_function)
sayln(time.Time.clock() - start_time ++ " seconds")
Этот пример выполняет множественный перебор, присваивание и возведение в степень.
На выполнение ушло 41.8174 сек.
Тот же пример на языке C++:
#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>
#include <stdint.h>
static void * thread_fn() {
double start_time = ((double)clock())/(double)CLOCKS_PER_SEC;
for (uint64_t i = 0; i < 10000000; i++) {
auto unsigned int _e = i * i;
}
printf("%lf seconds\n", ((double)clock())/(double)CLOCKS_PER_SEC - start_time);
return 0;
}
int main() {
pthread_t pthread = NULL;
pthread_create(&pthread, NULL, thread_fn, NULL)
pthread_join(&pthread, NULL);
return 0;
}
Скомпилированный с помощью GCC, выполняется на той же машине за 35.5917 сек.
Как мы можем заметить, разница в производительности двух довольно популярных языков составляет ~10%, что является отличным результатом для скриптового языка программирования.
Одно из особенностей интерпретатора этого языка в том, что все переменные строго типизированы, хотя это не так заметно, и хранятся в хеш-таблицах. Кроме того, сам код на loli предварительно анализируется, подгружаясь в ОЗУ в более понятном для интерпретатора виде, перед тем, выполнится.
Что происходит вокруг языка
На loli уже давно портированы различные фреймворки для мультимедиа, разработки видео-игр и обработки данных такие как FreeGLUT, LoliGL, Lurl, loli-json.
На данный момент портируются Cairo, Pango, Freetype и GTK+ для создания пользовательского интерфейса, а также OpenCV для машинного зрения.
Авторы планируют также портировать остальные наиболее популярные технологии машинного обучения.
Ну а мы уже можем начать писать на loli, либо ждать, когда язык созреет.
Ссылки:
комментарии (48)