LINUX.ORG.RU

Опрос о состоянии Rust 2020

 


2

8

Сообщество Rust запустило опрос о состоянии языка и экосистемы 2020 State of Rust Survey.

Цель опроса – выявить слабые и сильные стороны языка и определить приоритеты разработки.

Опрос опубликован на нескольких языках, участие анонимно и потребует около 10-15 минут. Ответы принимаются до 24 сентября.

Результаты прошлого года

Ссылка на форму 2020 State of Rust на русском языке

>>> Подробности

★★★★★

Проверено: alpha ()
Последнее исправление: unfo (всего исправлений: 3)

Ответ на: комментарий от xaizek

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

нравится ли вам раст

Но это очень хорошо разбито по категориям. И если например, условно, в вопросе «насколько вы хорошо понимаете lifetimes» ничего не поменялось или значительно ухудшилось, то значит за год все меры по улучшению этого были неэффективны, сообщество как не шарило, так не шарит.

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 1)

чем вам руст не угодил? язык без null pointer-ов - это вообще имба 10-ого уровня.

запретить unwrap, unsafe и другие операции приводящие к панике. для бизнес логики - идеальная концепция языка.

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

none
()
Ответ на: комментарий от RazrFalcon

Допустим, я его соберу. Кроме как удалить результат сборки ничего с ним больше не сделаешь.

Лучше бы ты патчи опционального использования своей библиотеки в существующих приложениях пропихивал. А то толкуто от неё?

grem ★★★★★
()

Если у разработчиков нет плана для развития, то это путь в никуда. Опрос тому доказательство. Такие яп ненужны!

anonymous
()
Ответ на: комментарий от mord0d

Rust тащит свою версию LLVM, поэтому и речь про clang была.

Мне как-то без разницы кто-как его оценивает. Я на нём просто пишу. И мои либы зачастую лучше альтернатив на других языках (например resvg, ttf-parser, roxmltree).

RazrFalcon ★★★★★
()
Ответ на: комментарий от none

и другие операции приводящие к панике

Тут всё на так просто, увы.

RazrFalcon ★★★★★
()
Ответ на: комментарий от grem

Допустим, я его соберу.

Поймёте, что librsvg собирается долго не из-за раста.

А то толкуто от неё?

Для использования в коммерческих приложениях. Ваш КО. То что она не используется в вашем ненужно-просмотырщике меня мало волнует.

патчи опционального использования

В большинстве дистров так и не решили как собирать раст. Как разберутся - пусть добавляют пакет с либой. А там уже патчи слать можно.

RazrFalcon ★★★★★
()
Ответ на: комментарий от RazrFalcon

Поймёте, что librsvg собирается долго не из-за раста.

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

Для использования в коммерческих приложениях. Ваш КО. То что она не используется в вашем ненужно-просмотырщике меня мало волнует.

И называются эти приложения: <пустой список>?

В большинстве дистров так и не решили как собирать раст. Как разберутся - пусть добавляют пакет с либой. А там уже патчи слать можно.

Прежде чем что-то отослать, это должно быть сделано.

grem ★★★★★
()

Проверено: alpha

Шпион не дремлет.

anonymous
()
Ответ на: комментарий от mord0d

memory-safe в расте это про отсутствие гонок данных, чтения неинициализированной памяти или за пределами буфера (в safe части языка, при условии, что unsafe соблюдает эти же условия). Утечка памяти под это не подпадает, и даже (разовая) довольно часто используется.

Siborgium ★★★★★
()

Та еще зараза этот Rust. Долго мучался с librsvg, а потом плюнул, накатил его старую версию и сборка дистриба на базе LFS пошла как по маслу.

b0r1s
()
Ответ на: комментарий от b0r1s

Эм, тупишь ты, а виноват Раст? Как раз в Расте проблемы со сборкой (либ) в основном из-за биндингов с реальным адом сборщиков - C и C++

anonymous
()
Ответ на: комментарий от grem

И называются эти приложения: <пустой список>?

Ну вот зачем ездить по затертым рельсам «вот когда …, тогда поговорим» и «<вы здесь>».

Уже написали кучу коммерческих приложений. Что толку их сюда писать если из запросто пациенты вроде тебя назовут «врети» и нещитосом, «вот когда Х перепишут, тогда поговорим»

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от perl5_guy

Кстати, какие книжки по Си читать в 2020 году,

Что там читать то?

Если будете понимать: *, &, struct, void и операторы для создания алгоритма, то остальное все «приложится».

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

Владимир

anonymous
()
Ответ на: комментарий от grem

Не разобраться в проблеме, но тут же побежать набрасывать - это по вашей части.

librsvg в генту два года добавляли, так что не надо тут.

RazrFalcon ★★★★★
()
Ответ на: комментарий от anonymous

Что там читать то?

Aliasing rules, integral promotion rules, objects lifetime, error processing, structure packing и всё-всё, на что типичные сишники кладут болт.

RazrFalcon ★★★★★
()
Последнее исправление: RazrFalcon (всего исправлений: 1)
Ответ на: комментарий от perl5_guy

C Programming A Modern Approach, K. N. King по C99. Потом свободную Modern C.

anonymous
()
Ответ на: комментарий от RazrFalcon

… на что типичные сишники кладут болт.

Так то не сишники, а называющие себя СИШНИКАМИ.

Владимир

anonymous
()
Ответ на: комментарий от anonymous

Сколько лет живу, а всё ещё не видел ни одного проекта на C/C++ написанного по фен-шую (впрочем на других ЯП тоже). Всегда на что-то кладут болт потому что время не бесконечно на разработку и есть дедлайн к которому фигак-фигак делают. Хотя бы на логи и тесты с многопоточностью. Покажите мне Ъ-сишника, а то в палату мер и весов никак образец найти не могу. А уж в коммерческом и очень ответственном софте я такие ужасы видел, что спать страшно, зная как некоторые штуки работают и что надо сделать чтобы они перестали работать и случилось то же, что и в Бхопале. Из свеженького могу вспомнить сериализацию в своём велосипедном текстовом формате строк с использованием редко встречаемого символа юникода, но без проверок на ввод от юзера и экранирования, что это вообще за глупость такая?, так что символ при желании вводится и ломает всю софтину.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 5)

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

bernd ★★★★★
()
Ответ на: комментарий от peregrine

Шутка

Дружище, погугли «habr.com об освобождении памяти», «habr.com об освобождении памяти проверка синтаксиса программы», чтобы кошмары не мучили.
Некоторые так вообще советуют не освобождать, потому как мол ОС сама освободит все ресурсы процесса.
Вообще то если использовать локальную, а не глобальную память, то где-то они правы /но правы где-то далеко, далеко/.

Владимир

anonymous
()
Ответ на: комментарий от peregrine

У кого что болит. Если туда ещё и ООП добавить, будет мегапиздец.

anonymous
()
Ответ на: комментарий от bernd

у раста самый дерьмовый синтаксис что я видел, дерьмовее только у бреинфака.

Как тебе синтаксис WebAssembly?

(module
 (memory (import "js" "mem") 1)
 (func $print (import "js" "print") (param i32))
 (func $byte_offset
       (param $index i32)
       (result i32)
       (i32.mul 
        (i32.sub 
         (i32.sub (i32.const 4) (get_local $index))
         (i32.const 1))
        (i32.const 8)))
 (func $get_byte
       (param $pixel i32)
       (param $index i32)
       (result i32)
       (i32.shr_u 
        (i32.and 
         (get_local $pixel)
         (i32.shl (i32.const 255) (call $byte_offset (get_local $index))))
        (call $byte_offset (get_local $index))))
 (func $set_byte
       (param $pixel i32)
       (param $index i32)
       (param $byte i32)
       (result i32)
       (i32.or
        (get_local $pixel)
        (i32.shl (get_local $byte) (call $byte_offset (get_local $index)))))
 (func $convert_pixel
       (param $pixel i32)
       (result i32)
       (local $result i32)
       (set_local $result (i32.const 0))
       (set_local $result
                  (call $set_byte (get_local $result)
                        (i32.const 0)
                        (call $get_byte (get_local $pixel)
                              (i32.load8_u (i32.const 12)))))
       (set_local $result
                  (call $set_byte (get_local $result)
                        (i32.const 1)
                        (call $get_byte (get_local $pixel)
                              (i32.load8_u (i32.add (i32.const 12)
                                                    (i32.const 1))))))
       (set_local $result
                  (call $set_byte (get_local $result)
                        (i32.const 2)
                        (call $get_byte (get_local $pixel)
                              (i32.load8_u (i32.add (i32.const 12)
                                                    (i32.const 2))))))
       (set_local $result
                  (call $set_byte (get_local $result)
                        (i32.const 3)
                        (call $get_byte (get_local $pixel)
                              (i32.load8_u (i32.add (i32.const 12)
                                                    (i32.const 3))))))
       (get_local $result))
 (func (export "bng_process")
       (local $index i32)
       (local $count i32)
       (local $address i32)
       (set_local $count (i32.mul (call $bng_width) (call $bng_height)))
       (block
        $exit
        (loop
         $repeat
         (br_if $exit (i32.ge_s
                       (get_local $index)
                       (get_local $count)))
         (set_local $address
                    (i32.add
                     (i32.const 16)
                     (i32.mul
                      (get_local $index)
                      (i32.const 4))))
         (i32.store (get_local $address) (call $convert_pixel (i32.load (get_local $address))))
         (set_local $index (i32.add (get_local $index) (i32.const 1)))
         (br $repeat))))
 (func (export "bng_offset")
       (result i32)
       (i32.const 16))
 (func $bng_width (export "bng_width")
       (result i32)
       (i32.load (i32.const 4)))
 (func $bng_height (export "bng_height")
       (result i32)
       (i32.load (i32.const 8)))
 (func (export "bng_size")
       (result i32)
       (i32.mul
        (i32.mul
         (call $bng_width)
         (call $bng_height))
        (i32.const 4))))
fsb4000 ★★★★★
()
Ответ на: комментарий от bernd

у раста самый дерьмовый синтаксис что я видел

Тю, синтаксис. Да, дерьмовый как у всех сишных ублюдков, может чуть мусорнее плюсишки. Дело не в синтаксисе, а в напрочь отмороженной «семантике» (как выражается царь), из-за которой ничего кроме убогонькой скриптухи написать на safe rust невозможно. А unsafe rust это классическое удаление гланд через жопу. Всё то же самое можно в 10 раз быстрее и короче написать на сишке (читай на говне мамонта из 60-х). Итого, за 40 лет яйцеголовые ублюдки из CS не смогли родить ничего лучше грёбаного C++. Всё, занавес. Эта цивилизация в тупике, надо обнулять.

anonymous
()
Ответ на: комментарий от fsb4000

Как тебе синтаксис WebAssembly?

Здравые мысли в этой технологии имеются.
Пока все в «развитии» и конечно спецификация WebAssembly будет многократно изменена/дополнена, …

Владимир

anonymous
()
Ответ на: комментарий от fsb4000

Как тебе синтаксис WebAssembly?

Нет бы быть последовательным - божественный xml вместо скобочного безобразия.

anonymous
()
Ответ на: комментарий от anonymous

А что вы предлагаете взамен? Я не говорю что больше ничего нет, просто интересно что Вы предложите )

rk-d
()
Ответ на: комментарий от perl5_guy

Пиши на Perl’е в браузере-то

Ага, надевай трусы через голову. Perl мертв и точка. На нем только некромонгеры поддерживают умирающие проекты.

С - это правильный путь, его должен знать каждый разработчик, пока не придумали что-то лучше. Rust - это промежуточное месиво, попытка сделать «лучший С».

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

anonymous
()
Ответ на: комментарий от AKonia

В плюсах не хватает комитета по отчистки накопившихся говен.

WatchCat ★★★★★
()
Ответ на: комментарий от vertexua

Хорошо, их имена слишком известны, чтобы их называть.

Про «пусть перепишут» - не ко мне. Хорошие удобные приложения переписывать смысла нет, а недоделанные и плохие тем более. Лучше полностью своё новое писать, чтобы закрыть свои хотелки.

grem ★★★★★
()
Ответ на: комментарий от fsb4000

ЛМАО. Это elm то, Go из мира функциональщины, записали в «new generation»? Полностью стерильный ЯП, нифига не выразительный, с примитивной системой типов. Где всё, что не осилил автор, записывается в ненужно?

Я понимаю, Idris бы туда включили, где компилятор умеет в ряде случаев по типу функции самостоятельно выводить реализацию. Это хотя бы интересно. Что из «нового поколения» предлагает elm?

anonymous
()
Ответ на: комментарий от bernd

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

А так там ничего такого страшного нет.

WatchCat ★★★★★
()
Ответ на: комментарий от bernd

Можно конкретных примеров? Желательно в сравнении с неким эталоном.

anonymous
()
Ответ на: комментарий от fsb4000

Как тебе синтаксис WebAssembly?

Синтаксис замечательный. Простой как три копейки, без мусорных надстроек и исключений, просто парсится. При этом стоит помнить, что с самого начала ручное написание кода webasm - это «non-goal», так что аргумент мимо кассы.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.