Rust

20-05-2023

(перенаправлено с «Rust»)
Перейти к: навигация, поиск
Rust
Семантика:

мультипарадигмальный: параллельное, функциональное, объектно-ориентированное, императивное, структурное программирование

Тип исполнения:

компилируемый

Появился в:

2010

Автор(ы):

Грэйдон Хор

Расширение файлов:

.rs .rc

Релиз:

0.7 (3 июля 2013)

Типизация данных:

статическая, строгая, с выводом типов, опционально динамическая

Основные реализации:

rustc

Испытал влияние:

Alef, C++, Camlp4, Common Lisp, Erlang, Haskell, Hermes, Limbo, Napier, Napier88, Newsqueak, NIL, Sather, OCaml, Standard ML

Лицензия

MIT

Сайт:

rust-lang.org

Rust — экспериментальный язык программирования, разрабатываемый Mozilla Research[1]. Работа над языком была начата Грэйдоном Хоаром в 2006 году, в 2009[2] к разработке подключилась Mozilla, и в 2010 году язык был официально представлен на Mozilla Summit 2010[3]. Также в 2010 году разработка языка была переведена с использования компилятора, написанного на OCaml, на компилятор, написанный на Rust, с использованием LLVM в качестве back-end[4]. В следующем году он успешно скомпилировал сам себя[5].

Описание

Основная задача Rust — быть удобным языком для написания больших клиент-серверных приложений, работающих в сети Интернет. Такое позиционирование привело к выбору функциональных возможностей с акцентом на безопасность, контроль за использованием памяти и параллельное выполнение задач. Разработчиками языка ставится задача достичь производительности приложений на Rust сравнимой с производительностью C++-приложений[6]. Rust намеренно не включает в себя каких-то новых и непроверенных идей. Проект нацелен на сбор лучших возможностей из уже существующих языков и решений.

Примеры

Нижеследующие примеры являются рабочими при сборке с помощью компилятора Rust от 6 мая 2013. В то же время, с учётом того, что язык находится в стадии активной разработки, код может не работать в более поздних версиях.

Hello world:

extern mod std;
fn main() {
    let args = os::args();
    io::println(fmt!("hello world from '%s'!", args[0]));
}

Пара примеров реализации функции поиска факториала, в рекурсивном и итеративном стилях:

/* The branches in this function exhibit Rust's optional implicit return values,
   which can be utilized where a more "functional" style is preferred.
   Unlike C++ and related languages, Rust's `if` construct is an expression
   rather than a statement, and thus has a return value of its own. */
fn fac_recur(n: int) -> int {
    if n <= 1 { 1 }
    else { n * fac_recur(n-1) }
}
 
fn fac_iter(n: int) -> int {
    // Variables must be declared with the `mut` keyword in order to be mutable.
    let mut i = 1,
            result = 1;
    while i <= n {
        result *= i;
        i += 1;
    }
    return result;  // An explicit return, in contrast to the above.
}

Примечания

  1. The Rust Language. Lambda the Ultimate (8 июля 2010). Проверено 30 октября 2010. Архивировано из первоисточника 23 ноября 2012.
  2. Project FAQ (14 сентября 2010). Проверено 17 апреля 2012.
  3. Future Tense (29 апреля 2011). — «At Mozilla Summit 2010, we launched Rust, a new programming language motivated by safety and concurrency for parallel hardware, the “manycore” future which is upon us.»  Проверено 17 апреля 2012. Архивировано из первоисточника 18 сентября 2012.
  4. Rust Progress (2 октября 2010). Проверено 17 апреля 2012. Архивировано из первоисточника 18 сентября 2012.
  5. [rust-dev] stage1/rustc builds (20 апреля 2011). — «After that last change fixing the logging scope context bug, looks like stage1/rustc builds. Just shy of midnight :)»  Проверено 17 апреля 2012.
  6. C++ Design Goals in the Context of Rust (5 декабря 2010). — «… It’s impossible to be “as fast as C” in all cases while remaining safe… C++ allows all sorts of low-level tricks, mostly involving circumventing the type system, that offer practically unlimited avenues for optimization. In practice, though, C++ programmers restrict themselves to a few tools for the vast majority of the code they write, including stack-allocated variables owned by one function and passed by alias, uniquely owned objects (often used with auto_ptr or the C++0x unique_ptr), and reference counting via shared_ptr or COM. One of the goals of Rust’s type system is to support these patterns exactly as C++ does, but to enforce their safe usage. In this way, the goal is to be competitive with the vast majority of idiomatic C++ in performance, while remaining memory-safe…»  Проверено 17 апреля 2012. Архивировано из первоисточника 18 сентября 2012.

Ссылки

  • rust-lang.org — официальный сайт языка программирования Rust

Rust.

© 2011–2023 stamp-i-k.ru, Россия, Барнаул, ул. Анатолия 32, +7 (3852) 15-49-47