]]> ]]>
Править | Обсудить | История

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
Логотип Rust

Примеры:

Hello, World!:

Пример для версий Rust 0.1
use 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.2
fn main() {
    println!("Hello, World!");
}

Факториал:

Пример для версий Rust 1.0.0-alpha.2
fn 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.2
fn 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

]]>

Работа программистам