LINUX.ORG.RU
ФорумTalks

В чем смысл Rust?

 , , , ,


1

4

Зачем нужен Rust, если на Си с условным valgrind можно писать код без утечек и битья памяти переполняющимися буферами?

Перемещено dataman из general



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

Там «требуется выжать всю мощь из железяки»? Требуется. Ви говорите, что в таком случае «лучше ускорить высокий уровень» (хотя там лидируют Си и C++). Продемонстрируйте же нам, как ускорить высокий уровень. Может, Lisp SBCL там на первое место выйдет из-за вас?

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

Вот я против подхода «давайте не думать». )))

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

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

Каких ещё адресов? Есть вот реализация Си на лисп-машине

Во-первых, перепроверьте контекст дискуссии, речь шла о реализации С на котором пишут код, а не на «смотрите что может Lisp».

Во-вторых, для этой Lisp машины не существует требований по выравниванию данных что уже нарушает стандарт если я правильно помню. И то что этой машине выравнивание не нужно ровным счётом ничего не меняет. Стандарт есть стандарт.

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

Стандарт позволяет реализовать витуальную машину Си без всяких адресов.

Но Lisp с этим не справился. Короче, поделка интересная, но это не С.

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

К авторам пузомерки у меня претензий нет. А к вам есть. Вы либо не разобрались о чём говорите, либо …

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

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

Во-вторых, для этой Lisp машины не существует требований по выравниванию данных что уже нарушает стандарт если я правильно помню

На x86 и x86-64 тоже нет требований по выравниванию, если не рассматривать SIMD и атомики. В стандарте написано, что требования по выравниваю могут быть. А могут и не быть.

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

“For instance, a pointer is represented as a pair consisting of a reference to a list and a numerical offset into the list”

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

Я не знаю что вы вообще оба два курили, чтобы лисп был на одном уровне с си. Может только в каких-то исключительных задачах… да и то, я в сомнениях. Это надо си-шника программиста в драбадан напоить и обкурить. Дак и то я не уверен, что он вас не зарулит.

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

Ну это ширпотреб быдло-кодинг. Охота быть в массовке что ли?

Отвечает PHP макака.

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

Ну ничего, а теперь сопровождайте этот код. Чёрная пятница (солнца то нет), апи платежного шлюза поменялось, покупатели не могут оплачивать заказы.

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

Зато на ассемблере.

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

Ну вот Лавсан не постеснялся такое сказать. Лисперы это ужасно упоротые сектанты, им всегда нужно придумывать оправдания тому, что их язык это самое днищенское днище, что в производительности, что в удобстве для использования в работе в команде (каждый делает себе свой язык на макросах и на нём пишет, моя твоя не понимат).

См. хотя бы выше, что человек говорит :)

shdown
()
Последнее исправление: shdown (всего исправлений: 2)
Ответ на: комментарий от hibou

я против подхода «давайте не думать»

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

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

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

Можно написать (на ассемблере или другом языке) транслятор из PHP в ассемблер. Будет быстрее, чем интерпретация :)

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

Я не знаю что вы вообще оба два курили, чтобы лисп был на одном уровне с си

Зависит от определения «на одном уровне». Тыкаюсь в случайную задачу, binary trees: C - 1.56s, Lisp - 2.83s, самое медленное решение — 258.7s. Ну и зашибись.

P.S. Пригляделся внимательнее. Да там же Rust выше в C в рейтинге. Короче, фигня ваша тормозная и медленная сишка. Закапывайте.

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

For instance, a pointer is represented as a pair consisting of a reference to a list and a numerical offset into the list

И? Как это гарантирует соответствие арифметики указателей стандарту?

Более того, как это вообще относится к контексту беседы? Я написал как думают в С и как в Лиспе для иллюстрации что у каждого свой подход и изначально нет смысла сравнивать одно в подходах другого.

Вы: а вот в С реализованном на Лиспе…

Фейспалм. У вас что, аутизм?

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

Можно. И стоя, голыми, в гамаке - можно.

Тут вопрос в целесообразности.

Хотя, я понимаю что реализация С на Лиспе и целесообразности находятся в разных вселенных.

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

реализация С на Лиспе и целесообразности находятся в разных вселенных.

В отличие от рукоблудия с указателями, это хотя бы весело (если имеешь вкус к подобным развлечениям, конечно).

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

Ну вот Лавсан не постеснялся такое сказать. Лисперы это ужасно упоротые сектанты

Лавсан знает лисп на уровне крепкого миддла, это мы ещё в лиспосрачах двухлетней давности выяснили.

Но вот что он делает очень хорошо, так это набрасывает. За что и любим. Не нужно воспринимать все написанное на этом форуме всерьёз.

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

Пересядь с иглы рукоблудия указателями на иглу рукоблудия cons-ячейками.

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

У вас юзерстиль, который скрывает цитаты?

Ви говорили что-то про то, что подход Си связан с адресами. Я показал, что адреса со стандартом Си не связаны.

И? Как это гарантирует соответствие арифметики указателей стандарту?

Ви утверждаете, что они там не соответствуют? Если так, то бремя доказательства лежит на вас.

shdown
()
Последнее исправление: shdown (всего исправлений: 2)
Ответ на: комментарий от Obezyan

Хотя, я понимаю что реализация С на Лиспе и целесообразности находятся в разных вселенных.

Ну вообще-то тогда лисп-машины существовали. Для того, чтоб на них писать на Си и сделали такую хрень.

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

Но вот что он делает очень хорошо, так это набрасывает

И говнокодит. И говорит о том, в чём не разбирается.

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

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

В топовом примере на плюсах применено нестандартное решение – мемори пул.

Не, ну воще круто, что раст не сильно отстал.

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

Ви говорили что-то про то, что подход Си связан с адресами.

Я написал:

С - давайте думать с помощью адресов участков памяти и указателей на них.

Я показал, что адреса со стандартом Си не связаны.

Я имел ввиду тот язык С на котором пишут Си программисты, а не все языки которые соответствуют стандарту.

Вы же врубили аутизм на полную начав показывать реализацию С на Лиспе.

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

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

И говнокодит.

Как и большинство программистов.

И говорит о том, в чём не разбирается.

Как и большинство регистрантов. Взять хотя бы вас.

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

чем буфера, массивы и строки отличаются друг от друга?

Буфер - просто участок памяти определённого размера, нетипизированный (типизированный байтами).

Массив - участок памяти, рассматриваемый как список элементов с адресацией по индексам.

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

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

Как и большинство регистрантов. Взять хотя бы вас.

И где же я говорю о том, в чём не разбираюсь?

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

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

В топовом примере на плюсах применено нестандартное решение – мемори пул.

В растовском тоже применено нестандартное решение - арена.

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

рассматриваемый как …

Уже лучше, но, что конкретно это значит? Т.е. чем буфер, у которого можно прочитать/записать байт по смещению (т.е. любой буфер) не подходит?

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

Строки - это очень сложная тема и в целом зависит от требований предметной области, могут быть представлены …

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

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

круто, что раст не сильно отстал.

Обогнал сишку в полтора раза. С++ — это другой язык, если вы не знали.

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

Да, я опустил время вставки/удаления/поиска, все за O(log(n)). У строки, кстати, времена неспецифицированы, зависят от требований. Потому и существует столько разных видов строк даже в пределах одного языка программирования.

unC0Rr ★★★★★
()
Последнее исправление: unC0Rr (всего исправлений: 2)
Ответ на: комментарий от ugoday

Там решение царя, которое в 4 раза лучшего на C++, не приняли. И не просто не приняли, а из-за него правила поменяли и снесли некоторые существующие решения. На его вопрос «что именно означает ”построчно” и почему решение на расте с буферизацией попадает под это определение» не дали внятного ответа.

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

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

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

И где же я говорю о том, в чём не разбираюсь?

Вы не разобрались с контекстом разговора и ушли в тему С на лисп машинах.

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

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

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

самый быстрый - а его там и нет ибо это просто вне текущей экономической модели

это Thinking Forth с однострочными словами определёнными

для работающей реализиации = а затем полная свёртка графа (обобщёный jit) который на ходу прекращает проверки однократного переключения отказом от проверки достоверного варианта

с одной стороны

и полный разворачивание горячих поддеревьев вызовов в просто последовательность действий

эти технологии и в 70ые годы были применяемы при куда более дефицитной памяти

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

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

но но но - питон просто делает сложнее отличие - человек программирует вообще приходя в сознание али это просто привитые на быстрокурсах рефлексы

т.е. классическая проблема хорошего инструмента

люди начавшие с хорошего инструмента редко когда владеют им виртуозней тех кто начинал с более не_дружелюбного

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

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

ну деточка - стандарт то ещё изделие бизнес-корпо-союза

по простому

что такое указатель(без ереси типов) это последовательность битов которая связана динамически с последовательностью бит

ну и да в пространстве этих последовательностей есть метрика соседства

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

что такое указатель(без ереси типов) это последовательность битов которая связана динамически с последовательностью бит

С какой последовательностью бит динамически связана последовательность бит ((void *) 0)?

А MAP_FAILED (aka ((void *) -1))?

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

более того вкорячивать(узаконивать) void в конце 80ых в стандарт при том что null ошибке на ядр Хоара почти 30 лет стало - ну это ли не показатель качества работы комитета по стандартизации

ваще попытка adhoc интерпретации той или иной битовой последовательности как не которой особо сигнальной - засунуть в стандарт та ещё крысятничья закладка

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

вот есть апокриф

PL/I List Processing

HAROLD W. LAWSON, J'R.

Fnternati(mal Business Machines Corp.,* New York, N. Y.

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

Чё? А если найду?

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

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

За армян не скажу, но обезьяны на PHP вполне могут и ffi. И что ты мне сделаешь, я в другом городе, за матffi извини:

$ffi = FFI::cdef("
    int shm_open(const char *name, int oflag, int mode);
    void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset);
");

$fd = $ffi->shm_open("/myshm", 0, 0);
$ptr = $ffi->mmap(null, 4096, 1, 1, $fd, 0);

А с fuse все цивильно тк предоставляется апи.

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

llvm чем не асемблер

LLVM IR платформозависимый, есличо. Хоть и в меньшей степени.

Точне, не сам IR, но полностью переносимую программу на нем не написать. В отличие от си.

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

и ы?

Семантика обращения к памяти в языке Си иногда зависит от PHP и армян, которые сидят и в нарды играют.

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

ох ля на полных по тьюрингу языке всегда можно написать переносимую программу

пишется эмулятор гостя под целевого хоста - а остальное в госте

то что современный(и средневековые не считая античного)Си обмазанный стандартом где UB а где вот такая вот гарантия более переносим чем llvm - да же если и так и в данном случае не отменяет тезиса в котором ряд vm был упомянут

что проблема переносимости «надуманна»

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

Где все эти северокорейские

А как же лазарус (или как их там)? Где-то они всему учатся, кудой-то они выходят в сеть. Или нету никакого лазаруса?

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

Ты либо фанатик, либо тролль.

Ладно, покормлю.

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

rcldev
() автор топика
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)