LINUX.ORG.RU

Доказана эффективность Rust

 , , , ,


3

6

… но на самом деле не совсем. Доказана типобезопасность подмножества Rust. Соответствующая статья опубликована аж целых два года назад. А доказательство верифицировано, просто афигенский рокетсайнс.

Считаю, что об этом полезно будет узнать жителям ЛОРа, особенно некоторым анонимам.

P.S. Сам с удивлением узнал сей факт, читая наброс humbug на хабре. Очень качественный наброс, кстати. Рекомендую.



Последнее исправление: future_anonymous (всего исправлений: 3)
Ответ на: комментарий от byko3y

Аж захотелось на паскалике покодить. Неужели сравнимо по перфомансу с ручной векторизацией в крестах?

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

О как. Получение значений неинициализированных переменных в типобезопасность похоже не входит.

with Ada.Text_IO; use Ada.Text_IO;

procedure Hello is
    type U16 is range 0..65535;
    
    procedure Oops(FromNowhere: out U16) is
    begin
        Put_Line("Oops");
    end Oops;

    FromNowhere: U16;
begin
    Oops(FromNowhere);
    Put_Line("Hello, world!" & U16'Image(FromNowhere));
end Hello;
red75prim ★★★
()
Последнее исправление: red75prim (всего исправлений: 2)
Ответ на: комментарий от red75prim

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

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

О как. Получение значений неинициализированных переменных в типобезопасность похоже не входит.

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

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

В новом ремастере Warcraft UI вообще на electron: https://twitter.com/colincornaby/status/1223073101312753664

Ремастер Warcraft — это полное днище, если что. Во всех планах: отсутствие нововведенией, высокая ресурсоемкость, отвратительная графика. Потому я бы не стал на него ориентироваться. Старый редактор писан на MFC, и у меня до сих пор теплые ностальгические воспоминания по нему.

Но в целом, интерфейс в играх обычно треш и к реальному GUI отношения не имеет

Наверное, ты хотел сказать «к офисному GUI отношения не имеет». Это правда. А почему он должен иметь отношение? Разные сферы применения — разные интерфейсы.

Ну так помогите Qt. Они уже лет 10 QML родить не могут. За одно flutter поможете гуглу допилить, а то тоже лет 5 возятся, дурачьё

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

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

Ничего в потоке интерфейса делать не нужно. Вы застряли в 90-х

Ну давай, назови мне фреймворк, который без задержек отработает изменение размера окна.

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

Самое смешное то, что даже на Си это пишется проще, чем на крестах

Небольшая разница с растом

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

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

Аж захотелось на паскалике покодить. Неужели сравнимо по перфомансу с ручной векторизацией в крестах?

Динамический массив паскаля - это и есть vector.

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

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

Безопасность — такая безопасность.

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

Лол. Я спрашивал про использование SIMD в операциях с массивами, а не про название контейнеров. В общем, я уже и сам погуглил и желание заниматься паскалем пропало.

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

Безопасность — такая безопасность.

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

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

чтение «неинициализированой» памяти - вполне себе рядовая задача, например при тестировании памяти или каких-то компонент рантайма. например, чтобы проверить обнуляет ли хипменеджер блоки памяти прежде, чем выдать ее по аллокейту. не сбоят ли микросхемы памяти, что бывает на разрабатываемых устройствах, работа с портами ввода

Отладочные цели, отладочные цели, отладочные цели, низкоуровневая системщина. Которым нечего делать в конечном приложении.

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

Весь смысл создания компьютеров заключался в предсказуемости поведения. Если его нет, то для такого компьютера не подойдет большинство современных ОС и ЯП.

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

Отладочные цели, отладочные цели, отладочные цели, низкоуровневая системщина. Которым нечего делать в конечном приложении.

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

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

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

Сейчас не 1975 год и мы не на форуме любителей 8-битных контроллеров, потому работа с железом заканчивается на довольно простых драйверах, при этом большая часть кода в ОС отвечает за абстракции и IPC, а за сложную логику работы железа отвечает системный софт уже в пользовательском режиме. Отладка же осуществляется не в реальном режиме памяти, а в защищенном, при этом отладочные инструменты используют специальные системные вызовы вместо прямого чтения памяти.

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

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

Демагогия это все. чтение «неинициализированой» памяти - вполне себе рядовая задача

Если бы там было

for FromNowhere'Address use To_Address( 16#B8000# );

то это было бы чтение из памяти, а так это чтение чего попало из стека, которое может нарушить контракт типа U16, как показал запуск на https://www.tutorialspoint.com/compile_ada_online.php

$hello

Oops
Hello, world! 4200768
red75prim ★★★
()
Последнее исправление: red75prim (всего исправлений: 2)

раст овно, пусть доказывают что хотят, ему не суждено заменить ни си ни си++. Почему? Да потому что просто нужно уметь писать на Си и Си++, а это куда проще чем осоить этот говносинтаксис говнораста!

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

говносинтаксис говнораста

Аргументы уровня Эдика :)

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

Кстати, ты наверное знаешь Jason Turner по cppcon?

Через пару дней он будет знакомиться с растом :)

Интересно будет посмотреть на его первые реакции, типа раст крут или фигня.

Я даже подписался на этот стрим:

https://www.youtube.com/watch?v=EzQ7YIIo1rY

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

То, что он до сих пор не готов. Чего только стоит переход с controls 1 на controls 2. При том что второй всё ещё не допилен (splitview появился буквально вчера, лол; treeview так и нет).

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

Да потому что просто нужно уметь писать на Си и Си++, а это куда проще чем осоить этот говносинтаксис говнораста!

Глубина проникновения в проблематику программной инженерии просто зашкаливает.

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

Ну что вы, товарищу кажется что он «осилил цэпэпэ» (что, конечно, неправда), поэтому не мешайте ему ощущать себя «илиткой» :) Это пройдёт со временем, наверное.

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

овно

просто нужно уметь писать

осоить

говносинтаксис

Спасибо за культуру дискуссий в Восточной Европе.

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

Ну, тогда речь идёт об QtQuick, а не QML. SplitView настолько простой элемент, что его можно запилить самому в десять строчек, TreeView никто не мешает взять из controls 1, если нужен, их можно смешивать.

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

Ну не знаю. Если делаешь интерфейс на QtQuick, то без собственных виджетов никуда, даже стандартная кнопка вряд ли подойдёт. По-моему, это у них такая идеология, что даются только самые основы, а дальше кастомизируй как хочешь, всё равно ведь делаешь что-то необычное.

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

Кастомизация поведения под себя и запиливание с нуля – две большие разницы.

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

Одно дело стиль кнопки, а другое - поведение. Поведение менять не дают.

RazrFalcon ★★★★★
()

гыгы.

Не, ну то что от фанатов гошечки в мыле ждать адекватности не приходится, это понятно.

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

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

лишь бы как-то объяснить, почему они довели плюсы до того, что они стали сложнее Раста и при этом не решают никаких старых проблем

Плюсы были сложнее Rust-а еще до появления Rust-а. И новые плюсы решают проблемы старых плюсов. Но когда у вас в анамнезе Ruby-On-Rails + Erlang + твердое убеждение, что «писать на плюсах – это выгребать корки по утрам», то можно еще и не такую херню нести.

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

Да потому что просто нужно уметь писать на Си и Си++, а это куда проще чем осоить этот говносинтаксис говнораста!

Синтаксис любого неэзотерического языка можно «осоить» максимум за пару дней.

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

Думаю опыт не менее 10 хеллоуворлдов

helloworld - это уровень джуниора. Профессионалы меряют факториалами.

theNamelessOne ★★★★★
()

Из обсуждения на habr:

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

Откуда такое желание у людей рассуждать о том, что хочет «мир»? И как это чел себе представляет? Типа, купил программу, а в ней 70% потенциальных багов уже на этапе производства пофикшены? Как ему потом впарить версию N+1, в которой исправлены все жуткие баги версии N? И потом, какие проблемы от использования C++? Какого-то программиста посадили за багу в коде? Софт на раст будет содержать пункт «мы гарантируем корректную работу и несем ответственность за ущерб»? Стало больше работы? Так может это как раз скорее то, что нужно «миру»…

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

Но вот то, что член комитета плюсов так дешево зашкварился…

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

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

Мда…. А мусье, случайно, не знает в каком году появился первый стандарт на обожаемую тут «святую сишечку»? Это же «серьёзный язык» - не так ли?

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

И какой статус у этой «бумажки»? Чем это лучше https://doc.rust-lang.org/stable/reference/ ?

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

у растоманов нет двух человек, чтобы посадить за спецификацию своего же языка? или они сами не знают точно, что компилирует их компилятор? или они не готовы это стандартизовать, поскольку черем месяц все поменяют? русту 10 лет почти уже. первое появление - July 7, 2010. руст декларируется как чуть не революциооное средство для разработки «больших и безошибочных» систем(это тут написали, мопед не мой). язык и средства программирования - такие же системы, кстати и не такие большие, как то, что на них можно разрабатывать. ну и? сапожник без сапог. «безошибочный» язык без спецификации.

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

Мда…. А мусье, случайно, не знает в каком году появился первый стандарт на обожаемую тут «святую сишечку»? Это же «серьёзный язык» - не так ли?

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

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

тем что первые документы являются спецификациями языка, а бумажка про руст - просто «неформальным описанием» не пойми чего.

Т.е. по факту разница в том, что на одних страничках в заголовке есть слово «Specification», а на других нет?

Или спецификация от Oracle имеет какой-то статус, ну там звание стандарта ISO?

А то ведь смахивает просто на описание единственной реализации от единственного вендора.

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

у растоманов нет двух человек, чтобы посадить за спецификацию своего же языка? или они сами не знают точно, что компилирует их компилятор?

Именно что не знают. Потому что никакого компилятора у них нет. За подробностями к царю.

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

Могу сесть в лужу, т.к. раст не знаю. Но вопрос: если там тип ясен из контекста, нафига вообще эта констрцкция с угловыми скобками?

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

Именно что не знают. Потому что никакого компилятора у них нет. За подробностями к царю.

ну компилятор то у них есть. иначе что еще проверяет синтаксис и генерирует нечто в соответствии с некоей семантикой конструкций. Почему просто это все не оформить в виде удобочитаемого репорта о языке? Нет времени и охоты? тогда это напоминает поделие группы авторов, что код может и написали, и может он даже работает… но что он делает и что от него ожидать - описать не захотели, поскольку доки писать - не для настоящих кулхацкеров. и вообще им не до доков.

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