Войти
ФлеймФорумПрограммирование

Язык программирования Rust (4 стр)

Advanced: Тема повышенной сложности или важная.

Страницы: 1 2 3 4 5 Следующая »
#45
12:30, 28 июня 2016

Panzerschrek[CN]
> Есть такой код:
Что за суффикс 'l? Это как у шотландцев с О' и французов с Д', только наоборот?


#46
12:45, 28 июня 2016

TarasB
это lifetime generic parameter
перед тем как придумать синтаксис для раста, авторы хорошенько дунули

#47
12:46, 28 июня 2016

https://kgv.gitbooks.io/rust_book_ru/content/src/lifetimes.html

#48
13:10, 28 июня 2016

  Поковырял доки на предмет генериков. Плохая новость для крестовиков в том, что шаблонов, как в крестах, в расте нет. Вместо них есть что-то больше похожее на генерики в Java/C#, они даже так же называются: http://cglab.ca/~abeinges/blah/rust-generics-and-collections/. Так же нужно указывать ограничения на типы, чтобы можно было вызывать их методы и во что это компилируется остаётся только догадываться, так как в простых статейках для обывателя об этом не пишут. Естественно всякое метапрограммирование сразу идёт лесом. Ну собственно это и так было понятно: язык ни капельки не делался для того, чтобы писать на нём говнокод, который генерирует другой говнокод.
  И ещё так как наследования там типа как нет ("that's ok because it isn't necessary in most cases, so deal with it, bitches"), то понятие "A реализует B" реализовано через непонятную жопу под названием traits. В общем сплошные разочарования для целевой аудитории. Для кого этот язык становится ещё более непонятно.

#49
13:43, 28 июня 2016

Rust не оправдал надежд, imho.
Уникальная фича с borrow checker'ом привносит столько же неудобств, сколько и решает проблем.
Остальные вещи (хотя и правильные) не перевешивают запредельного количества библиотечного кода в "Си"-шной вселенной.
Хотел закрыть тему, но вы можете еще поныть, чисто для развлечения публики.

#50
15:54, 28 июня 2016

Один игродел жаловался, что из-за того, что по умолчанию в рантайме идет проверка на выход за границы массивов, производительность падает примерно на 10%.

#51
16:03, 28 июня 2016

funi
> Один игродел жаловался, что из-за того, что по умолчанию в рантайме идет
> проверка на выход за границы массивов, производительность падает примерно на
> 10%.
А умолчание не отрубается, да?
Или это не игродел, а говнодел, не знающий, что есть релиз-режим, а есть дебаг-режим?

#52
16:16, 28 июня 2016

LLVM по-моему вообще какой-то медленный.

#53
16:17, 28 июня 2016

Zefick
> Плохая новость для крестовиков в том, что шаблонов, как в крестах, в расте нет.
> Естественно всякое метапрограммирование сразу идёт лесом.
Есть нормальные макросы, которые используют синтаксическое дерево:
https://doc.rust-lang.org/book/macros.html

> так же нужно указывать ограничения на типы, чтобы можно было вызывать их методы
> и во что это компилируется остаётся только догадываться, так как в простых
> статейках для обывателя об этом не пишут.
https://doc.rust-lang.org/book/trait-objects.html
Можно вызывать статически, если тип известен:

Rust uses ‘monomorphization’ to perform static dispatch here.

Или вызывать динамически зная тип трейта:
Rust provides dynamic dispatch through a feature called ‘trait objects’.

funi
> Один игродел жаловался, что из-за того, что по умолчанию в рантайме идет
> проверка на выход за границы массивов, производительность падает примерно на 10%.
В дебаге еще и переполнение целых по-умолчанию проверяется.

Кот Зловред
> LLVM по-моему вообще какой-то медленный.
В принципе, вроде медленнее чем g++, но несмотря на это:
https://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=ru… amp;lang2=gpp

#54
16:39, 28 июня 2016

>В принципе, вроде медленнее чем g++, но несмотря на это:
>https://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=ru… amp;lang2=gpp
забавно, что выиграв у плюсов, раст потерпел поражение от "устаревшего" языка Си, по результатам того же сайта:
https://benchmarksgame.alioth.debian.org/u64q/rust.html

#55
16:40, 28 июня 2016

funi
> Флага компилятора такого точно нет и не будет. Вроде бы, надо обмазываться
> unsafe или юзать специальные методы для доступа к элементам массива.
При доступе через итераторы, и всяки map, fold, проверки границ нет.

Так же некоторый обычный код, перед которым берется  и проверяется длина неизменяемого массива,
и если можно вывести из дальнейших действий, что индексная переменная для доступа к элементу,
не будет выходить за границу, то оптимизатор удаляет проверку границ.

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

Если ты хочешь вытащить по индексу из переменной, которая никак не связана с кодом вокруг, то только unsafe.

#56
16:52, 28 июня 2016

ffinder
> забавно, что выиграв у плюсов, раст потерпел поражение от "устаревшего" языка
> Си, по результатам того же сайта:
Поражение, но очень мягкое. К тому же не забываем, что gcc генерирует более быстрый код.
Если тот же C скомпилить clang'ом, мне кажется, C проиграет.

Кот Зловред
> Сильно много на Rust'е не писал, но, мне кажется, что он нифига не проще C++.
> С его ownership-геморроями и каким-то подозрительными модулями он может быть даже сложнее.
Чтобы начать писать, нужно больше изучить, чем в плюсах. Но в конечном итоге меньше.

> Что-то мне подсказывает, что C++ всё равно бы всех страшно разорвал в этих
> тестах, если бы использовали не OMP, а TBB.
Можешь свой вариант реализации отправить.
Там еще исходники все есть, можно посмотреть.

#57
16:53, 28 июня 2016

funi
> производительность падает примерно на 10%.
  У меня на двух почти одинаковых процессорах дома и на работе разница в производительности и то больше (i5 4570 и 4670), так что не аргумент.

#58
17:04, 28 июня 2016

desss
>Чтобы начать писать, нужно больше изучить, чем в плюсах. Но в конечном итоге меньше.
ИМХО, сравнимое количество кода с плюсами, может даже немного больше в расте.
Особенно, учитывая как в расте нужно обрабатывать ошибки, и сколько "лишнего" кода нужно написать.
https://habrahabr.ru/post/270371/

#59
19:42, 28 июня 2016

ffinder
> Rust не оправдал надежд
Все тлен, все ржавчина

Страницы: 1 2 3 4 5 Следующая »
ФлеймФорумПрограммирование

Тема в архиве.