Эмбрионная стадия: все время меняется и само пока не особо жизнеспособно. Там GC-то уже сделали или все еще только собираются? Хотя в защиту говорит то, что вроде как оно self-hosted, компилятор на нем самом.
Разговоров о нем много последнее время, но реальных проектов не видно, что вполне ожидаемо на такой стадии.
Я уже довольно давно веду список языков-кандидатов на замену C/C++, сейчас там значатся: D http://www.digitalmars.com/d Go http://golang.org HaXe http://haxe.org Vala http://live.gnome.org/Vala Clay http://claylabs.com/clay Nimrod http://force7.de/nimrod/index.html Zimbu http://www.zimbu.org OOC http://docs.ooc-lang.org Brace http://sam.ai.ki/brace Rust http://www.rust-lang.org C2 http://www.c2lang.org SafeC http://chat-webcam-samuro.com/safe-c/start-en.html BitC http://www.bitc-lang.org Cyclone http://cyclone.thelanguage.org
Я пробовал на нем писать. В принципе пока мне очень все нравится. Я слежу за развитием этого языка почти с самого начала, еще с тех времен, когда ничего кроме спецификации небыло. С тех пор язык довольно сильно поменялся. Например, они убрали классы, решив, что структуры вполне себе их заменят. Они убрали typestate, потому что им никто не пользовался. В принципе, язык позволяет делать то же, что и С++, например, он умеет статический полиморфизм, но, в отличии от С++, он умеет это правильно. Например, я могу специализировать какую либо обобщенную сущьность для параметра определенного типа, как в с++, но для эмуляции разных языковых фич я использовать дженерики не буду, так как для этого есть совсем другой механизм (с помощью которого реализовано printf style форматирование с проверкой типов на стадии компиляции, как пример). Для параметров типов можно задавать type bounds и получать вменяемые сообщения об ошибках.
Самое вкусное в Rust, это легковесные потоки и модель памяти. Один легковесный поток занимает порядка килобайта памяти, их можно плодить в огромных количествах и строить свои абстракции на них, как в erlang. Модель памяти, это три типа владения объектами - owned, borrowed и managed указатели, ну и соответственно, возможность размещения объектов на стеке, в хипе(локальном для каждого потока) и в exchange heap, на объекты из которого можно ссылаться только через уникальный указатель, соотв. в языке реализована move semantics аки в с++ для таких указателей. В подробности вдаваться не буду, любой может почитать у них на сайте об этом. Насколько я понимаю, в самом начале чуваки как следует подумали на тему - как сделать так, чтобы простой dataflow анализ смог показать, может ли указатель быть безопасно разименован и, в итоге, пришли к такой модели.
Сейчас rust можно скачать, собрать (оно часа полтора собирается, не меньше, ибо тянет с собой LLVM и яростно его билдит) и даже написать чего нибудь. С библиотеками сейчас совсем все печально, на github совсем мало проектов на rust и они, как правило, игрушечные.
С golang его сравнивать глупо, go - на мой взгляд, скорее замена для питона на серверах гугла, а не замена С++ или С. А Rust, как раз для системного программирования, правда, у него есть свой runtime, его нельзя использовать как Си - без стандартной библиотеки.
no subject
(no subject)
(no subject)
(no subject)
(no subject)
no subject
в свою очередь, а этот критерий действительно необычен?
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
no subject
Погляди на ерланг лучше -- он ближе к реальности.
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
no subject
http://en.wikipedia.org/wiki/D_(programming_language)
http://en.wikipedia.org/wiki/Go_language
no subject
Хотя в защиту говорит то, что вроде как оно self-hosted, компилятор на нем самом.
Разговоров о нем много последнее время, но реальных проектов не видно, что вполне ожидаемо на такой стадии.
(no subject)
(no subject)
(no subject)
no subject
D http://www.digitalmars.com/d
Go http://golang.org
HaXe http://haxe.org
Vala http://live.gnome.org/Vala
Clay http://claylabs.com/clay
Nimrod http://force7.de/nimrod/index.html
Zimbu http://www.zimbu.org
OOC http://docs.ooc-lang.org
Brace http://sam.ai.ki/brace
Rust http://www.rust-lang.org
C2 http://www.c2lang.org
SafeC http://chat-webcam-samuro.com/safe-c/start-en.html
BitC http://www.bitc-lang.org
Cyclone http://cyclone.thelanguage.org
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(Anonymous) - 2013-01-27 12:11 (UTC) - Expand(no subject)
no subject
Сейчас джит делает код поэффективнее, чем статик компилятор.
(no subject)
no subject
(no subject)
(no subject)
(no subject)
(Anonymous) - 2013-01-26 12:21 (UTC) - Expandno subject
Первый же вопрос — а что там такого, чего нет в уже существующем?
Убрали побольше фишек, чтобы не было очень страшно?
(no subject)
(no subject)
no subject
no subject
no subject
Но смотрю на него с надеждой - давно хочу язык для втсраиваемых систем и быструю мозилу ;-).
(no subject)
no subject
В принципе, язык позволяет делать то же, что и С++, например, он умеет статический полиморфизм, но, в отличии от С++, он умеет это правильно. Например, я могу специализировать какую либо обобщенную сущьность для параметра определенного типа, как в с++, но для эмуляции разных языковых фич я использовать дженерики не буду, так как для этого есть совсем другой механизм (с помощью которого реализовано printf style форматирование с проверкой типов на стадии компиляции, как пример). Для параметров типов можно задавать type bounds и получать вменяемые сообщения об ошибках.
Самое вкусное в Rust, это легковесные потоки и модель памяти. Один легковесный поток занимает порядка килобайта памяти, их можно плодить в огромных количествах и строить свои абстракции на них, как в erlang. Модель памяти, это три типа владения объектами - owned, borrowed и managed указатели, ну и соответственно, возможность размещения объектов на стеке, в хипе(локальном для каждого потока) и в exchange heap, на объекты из которого можно ссылаться только через уникальный указатель, соотв. в языке реализована move semantics аки в с++ для таких указателей. В подробности вдаваться не буду, любой может почитать у них на сайте об этом. Насколько я понимаю, в самом начале чуваки как следует подумали на тему - как сделать так, чтобы простой dataflow анализ смог показать, может ли указатель быть безопасно разименован и, в итоге, пришли к такой модели.
Сейчас rust можно скачать, собрать (оно часа полтора собирается, не меньше, ибо тянет с собой LLVM и яростно его билдит) и даже написать чего нибудь. С библиотеками сейчас совсем все печально, на github совсем мало проектов на rust и они, как правило, игрушечные.
С golang его сравнивать глупо, go - на мой взгляд, скорее замена для питона на серверах гугла, а не замена С++ или С. А Rust, как раз для системного программирования, правда, у него есть свой runtime, его нельзя использовать как Си - без стандартной библиотеки.
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
(no subject)
(no subject)