Ключевые возможности Rust
От: Александр Ставонин Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 26.12.13 12:03
Оценка: 1225 (15)
Статья:
Ключевые возможности Rust
Автор(ы): Александр Ставонин
Дата: 20.06.2013
Краткое описание ключевых возможностей нового языка программирования Rust. Основной акцент делается на особенностях Rust, которых не хватает многим системным и сетевым разработчикам в других языках программирования.


Авторы:
Александр Ставонин

Аннотация:
Краткое описание ключевых возможностей нового языка программирования Rust. Основной акцент делается на особенностях Rust, которых не хватает многим системным и сетевым разработчикам в других языках программирования.
Re: Ключевые возможности Rust
От: DarkEld3r  
Дата: 28.12.13 13:07
Оценка:
Спасибо, интересно.

Если я правильно понял, то вот тут нeбольшая опечатка:

Для этого, как и для схемы «один-читатель-один-писатель», необходимо создать серверный (2) и клиентский (3) потоки и запустить серверную задачу (3). Логика серверной задачи предельно проста: считать (5)

Вместо второй тройки должна быть четвёрка?
Re: Ключевые возможности Rust
От: DarkEld3r  
Дата: 28.12.13 14:00
Оценка:
И ещё один момент интересен:

#[auto_encode] // (1)
#[auto_decode] // (2)

Неужели необходимость обьявлять только сериализуемые или десериализуемые структуры часто возникает?
Re[2]: Ключевые возможности Rust
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 30.12.13 14:52
Оценка:
Здравствуйте, DarkEld3r, Вы писали:

DE>И ещё один момент интересен:

DE>

DE>#[auto_encode] // (1)
DE>#[auto_decode] // (2)

DE>Неужели необходимость обьявлять только сериализуемые или десериализуемые структуры часто возникает?

Я вообще не понимаю, зачем нужен отдельно серриализатор и отдельно десерриализатор. Насколько я помню, по началу и то и то объявлялось разом, потом разнесли зачем-то.
Re: Ключевые возможности Rust
От: alex_public  
Дата: 04.01.14 03:05
Оценка:
Здравствуйте, Александр Ставонин, Вы писали:

Сама статья интересная и к ней в общем то претензий нет. Но хотелось бы (просто здесь или в рамках продолжения статьи) прояснения одного вопроса. Если некоторые преимущества Rust'a по отношению скажем к C++ можно здесь увидеть, то вот при сравнение его с D получается картинка скорее наоборот... Т.е. пока, если говорить исключительно о технической стороне, то совсем непонятно, с чего программист может выбрать Rust, а не D в качестве замены C++. Вот не технический аргумент я вижу: поддержка языка одной из мегакорпораций обещает ему потенциально более светлое будущее. А технических что-то не видно...
Re[2]: Ключевые возможности Rust
От: Cyberax Марс  
Дата: 04.01.14 03:37
Оценка: +2
Здравствуйте, alex_public, Вы писали:

_>Сама статья интересная и к ней в общем то претензий нет. Но хотелось бы (просто здесь или в рамках продолжения статьи) прояснения одного вопроса. Если некоторые преимущества Rust'a по отношению скажем к C++ можно здесь увидеть, то вот при сравнение его с D получается картинка скорее наоборот...

D намертво прикручен к тупому консервативному garbage collector'у. И в нём нет ничего нового для многопоточной работы. У Rust инновации в обоих областях:
1) Вполне реально можно обходиться без GC для достаточно сложных программ.
2) Отсутствие разделяемой памяти и семантика работы с заимстованными указателями — уникальна среди языков, которые хотят стать mainstream'ом.
3) D уж слишком заинжинерен и непонятно куда идёт.
Sapienti sat!
Re[2]: Ключевые возможности Rust
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 04.01.14 07:16
Оценка: 3 (1)
Здравствуйте, alex_public, Вы писали:

_>Сама статья интересная и к ней в общем то претензий нет. Но хотелось бы (просто здесь или в рамках продолжения статьи) прояснения одного вопроса. Если некоторые преимущества Rust'a по отношению скажем к C++ можно здесь увидеть, то вот при сравнение его с D получается картинка скорее наоборот...


Единственное "наоборот" со стороны D — это наличие бОльшего количества библиотек чем имеется в Rust на данный момент, но это вполне ожидаемо. При этом, в D нет ни проверки валидносит указателей на этапе компиляции, ни разделение памяти на шаренную и локальную. Собственно говоря, я вообще не вижу ни одной причины почему программист может выбрать D вместо C++, не говоря уже о сравнении с Rust Дабы не описывать почему не D, вот тут почитай, очень верно все написано.
Re[3]: Ключевые возможности Rust
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 04.01.14 10:20
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>D намертво прикручен к тупому консервативному garbage collector'у.


Не совсем. Например, в VisualD используется другой GC, существенно менее консервативный.
Плюс, вот такая штука зреет:
http://erdani.com/d/phobos-prerelease/std_allocator.html

C> И в нём нет ничего нового для многопоточной работы.

C>2) Отсутствие разделяемой памяти и семантика работы с заимстованными указателями — уникальна среди языков, которые хотят стать mainstream'ом.

Особо нового может и нет, но старые вещи сделаны довольно удобно.
erlang-style message passing:
http://dlang.org/phobos/std_concurrency.html

parralel for/map/reduce/etc:
http://dlang.org/phobos/std_parallelism.html

+файберы
Плюс система типов таки дает определенную изоляцию потоков: все глобальные переменные по-умолчанию thread-local, а посылать в сообщениях между потоками можно либо immutable либо explicitly shared. К сожалению, с т.з. GC куча у потоков общая, тут в Rust намного лучше сделано.
Re[3]: Ключевые возможности Rust
От: alex_public  
Дата: 04.01.14 14:13
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>D намертво прикручен к тупому консервативному garbage collector'у.


Вообще то надо понимать место GC в D... К примеру у меня бывает что код вообще его ни разу не использует. Причём не благодаря каким-то хитрым извращениям, а просто привычная (из C++) работа в основном со стековыми переменными...

C>И в нём нет ничего нового для многопоточной работы.


Ха, как раз в смысле многопоточности в D ситуация побогаче. В нём есть как полноценная архитектура акторов (и кстати похоже поудобнее чем в Rust'e, т.к. там реализовано некое подобие сопоставления с образцом из Эрланга), так и ещё несколько более классических моделей параллелизма.

C>У Rust инновации в обоих областях:

C>1) Вполне реально можно обходиться без GC для достаточно сложных программ.

Как и в D. ) Собственно в D можно писать на 3-мя разными стилями (и спокойно смешивать их). Можно извращаться с голыми указателями в стиле C. Можно работать в рамках RAII (и соответственно упор на метафору объект-значение) как в C++. А можно работать через GC (и соответственно использовать метафору объект-ссылка), как в Java.

C>2) Отсутствие разделяемой памяти и семантика работы с заимстованными указателями — уникальна среди языков, которые хотят стать mainstream'ом.


Да есть это всё в D. )))

C>3) D уж слишком заинжинерен и непонятно куда идёт.


Не очень понятны претензии. Единственно что у D пока нет поддержки ни одной из мегакорпорации. Это да, существенный недостаток. Хотя там какие-то намёки на Facebook были в последнее время, но я бы предпочёл кого-то посерьёзнее, а не этот мыльный пузырь. )))
Re[3]: Ключевые возможности Rust
От: alex_public  
Дата: 04.01.14 14:40
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Собственно говоря, я вообще не вижу ни одной причины почему программист может выбрать D вместо C++, не говоря уже о сравнении с Rust


Нет, вообще то сравнение у нас как раз D с Rust, а C++ стоит в сторонке как бы, т.к. он и так текущий лидер, которого пытаются заменить данные новички.

Ну и сразу небольшое отступление: я с Rust'ом практически не знаком, максимум знаю в рамках этой статьи и ещё подобных же кратких обзоров. Так что буду высказываться именно в рамках эти знаний — если окажется что какие-то функции есть в языке, а просто не попали в обзоры, то поправляйте меня естественно.

Так вот, смотря на все эти обзоры Rust'a я совсем не вижу метапрограммирования. Т.е. даже хотя бы такого как в C++ (в D оно ещё намного сильнее чем в плюсах). А это очень существенная часть языка, причём отлично сочетающаяся и нужная как раз в системных языках, т.к. она позволяет вносить в язык очень высокий абстракции при этом не добавляя ни капли оверхеда в рантайм. Возможно эту тему (а так же вопросы гибкости языка, такие как переопределение операторов, макросы и т.п.) просто не затрагивали в обзорах. Но если этого действительно нет в языке, то тогда Rust может претендовать максимум на замену C, но никак не на замену C++...

KP>Дабы не описывать почему не D, вот тут почитай, очень верно все написано.


Да, довольно справедливое описание расклада сил C++ vs D. Фокус в том, что если мы напишем аналогичный текст про C++ vs Rust, то получим буквально тоже самое, только в ещё большей степени (т.к. язык ещё более молодой и неустановившийся).
Re[4]: Ключевые возможности Rust
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 04.01.14 14:49
Оценка:
Здравствуйте, alex_public, Вы писали:


_>Нет, вообще то сравнение у нас как раз D с Rust, а C++ стоит в сторонке как бы, т.к. он и так текущий лидер, которого пытаются заменить данные новички.



Еще раз. Главных фич в Rust которых нет и не может быть в D и C++ на релиз 0.8 две. Причем эти фичи настолько прекрасны, что за их наличие системный разработчик, например я, многое языку простит:
1. Проверка валидносит указателей на момент компиляции.
2. Модель памяти великолепно подходящая для многопоточных приложений.

Ну а мелкие радости типа метапрограммирования, конечно есть, просто они много где есть для того, что бы на них внимание заострять.
Re[5]: Ключевые возможности Rust
От: C.A.B LinkedIn
Дата: 04.01.14 15:58
Оценка:
Здравствуйте, kaa.python, Вы писали:
Интересная статья. Спасибо.

Набудущее:
KP>1. Проверка валидносит указателей на момент компиляции.
Хотелось бы больше узнать об этом.
А так-же о поддержке WinAPI, и сторонних библиотек.
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)
Re[6]: Ключевые возможности Rust
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 04.01.14 17:13
Оценка:
Здравствуйте, C.A.B, Вы писали:

CAB>Интересная статья. Спасибо.


Рад что понравилась, очень старался

KP>>1. Проверка валидносит указателей на момент компиляции.

CAB>Хотелось бы больше узнать об этом.

Об этом немного есть в статье, просто размазанно по тексту. Информацию на английском можно прочитать тут.

CAB>А так-же о поддержке WinAPI, и сторонних библиотек.


О какой конкретно поддержке идет речь? В составе стандартной библиотки есть различные IO функции, ну и любая функция из WinAPI может быть экспортирована через FFI и использована.
Re[4]: Ключевые возможности Rust
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 04.01.14 17:51
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Да, довольно справедливое описание расклада сил C++ vs D. Фокус в том, что если мы напишем аналогичный текст про C++ vs Rust, то получим буквально тоже самое, только в ещё большей степени (т.к. язык ещё более молодой и неустановившийся).


Не получим, т.к. один язык фактически который никак не закопают, а второй даже до версии 1.0 не дошел
Re[7]: Ключевые возможности Rust
От: C.A.B LinkedIn
Дата: 04.01.14 19:05
Оценка:
KP>>>1. Проверка валидносит указателей на момент компиляции.
CAB>>Хотелось бы больше узнать об этом.
KP>Об этом немного есть в статье, просто размазанно по тексту. Информацию на английском можно прочитать тут.
Компилтайм валидация указателей — интересная проблема, некогда и я пытался её решить , ИМХО стоит написать об этом отдельную главу.

CAB>>А так-же о поддержке WinAPI, и сторонних библиотек.

KP>О какой конкретно поддержке идет речь? В составе стандартной библиотки есть различные IO функции, ну и любая функция из WinAPI может быть экспортирована через FFI и использована.
О том есть ли готовые бинденги и если нету как их можно сделать. Вообще я бы хотел тутореал "для самых маленьких" с примерами и картинками. Начиная у установки и настройки среды, далее где-то в средине "...а вот так мы можем показать MessageBox...", и где-то под конец "...ну а вод таким, хитрым способом мы можем распараллелить обработку оконных сообщений...".

PS: Это моё ИМХО: "что бы я хотел узнать" из будущих твоих статей, если таковые будут.
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)
Re[5]: Ключевые возможности Rust
От: alex_public  
Дата: 04.01.14 20:09
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>1. Проверка валидносит указателей на момент компиляции.


Про это в статье практически ничего не увидел.

KP>2. Модель памяти великолепно подходящая для многопоточных приложений.


Про саму модель памяти в статье очень подробно написано, но вот преимущества по сравнению с другими системами не особо видны.

KP>Ну а мелкие радости типа метапрограммирования, конечно есть, просто они много где есть для того, что бы на них внимание заострять.


Не так уж и много где среди основных языков, а тем более системных.
Re[5]: Ключевые возможности Rust
От: alex_public  
Дата: 04.01.14 20:17
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Не получим, т.к. один язык фактически который никак не закопают, а второй даже до версии 1.0 не дошел


Никак не закопают? ) Как раз в указанной статье был хороший тезис, что C++11 нанёс приличный урон по D своим появлением. На мой взгляд этот же самый факт касается и Rust'a... )

Ну и D в последнее время достаточно стабильный стал, особенно после окончания разборок между стандартными библиотеками. )))
Re[4]: Ключевые возможности Rust
От: DarkEld3r  
Дата: 04.01.14 20:23
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Фокус в том, что если мы напишем аналогичный текст про C++ vs Rust, то получим буквально тоже самое, только в ещё большей степени (т.к. язык ещё более молодой и неустановившийся).

Всё-таки нет. Автор ведь упирает на то, что "время упущено" — то есть потенциал был, но им своевременно не воспользовались.
А раст появился позже и (ещё) не успел ничего упустить. (:

Впрочем, именно этот аргумент мне кажется так себе.
Re[5]: Ключевые возможности Rust
От: alex_public  
Дата: 04.01.14 20:45
Оценка:
Здравствуйте, DarkEld3r, Вы писали:

DE>Всё-таки нет. Автор ведь упирает на то, что "время упущено" — то есть потенциал был, но им своевременно не воспользовались.

DE>А раст появился позже и (ещё) не успел ничего упустить. (:

Там в основном речь шла о появление C++11... А этот факт точно так же влияет на Rust, как и на D. Причём C++ только пошёл сейчас в активное развитие (даже MS сейчас вернулась к активной разработке его, вместо впаривания всем .net'a), так что дальше будет только хуже. Т.е. я как бы даже согласен с аргументами той статьи, но они создают одинаковое печальное состояние и для D и для Rust. Конечно оба последних языка (если конечно в Rust'е действительно есть метапрограммирование) лучше чем C++, но уже не настолько как было в сравнение с C++03. И подобный переход для очень многих уже не стоит потери кучи плюшек C++, происходящих из супер развитой инфраструктуры языка.
Re[6]: Ключевые возможности Rust
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 05.01.14 07:30
Оценка:
Здравствуйте, alex_public, Вы писали:

KP>>2. Модель памяти великолепно подходящая для многопоточных приложений.

_>Про саму модель памяти в статье очень подробно написано, но вот преимущества по сравнению с другими системами не особо видны.

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

KP>>Ну а мелкие радости типа метапрограммирования, конечно есть, просто они много где есть для того, что бы на них внимание заострять.

_>Не так уж и много где среди основных языков, а тем более системных.

С C++ есть, что уже дофига.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.