- Rust (язык программирования)
-
Rust Семантика: мультипарадигмальный: параллельное, функциональное, объектно-ориентированное, императивное, структурное программирование
Тип исполнения: Появился в: 2010
Автор(ы): Грэйдон Хор
Расширение файлов: .rs .rc
Релиз: 0.4 (15 октября 2012)
Типизация данных: статическая, строгая, с выводом типов, опционально динамическая
Основные реализации: rustc
Испытал влияние: Alef, C++, Camlp4, Common Lisp, Erlang, Haskell, Hermes, Limbo, Napier, Napier88, Newsqueak, NIL, Sather, Standard ML
Лицензия Сайт: 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 от 23 июля 2012. В то же время, с учетом того, что язык находится в стадии активной разработки, код может не собираться на данное время.
fn main(args: ~[str]) { io::println("hello world from '" + 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; } ret result; // An explicit return, in contrast to the above. }
Ссылки
- ↑ The Rust Language. Lambda the Ultimate (8 июля 2010). Архивировано из первоисточника 23 ноября 2012. Проверено 30 октября 2010.
- ↑ Project FAQ (14 сентября 2010). Проверено 17 апреля 2012.
- ↑ 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.» Архивировано из первоисточника 18 сентября 2012. Проверено 17 апреля 2012.
- ↑ Hoare, Graydon Rust Progress (2 октября 2010). Архивировано из первоисточника 18 сентября 2012. Проверено 17 апреля 2012.
- ↑ Hoare, Graydon [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.
- ↑ Walton, Patrick 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++0xunique_ptr
), and reference counting viashared_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…» Архивировано из первоисточника 18 сентября 2012. Проверено 17 апреля 2012.
На эту статью не ссылаются другие статьи Википедии. Пожалуйста, воспользуйтесь подсказкой и установите ссылки в соответствии с принятыми рекомендациями.Категории:- Появились в 2010 году
- Языки программирования по алфавиту
- Функциональные языки программирования
- Процедурные языки программирования
- Mozilla
Wikimedia Foundation. 2010.