Rust
- Дата создания:
- январь 2012
- Создан под влиянием:
- Парадигма:
- Типизация:
- Принятые расширения файлов:
- .rs, .rc
- Реализации и версии (свернуть все | развернуть все):
Rust — мультипарадигменный экспериментальный язык программирования, разрабатываемый Mozilla Labs.
Работа над языком началась в 2006 году; вначале она велась Грейдоном Хоаром (Graydon Hoare), Mozilla Labs подключились только в 2009 году. Первый поддерживаемый релиз был выпущен в январе 2012 года.
Rust предназначен для разработки масштабных клиент-серверных приложений для использования в интернете. Идеология языка ориентирована на создание и поддержку границ — как абстрактных, так и практических, — которые бы поддерживали целостность, доступность и параллелизм больших систем. Создатели языка задались целью собрать все лучшие черты уже существующих языков и скомбинировать их, не внося при этом новых непроверенных элементов.
Авторы языка подчеркивают, что в настоящее время язык находится в активной разработке, и любые его свойства могут изменяться в более поздних версиях. Предполагаемые основные характеристики Rust:
- C-подобный синтаксис и значительно отличающаяся семантика.
- безопасность работы с памятью: никаких “диких” указателей (указывающих на несуществующие объекты), никаких нулевых указателей, автоматическое управление памятью.
- контроль изменчивости: по умолчанию значения неизменяемы, и не существует изменяемых значений, общих для нескольких потоков.
- безопасность динамического исполнения: ведение логов, обработка исключительных ситуаций “раскручиванием”.
- система “typestate”, позаимствованная из языка NIL: она позволяет определять сложные инварианты, которые должны сохраняться до и после выполнения операций.
- явное управление памятью, расположением объектов и выделением памяти.
- потоки-сопроцессы, требующие минимум ресурсов и как следствие легко создающиеся в огромных количествах.
- статическая компиляция, использующая LLVM (в том числе оптимизации) и при необходимости производящая файлы ELF / PE / Mach-O.
- простой интерфейс с C.
- поддержка чисто функциональной парадигмы, функции как объекты первого класса.
- поддержка объектно-ориентированной парадигмы, но структурная (а не номинативная) типизация и как следствие — отсутствие иерархии, основанной на классах.
Логотип Rust
Примеры:
Hello, World!:
Пример для версий Rust 0.1use std;
import std::io;
fn main() {
io::println("Hello, World!");
}
Факториал:
Пример для версий Rust 0.1В этом примере используется рекурсивное вычисление факториала. Из-за переполнения типа uint
значения 13! и больше выводятся с ошибкой.
use std;
import std::io;
fn factorial(x: int) -> uint {
if (x <= 1) {
ret 1u;
} else {
ret (x as uint) * factorial(x - 1);
}
}
fn main() {
let i = 0;
while i <= 16 {
io::println(#fmt("%d! = %u", i, factorial(i)));
i = i + 1;
}
}
Числа Фибоначчи:
Пример для версий Rust 0.1Используется рекурсивное вычисление чисел Фибоначчи.
use std;
import std::io;
fn fibonacci(x: int) -> int {
if (x <= 2) {
ret 1;
} else {
ret fibonacci(x - 1) + fibonacci(x - 2);
}
}
fn main() {
let i = 1;
while i <= 16 {
io::print(#fmt("%d, ", fibonacci(i)));
i = i + 1;
}
io::println("...");
}
Hello, World!:
Пример для версий Rust 1.0.0-alpha.2fn main() {
println!("Hello, World!");
}
Факториал:
Пример для версий Rust 1.0.0-alpha.2fn factorial(x: i64) -> i64 {
if x <= 1 {
1
} else {
x * factorial(x - 1)
}
}
fn main() {
for i in 0..17 {
println!("{}! = {}", i, factorial(i));
}
}
Числа Фибоначчи:
Пример для версий Rust 1.0.0-alpha.2fn fibonacci(x: i64) -> i64 {
if x <= 2 {
1
} else {
fibonacci(x - 1) + fibonacci(x - 2)
}
}
fn main() {
for i in 1..17 {
print!("{}, ", fibonacci(i));
}
println!("...");
}
Комментарии
]]>blog comments powered by Disqus
]]>