The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск языка программирования Rust 1.70 , opennews (?), 02-Июн-23, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


20. "Выпуск языка программирования Rust 1.70 "  +3 +/
Сообщение от Аноним (20), 02-Июн-23, 09:48 
объясните наконец в чём смысл всех потений если на уровне исходников и в с/c++ утечки и т.п. можно обнаружить анализаторами а на уровне объектов и дин.линковки раст всё равно ни чего не предотвратит
Ответить | Правка | Наверх | Cообщить модератору

24. "Выпуск языка программирования Rust 1.70 "  +1 +/
Сообщение от Аноним (6), 02-Июн-23, 09:57 
Смысл быть не как все.
Ответить | Правка | Наверх | Cообщить модератору

32. "Выпуск языка программирования Rust 1.70 "  +10 +/
Сообщение от Аноним (32), 02-Июн-23, 10:32 
Проблема в том что санитацзеры и статические анализаторы помогают только в опредиленных случаях.

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

Ответить | Правка | К родителю #20 | Наверх | Cообщить модератору

90. "Выпуск языка программирования Rust 1.70 "  +2 +/
Сообщение от Аноним (90), 02-Июн-23, 13:23 
Так используйте безопасные структуры в C++. Почему то unsafe в расте это "сам виноват, ансейф же", а в плюсах вручную стек переписывать это "язык плохой, анализатор не ловит". Конечно бро, анализатор такое не найдёт и опечатку не найдёт и не запретит тебе отнимать зарплату вместо добавления. И раст тоже такого сделать не сможет.
Ответить | Правка | Наверх | Cообщить модератору

109. "Выпуск языка программирования Rust 1.70 "  –1 +/
Сообщение от Аноним (20), 02-Июн-23, 14:19 
Ни кто не мешает писать программы по опрелённым правилам чтобы анализатору было проще. В расте же вас такой подход не смущает.
Ответить | Правка | К родителю #32 | Наверх | Cообщить модератору

165. "Выпуск языка программирования Rust 1.70 "  +2 +/
Сообщение от Аноним (165), 02-Июн-23, 22:52 
> писать программы по опрелённым правилам

Ага, главное правило: не писать багов. Как Страуструп завещал.

Ответить | Правка | Наверх | Cообщить модератору

127. "Выпуск языка программирования Rust 1.70 "  +/
Сообщение от Аноним (127), 02-Июн-23, 17:41 
>санитацзеры и статические анализаторы помогают только в опредиленных случаях.

Для начала стоит освоить хотя бы спеллчекер.

Ответить | Правка | К родителю #32 | Наверх | Cообщить модератору

33. "Выпуск языка программирования Rust 1.70 "  +/
Сообщение от n00by (ok), 02-Июн-23, 10:34 
Автор языка писал на С++, узнал про Haskell и понял, как спасти мир. Выкатил несколько первых версий, потом кое-что ещё понял и покинул проект.
Ответить | Правка | К родителю #20 | Наверх | Cообщить модератору

59. "Выпуск языка программирования Rust 1.70 "  +/
Сообщение от Аноним (64), 02-Июн-23, 11:30 
А чего ж на Хаскеле не продолжил писать? Да и первые компиляторы Раста у него почему-то были на OCaml.
Ответить | Правка | Наверх | Cообщить модератору

103. "Выпуск языка программирования Rust 1.70 "  +/
Сообщение от n00by (ok), 02-Июн-23, 14:02 
Спасибо, что поправили, я их перепутал. OCaml я и сам немного умею, а монады в своё время слишком лениво осилил и потому зациклился.
Ответить | Правка | Наверх | Cообщить модератору

126. "Выпуск языка программирования Rust 1.70 "  +/
Сообщение от Аноним (127), 02-Июн-23, 17:38 
У того был фатальный недостаток.
Ответить | Правка | К родителю #59 | Наверх | Cообщить модератору

78. "Выпуск языка программирования Rust 1.70 "  +1 +/
Сообщение от freecoder (ok), 02-Июн-23, 12:11 
Rust далеко ушёл от первоначальной концепции, которую в него закладывал "автор". В частности, изначально в Rust был сборщик мусора. То, чем стал Rust в итоге - это заслуга инженеров Mozilla и сообщества.
Ответить | Правка | К родителю #33 | Наверх | Cообщить модератору

91. "Выпуск языка программирования Rust 1.70 "  +/
Сообщение от Аноним (90), 02-Июн-23, 13:27 
Ага, заслуга.
"Ребята, у вас есть 2 года на создание супернового языка который мы анонсировали. Вы будете работать вдвоём, иногда может будем подкидывать вам временных разработчиков с других проектов, так что используйте студентов из ближайшего вуза. Но не отчаивайтесь, писать придётся не с нуля, мы возьмём пет проект Грейдона, сейчас только автозаменой ret на return поменяем."
"Ой, чета не взлетело, давайте дальше без нас как-нибудь"
Ответить | Правка | Наверх | Cообщить модератору

106. "Выпуск языка программирования Rust 1.70 "  –1 +/
Сообщение от n00by (ok), 02-Июн-23, 14:07 
Вы так пишите, будто бы сборщик мусора это обязательно плохо. Это было бы хорошо, порвал бы язык дотнет и джаву заодно. ;)
Ответить | Правка | К родителю #78 | Наверх | Cообщить модератору

139. "Выпуск языка программирования Rust 1.70 "  +/
Сообщение от Советский инженерemail (?), 02-Июн-23, 19:22 
Ага, от как пример Vala, уже всех порвала
Ответить | Правка | Наверх | Cообщить модератору

160. "Выпуск языка программирования Rust 1.70 "  +/
Сообщение от Любите девушки плюсовиков (?), 02-Июн-23, 21:36 
Vala слишком прибита гвоздями к г(н)омотехнологиям.
Ответить | Правка | Наверх | Cообщить модератору

192. "Выпуск языка программирования Rust 1.70 "  +/
Сообщение от n00by (ok), 03-Июн-23, 11:59 
Ну если подсчёт ссылок путать с маркировкой и уплотнением, можно и не то порвать.
Ответить | Правка | К родителю #139 | Наверх | Cообщить модератору

156. "Выпуск языка программирования Rust 1.70 "  +/
Сообщение от Аноним (162), 02-Июн-23, 20:59 
Система владения в раст не отнимает время в рантайм.
Ответить | Правка | К родителю #106 | Наверх | Cообщить модератору

191. "Выпуск языка программирования Rust 1.70 "  +/
Сообщение от n00by (ok), 03-Июн-23, 11:57 
Если хоть раз посмотреть код менеджера кучи (malloc/free), то есть шанс понять, почему сборщик мусора может оказаться быстрее в некоторых случаях.
Ответить | Правка | Наверх | Cообщить модератору

159. "Выпуск языка программирования Rust 1.70 "  +/
Сообщение от Аноним (162), 02-Июн-23, 21:29 
Система владения позволяет обращаться с данными в куче по другому чем в стеке. Например в куче по умолчанию данные не копируются, а "перемещаются в другое владение" или создается еще одна ссылка. И раст следит за временем жизни и непротиворечивостью ссылок на этапе компиляции.
Ответить | Правка | К родителю #106 | Наверх | Cообщить модератору

188. "Выпуск языка программирования Rust 1.70 "  +/
Сообщение от Аноним (20), 03-Июн-23, 09:29 
а где вы видели чтобы данные в куче по умолчанию копировались ?
Ответить | Правка | Наверх | Cообщить модератору

193. "Выпуск языка программирования Rust 1.70 "  +/
Сообщение от n00by (ok), 03-Июн-23, 12:05 
Может его пример надо понимать как "если повезёт, то копия создана не будет"? :)
Ответить | Правка | Наверх | Cообщить модератору

198. "Выпуск языка программирования Rust 1.70 "  +/
Сообщение от Аноним (201), 03-Июн-23, 15:32 
1. создаете данные в куче (а)
2. b=a;
3. free a
что будет с b?

В расте let b=a; означает что данными отныне владеет b и ссылка а не действительная. Владелец остается один и по окончанию блока {} легко освободить память. Никаких посторонних ссылок, рожденных через присвоение не будет.

Ответить | Правка | К родителю #188 | Наверх | Cообщить модератору

204. "Выпуск языка программирования Rust 1.70 "  +/
Сообщение от Аноним (20), 03-Июн-23, 16:57 
Ну так такое есть в любом языке. Если нету явно то легко реализуется. И при чём тут копирования не понятно
Ответить | Правка | Наверх | Cообщить модератору

34. "Выпуск языка программирования Rust 1.70 "  +4 +/
Сообщение от Анониссимусemail (?), 02-Июн-23, 10:34 
В том, что эти утечки и т. п. анализатор может обнаружит, а может не обнаружит. А раст просто не позволит так написать. А если очень надо, то это будет в блоке unsafe, что будет привлекать дополнительное внимание.
Ответить | Правка | К родителю #20 | Наверх | Cообщить модератору

50. "Выпуск языка программирования Rust 1.70 "  –4 +/
Сообщение от Аноним (48), 02-Июн-23, 11:10 
но ведь без unsafe там даже пукнyть не получится. в чём прикол?
Ответить | Правка | Наверх | Cообщить модератору

66. "Выпуск языка программирования Rust 1.70 "  +6 +/
Сообщение от Аноним (66), 02-Июн-23, 11:36 
А ты наверное из любителей газифицировать лужи) прикол в том, что большАя часть кода это сейф раст. Unsafe часто пишется, качественно проверяется и оборачивается safe-кодом, который потом все используют. Да, иногда могут быть баги в unsafe, но если этого кода в десятки раз меньше (обычно и того меньше) то и проверять сильно проще чем для сравнения всю кодовую базу на плюсах.
Ответить | Правка | Наверх | Cообщить модератору

75. "Выпуск языка программирования Rust 1.70 "  –1 +/
Сообщение от Аноним (75), 02-Июн-23, 12:01 
Сказки на ночь. Unsafe пишется, оборачивается в макросы и потом эти макросы везде используются.

Получается что везде куча неявного unsafe.

Ответить | Правка | Наверх | Cообщить модератору

130. "Выпуск языка программирования Rust 1.70 "  +2 +/
Сообщение от Аноним (130), 02-Июн-23, 17:49 
> Получается что везде куча неявного unsafe.

Ага, типа "а под одеждой они все равно голые!".

Ответить | Правка | Наверх | Cообщить модератору

154. "Выпуск языка программирования Rust 1.70 "  +1 +/
Сообщение от Аноним (162), 02-Июн-23, 20:53 
после обработки макросов unsafe вылезает и учитывается
Ответить | Правка | К родителю #75 | Наверх | Cообщить модератору

196. "Выпуск языка программирования Rust 1.70 "  +/
Сообщение от Someone (??), 03-Июн-23, 13:10 
Это вы фигню полную написали. Что это вообще такое обернуть unsafe в макрос?
Ответить | Правка | К родителю #75 | Наверх | Cообщить модератору

155. "Выпуск языка программирования Rust 1.70 "  +/
Сообщение от Аноним (162), 02-Июн-23, 20:55 
у меня unsafe пока только в обращениях к библиотекам Си.
Ответить | Правка | К родителю #50 | Наверх | Cообщить модератору

157. "Выпуск языка программирования Rust 1.70 "  +/
Сообщение от Аноним (162), 02-Июн-23, 21:01 
ссылки живут в пределах блока {} в том числе в пределах unsafe{}
Ответить | Правка | К родителю #34 | Наверх | Cообщить модератору

71. "Выпуск языка программирования Rust 1.70 "  +/
Сообщение от Аноним (66), 02-Июн-23, 11:43 
Анализаторы несомненно надо использовать. Но у них есть фатальный недостаток. Они ловят(причем далеко не всегда) ошибки при наличии тестового примера. В то время как в раст формально проверяет что для любых входных параметров все будет хорошо и контракт будет выполнен на этапе компиляции. И к тому же чем раньше найдена ошибка, тем дешевле не исправить.
Ответить | Правка | К родителю #20 | Наверх | Cообщить модератору

114. "Выпуск языка программирования Rust 1.70 "  –1 +/
Сообщение от Аноним (114), 02-Июн-23, 16:11 
Настало время офигительных историй. Rust не может гарантировать, что программа будет работать "хорошо" для любых входных параметров, так как это зависит от конкретной реализации программы и ее алгоритмов. Rust может помочь обнаружить ошибки и проблемы на этапе компиляции, но не может гарантировать отсутствие ошибок в программе при любых входных параметрах.
Ответить | Правка | Наверх | Cообщить модератору

133. "Выпуск языка программирования Rust 1.70 "  +/
Сообщение от Аноним (130), 02-Июн-23, 18:08 
Речь идет именно про контракты о времени владения, а не о любых входных параметрах.
Ответить | Правка | Наверх | Cообщить модератору

150. "Выпуск языка программирования Rust 1.70 "  +/
Сообщение от Аноним (150), 02-Июн-23, 20:30 
Ничоси! А подскажи какой яп может такое гарантировать?
Чтобы для любых-любых входных параметров
Ответить | Правка | К родителю #114 | Наверх | Cообщить модератору

153. "Выпуск языка программирования Rust 1.70 "  +/
Сообщение от Аноним (162), 02-Июн-23, 20:51 
раст позволяет описать поведение данных при нештатных ситуациях (например переполнение).  
Ответить | Правка | К родителю #114 | Наверх | Cообщить модератору

176. "Выпуск языка программирования Rust 1.70 "  +/
Сообщение от Аноним (20), 03-Июн-23, 08:26 
вау ничоси. может мне надо у него еще позволения спрашивать обрабатывать мне переполнение или нет
Ответить | Правка | Наверх | Cообщить модератору

199. "Выпуск языка программирования Rust 1.70 "  +/
Сообщение от Аноним (201), 03-Июн-23, 15:42 
Он сделает это за вас (для примитивов) выбранным вами способом.
Ответить | Правка | Наверх | Cообщить модератору

205. "Выпуск языка программирования Rust 1.70 "  +/
Сообщение от Аноним (20), 03-Июн-23, 17:02 
скажем так почти всегда переполнения обрабатывать вообще не надо потому что они не возникнут. а там где надо у всех языков для этого есть инструменты.
Ответить | Правка | Наверх | Cообщить модератору

148. "Выпуск языка программирования Rust 1.70 "  +/
Сообщение от Аноним (162), 02-Июн-23, 20:28 
В расте нет тотального наследования.
Ответить | Правка | К родителю #20 | Наверх | Cообщить модератору

171. "Выпуск языка программирования Rust 1.70 "  +/
Сообщение от Аноним (171), 03-Июн-23, 02:56 
> если на уровне исходников и в с/c++ утечки и т.п. можно обнаружить анализаторами

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

Ответить | Правка | К родителю #20 | Наверх | Cообщить модератору

218. "Выпуск языка программирования Rust 1.70 "  +/
Сообщение от Аноним (20), 04-Июн-23, 11:13 
там весь отчёт выглядит как "..бла-бла-бла может коррелирует а может и нет.. скорее всего мы не знаем..."
Ответить | Правка | Наверх | Cообщить модератору

197. "Выпуск языка программирования Rust 1.70 "  +/
Сообщение от Аноним (130), 03-Июн-23, 13:56 
> в чём смысл всех потений если на уровне исходников и в с/c++ утечки и т.п. можно обнаружить анализаторами

Смысл в том, что Раст "утечки и т.п." в принципе не позволяет допустить.

Ответить | Правка | К родителю #20 | Наверх | Cообщить модератору

220. "Выпуск языка программирования Rust 1.70 "  +/
Сообщение от Аноним (220), 04-Июн-23, 13:33 
Ещё как позволяет... И Java и Rust и прочие безопасные языки не защищают от утечек памяти
Ответить | Правка | Наверх | Cообщить модератору

215. "Выпуск языка программирования Rust 1.70 "  +/
Сообщение от Срыватель покровов (?), 04-Июн-23, 00:35 
Отвечаю в общем, как обыватель. Прошу местных экспертов присоединиться и помочь с объективностью. Мне кажется, Раст решает сразу несколько Сишных проблем.
1. Стандарты Си и C++ изначально подразумевают своеволие, начиная от такого уродства как типы НЕ фиксированной ширины (ммм, в кайф писать вычислительные программы, которые на разных процессорах выдадут разные результаты, ловить кучу неожиданных багов после компиляции очень приятно), заканчивая кучей "мелочей" вроде знаковости типа char. Да, для предсказуемости вычислений есть int_t, но то же самое нельзя сказать про float. Фиксированные float ввели в C++23, но надо ждать их поддержки в компиляторах. А кодить надо уже сейчас. Можно свой велосипед вкорячить, но это опять приведёт к раздуванию кода, т.к. каждый обязательно напишет свою либу.
2. Исходя из неопределённости стандарта, мы получаем разные компиляторы. А под и разные анализаторы, учитывающие разные нюансы. Под конкретный компилятор может и не быть. А при этом анализатор может оказаться платным и несвободным. А может оказаться кривым нечто, еле-еле включающимся в твоём любимом IDE.
3. Благодаря разным реализациям компилятора то же ядро Линукса смогли собрать Клангом через несколько лет.
4. У Раста нет хедеров, это уже большой плюс. Благодаря запутанным хедерам время компиляции Линукса было заметно увеличено (ирония судьбы, с чем боролся Деннис Ритчи (время компиляции), на то напоролся Линус Торвальдс).
5. Плюсы в некотором смысле это уродство, так как они тянут за собой совместимость с Си, но делают это очень криво (в C++ нет variable length arrays, как пример). У нас есть страшно кривой printf(), который требует каждый раз при печати указывать тип переменной (А что, если я потом захочу поменять тип переменной? Снова ломать глаза и тратить время в поисках нужного процента с правильным типом и форматированием?), а есть страшно уродливый брат-близнец cout с упоротым синтаксисом из двойных знаков сравнения. У нас есть и амперсенды (&), и стрелочки (->), и точки для выполнения семантически одинаковых действий (взятие значения по ссылке). Мы продолжим тянуть кривое г. из Си, поэтому все проекты будут пользоваться кривым г. вместо новых, более адекватных имплементаций. У нас есть 14 видов инициализации, поэтому каждый компилятор обязан из поддерживать вместо внедрения действительно нужных фич. У нас есть структуры и классы, отчасти дублирующие друг друга (напоминаю, что методы и наследование работают и для структур).
Мне кажется, уже этих пунктов хватит для того, чтобы начать новый проект не на C/C++. Паскаль неплох, но он не в мейнстриме. Пожелаем Расту и Зиг удачи.
Ответить | Правка | К родителю #20 | Наверх | Cообщить модератору

219. "Выпуск языка программирования Rust 1.70 "  +/
Сообщение от Аноним (20), 04-Июн-23, 11:19 
поддерживать разные архитектуры как раз только C нормально и может
Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру