The OpenNET Project / Index page

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



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

"Выпуск языка программирования Rust 1.80"  +/
Сообщение от opennews (??), 26-Июл-24, 20:41 
Опубликован релиз языка программирования общего назначения Rust 1.80, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation. Язык сфокусирован на безопасной работе с памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки)...

Подробнее: https://www.opennet.me/opennews/art.shtml?num=61614

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

Оглавление

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


13. "Выпуск языка программирования Rust 1.80"  +10 +/
Сообщение от 3dravenemail (ok), 26-Июл-24, 21:22 
Изучаю его, по моему отличная штука. Сейчас хэловорд проект на нем катаю. Долго возился с обработкой ошибок что бы сделать ее удобной в проекте так как есть море их видов, а на выходе вебсервера вебсерверу надо одну. Так же долго возился с тем что бы в порождающих функциях делать всякое ссылками вместо возврата упаковки, но плюнул, шибко неудобно возвращаю умные указатели и прочее подобное. Сошелся на том, что порождая возвращать упаковку, а используя отдавать ссылку. В целом штука годная, либы нужные уже есть, можно пилить себе всякое. Время ответа вебсервера на простенькое 1мс, памяти ест немного.
Ответить | Правка | Наверх | Cообщить модератору

15. "Выпуск языка программирования Rust 1.80"  +7 +/
Сообщение от Аноним (15), 26-Июл-24, 21:26 
Напомни а зачем в твоём хеллоуворлде безопасная работа с памятью? Кто и зачем будем за границы буфера выходить и что он с этим будет делать?
Ответить | Правка | Наверх | Cообщить модератору

19. "Выпуск языка программирования Rust 1.80"  +11 +/
Сообщение от 3dravenemail (ok), 26-Июл-24, 21:39 
Предлагаешь написать хэловорд на расте без безопасного управления памятью?
Ответить | Правка | Наверх | Cообщить модератору

24. "Выпуск языка программирования Rust 1.80"  +2 +/
Сообщение от Аноним (24), 26-Июл-24, 21:46 
Да, предлагаю!
Ответить | Правка | Наверх | Cообщить модератору

106. "Выпуск языка программирования Rust 1.80"  +5 +/
Сообщение от Аноним (106), 27-Июл-24, 08:11 
> Да, предлагаю!

Поддерживаю! Отличный язык!

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

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

116. "Выпуск языка программирования Rust 1.80"  –7 +/
Сообщение от Аноним (15), 27-Июл-24, 09:08 
Проблема лишь в том что ты судишь по себе. И приписываешь другим свои негативные стороны. Это при том что раст не взлетел от слова ваще.
Ответить | Правка | Наверх | Cообщить модератору

128. "Выпуск языка программирования Rust 1.80"  +2 +/
Сообщение от Аноним (-), 27-Июл-24, 09:42 
Угу, только его добавили в ядро, разрешив использование в отличии от плюсов.
На нем пишут команды в таких проектах как андроид и хром.
Ну и куча софта который уже работает (амазок, клоудфаря и тд)

Совершенно не взлетел! Анон не может ошибаться))

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

142. "Выпуск языка программирования Rust 1.80"  –2 +/
Сообщение от Tron is Whistling (?), 27-Июл-24, 11:02 
Тут всё просто: корпорасты поняли, что сажать тысячи "входящих в IT" обезьянок без опыта за низкоуровневый язык без боровов нельзя - налажают везде, где смогут. Ну и напилили что-то, чтобы хоть как-то ваяли "войну и мир".
Ответить | Правка | Наверх | Cообщить модератору

145. "Выпуск языка программирования Rust 1.80"  +2 +/
Сообщение от Аноним (145), 27-Июл-24, 11:40 
Внезапно люди с годами опыта на C порождают бесконечные CVE, а вроде не обезьянки…
Ответить | Правка | Наверх | Cообщить модератору

245. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Tron is Whistling (?), 27-Июл-24, 22:32 
Внезапно хеллоуворлды в плане CVE мало кого интересуют. Равно как и "внутренние проекты" тех самых корпорастов. Вот и не порождаются.
Ответить | Правка | Наверх | Cообщить модератору

253. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Прохожий (??), 27-Июл-24, 23:00 
> Внезапно хеллоуворлды в плане CVE мало кого интересуют.

Хеллоуворлды - да. А продукты, находящиеся в проде - ещё как. А таких, написанных на морально устаревшем языке программирования, увы, очень много пока что.

>Равно как и "внутренние проекты" тех самых корпорастов.

Линукс там, или Андроид тот же - это "внутренние проекты" самих корпорастов? А есть что-то, что не входит в эту категорию?

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

259. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (259), 27-Июл-24, 23:27 
> А есть что-то, что не входит в эту категорию?

Конечно!
Величайшие поделия какиров из Сообщества! Свободных от корпов и здравого смысла))
Примеров много, но они известны в очень узких кругах.

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

264. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (264), 28-Июл-24, 00:06 
Причём обычно в этом самом узком кругу никого кроме автора нет и не будет.
Ответить | Правка | Наверх | Cообщить модератору

217. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (217), 27-Июл-24, 16:35 
И что? Это блин и называется взлетел, если его используют) То что он вам не нравится - это другой вопрос)
Ответить | Правка | К родителю #142 | Наверх | Cообщить модератору

246. "Выпуск языка программирования Rust 1.80"  –2 +/
Сообщение от Tron is Whistling (?), 27-Июл-24, 22:35 
Это называется не "взлетел", а "временно заткнул образовавшуюся дыру в заднем проходе". Где-то рядом с рубями и прочими около.
Ответить | Правка | Наверх | Cообщить модератору

254. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Прохожий (??), 27-Июл-24, 23:01 
Именно по этой причине - это самый обожаемый язык на том же СтэкОверфлоу. Да? Кстати, не только самый обожаемый, а уже и довольно активно используемый, судя по последнему опросу.
Ответить | Правка | Наверх | Cообщить модератору

155. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (155), 27-Июл-24, 12:56 
> только его добавили в ядро

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

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

171. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (171), 27-Июл-24, 14:17 
> Как сразу весь кипешь вокруг написания модулей ядра на расте мгновенно затих

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

И вроде очевидно, что между тем, как на языке разрешили писать, и тем, как появятся первые большие модули, должно пройти время как раз равное времени написания модуля. Но возможно очевидно не всем :)

Вот Nova, драйвер для GPU NVIDIA уже анонсировали opennet.ru/opennews/art.shtml?num=60821
Но для написание нужно время, не так ли?

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

194. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (155), 27-Июл-24, 14:35 
> Вот Nova, драйвер для GPU NVIDIA

У Нвидии ж вся работа в клозед сорс firmware делается, то что они пишут - просто прокладка между блобом и GPL кодом ядра, зачем там раст? Чисто номинальный драйвер. Интересно что-то настоящее, ФС например лучше ext4 или btrfs, или шедулер или что-то ещё такое.

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

271. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (271), 28-Июл-24, 01:02 
Самые интересные ништяки, вроде вулкана, опенгла, куды, как раз в юзерспейсе. В фирмвари низкоуровневое управление железом, вроде управления энергопотреблением. Внезапно, в красных карточках тоже самое, и так же есть блоб с фирмварью.
Ответить | Правка | Наверх | Cообщить модератору

312. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (155), 28-Июл-24, 19:25 
Что-то я сильно сомневаюсь, что они на расте куду перепишут или компилятор шейдеров.
Ответить | Правка | Наверх | Cообщить модератору

327. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (155), 28-Июл-24, 23:12 
> А Радеон имеет ту же закрытую firmware

Как тогда на эльбрусах радеон запускают? https://www.altlinux.org/%D0%92%D0%B8�...

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

345. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от n00by (ok), 29-Июл-24, 09:46 
Так же, как и на других процессорах - загружают фирмварь в "карточку", где её и исполняет интегрированный в GPU контроллер.
Ответить | Правка | Наверх | Cообщить модератору

198. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от VladSh (?), 27-Июл-24, 14:44 
> Да, предлагаю!

Так и пиши тогда это сам.

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

64. "Выпуск языка программирования Rust 1.80"  –3 +/
Сообщение от Аноним (64), 27-Июл-24, 00:58 
Потому что люди просто устали от сишки. Надоело
Ответить | Правка | К родителю #15 | Наверх | Cообщить модератору

118. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (15), 27-Июл-24, 09:09 
Ц тебя богатое воображение.
Ответить | Правка | Наверх | Cообщить модератору

138. "Выпуск языка программирования Rust 1.80"  +4 +/
Сообщение от Facemaker (?), 27-Июл-24, 10:31 
>Потому что люди просто устали от сишки. Надоело

Однозначно. Хорошо помню такое своё настроение ("надоело!") после очередного многочасового дебага необходимой C++-библиотеки с понасаженными там UB.

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

437. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (437), 31-Июл-24, 12:41 
Кто то подменяет понятия...
Ответить | Правка | Наверх | Cообщить модератору

20. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (20), 26-Июл-24, 21:42 
> Долго возился с обработкой ошибок что бы сделать ее удобной в проекте так как есть море их видов, а на выходе вебсервера вебсерверу надо одну.

Сведение доменов ошибок — известная проблема еще с Haskell. Впрочем,
https://docs.rs/thiserror/latest/thiserror/ для библиотек, и
https://docs.rs/anyhow/latest/anyhow/ для приложений.

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

21. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от 3dravenemail (ok), 26-Июл-24, 21:44 
Да, их и заюзал и двойную упаковку, сначала все в anyhow, а потом anyhow в свое с реализацией трейтов, которые надо вебсерверу и на стадии генерации ответа распаковка бутерброда. Таким образом в коде все просто, хоть и не шибко красиво. А своя ошибка на thiserror
Ответить | Правка | Наверх | Cообщить модератору

141. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Facemaker (?), 27-Июл-24, 10:34 
>thiserror
>anyhow

Почему-то мало известна такая библиотека, как SNAFU. А она лучшая в обработке ошибок. Имел долгий опыт и с anyhow, и с thiserror; они хороши и полезны, но SNAFU — ещё лучше (один только метод context трейта ResultExt экономит массу усилий). Правда, достоинства не сразу очевидны и, пожалуй, в полной мере проявляются на реально больших и сложных проектах.

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

157. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Карлос Сношайтилис (ok), 27-Июл-24, 13:21 
SNAFU известна – она появилась первая и является основоположником обёрток для ошибок в расте.

thiserror и anyhow появились спустя несколько месяцев, как работа над ошибками в дизайне SNAFU.

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

223. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Facemaker (?), 27-Июл-24, 18:38 
>работа над ошибками в дизайне SNAFU

Ты что-то путаешь. Anyhow вообще костыльная штука для быстрого прототипирования, и почти ничего общего у него ни с thiserror, ни с snafu нет.

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

294. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Карлос Сношайтилис (ok), 28-Июл-24, 15:07 
У thiserror и anyhow один автор и работы над этими библиотеки начаты одновременно.
Автор изначально разделил области применения этих либ. Как видно из статистики скачивания: по 10М у thiserror и anyhow vs 1.5М у SNAFU, людям понравилось разделение на разные области применения и эти крейты стали популярнее.
Возможно, моё сообщение можно прочитать как "сделали SNAFU, поняли что получилось фигня, решили переделать". Нет, я думаю как раз наоборот: "один человек написал SNAFU, другой увидел, что получилось клёво и решил развить идею в другом стиле".


> Anyhow костыльная штука для прототипирования
> ничего общего у него ни с thiserror, ни с snafu нет

То что она для прототипирования, не делает её костыльной.
И непонятно, почему либа для сокрытия внутренней кухни работы с ошибками, должна иметь что-то общее с библиотеками для детальной проработки последних.

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

338. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Ф1 (?), 29-Июл-24, 08:10 
>Anyhow вообще костыльная штука для быстрого прототипирования, и почти ничего общего у него ни с thiserror, ни с snafu нет.

Anyhow просто для приложений, а не для библиотек, и вполне приближает легкость обработки ошибок к языкам с исключениями.
Есть еще улучшенный вариант anyhow  - eyre, и если использовать еще и color-eyre то получаются вполне читабельные отчеты намного лучше чем портянки стектрейсов в языках с исключениями.

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

238. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от 3dravenemail (ok), 27-Июл-24, 21:15 
Спасибо, погляжу.
Ответить | Правка | К родителю #141 | Наверх | Cообщить модератору

383. Скрыто модератором  +1 +/
Сообщение от Аноним (383), 29-Июл-24, 19:48 
Ответить | Правка | К родителю #141 | Наверх | Cообщить модератору

25. "Выпуск языка программирования Rust 1.80"  –3 +/
Сообщение от Омоним (?), 26-Июл-24, 21:47 
>долго возился с тем что бы в порождающих функциях делать всякое ссылками вместо возврата упаковки, но плюнул, шибко неудобно

Очень неудобно что надо указывать время жизни ссылок

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

42. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от WhitePower1488 (?), 26-Июл-24, 22:51 
> либы нужные уже есть

Рискну предположить, что раст тебе не нужен.

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

59. "Выпуск языка программирования Rust 1.80"  –2 +/
Сообщение от Аноним (59), 27-Июл-24, 00:40 
Да вот тоже хотел запилить проект HelloWorldNG. Ну, значит, начал с создания базового класса... Упс, а нету такого ключевого слова. Обломалсо.
Ответить | Правка | К родителю #13 | Наверх | Cообщить модератору

82. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (82), 27-Июл-24, 02:30 
Классы -- бредовая идея, если так подумать. С самого начала существования различных ЯП - данные отделяли от логики. К этому мы возвращаемся вновь в современных языках типа раста. Ну а классы породили такую бессмысленную дисциплину, как "паттерны ООП", причем значительная их часть посвящена решению проблем, возникших при добавлении в ЯП такой бредовой идеи, как классы.
Ответить | Правка | Наверх | Cообщить модератору

91. "Выпуск языка программирования Rust 1.80"  +3 +/
Сообщение от Аноним (-), 27-Июл-24, 04:49 
Да-да-да, мметь рядом с данными семантику их использования выраженую через набор методов это очень бредовая идея. А вот передавать и валидировать сырые данные в наборе несвязанных лапшеобразных функций это очень прогрессивно.

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

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

109. "Выпуск языка программирования Rust 1.80"  –2 +/
Сообщение от Ф1 (?), 27-Июл-24, 08:30 
>Да-да-да, мметь рядом с данными семантику их использования выраженую через набор методов это очень бредовая идея

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

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

159. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Карлос Сношайтилис (ok), 27-Июл-24, 13:30 
В расте нет наследования данных. Реализация как раз наследуется
Ответить | Правка | Наверх | Cообщить модератору

219. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Ф1 (?), 27-Июл-24, 16:57 
>В расте нет наследования данных. Реализация как раз наследуется

Корректнее будет что наследования вообще нет, реализация тоже "наследуется" только из функций трейтов которые данные не могут использовать. Но с данными как раз попроще, агрегация + Deref который тривиально реализуется.

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

296. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Карлос Сношайтилис (ok), 28-Июл-24, 15:23 
> Корректнее будет что наследования вообще нет

Некорректно говорит что "наследования вообще нет", если оно есть.
Если кто-то под "наследованием" понимает только "наследование в стиле ООП", то это его проблемы.

> агрегация + Deref который тривиально реализуется.

Не надо изобретать "rust с классами", это тупиковый путь. И антипаттерн.

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

339. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Ф1 (?), 29-Июл-24, 08:21 
>Некорректно говорит что "наследования вообще нет", если оно есть.

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

>Не надо изобретать "rust с классами", это тупиковый путь. И антипаттерн.

"rust с классами" наверно только на макросах реально сделать, но "rust с объектами" в смысле близком как например используются классы в стандартной библиотеке C++ (без наследования и обобщенные) вполне норма для rust.

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

406. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от Аноним (383), 29-Июл-24, 23:52 
> Не надо изобретать "rust с классами", это тупиковый путь. И антипаттерн.

Вполне себе правильный путь и полезный паттерн.

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

355. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от xsignal (ok), 29-Июл-24, 13:01 
Удачи в работе над хэловордом, желаю довести дело до конца!
Ответить | Правка | К родителю #13 | Наверх | Cообщить модератору

26. "Выпуск языка программирования Rust 1.80"  –10 +/
Сообщение от анон (?), 26-Июл-24, 21:51 
99% функционала раста с легкостью достигается на плюсах через:
-mshstk
-fsanitize=safe-stack
Пользуйтесь.
Ответить | Правка | Наверх | Cообщить модератору

31. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Аноним (31), 26-Июл-24, 21:58 
Так дьявол в оставшемся 1%. И без той 99%-ой сковородки та 1%-я чалма не работает. Это не говоря уже об «удовольствии» программирования на C++. Даже за деньги трижды подумал бы связываться.
Ответить | Правка | Наверх | Cообщить модератору

37. "Выпуск языка программирования Rust 1.80"  –2 +/
Сообщение от анон (?), 26-Июл-24, 22:34 
1% - это недостижимая часть cfg.
Ответить | Правка | Наверх | Cообщить модератору

101. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от Аноним (101), 27-Июл-24, 06:33 
Я бы согласился про "довольствие" от с++, если бы не было сравнения с растом
Ответить | Правка | К родителю #31 | Наверх | Cообщить модератору

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

51. "Выпуск языка программирования Rust 1.80"  +3 +/
Сообщение от Карлос Сношайтилис (ok), 26-Июл-24, 23:43 
Расскажи это Гуглу, а то пацаны не догадались.
Ответить | Правка | К родителю #26 | Наверх | Cообщить модератору

53. "Выпуск языка программирования Rust 1.80"  +5 +/
Сообщение от Аноним (53), 27-Июл-24, 00:10 
> 99% функционала раста с легкостью достигается на плюсах через...

Чел, это флажки рантаймовых проверок. Они никакого функционала из Раста не достигают.

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

66. "Выпуск языка программирования Rust 1.80"  +10 +/
Сообщение от Аноним (66), 27-Июл-24, 01:25 
Я дико извиняюсь, но как с помошью
> -mshstk
> -fsanitize=safe-stack

можно достичь move-семантики, match-выражений, монадов, асинхронного программирования, отсутствия заскарузлого синтаксиса вроде "void*(*name)(void*)", отсутствия 65535 нестандартных расширений, адекватных макросов, единой системы документации, качественной документации стандартной библиотеки, единой системы сборки, единого репозитория пакетов с утановкой в одну команду без dependency hell, отсутсвия UB на каждом шаге (Вы же в курсе что бесконечный цикл может вызвать UB? Как и (int8_t)(INT8_MIN / -1).), стандартизированного поведения оператора >> для беззнаковых, стандартизированного представления целых чисел, осмысленных сообщений об ошибках от компиляторя, отсутсвия парсинга литералов в рантайме и так далее?

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

89. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (89), 27-Июл-24, 04:28 
> стандартизированного поведения оператора >> для беззнаковых

Мне кажется, или ты сначала написал про UB, а потом отредактировал коммент? Там именно UB[1].

Чего-то можно достичь заменой сей на плюсы, что-то из недостатков позволяет поддерживать больше платформ, где-то "безопасности по умолчанию" на самом деле не хватает, где-то UB - продукт эволюции от "продвинутого макроассемблера[2]" до "языка с умными[3] оптимизациями".

[1] https://godbolt.org/z/1xEbe95fa
[2] это как когда сишку хвалят за отсутствие неявного поведения, когда-то это было правдой
[3] ну, по мнению комитета - умными, а на деле ядро с нестандартным -fno-strict-aliasing собрано

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

111. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (89), 27-Июл-24, 08:37 
(компилятор в одном месте предупреждает, но это легко исправить: https://godbolt.org/z/4cevjaofz)
Ответить | Правка | Наверх | Cообщить модератору

135. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (66), 27-Июл-24, 10:22 
> Мне кажется, или ты сначала написал про UB, а потом отредактировал коммент? Там именно UB[1].

Опечатался, вместо "знаковых" написал "беззнаковых". Я имел ввиду значение вдвигаемого слева бита, которое может быть как 0, так и 1 в зависимости от имплементации.

> то из недостатков позволяет поддерживать больше платформ,

По-моему чья-то необходимость прогрммировать 3.5 DSP и 2.5 вымерших архитектуры процессора не оправдывает введения поведения, специфичного для этих эзотерических платформ, в язык общего назначения.

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

143. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от Аноним (89), 27-Июл-24, 11:14 
> Опечатался

Но всё равно оказался прав.

"If the value of the right operand [оператора сдвига влево или вправо] is negative or is greater than or equal to the width of the promoted left operand, the behavior is undefined" - https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf#p...

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

152. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (66), 27-Июл-24, 12:29 
То что сдвиг на число бит, превышающее размер операнда это UB и так понятно. Я имею ввиду именно поведение, зависяшее от имплементации, а не UB, даже если E2 находится в допустимых пределах.
5.6.7.5
The result of E1 >> E2 is E1 right-shifted E2 bit positions. [...] If E1 has a signed type and a negative value, the
resulting value is implementation-defined
Ответить | Правка | Наверх | Cообщить модератору

189. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (89), 27-Июл-24, 14:32 
> То что сдвиг на число бит, превышающее размер операнда это UB и так понятно

Нет, если его честно выполнять, то результатом будет ноль. Надо понять, что в процессорах это могут оптимизировать так, что `uint64_t(x) >> y` выполняется как `uint64_t(x) >> (y & 0b11'1111)`, тупо по маске. В альтернативной реальности все процессоры могли бы делать ещё `if (y & ~0b11'1111) return 0;` и UB бы не было. Не так уж очевидно.

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

150. Скрыто модератором  +2 +/
Сообщение от Аноним (53), 27-Июл-24, 12:25 
Ответить | Правка | К родителю #66 | Наверх | Cообщить модератору

335. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от ЦукаНя (?), 29-Июл-24, 04:13 
move семантика есть, асинхронное программирование есть, с синтаксисом раст ничуть не лучше. А говорить про нестандартные расширения, когда в расте стандарта нет вообще, ты это серьёзно? Да и многие ими не пользуются. В расте нет нормальных шаблонов и вот вообще всё реализуется через костыли в виде макросов. Документация стандартной библиотеки и остального: cppreference. Единая система сборки? Так cmake можно сказать что монополизировал всё. А за счёт того что в языке есть UB, компилятор может лучше оптимизировать код, или это сделано для поддержки платформ. Чтобы не парсить литералы в рантайме, можно просто использовать constexpr. И закинуть строку в шаблон. А вот костыли в виде паттерн матчина из раста, или его енамов с генериками и даром не нужны.
Ответить | Правка | К родителю #66 | Наверх | Cообщить модератору

359. "Выпуск языка программирования Rust 1.80"  +3 +/
Сообщение от Карлос Сношайтилис (ok), 29-Июл-24, 15:00 
> когда в расте стандарта нет вообще

Так и в плюсах нет стандарта. А то им называют - набор рекомендаций для компиляторописателей. Как они заимплементят тот или иной пункт - терра инкогнита. И ладно бы реализация была один раз и навсегда, так нет, может и с версией поменятся.
Это всё что угодно, но не стандарт.

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

467. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от wyry (-), 03-Авг-24, 04:13 
Ложь. Стандарт C++ это как раз проверка на корректность компилятора. Кстати именно поэтому он допускает UB, смысл которого большинство не понимает. Компилятор ОБЯЗАН делать то, что ему приказывает делать стандарт, но сам стандарт не требует ничего сверхъестественного, а UB позволяет производить оптимизации быстродействия вместо того чтобы обеспечить все варианты "эзотерического" использования функциональности. Если вы не знаете как что-то работает: открываете стандарт и смотрите то, что все компиляторы обязаны поддерживать. Необязательная поддержка указывается отдельно, но "необязательная" здесь НЕ означает то, что можно делать что хочешь, а значит лишь то, что её может не быть в реализации вовсе, а если есть, то будьте добры и следуйте стандарту.
Ответить | Правка | Наверх | Cообщить модератору

492. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Карлос Сношайтилис (ok), 10-Авг-24, 02:06 
1. Большинство компиляторов С/++ не поддерживает стандарты полностью, что автоматически переводит понятие "стандарт" в "рекомендации".

2. UB – это неопределенное поведение, а не неопределенная реализация. Ничего "эзотерического", например, в переполнении целых чисел нет, однако UB там есть. Что, опять же, говорит о "рекомендациях".

3. Открыв стандарт, ты не сможешь на 100 процентов быть уверен, что твой компилятор будет работать ожидаемо. Но и после того как ты убедишься, что верно понял релиз нотсы компилятора по конкретной UB и правильно их заимлемнтил, ты не получаешь никаких гарантий, что поведение сохранился в следующих версиях. Стандарт? Ну-ну.

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

361. "Выпуск языка программирования Rust 1.80"  +3 +/
Сообщение от Fyjy (-), 29-Июл-24, 15:25 
> А говорить про нестандартные расширения, когда в расте стандарта нет вообще, ты это серьёзно?

"Стандарт СИ" это почти как Гост на колбасу вида "колбаса делается из мяса, может содержать добавки в виде сала, туал.бумаги или овна, в зависимости от желания компилятора рецепта - повара"
Не думаю что оно тебя бы сильно порадовало)
Плюсы тоже не далеко ушли.
И там, и там куча мест в стиле "ну мы сами ХЗ как оно должно работать, поэтому любись оно понём 🐴 пусть писаки компиляторов сделают абыкак".
Я уже молчу про то, что из распространенных компиляторов ни один(!!!) не удовлетворяет стандарту полностью en.cppreference.com/w/c/compiler_support

> В расте нет нормальных шаблонов и вот вообще всё реализуется через костыли в виде макросов.

Хахаха, а типа эти шаблоны не лютый калище?

> Документация стандартной библиотеки и остального: cppreference.

А какая разница что она есть, если содержимое этой доки овно?

> А за счёт того что в языке есть UB, компилятор может лучше оптимизировать код,

А за счёт того что в языке есть UB можно добавить CVE и бекдоры что дает двойной профит "без работы по исправлению и разргебанию не останешься И можно намутить халтурку ЕВПОЧЯ ;)"

> или это сделано для поддержки платформ.

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

> А вот костыли в виде паттерн матчина из раста, или его енамов с генериками и даром не нужны.

Конечно лучше пусть все ENUMы будут интами! Это же так удобно по ошибке сравнивать ENUM_1 и ENUM_2.
И главное никто не прикопается что "тут бекдор!", просто покачают головой "опять ненастоящий пограммист обделался в ядре"


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

397. "Выпуск языка программирования Rust 1.80"  +2 +/
Сообщение от Аноним (383), 29-Июл-24, 23:11 
> move семантика есть

Это недоразумение, а не move семантика. Когда std::move, внезапно, не делает никакого move, немутабельный объект который можно move'нуть вообще невозможен, return std::move() ломает оптимизации, с moved-from объектом можно делать что угодно..

> асинхронное программирование есть

Какое-какое в плюсах асинхронное программирование? Там корутины даже толком не завезли. Руками сишный libuv дёргать это не асинхронное программирование если что, это онанизм.

> с синтаксисом раст ничуть не лучше

Лучше.

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

468. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от wyry (-), 03-Авг-24, 04:17 
Вы удивитесь, но Rust на самом деле тоже не делает никакого move "за кадром". Вся концепция владения - это фронтенд для разработчика, на системном уровне ничего подобного не существует в принципе. Только в Rust ещё приплели уродливую концепцию времени жизни, что C++ делает пусть хитро иногда (основные хитрости связаны с R-value ссылками), но полностью сам.
Ответить | Правка | Наверх | Cообщить модератору

493. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Карлос Сношайтилис (ok), 10-Авг-24, 02:12 
А в машинах кодах всё превращается в "уродливую" адресную арифметику, без всяких там типов, классов и прочего мусора, который процессору не нужен, а нужен только разработчику. Как и концепция владения.
Ответить | Правка | Наверх | Cообщить модератору

495. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от wyry (-), 13-Авг-24, 16:36 
Так какой смысл тогда придираться к C++, что move на самом деле "ничего не перемещает" (и это действительно так, это простое преобразование к R-value ссылке), когда в Rust схожая семантическая модель на самом деле тоже "ничего не перемещает".
Ответить | Правка | Наверх | Cообщить модератору

496. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Карлос Сношайтилис (ok), 13-Авг-24, 18:29 
Это проверки которые нужны разработчику. В расте они работают, в плюсах – нет.
Потому и придираются.
Ответить | Правка | Наверх | Cообщить модератору

499. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от wyry (-), 15-Авг-24, 16:23 
> Это проверки которые нужны разработчику. В расте они работают, в плюсах –
> нет.

Какие проверки? move-семантика как раз и создана для того чтобы управление ресурсами вело себя таким же образом как и обычное выделение автоматической памяти. Вы общаетесь лозунгами, а не предметом дискуссии.
Более того, если уж речь зашла о проверках: в C++ можно так настроить компилятор и статические анализаторы чтобы он пресекали попытки писать с UB или проверять на соответствие кода стандарту, а также зачем вообще НУЖЕН UB, притом, что избавиться от UB на самом деле легко, в Pascal UB почти нет и он гораздо проще и логичнее, чем Rust.
Кстати к одному из ваших предыдущих ответов: вы также грубо солгали, когда заявили, мол "компиляторы не реализуют стандарт". Если в компиляторе заявлено какой стандарт он реализует, значит он его РЕАЛИЗУЕТ. Это только так и работает. Вы не понимаете дизайн C++ (да и дизайн Rust на самом деле тоже), а общение с "отделом маркетинга" - это неуважение к себе.

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

144. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Анониим (?), 27-Июл-24, 11:22 
Да, но в Rust безопасная работа с памятью обеспечивается изначально.
Ответить | Правка | К родителю #26 | Наверх | Cообщить модератору

462. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от wyry (-), 03-Авг-24, 03:25 
И у вас нет выбора кроме как использовать конкретно эту модель памяти. В C++ у вас есть выбор между C-подобной моделью, "классики" в виде new, delete, умные указатели и move-семантика (современный подход), дальше появится транзакционная память (частично уже поддерживается кое где), в результате C++ легко подружить с любым проектом на C, что часто бывает необходимо. В Rust же либо переписывают, либо делают обёртки для сишных либ, а политика "владения" и move-семантика в C++ появилась раньше, чем вообще появился Rust (это всё C++11), хотя смарт-указатели появились и того раньше.
Ответить | Правка | Наверх | Cообщить модератору

321. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Bottle (?), 28-Июл-24, 22:57 
Если бы только ими пользовались...
Ответить | Правка | К родителю #26 | Наверх | Cообщить модератору

30. Скрыто модератором  –6 +/
Сообщение от Аноним (30), 26-Июл-24, 21:57 
Ответить | Правка | Наверх | Cообщить модератору

32. "Выпуск языка программирования Rust 1.80"  +10 +/
Сообщение от Омоним (?), 26-Июл-24, 22:16 
Мне всегда казалось, что компилятор должен помогать программисту делать хорошие программы. То есть программист - главный, а компилятор - его помощник. Однако когда программируешь на Rust е, то складывается ощущение, что всё наоборот: компилятор - хозяин, а программист - его раб. Компилятор диктует что ты должен делать и как ты должен это делать. В Ruste нельзя стукнуть кулаком по столу и приказать "Делай как я тебе говорю и баста!". А в C++ - можно. Rust - это как строптивая и несговорчивая жена. С кем вам лучше жить , со строптивой или покорной - решать вам самим.
Ответить | Правка | Наверх | Cообщить модератору

36. "Выпуск языка программирования Rust 1.80"  +6 +/
Сообщение от DEF (?), 26-Июл-24, 22:33 
Компилятор и помогает погромисту. Компилятор же будет переводить в машинный код все, что там набил своими культяпками погромист.
Ответить | Правка | Наверх | Cообщить модератору

61. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (59), 27-Июл-24, 00:44 
Набил всё, что ему науказывал компилятор Rust.
Ответить | Правка | Наверх | Cообщить модератору

38. "Выпуск языка программирования Rust 1.80"  +2 +/
Сообщение от WhitePower1488 (?), 26-Июл-24, 22:39 
В бородатые восьмидесятые доступ к железу был сродни аудиенции у генсека – по талонам и с предварительной записью. Код писался от руки на чем попало, хоть на туалетной бумаге (если повезёт достать). А уж потом, дрожащими от нетерпения руками, эти каракули вводились в ЭВМ. Так что компетенции нынешних гуманитариев, вошедших в айтишечку, сильно недотягивают до того, чтобы они диктовали компилятору свои условия.
Ответить | Правка | К родителю #32 | Наверх | Cообщить модератору

62. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (59), 27-Июл-24, 00:46 
>на туалетной бумаге (если повезёт достать)

Не всё так плохо, была ж газета Правда.

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

45. "Выпуск языка программирования Rust 1.80"  +9 +/
Сообщение от Аноним (45), 26-Июл-24, 23:22 
> компилятор должен помогать программисту делать хорошие программы.

Ненадежная программа не может быть хорошей. А чтобы было хорошо, нужно делать хорошо.
Компилятор мешает программисту сделать плохо.

> В Ruste нельзя стукнуть кулаком по столу и приказать "Делай как я тебе говорю и баста!".

Можно. Пишешь unsafe и делаешь что хочешь.
С женой такое не проканает))

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

140. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от сишник (?), 27-Июл-24, 10:32 
> Ненадежная программа не может быть хорошей. А чтобы было хорошо, нужно делать хорошо.
> Компилятор мешает программисту сделать плохо.

Так ты бери и делай сразу хорошо! А кто не может хорошо - тот плохой программист!

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

381. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Прохожий (??), 29-Июл-24, 19:09 
Как показывает многолетний опыт разработки сравнительно сложных программ - никто не может. ¯\_(ツ)_/¯
Ответить | Правка | Наверх | Cообщить модератору

48. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от Аноним (155), 26-Июл-24, 23:33 
Давно пора сделать аналог GC, только в compile time. 100% что можно просчитать когда можно уже делать free(), fclose(), glDeleteTextures() и всё такое. К сожалению, современная айтишечка - колосс на глинянных ногах, никто не хочет развивать базу, ЯП развиваются очень медленно. Так что имеем 3 неудобных стула в виде runtime GC, ручного управления и смартпойнтеров / боров чекеров.
Ответить | Правка | К родителю #32 | Наверх | Cообщить модератору

55. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (53), 27-Июл-24, 00:17 
> Давно пора
> 100% что можно просчитать когда можно уже делать free(), fclose(), glDeleteTextures() и всё такое.
> Так что имеем 3 неудобных стула в виде [...] смартпойнтеров [...]

Его и сделали давно. RAII называется (смартпоинтеры  его частный случай). Что конкретно тебе неудобно?

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

83. "Выпуск языка программирования Rust 1.80"  –2 +/
Сообщение от Аноним (155), 27-Июл-24, 02:39 
> RAII

Убогое. 90% плюются с плюсов и раста с их raii и боров чекерами, остальные делают вид что им ок (но работают медленнее и зп меньше получают, т.к меньше фич за то же время в прод катят). Инди девелоперам и стартаперам некогда боровов ублажать и юник птр везде тулить и мувить - да и выглядят эти портянки лишних закорючек стремно. Надо чтобы как мейнстрим языках вообще не делать никаких лишних телодвижений, и даже лучше - чтобы не только память автоматически освобождалась, но и все остальные ресурсы. Так как с последним там или ничего или  нелепые костыли try-with-resources.

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

151. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (53), 27-Июл-24, 12:29 
> и даже лучше - чтобы не только память автоматически освобождалась, но и все остальные ресурсы. Так как с последним там или ничего или  нелепые костыли try-with-resources.

Чел, ты бы вникнул, что такое RAII и не нисал глупости. Оно буквально об освобождении всех ресурсов автоматически без лишних телодвижений и try-with блоков - как раз то, о чем ты писал.

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

153. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (155), 27-Июл-24, 12:39 
> Чел, ты бы вникнул, что такое RAII

Типикал С++ фан. Про raii я очевидно знаю, раз пишу. Я работал в разных командах, и с С++ в т.ч. - они самые зазнавшиеся и при этом самые медленные. Шире надо мыслить, а не цепляться за устаревшие на коленке слабанные примитивные технологии.

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

162. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Аноним (53), 27-Июл-24, 13:46 
> Про raii я очевидно знаю, раз пишу.

Очевидно, не знаешь. Ибо пишешь про него чушь, да и вообще только что удивлялся, почему никто до сих пор не сделал "аналог GC, только в compile time".

> Я работал в разных командах, и с С++ в т.ч

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

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

167. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от Аноним (155), 27-Июл-24, 14:07 
> Очевидно, не знаешь

Мне деньги за то что знаю и применяю платили.

> таки описал как

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

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

199. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (53), 27-Июл-24, 14:45 
> Компилятор должен знать о том, какие функции выделяют ресурсы и какие освобождают, находить функции выделения ресурсов и рассчитывать во время компиляции условия для их освобождения.

Ты не поверишь, но это именно то, что делает RAII...

Кроме, конечно, "находить функции выделения". Тут я вообще не понял, что ты имеешь в виду.

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

176. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от Аноним (155), 27-Июл-24, 14:21 
Объявить компилятору, какие функции выделяют ресурсы и какие их освобождают, можно например так:
import libc.malloc closable libc.free
import libc.fopen closable libc.fclose
И так далее для любых библиотечных ф-ий, которые что-то выделяют.
Ответить | Правка | К родителю #162 | Наверх | Cообщить модератору

197. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (53), 27-Июл-24, 14:43 
> import libc.fopen closable libc.fclose

И я должен писать такое чудо в каждом файле, где нужна функция? Спасибо, но нет.

И ответь на милость, что должно происходить, когда я буду копировать указатель FILE*? Как, по-твоему, компилятор сам определит, когда пора вызывать fclose()? Вставлять рантаймовый счетчик ссылок?

> Объявить компилятору, какие функции выделяют ресурсы и какие их освобождают, можно например

... например, конструктором и деструктором, как делалось десятилетиями.

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

200. "Выпуск языка программирования Rust 1.80"  –2 +/
Сообщение от Аноним (155), 27-Июл-24, 14:56 
> И я должен писать такое чудо в каждом файле, где нужна функция? Спасибо, но нет.

Как хочешь, пиши дальше уродливое

struct file_deleter {
    void operator()(std::FILE* fp) { std::fclose(fp); }
};

using unique_file = std::unique_ptr<std::FILE, file_deleter>;

>  Как, по-твоему, компилятор сам определит, когда пора вызывать fclose()?

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

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

204. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (53), 27-Июл-24, 15:18 
>> И я должен писать такое чудо в каждом файле, где нужна функция? Спасибо, но нет.
> Как хочешь, пиши дальше уродливое

Я это "уродливое" напишу только один раз и буду реюзать по всей кодовой базе.

> Строить граф видимости переменных по скоупам, если после текущего места исполнения все переходы ведут туда, где переменная не видна - значит, её пора удалять.

Ты же понимаешь, что это возможно только во время выполнения? А не compile time, как ты хотел.

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

202. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (155), 27-Июл-24, 15:05 
>  в каждом файле, где нужна функция?

Почему обязательно в каждом? Если функция из библиотеки, которая уже на этом языке, там может быть

@closeable free
public void* malloc(u64 count)

и тогда по месту использования достаточно

import libc.free или import libc.* для ленивых

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

205. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (53), 27-Июл-24, 15:23 
> Почему обязательно в каждом? Если функция из библиотеки, которая уже на этом языке, там может быть

Ты сейчас описал какой-то недодеструктор. Потому что если это "функция из библиотеки, которая уже на этом языке", то там будет объект файла с нормальным интерфейсом и RAII, а не сишные функции кишками наружу.

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

206. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от Аноним (155), 27-Июл-24, 15:34 
> Ты сейчас описал какой-то недодеструктор.

Нет это не тоже самое.
1. В общем случае ты не можешь пользоваться объектами с raii как будто у тебя GC под капотом.
2. Деструкторы ты пишешь руками, как будто ХХ век на дворе.

> Ты же понимаешь, что это возможно только во время выполнения?

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

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

207. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Аноним (53), 27-Июл-24, 15:41 
> В общем случае ты не можешь пользоваться объектами с raii как будто у тебя GC под капотом.

Что ты имеешь в виду?

> Деструкторы ты пишешь руками, как будто ХХ век на дворе.

А чем писать твой гениальный костыль? Ножками, что ли?

>> Ты же понимаешь, что это возможно только во время выполнения?
> Сишник во время написания программы вручную всё освобждает, а не во время выполнения. И компилятор сможет за сишника, если нормальным незашоренным кодерам поручить разработку.

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

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

210. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (155), 27-Июл-24, 15:50 
> Что ты имеешь в виду?

Сравни код на яве и на С++, вроде разница очевидна.

> Ножками, что ли?

Ничем, как до тебя не дойдёт то. Просто не нужно делать то, что машина сама может вычислить.

> То есть, ты даже сам не можешь объяснить

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

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

212. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (53), 27-Июл-24, 16:03 
> Сравни код на яве и на С++, вроде разница очевидна.

Чел, это твоя ответственность - объяснить, почему вдруг "не можешь пользоваться объектами с raii как будто у тебя GC под капотом". Вместо этого ты мне предлагаешь сравнивать какой-то (какой?) код нв яве с C++...

> Ничем, как до тебя не дойдёт то.

Ты только что заливал про "@closeable free" и "import libc.malloc closable libc.free". С тобой все хорошо?

> Верхнеуровнево я вроде доходчиво объяснил.

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

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

214. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от Аноним (155), 27-Июл-24, 16:10 
> Чел, это твоя ответственность

С чего вдруг? Если вдруг когда-то соберусь свой язык делать, тогда и распишу как что и куда.

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

215. Скрыто модератором  +/
Сообщение от Аноним (53), 27-Июл-24, 16:17 
Ответить | Правка | К родителю #214 | Наверх | Cообщить модератору

208. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Аноним (53), 27-Июл-24, 15:49 
> Сишник во время написания программы вручную всё освобждает, а не во время выполнения.

Ага, или не освобождает. Или освобождает дважды. Тут уж как повезет...

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

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

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

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

213. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от Аноним (155), 27-Июл-24, 16:06 
> Учитывая, что ни один компилятор в мире сейчас такого не может

Да, все языки говно. Компиляторы просто реализовывают это говно.
С++ говно потому что вместо импортов убогие инклуды, раздувающие время компиляции, ручное управление памятью, дурацкие шаблоны, порождающие нечитабельные простыни ошибок, очень многословный, корутины через жопу с каким-то co_return дурацким. Какую-то альтернативу импортам попытались изобразить, но как всегда в с++ через жопу и ни с чем почти не работает.
Java развивается крайне медленно, 21 от 8 мало чем отличается. Records убогие добавили и всё почти. Async/await нет, designated initializers нет, null safety из котлина стащить не догадались за столько лет.
Си просто прошлый век.
Python в 100 раз медленее чем си поэтому тоже говно.
Котлин - та же ява только с другими погремушками, оверхэдом на неудаляемые геттеры/сеттеры, через жопу сделана проверка на null (тоже с оверхэдом).
Js - тут всем всё понятно.
И так далее.

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

317. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от anonimous (?), 28-Июл-24, 22:07 
Если не нравится синтаксис умных указателей С++, посмотри на SWIFT. Там есть структуры и они передаются по значению, а есть классы, они всегда передаются по указателю/ссылке и используют подсчет ссылок и автоматическое освобождение ресурсов.
Ответить | Правка | К родителю #55 | Наверх | Cообщить модератору

75. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Аноним (75), 27-Июл-24, 02:16 
Давно уже сделано, называется D
Ответить | Правка | К родителю #48 | Наверх | Cообщить модератору

113. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Ф1 (?), 27-Июл-24, 08:44 
>Давно уже сделано, называется D

Там GC.

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

209. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Аноним (209), 27-Июл-24, 15:49 
Чтобы программе на этапе компиляции просчитать время жизни указателей, ей нужно эту программу, прежде всего, выполнить. Этот факт уже отсекает большую часть областей применения нашего языка, так как нам теперь не рентабельно с точки зрения времени создавать долгоработющие программы. Но мы пойдём  дальше: мы создадим аналог нашего идеального языка, но с GC, и во время рантайма запомним, когда нужно освобождать память. Но даже так в этом нет смысла хотя бы потому, что окружающая среда, в которой находится компьютер, постоянно изменяется, и повторить ту же окружающую среду, что была на этапе компиляции нашего идеального языка, невозможно.
Ответить | Правка | К родителю #48 | Наверх | Cообщить модератору

226. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от Аноним (155), 27-Июл-24, 19:40 
> Этот факт

Это выдумка, а не факт.

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

233. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (233), 27-Июл-24, 20:45 
Зачем вам цепляться к словам, проигнорировав при этом суть сообщения?

Возвращаясь к проблеме, я хочу вас спросить: каким ещё в таком случае образом вы можете предложить простому транслятору с человеческого языка узнать результаты ветвления программы, которая будет выполняться когда-то там в будущем, чтобы расставить необходимые закрывающие функции, при этом не нарушая привычные предположения о течении программы, предлагаяя синтаксис, не сложнее чем в Rust'е, и предлагая накладные расходы не больше, чем при использовании GC?

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

237. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от Аноним (155), 27-Июл-24, 21:08 
Так ведь сами эти условия ветвления известны на этапе компиляции, в чем проблема-то.
Ответить | Правка | Наверх | Cообщить модератору

299. "Выпуск языка программирования Rust 1.80"  +2 +/
Сообщение от Аноним (53), 28-Июл-24, 16:56 
> Так ведь сами эти условия ветвления известны на этапе компиляции, в чем проблема-то.

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

Какой к лешему граф во время компиляции?

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

318. "Выпуск языка программирования Rust 1.80"  +2 +/
Сообщение от anonimous (?), 28-Июл-24, 22:16 
Эта проблема называется "Проблема остановки" и почти 100 лет назад Тьюринг доказал что она есть и не разрешима.
Ответить | Правка | К родителю #237 | Наверх | Cообщить модератору

346. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от n00by (ok), 29-Июл-24, 09:50 
Так это в общем случае. А частных вполне решается, например для HelloWorld. :)
Ответить | Правка | Наверх | Cообщить модератору

239. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от Аноним (155), 27-Июл-24, 21:26 
Можно построить граф переходов между всеми областями видимостей переменных, затем, если все пути исполнения после выхода из интересующей области ведут туда, где интересующая переменная недоступна, то можно сразу её освобождать в этой же области. Если во всех путях она видима, то освобождать не нужно. Если часть путей ведет туда, где она видима, а часть - туда где не видима, то то же условие выбора пути, по которому дальше пойдёт исполнение программы, должно решать, освободить переменную или нет. Вроде просто звучит.
Ответить | Правка | К родителю #233 | Наверх | Cообщить модератору

262. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (233), 28-Июл-24, 00:03 
Возможно я понимаю: вы предлагаете каждый раз при выходе из скоупа проверять, будет ли использоваться переменная в дальнейшем. В таком случае графы, с помощью которых вы собираетесь реализовывать данную систему, будет недостаточно формировать во время компилирования: их нужно будет хранить во время выполнения программы и регулярно к ним обращаться. Кроме того, что само обращение накладывает дополнительный оверхед, так ещё и требования к памяти для такой программы будут значительно вырастать в зависимости от сложности программы: количества ветвлений, количество скоупов, количества самих переменных. Ещё интересно, что с такой системой, чтобы предоставлять программисту стандартизированный, привычный и последовательный опыт, вам придётся строить графы не только для переменных, хранящих указатели на выделенную динамическую память, но и для обычных автоматических переменных.
А что делать, если моё приложение использует несколько потоков? Граф не поможет понять, какой поток закончил работу раньше, и какой позже, и соответсвенно не сможет понять, когда оптимальнее будет освобождать память.
Ответить | Правка | Наверх | Cообщить модератору

289. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от Аноним (155), 28-Июл-24, 13:07 
> их нужно будет хранить во время выполнения программы

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

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

292. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Аноним (233), 28-Июл-24, 13:57 
Возьму простой пример из Rust Book'а:
```
char* pick_str1_or_str2(char* str1, char* str2);

{
  char* result;
  char* str1 = "foo";
  {
    char* str2 = "bar";
    result = pick_str1_or_str2(str1, str2);
  }
  print(result);
}
```

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

В Rust'e это решается тем, что программист может описать время жизни возвращаемой ссылки, например, обозначив, что возвращаемая ссылка будет жить столько же, сколько и пересечение времени жизни двух её ссылок-аргументов, и мне нравится это решение.

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

297. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от Аноним (155), 28-Июл-24, 16:29 
> мне нравится

Тех, кому не нравится, раз в 10 больше.

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

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

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

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

304. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Аноним (233), 28-Июл-24, 18:03 
> Какое-то правило с потолка.

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

> Какая вообще разница, как соотносятся лайфтаймы уже не нужных аргументов.

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

> Если обсуждать конкретно этот пример, то здесь вопрос хранить или нет вообще не стоит, т.к. str2 инициализруется константой, зашитой в бинарник, т.е. лайфтайм у ней максимальный.

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

> Если допустим имелось ввиду не то что написано, а какое-то абстрактное получение данных откуда-то в str2, то компилятор может заглянуть внутрь pick_str1_or_str2().

Более того, это абстрактный пример, код, данные, ситуация и много чего. Я бы мог расписать, что данные я получаю, например, от пользователя из stdin, но это не меняет сути: функция может быть внешняя, и даже если она внутренняя, то результат её выполнения можно узнать только в рантайме и вы не предскажете во время компиляции какой ветвью пойдёт исполнение.

Для ясности пусть в нашем случае функция возвращает ссылку наименьшей строки:

```
char* pick_str1_or_str2(char* str1, char* str2) {
    if (strlen(str1) < strlen(str2) {
        return str1;
    } else {
        return str2;
    }
}
```

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

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

311. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от Аноним (155), 28-Июл-24, 19:21 
> Это единственный вариант, который пропустит Rust

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

> соответственно не скажет, когда нужно очищать str2 в изначальном примере

Как раз таки довольно простой пример. Просмотрев возможные пути и видимость переменных на этих путях, алгоритму легко понять, что перед return str1 нужно поставить free(str2) и наоборот. С динамическими структурами сложнее, но тоже решаемо.

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

314. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Аноним (233), 28-Июл-24, 21:31 
> перед return str1 нужно поставить free(str2) и наоборот

Так у вас исполняемый файл вздуется если под каждое использование функцию мономорфизировать и инлайнить. В функции пропадёт смысл как переиспользуемом участке кода.

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

316. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (155), 28-Июл-24, 21:56 
Во 1-х функции обычно код организовывают для удобства, ничего страшного, если компилятор по своему перетасует операции, а во 2-х это примерно то же самое, что сишник написал бы вручную, т.е. никакого особого раздутия в реальности не предвидится. В любом случае, о недостатках несуществующего продукта говорить как-то странновато, общая идея - алгоритм должен работать примерно так же, как человек бы вручную расставлял free(), способы реализации - это частности, которые могут быть пересмотрены и/или улучшены.
Ответить | Правка | К родителю #314 | Наверх | Cообщить модератору

320. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (233), 28-Июл-24, 22:39 
Смотрите: если мы расмотрим уже другой пример:
```
{
  char* result;
  char* str1 = "foo";
  char* str2 = "bar";
  result = pick_str1_or_str2(str1, str2);
  print(result);
  print(str1); // Либо эта строка
  print(str2); // Либо эта может содержать неопределенное поведение
}
```
То здесь ваш вариант с

> перед return str1 нужно поставить free(str2) и наоборот

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

>  общая идея - алгоритм должен работать примерно так же, как человек бы вручную расставлял free()

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

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

326. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от Аноним (155), 28-Июл-24, 23:10 
Универсальных функций, которые подставляются во множество мест, в реальных проектах не так уж много, к тому же ваш пример синтетический. Освобождать память, которая была выделена где-то снаружи, внутри функции - это большая редкость. Так что я думаю что может +10-20% будет, а может и меньше - это несущественно по сравнению с +200 мб на JVM например.
Ответить | Правка | К родителю #320 | Наверх | Cообщить модератору

340. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Аноним (340), 29-Июл-24, 08:34 
> ваш пример синтетический
> Освобождать память, которая была выделена где-то снаружи, внутри функции - это большая редкость.

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

> Так что я думаю что может +10-20% будет, а может и меньше - это несущественно по сравнению с +200 мб на JVM например.

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

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

342. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (340), 29-Июл-24, 09:05 
*Предсказываю решение, зависимое от решений программиста неявно, и к тому же ненадёжное
Ответить | Правка | К родителю #340 | Наверх | Cообщить модератору

347. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от n00by (ok), 29-Июл-24, 09:51 
>> перед return str1 нужно поставить free(str2) и наоборот
> Так у вас исполняемый файл вздуется если под каждое использование функцию мономорфизировать
> и инлайнить. В функции пропадёт смысл как переиспользуемом участке кода.

Это известная ещё со времён появления в Си++ templates страшилка для детей.

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

330. "Выпуск языка программирования Rust 1.80"  +2 +/
Сообщение от Аноним (-), 28-Июл-24, 23:44 
> В том то и дело, людям некогда подстраиваться под раст.

Я понимаю что они очень заняты, выдавливают из себя очередную CVE по памяти.
Но ладно, не подстраивайтесь, но хотя бы не вонякайте когда в какой-то проект добавляются раст зависимости. А то в каждой такой новости нытье (кажется последняя была про thunderbird)

> Я бы добавил, что и не зачем, просто нужен более лучший инструмент.

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

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

50. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от fidoman (ok), 26-Июл-24, 23:38 
посмотри в собаке
Ответить | Правка | К родителю #32 | Наверх | Cообщить модератору

54. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (53), 27-Июл-24, 00:13 
> Компилятор диктует что ты должен делать и как ты должен это делать. В Ruste нельзя стукнуть кулаком по столу и приказать "Делай как я тебе говорю и баста!". А в C++ - можно.

Тебе делать нечего что ли? Обязательно нужно на ровном месте покрасоваться "смотрите, как я умею"?

Пиши нормальный код и не выпендривайся.

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

74. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Аноним (75), 27-Июл-24, 02:15 
Абсолютно верное замечание! Вместо того, чтобы ОСВОБОДИТЬ программиста от головняка с указателями, ржавокомпилер наоборот- НАВАЛИВАЕТ на программиста "вот это проверь, вот здесь укажи, вот там передай".... чего6л....?!?!? А можно я уже начну писать БИЗНЕС-ЛОГИКУ, а не делать прыжки в ширину вокруг ваших, мать их, указателей?!?!?!?!?!?!
Ответить | Правка | К родителю #32 | Наверх | Cообщить модератору

137. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Аноним (66), 27-Июл-24, 10:30 
Неделю попишешь и работа с лайфтаймами становится очевидной, в подавляющем большинстве случаев даже задумываться не приходится. Или можно писать на C, там нету головняка с указателями. По крайней мере на момент компиляции).
Ответить | Правка | Наверх | Cообщить модератору

149. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Аноним (-), 27-Июл-24, 11:58 
Угумс, вот так навалил целую кучу бузинесс логики, остатки размазал по окружающему коду.
Где-то залепил кастами void*.
И вроде все ок, даже не сильно пованивает, особенно если не принюхиваться.

Но ведь потом попрут баги.
Будут бессонные ночи "откуда взялся это сигабтр?!"
А потом, не дай боже, найдутся уязвимости, типичные для дыряшки (если на ней писалось).
CVEшки получения рута и тд.

В общем если тебе писать прототип - то питон и прочие ЯП.
А если писать надежный код - то лучше получить подсказки от компилятора.

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

84. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Аноним (-), 27-Июл-24, 03:03 
> В Ruste нельзя стукнуть кулаком по столу и приказать "Делай как я тебе говорю и баста!".

Да ладно тебе врать-то. В расте есть unsafe, это как раз тот самый кулак по столу.

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

112. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Ф1 (?), 27-Июл-24, 08:41 
>В Ruste нельзя стукнуть кулаком по столу и приказать "Делай как я тебе говорю и баста!"

Можно:

fn main () {
    unsafe{
        // ....
    }
}

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

129. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от verh010m (ok), 27-Июл-24, 09:47 
Я сперва думал ты про гошечку
Ответить | Правка | К родителю #32 | Наверх | Cообщить модератору

225. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от S22 (?), 27-Июл-24, 19:30 
Покорная жена которая изменяет на право и налево или строптивая, но верная?
Ответить | Правка | К родителю #32 | Наверх | Cообщить модератору

356. Скрыто модератором  +/
Сообщение от xsignal (ok), 29-Июл-24, 13:11 
Ответить | Правка | К родителю #32 | Наверх | Cообщить модератору

394. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Аноним (383), 29-Июл-24, 22:50 
> Мне всегда казалось, что компилятор должен помогать программисту делать хорошие программы

А мне всегда казалось что программисты должны быть компетентны и не делать ошибок.

> что всё наоборот: компилятор - хозяин, а программист - его раб

Какое ущемление прав, компилятор мешает писать некорретные программы. Потому что корректные писать он не мешает.

> В Ruste нельзя стукнуть кулаком по столу и приказать "Делай как я тебе говорю и баста!"

Можно. Именно и только в нём и можно. unsafe, unchecked_*, куча инструментов именно для этого.

> А в C++ - можно. Rust - это как строптивая и несговорчивая жена. С кем вам лучше жить , со строптивой или покорной - решать вам самим.

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

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

413. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от anonimous (?), 30-Июл-24, 09:52 
Один гениальный погромист любил делить на ноль. Перепробовал множество языков и компиляторов к ним. Даже на разных аппаратных платформах пробовал. И потом осознал, что это мировой заговор, плюнул на кодинг и ушел в политику.
Ответить | Правка | К родителю #32 | Наверх | Cообщить модератору

39. "Выпуск языка программирования Rust 1.80"  +13 +/
Сообщение от Аноним (39), 26-Июл-24, 22:41 
Еще один плохо читаемый язык с кучей знаков припенания.
Ответить | Правка | Наверх | Cообщить модератору

41. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от WhitePower1488 (?), 26-Июл-24, 22:49 
А какой по твоему норм? (вопрос серьёзный без подколки)
Ответить | Правка | Наверх | Cообщить модератору

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

49. "Выпуск языка программирования Rust 1.80"  +4 +/
Сообщение от Аноним (-), 26-Июл-24, 23:34 
Ещё бы кобол вспомнил. Впрочем, кобол хотя бы жив в отличии от лиспа.
Ответить | Правка | Наверх | Cообщить модератору

147. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (64), 27-Июл-24, 11:50 
Лиса с воза - коболу легче
Ответить | Правка | Наверх | Cообщить модератору

236. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Аноним (235), 27-Июл-24, 21:07 
Нет, Кобол я бы не вспомнил, так себе язык на мой вкус. Про живость Лиспа тебе придётся с кем-то другим посмотрить, я на Лиспе в прод писал ещё каких-то два года назад, и точно знаю, что тот проект жив и развивается дальше. Как и сам Лисп в общем-то. Но поскольку стандарту Лиспа лет больше, чем большинству местных комментаторов, то не удивительно, что ситуация с ним «олды не понят, нубьё не знает».
Ответить | Правка | К родителю #49 | Наверх | Cообщить модератору

273. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от залуупа (?), 28-Июл-24, 03:44 
> Как и сам Лисп в общем-то. Но поскольку стандарту Лиспа лет больше, чем большинству местных комментаторов

сам себе противоречишь

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

305. "Выпуск языка программирования Rust 1.80"  +2 +/
Сообщение от Аноним (31), 28-Июл-24, 18:23 
Где ты тут увидел противоречие? Или в голове не укладывается как можно было в девяностые написать стандарт языка так, чтобы он мог дальше развиваться без изменения стандарта?
Ответить | Правка | Наверх | Cообщить модератору

459. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Человек (??), 02-Авг-24, 17:46 
Если стандарт зафиксирован, то язык не развивается. Может лишь развиваться разработка на языке.
Ответить | Правка | Наверх | Cообщить модератору

319. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от xPhoenix (ok), 28-Июл-24, 22:27 
Я автор книги "GNU Emacs для технических писателей", и мне Lisp не нравится. Конфиги Emacs вообще неплохо бы в YAML перевести.
Ответить | Правка | К родителю #46 | Наверх | Cообщить модератору

57. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (57), 27-Июл-24, 00:33 
> А какой по твоему норм? (вопрос серьёзный без подколки)

Pascal. Ruby

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

63. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (59), 27-Июл-24, 00:48 
От Паскаля руки устают.
Ответить | Правка | Наверх | Cообщить модератору

67. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (-), 27-Июл-24, 01:49 
> От Паскаля руки устают.

Можно подумать что ты вручную в блокноте будешь вводить каждую буковку. Более мощный аргумент можно?

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

73. "Выпуск языка программирования Rust 1.80"  +2 +/
Сообщение от Аноним (75), 27-Июл-24, 02:12 
Можно. ГЛАЗА. Их ты точно никак не ускоришь. Очевидно, что распознать для глаза "begin" СТОКРАТ сложнее, чем "{". Собственно, потому паскакаль таки погряз в своих "научных недрах", а ЛЮБОЙ си-подобный язык взлетел. Даже Руби или, простихоспади, жабоскрипт.
Ответить | Правка | Наверх | Cообщить модератору

85. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от Мимо крокодил (-), 27-Июл-24, 03:11 
> ГЛАЗА

Глаза, как и мозг (если есть), воспринимают гораздо лучше связанные буквы, которые представляют собой слова, а не крючки и закорючки. Сразу можно понять, какой язык создан для долгосрочных проектов, а какой ради потешить ЧСВ.

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

93. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Аноним (89), 27-Июл-24, 05:29 
комментар

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

Глазам хочется цепляться за КВЧ ВАЖНОЕ КВЧ зпт а не отвлекаться на мишуру вскл

if ... then ... elseif ... end -- мишура из Lua
if (...) {...} else {...}
if (...) ... else ...

ратнеммок

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

398. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (383), 29-Июл-24, 23:14 
> Глаза, как и мозг (если есть), воспринимают гораздо лучше связанные буквы, которые представляют собой слова, а не крючки и закорючки

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

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

Как же ты объяснишь что паскаль не используется ни в одном серьёзном проекте?

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

416. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (416), 30-Июл-24, 10:18 
Просто Pascal уже не в моде а то что Pascal не используется ни в одном серьёзном проекте ещё доказать надо.
Ответить | Правка | Наверх | Cообщить модератору

90. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (90), 27-Июл-24, 04:37 
> Очевидно, что распознать для глаза "begin" СТОКРАТ сложнее, чем "{".

Не очевидно вовсе. Начнём с того, как ты определяешь "сложнее"? Энергетически затратнее? Больше времени занимает? Или что?

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

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

123. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Советский инженер (ok), 27-Июл-24, 09:31 
>Если же отвлечься от этого, то в текстовом редакторе begin выделен цветом ключевых слов, и с учётом контекста не надо даже буквы читать, чтобы понимать что это begin.

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

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

362. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (-), 29-Июл-24, 15:47 
{ абсолютно бесполезна и может быть легко заменена на begin.
Ответить | Правка | Наверх | Cообщить модератору

124. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Ю.Т. (?), 27-Июл-24, 09:32 
> Можно. ГЛАЗА. Их ты точно никак не ускоришь. Очевидно, что распознать для
> глаза "begin" СТОКРАТ сложнее, чем "{".

Неверное понимание. Мозг в известном ему контексте не воспринимает информацию вот так, по буковке, а кусками, т.е. здесь - ключевыми словами формального языка. Если на то пошло, то begin/end как ограничитель ловится именно легче, с меньшей трудозатратой глаз+мозг, чем фигурные скобки, которые близки по очертаниям к квадратным и простым скобкам.
Компактность собственно кода - да, ухудшена.

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

322. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Bottle (?), 28-Июл-24, 22:58 
Ух, какая же боль для анонима - читать буковы!
Переходи на китайские иероглифы в программировании, вообще идеал.
Ответить | Правка | К родителю #73 | Наверх | Cообщить модератору

349. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Соль земли (?), 29-Июл-24, 10:13 
Глупо осуждать язык за синтаксис, ведь это лишь часть парсинга кода в компиляторе.
Ответить | Правка | К родителю #73 | Наверх | Cообщить модератору

415. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (416), 30-Июл-24, 10:16 
Идиотский аргумент. А как же тогда названия функцый, переменных и всего остального что длиннее одного символа?
Ответить | Правка | К родителю #73 | Наверх | Cообщить модератору

399. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Аноним (383), 29-Июл-24, 23:16 
А напомни-ка, у вас там в паскакале лямбды завезли? Как ты напишешь лямбду складывающую число-аргумент с числом из лексически захваченной по ссылке переменной и передашь её в map()?
Ответить | Правка | К родителю #57 | Наверх | Cообщить модератору

103. "Выпуск языка программирования Rust 1.80"  +2 +/
Сообщение от Я (??), 27-Июл-24, 07:11 
В универе, в начале 90-х, нам Паскаль преподавали и немножко ассемблер. Потом, уже работая, ковырял Делфи и С++. В начале 2000-х появился С#. Вот это действительно классная вещь. Насчёт серьезности языка - это что?
Ответить | Правка | К родителю #41 | Наверх | Cообщить модератору

350. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Соль земли (?), 29-Июл-24, 10:15 
Всякую шляпу преподавали. Дельфи, прибитый гвоздями к IDE. C# с кучей версий дотнет и теми же трудностями, как у Java.
Ответить | Правка | Наверх | Cообщить модератору

221. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (221), 27-Июл-24, 17:55 
> А какой по твоему норм?

Nim.
Без вариантов.

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

382. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Прохожий (??), 29-Июл-24, 19:43 
Это язык с GC.
Ответить | Правка | Наверх | Cообщить модератору

411. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Ф1 (?), 30-Июл-24, 08:51 
>Это язык с GC.

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

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

405. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (383), 29-Июл-24, 23:49 
Так в nim 1:1 синтаксис раста.
Ответить | Правка | К родителю #221 | Наверх | Cообщить модератору

412. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Ф1 (?), 30-Июл-24, 08:54 
> Так в nim 1:1 синтаксис раста.

Угу а в питон 1:1 синтаксис C++.

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

52. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Карлос Сношайтилис (ok), 26-Июл-24, 23:48 
Любителям бэйсика – пламенный привет!
Ответить | Правка | К родителю #39 | Наверх | Cообщить модератору

70. "Выпуск языка программирования Rust 1.80"  +3 +/
Сообщение от Мимо крокодил (-), 27-Июл-24, 01:58 
Бейсик довольно неплох в плане синтаксиса. Современный FreeBASIC годится даже для написания операционных систем. Вот тут подробнее https://wiki.osdev.org/FreeBasic_Bare_Bones
Ответить | Правка | Наверх | Cообщить модератору

130. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от verh010m (ok), 27-Июл-24, 09:49 
Да.. он хорош
Ответить | Правка | Наверх | Cообщить модератору

218. "Выпуск языка программирования Rust 1.80"  –2 +/
Сообщение от Аноним (217), 27-Июл-24, 16:40 
Гуманитариев хлебом не корми - дай за синтаксис потрындеть. Открой любой курс по CS - там вообще такие вещи как синтаксис не разбираются. Разбирают и критикуют семантические свойства. А синтаксис это бирюльки, если очень хочется на нормальном языке ничего не стоит DSL написать.
Ответить | Правка | К родителю #70 | Наверх | Cообщить модератору

244. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Аноним (244), 27-Июл-24, 22:29 
>А синтаксис это бирюльки

Как быстро все забыли Вирта, он же только в этом году ушёл. Дегенерация во всей свой красе.

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

417. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (416), 30-Июл-24, 10:22 
А программы писать предлагается с помощью семантических свойств или всё таки с помощью этих амых бирюлек?
Ответить | Правка | К родителю #218 | Наверх | Cообщить модератору

148. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Аноним (64), 27-Июл-24, 11:51 
Плазменный привет
Ответить | Правка | К родителю #52 | Наверх | Cообщить модератору

286. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от Middle Go Developer (?), 28-Июл-24, 11:39 
Вот этим мне он и не нравится, вроде бы подразумевалось, чтобы было лучше, чем Си, но в Си всё же проще кодить
Ответить | Правка | К родителю #39 | Наверх | Cообщить модератору

65. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Аноним (65), 27-Июл-24, 01:07 
От фрагментов исходного кода Perl-ом запахло. Я не берусь судить, хорошо это или плохо, потому что мне все равно.
Ответить | Правка | Наверх | Cообщить модератору

68. Скрыто модератором  +/
Сообщение от Аноним (68), 27-Июл-24, 01:52 
Ответить | Правка | Наверх | Cообщить модератору

69. "Выпуск языка программирования Rust 1.80"  +6 +/
Сообщение от Мимо крокодил (-), 27-Июл-24, 01:55 
Почему в этом языке так активно используются всякого рода скобочки и прочие закорючки? Они лишь ухудшают читабельность. Или это тонкий намёк, что в будущем любой код будет write only?

Хороший пример читаемого синтаксиса у COBOL и Ada. Java тоже норм, но уже на грани.

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

92. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Прохожий (??), 27-Июл-24, 05:28 
Наверное, по той же причине, что и в математике. Краткость - сестра таланта.
Ответить | Правка | Наверх | Cообщить модератору

98. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Аноним (89), 27-Июл-24, 05:48 
> Наверное, по той же причине, что и в математике. Краткость - сестра
> таланта.

В математике нет такого понятия, как простота поддержки (maintainability). Математикам можно побыть страшно далёкими от народа. Они даже языки с динамической типизацией зовут нетипизированными, потому что в голове одни лямбды.

Rust можно покритиковать за закорючечность, потому что в нём на самом деле есть визуально избыточные закорючки для упрощения парсинга (turbofish, например).

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

99. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от Прохожий (??), 27-Июл-24, 05:59 
>В математике нет такого понятия, как простота поддержки (maintainability).

В математике есть такое понятие, как интуитивное понимание.

В чем проблема с чтением кода на Rust, если ты понимаешь концепции, семантику языка? Да, они сложнее, чем в Си. Но при этом проще, чем в Плюсах. Но на Плюсы народ почему-то не жалуется.

>Они даже языки с динамической типизацией зовут нетипизированными

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

>в нём на самом деле есть визуально избыточные закорючки

Но также есть синтаксический сахар.

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

104. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (89), 27-Июл-24, 07:49 
> динамическую типизацию нельзя приравнять её отсутствию

Для них это одно и то же, что для меня тоже стало открытием на днях. Пройдись по гуглокнигам или scholar'у, там такое часто встречается ("untyped language such as Ruby, JavaScript or Scheme") и можно откопать пояснение, что динамической/латентной/отсутствующей типизацией называется одно и то же (из-за untyped lambda calculus?).

> В математике есть такое понятие, как интуитивное понимание.

Не знаю. Там в любом случае фокус смещается с понятности выкладок на способности читателя этих выкладок. Смог схватить внезапно введённые автором обозначения - молодец. Хочешь растерянного аллигатора[1]? Держи: ⩼ (ещё не вырос, правда).

> В чем проблема с чтением кода на Rust

Если в двух словах, то сишнику не понравится, что у Rust горбы OCaml'овские торчат.

> Но на Плюсы народ почему-то не жалуется.

Ну почему, там хорошо видно, что move semantics пришлось кое-как вкорячивать в уже существующий язык. Как и новые способы инициализации, которые почти решают проблемы предыдущих. Стандартная библиотека известна нечитаемостью[2], потому что читаемый код юзер может случайно переопределить в препроцессоре. Метапрограммы зачастую write-only.

[1] https://xkcd.com/2606/
[2] случайная строчка, например: return __detail::__erase_nodes_if(__cont, __ucont, __pred);

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

114. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Ф1 (?), 27-Июл-24, 08:49 
>Если в двух словах, то сишнику не понравится, что у Rust горбы OCaml'овские торчат.

OCaml со всеми своими горбами гораздо читабельнее чем си.

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

117. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (89), 27-Июл-24, 09:08 
| поэтому я и говорю, что 'сишнику, а не ?каждому
Ответить | Правка | Наверх | Cообщить модератору

234. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (234), 27-Июл-24, 20:54 
Да в смысле? Даже сравнивать сишную императивную лапшу с окамловской строгостью нельзя. А ещё больше мне Clean нравится, такой простоты и четкой сухости никакой имеративщине никогда не добиться.
Ответить | Правка | К родителю #114 | Наверх | Cообщить модератору

160. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Прохожий (??), 27-Июл-24, 13:35 
>Пройдись по гуглокнигам или scholar'у, там такое часто встречается

Я бы обходил стороной такие книги, потому что авторы сами до конца не понимают, о чем пишут.

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

201. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (89), 27-Июл-24, 15:02 
Кто авторитетнее - профессор или Прохожий?

Benjamin C. Pierce в "Types and Programming Languages" противопоставляет "run-time monitoring" и "type systems". То есть мониторинг чего угодно, только не корректности типов:
"monitoring ... when one of its components is not behaving according to specification".

Он признаёт, что так говорят, но пишет, что это неформальность, которая в его теорию не укладывается.
"Terms like “dynamically typed” are arguably
misnomers and should probably be replaced by
“dynamically checked,” but the usage is standard"
.

Теория у него про то, что
"A type system is a tractable syntactic method for proving the absence of
certain program behaviors by classifying phrases according to the kinds
of values they compute"
.

Есть, конечно, и другие профессоры с другими теориями...

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

243. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Прохожий (??), 27-Июл-24, 22:28 
Не сотвори себе кумира. Знаешь, откуда цитата?

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

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

276. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (89), 28-Июл-24, 05:25 
> что типы в динамически типизированных языках всё-таки проверяются

У него английским по белому (здесь по зелёному) написано, что это не типы. Потому что он принял определения, согласно которым это не типы. Он про это книжку написал.

>  Не сотвори себе кумира. Знаешь, откуда цитата?

"Всегда внимательно читай комментарии" - В. И. Ленин. Я сразу сказал, что "математики"* в своём теоретическом компьютерном сатанизме варятся. Они могут позволить себе заявить, что ~99% практиков ошибаются, веря в динамическую типизацию.

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

> Авторитетнее, как всегда, обычный здравый смысл

Здравый смысл говорит, что тезис "не понимают, о чем пишут" пришлось замять и повозмущаться с позиции практика от невнимательности.

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

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

373. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Прохожий (??), 29-Июл-24, 17:55 
> У него английским по белому (здесь по зелёному) написано, что это не типы.

Но ведь я так и сказал, что человек применяет её по-своему, то есть "придирается к словам". Хорошо, не к словам, к понятиям (на тот случай, если ты тоже захочешь продолжить придирки), вводя свои определения типов.

> Я сразу сказал, что "математики"* в своём теоретическом компьютерном сатанизме варятся.

Но тогда зачем было приводить профессора? Который тоже в своём сатанизме решил свариться?

> Здравый смысл говорит, что тезис "не понимают, о чем пишут" пришлось замять и повозмущаться с позиции практика от невнимательности.

А, вот оно в чём дело. Опять придирки к словам (пардон, использование своей терминологии).

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

433. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (89), 31-Июл-24, 05:39 
Я понял - есть две точки зрения, твоя и неправильная. Кто за неправильную, тот враг. Кто как бы нейтрально сказывает о неправильной, тот коварный враг! Он то пренебрежительно пишет "в голове одни лямбды", то ссылается на профессорское звание, то говорит несогласии других профессоров. Что за коварные планы он вынашивает?

"Какие-то теоретики не согласны с практиками и с обеих сторон нет очевидно ошибающихся" - это вольнодумство.
"Теоретики заблуждаются и выдумывают заведомо ошибочную терминологию" - это по-нашему.

---
Почему нельзя просто закончить разговор на "ага, они и правда далеки от народа", "интересно, может пригодиться при чтении книг по CS"?

---
Взгляды теоретиков на типизацию ещё объясняют, почему типизацию делят на номинативную и структурную. Первое - это как в Java. Второе - это compile-time утиная типизация. Что-то пропущено, да? Runtime утиную типизацию в этой классификации выкидывают, потому что за типизацию не считают.

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

374. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Прохожий (??), 29-Июл-24, 17:59 
> тезис "не понимают, о чем пишут" пришлось замять

После некоторого раздумья. Нет, не пришлось. Эти люди таки не понимают, о чём пишут, если говорить о реальности, а не о неких сферических конях в вакууме.

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

216. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (-), 27-Июл-24, 16:18 
> И нет, таким никто не занимается, если мы говорим о грамотных специалистах, потому что динамическую типизацию нельзя приравнять её отсутствию.

В CS есть такая вещь как теория типов, через её использование можно выйти на доказательство утверждений о поведении программы. Но только в том случае, если типы указаны и проверяются статически. Поэтому динамическая типизация, которая с точки зрения инжинегра, вроде как и типизация, с точки зрения CS не более чем неявные автоматически расставляемые рантайм проверки. Они отличаются от if(!is_integer(x)) { throw_an_error() } только своей неявностью, они не меняют ничего практически.

Кроме того, если зайти с "лингвистической" точки зрения, то что такое нетипизированный язык? Если динамическая типизация -- это тоже типизация, то что значит "нетипизированный язык"? Если мы копнём в такой язык, мы увидим, что он рано или поздно будет вынужден принимать решения о типах значений, для того чтобы над ними разные операции проводить. И таким образом, любой язык становится типизированным, они отличаются только тем как смешаны статическая и динамическая типизация, и насколько строго всё это соблюдается. Можно наверное поспорить, что ассемблер нетипизированный, в нём в конце концов нет понятия типа, но даже если мы примем это, то получается что нетипизированными языками являются только ассемблеры. Таким образом пара понятий типизированный/нетипизированный становится практически бессмысленной: если типизированный означает "все языки" то зачем зашумлять сигнал своей речи ненужными словами про типизированность?

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

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

231. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (89), 27-Июл-24, 20:30 
> Таким образом пара понятий типизированный/нетипизированный становится практически бессмысленной

Не бессмысленнее, чем "язык высокого уровня == язык выше ассемблера", такое разбиение на низкий*/высокий уровень до сих пор живёт.

* машинные коды + asm

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

247. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Прохожий (??), 27-Июл-24, 22:37 
> они не меняют ничего практически

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

> Если динамическая типизация -- это тоже типизация, то что значит "нетипизированный язык"?

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

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

Не увидим. Например, в тех же Сях.

> то получается что нетипизированными языками являются только ассемблеры

Получается.

> пара понятий типизированный/нетипизированный становится практически бессмысленной: если типизированный означает "все языки"

Не означает.

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

471. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от wyry (-), 03-Авг-24, 04:47 
>В математике есть такое понятие, как интуитивное понимание.

И к Rust это не имеет абсолютно никакого отношения.
Вот для примера: язык Haskell или ML (oCaml, F#) любой профессиональный математик поймёт вообще из коробки 80-90% кода (то есть не открывая доков), потому что там прекрасно спроектированный синтаксис (при этом людям, у которых проблемы с математикой будут тупить даже прочитав доки). Открывая код на Rust вы вообще ничего в нём не поймёте независимо от вашей подготовки, в нём минимум интуитивной логики и много базовых правил прямо со старта. А концепция "ручного" времени жизни в виде ' - это вообще уродство и такого не должно быть в языке.

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

290. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (290), 28-Июл-24, 13:30 
Потому что язык должен быть новым не столько внутри сколько снаружи. А вдруг он снаружи будет похож на какой нить Си или Java? Парни с кольцом в носу, ну или там с тунелем в ухе, и бутылочкой смузи, скажут фу какая гадость и пойдут программировать на другом языке.
Ответить | Правка | К родителю #69 | Наверх | Cообщить модератору

100. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Аноним (101), 27-Июл-24, 06:27 
http://way-cooler.org/blog/2019/04/29/rewriting-way-cooler-i...
Ответить | Правка | Наверх | Cообщить модератору

158. "Выпуск языка программирования Rust 1.80"  –2 +/
Сообщение от Прохожий (??), 27-Июл-24, 13:29 
Называть автора статьи глупым язык не поворачивается. Поэтому скажу, что этот человек просто не озаботился вначале о том, чтобы прояснить для себя одну очевидную вещь: дополнительная безопасность - это всегда дополнительные расходы. И тут уж ты для себя решаешь, стоит ли их нести. Авторы языка Rust об этом знали. Именно по этой причине в языке есть слово unsafe.
Ответить | Правка | Наверх | Cообщить модератору

119. "Выпуск языка программирования Rust 1.80"  –4 +/
Сообщение от Аноним (15), 27-Июл-24, 09:13 
Язык создан исходя из неверного утверждения что якобы он добавляет безопасности, но мы много раз убеждались что это не так. Это просто цирк безопасности.
Ответить | Правка | Наверх | Cообщить модератору

132. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от Анониим (?), 27-Июл-24, 09:55 
Неправда, чем больше безопасности - тем лучше! Rust - это как замок на двери в вашей квартире!
Ответить | Правка | Наверх | Cообщить модератору

161. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Bottle (?), 27-Июл-24, 13:40 
А ключик (крейты) у чужака.
Ответить | Правка | Наверх | Cообщить модератору

163. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Прохожий (??), 27-Июл-24, 14:01 
Сделай их локальными.
Ответить | Правка | Наверх | Cообщить модератору

402. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от PROgrm_JARvis (ok), 29-Июл-24, 23:39 
1. Можно указывать зависимости из других источников (Git [1], локальная ФС [2])
2. Можно переопределять зависимости [3]
3. Можно добавлять и переопределять registry [4] (в т.ч. это уже поддерживается Artifactory [5])
4. Можно не использовать крейты (вообще), и всё писать в одном проекте руками вендоря зависимости (буханка.png)
5. Можно определить свой слой работы с ОС (или её отсутствием) [6]
6. Можно даже определить свой core (пусть пока это и unstable) [7]

Откуда же у всех такая уверенность, что Rust *принуждает* использовать crates.io? С учётом того, что <делать использование удобным> != принуждать использовать.

Любой, кому что-то мешает использовать crates.io, может пойти по любому из путей (преимущественно 1--4)

[1]: https://doc.rust-lang.org/cargo/reference/specifying-depende...
[2]: https://doc.rust-lang.org/cargo/reference/specifying-depende...
[3]: https://doc.rust-lang.org/cargo/reference/overriding-depende...
[4]: https://doc.rust-lang.org/cargo/reference/registries.html
[5]: https://jfrog.com/help/r/jfrog-artifactory-documentation/car...
[6]: https://docs.rust-embedded.org/book/intro/no-std.html
[7]: https://doc.rust-lang.org/nightly/unstable-book/language-fea...

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

156. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Прохожий (??), 27-Июл-24, 13:00 
>но мы

Кто, мы? Гугловцы, которые практики, иначе думают.

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

165. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (101), 27-Июл-24, 14:04 
Из-за некомпетентного руководства корпорации все так же подвержены хайповым трендам. Гугловцы постоянно принимают глупые решения. Например внедрение нейронок, которые генерируют бредовые ответы на главной при поиске. Или вот гугл стадия...
Ответить | Правка | Наверх | Cообщить модератору

169. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Прохожий (??), 27-Июл-24, 14:11 
>Из-за некомпетентного руководства корпорации

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

>подвержены хайповым трендам

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

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

295. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (101), 28-Июл-24, 15:15 
Ты и русский текст не осилил
Ответить | Правка | Наверх | Cообщить модератору

323. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Bottle (?), 28-Июл-24, 23:00 
Олигополии - весьма устойчивы, и за счёт сверхприбылей, распилов и откатов могут себе позволить заниматься чушью.
Вроде бы взрослый, а таких простых вещей не понимаешь.
Ответить | Правка | К родителю #169 | Наверх | Cообщить модератору

375. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Прохожий (??), 29-Июл-24, 18:04 
Сначала добейся. Стань этой самой олигополией. А то, видишь ли, желающих много, а получается на практике у единиц. Вроде бы взрослый, а таких простых вещей не понимает.
Ответить | Правка | Наверх | Cообщить модератору

376. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Прохожий (??), 29-Июл-24, 18:27 
Предыдущее сообщение было про руководство Гугла.

Это будет про применение Rust в ОС Android. В их блоге была заметка о том, что после того, как они перешли на использование Rust, количество ошибок с памятью сократилось, а продуктивность программистов выросла. Теперь предлагаю тебе подумать, каким образом относится твоё заявление про чушь, которой якобы занимаются в Гугле (потому что они же могут ею заниматься), к реальности?

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

419. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (416), 30-Июл-24, 10:30 
Google мировой лидер по части рекламы и слежки в WWW что обеспечивает им кучу денег. Занимая такое положение они там могут заниматься абсолютной хероборой.
Ответить | Правка | К родителю #169 | Наверх | Cообщить модератору

473. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от wyry (-), 03-Авг-24, 05:03 
Тогда почему у Google поиск по картинкам хуже, чем у Яндекса? (это не шутка). Лидеры такие лидеры. Сервисы Google - это треш. Более того, Google может закрыть доступ к вашим же данным (которые правда юридически уже НЕ ваши) в самый неподходящий для вас момент, если у вас сменился IP и аккаунт не привязан по номеру телефона. Всё, вы утратили доступ. Зато "безопасно". При этом Google уже за руку поймали на слежке и это фактически их реальный доход. При этом Google покупает компании и прихлопывает их деятельность в 90% случаев. Лидер на рынке софтостроения...
Ответить | Правка | К родителю #169 | Наверх | Cообщить модератору

291. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (290), 28-Июл-24, 13:32 
Это те что уже изобрели прогрессивный Dart, да на них стоит ровняться.
Ответить | Правка | К родителю #156 | Наверх | Cообщить модератору

127. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Ю.Т. (?), 27-Июл-24, 09:40 
> Опубликован релиз языка программирования общего назначения Rust 1.80, основанного проектом
> Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации
> Rust Foundation.

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

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

166. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Прохожий (??), 27-Июл-24, 14:07 
>такой уж новацией не является

Если рассматривать каждую фичу по отдельности, то так и есть. Но ведь в Rust их все объединили под одной крышей. И это само по себе уже очень даже весомое преимущество.

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

354. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от anonymmmeer (?), 29-Июл-24, 12:56 
А надо было делать язык, где можно добавлять разных формальных проверок, а можно этого и не делать.

frama-c добавить в c но не как комментарии, чтобы компилятор поддерживал.

что-то типа dafny сделать, но более удобный

А не так, взять 2.5 штуки из формальной верификации и прибить это всё гвоздями.

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

363. Скрыто модератором  +1 +/
Сообщение от Fyjy (-), 29-Июл-24, 15:56 
Ответить | Правка | Наверх | Cообщить модератору

133. "Выпуск языка программирования Rust 1.80"  +2 +/
Сообщение от Колян95 (?), 27-Июл-24, 10:09 
Задумка языка хороша, но реализация в плане синтаксиса для меня диковата. В коде множество спецсимволов из-за этого мне проще читать код c++.
Ответить | Правка | Наверх | Cообщить модератору

139. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Аноним (139), 27-Июл-24, 10:31 
Дело чисто привычки. Будешь работать с ним, это не будет проблемой.
Ответить | Правка | Наверх | Cообщить модератору

146. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от Facemaker (?), 27-Июл-24, 11:41 
>В коде множество спецсимволов

Не больше, чем в C++ ¯\_(ツ)_/¯

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

164. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Прохожий (??), 27-Июл-24, 14:03 
Например, каких спецсимволов там больше, чем в C++?
Ответить | Правка | К родителю #133 | Наверх | Cообщить модератору

487. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Sem (??), 06-Авг-24, 18:30 
Вот тут, например, скобочек больше :)
Ok(())
Ответить | Правка | Наверх | Cообщить модератору

324. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Bottle (?), 28-Июл-24, 23:03 
Тебе шашечки или ехать?
Шаблоны в C++ - вообще эзотерика для неподготовленного человека, но тем не менее, их пишут, с расчётом на то, что компилятор всё посчитает на этапе компиляции программы, и итоговая программа будет работать быстрее.
Дело в том, что на фоне решаемых задач синтаксис - лишь флёр для новичков.
Ответить | Правка | К родителю #133 | Наверх | Cообщить модератору

351. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Соль земли (?), 29-Июл-24, 10:18 
100500-я жалоба на синтаксис Rust, и ни одного примера. Свободен.
Ответить | Правка | К родителю #133 | Наверх | Cообщить модератору

404. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (383), 29-Июл-24, 23:46 
В rust синтаксис сильно проще плюсов и меньше перегружен спецсимволами. К чему именно претензии?
Ответить | Правка | К родителю #133 | Наверх | Cообщить модератору

136. Скрыто модератором  +/
Сообщение от Аноним (136), 27-Июл-24, 10:28 
Ответить | Правка | Наверх | Cообщить модератору

168. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Boboms (ok), 27-Июл-24, 14:09 
Что за убогий синтаксис у раста? У автора что тремор был когда на двоеточие жал? А в println зачем восклицательный знак? Что за хрень?
Ответить | Правка | Наверх | Cообщить модератору

173. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Прохожий (??), 27-Июл-24, 14:18 
println! - это макрос. Ты бы хоть немного почитал доку, прежде чем высказывать своё "ценное мнение", а?
Ответить | Правка | Наверх | Cообщить модератору

174. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от Boboms (ok), 27-Июл-24, 14:20 
> println! - это макрос. Ты бы хоть немного почитал доку, прежде чем
> высказывать своё "ценное мнение", а?

Что за хрень? Что, в расте нет функции printf(ln)?

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

177. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Прохожий (??), 27-Июл-24, 14:22 
Нет там такой функции. Зато есть макрос. Что конкретно тебя смущает? Или ты макрос  в глаза в первый раз в жизни видишь?
Ответить | Правка | Наверх | Cообщить модератору

179. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от Boboms (ok), 27-Июл-24, 14:23 
> Нет там такой функции. Зато есть макрос. Что конкретно тебя смущает? Или
> ты макрос  в глаза в первый раз в жизни видишь?

Что за язык такой, если нет printf?

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

181. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Прохожий (??), 27-Июл-24, 14:26 
А зачем, если если макрос, который делает то же самое плюс ещё некоторые фичи там есть?
Ответить | Правка | Наверх | Cообщить модератору

183. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Boboms (ok), 27-Июл-24, 14:27 
Правильно, зачем printf? Лучше двоеточий побольше захреначить, сразу улучшится управление памятью...
Ответить | Правка | Наверх | Cообщить модератору

186. "Выпуск языка программирования Rust 1.80"  +2 +/
Сообщение от Прохожий (??), 27-Июл-24, 14:28 
Остапа понесло.
Ответить | Правка | Наверх | Cообщить модератору

184. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Прохожий (??), 27-Июл-24, 14:28 
Да и функция эта - она не относится к языку. Или этого ты тоже не знаешь?
Ответить | Правка | К родителю #179 | Наверх | Cообщить модератору

187. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Boboms (ok), 27-Июл-24, 14:29 
А к чему она относится?
Ответить | Правка | Наверх | Cообщить модератору

190. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Прохожий (??), 27-Июл-24, 14:33 
К библиотеке же.
Ответить | Правка | Наверх | Cообщить модератору

191. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Boboms (ok), 27-Июл-24, 14:33 
> К библиотеке же.

А библиотека к чему?

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

193. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от Прохожий (??), 27-Июл-24, 14:34 
Ни к чему. Она живёт уже своей жизнью.
Ответить | Правка | Наверх | Cообщить модератору

282. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от n00by (ok), 28-Июл-24, 10:38 
Стандартная библиотека, в которой есть функция printf, описана в стандарте ISO/IEC 9899, соответственно является частью языка Си. Прохожий этого не знает.
Ответить | Правка | К родителю #191 | Наверх | Cообщить модератору

368. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Прохожий (??), 29-Июл-24, 17:27 
Почему это важно в контексте изначально обсуждаемой темы? Или просто надо было к словам придраться?
Ответить | Правка | Наверх | Cообщить модератору

422. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от n00by (ok), 30-Июл-24, 12:13 
> Почему это важно в контексте изначально обсуждаемой темы?

Ты сам про это написал в #184, а я должен объяснить, зачем ты это сделал?

> Или просто надо было к словам придраться?

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

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

372. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Прохожий (??), 29-Июл-24, 17:49 
И ещё одно замечание. То, что библиотечная функция является частью стандарта, не означает, что она относится именно к языку, как таковому в общем понимании этого термина. Почему? Потому что без этой библиотечной функции всё ещё можно будет писать программы на этом языке. Собственно, поэтому и разделяют понятия "язык программирования" и "стандартная библиотека".

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

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

421. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от n00by (ok), 30-Июл-24, 12:12 
> И ещё одно замечание. То, что библиотечная функция является частью стандарта, не
> означает, что она относится именно к языку, как таковому в общем
> понимании этого термина. Почему?

Потому что ты не знаешь, как называется стандарт. А стандарт называется "Язык программирования Си". Соответственно, стандарт описывает всё, из чего состоит язык.

> Потому что без этой библиотечной функции всё ещё можно будет писать программы на этом языке.

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

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

434. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (89), 31-Июл-24, 06:31 
> Так что, может быть, и хорошо, что стандартная библиотека является частью стандарта, но при этом она, всё же, живёт своей жизнью, и относится только к тому ПО, которое её задействует.

nooby в этом вопросе жесточайше принципиален и считает, что линукс написан не на Си. А на Си с расширениями, который не является Си, потому что среди расширений есть противоречащие стандарту (большинство таких).

Наверное, тогда почти ничего на Си не написано... И линусовская речь[1] о стандартах как туалетной бумаге выглядит практичнее, чем такие принципы. Но принципы тверды!

[1] https://bugzilla.redhat.com/show_bug.cgi?id=638477#c129

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

435. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (435), 31-Июл-24, 11:25 
> nooby в этом вопросе жесточайше принципиален и считает, что линукс написан не на Си. А на Си с расширениями, который не является Си, потому что среди расширений есть противоречащие стандарту (большинство таких).

Хм, а разве он не прав?
Ядро же писалось на ГНУтых расширениях, которые в тот момент поддерживались только одним ГНУтым компилятором. Который к тому же хотел заражать компилированный код гну-раком.
Типичное ЕЕЕ только со вкусом и запахом Щво6одки (и возможно запашком Бороды).

> Наверное, тогда почти ничего на Си не написано... И линусовская речь[1] о стандартах как туалетной бумаге выглядит практичнее, чем такие принципы. Но принципы тверды!
> [1] https://bugzilla.redhat.com/show_bug.cgi?id=638477#c129

Фин много чего вякал, даже пальчики показывал.
Потом ему умные дяди объяснили, что так делать плохо и если продолжать, то можно сходить на Хурд и остаться без зарплаты с кучей нулей.
ИЧСХ его попустило!
Так что на его эмоциональные высказывания (как у типичного б-ла) полные[1] crap/hell/anal и прочее можно не обращать внимание.
[1] habr.com/ru/articles/345846/

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

449. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (89), 01-Авг-24, 00:29 
> Хм, а разве он не прав?

Это спор о терминах. Большинство скажет, что диалект Си или Си с расширениями - это всё ещё Си. Комитет с этим, в общем-то, не спорит. Иначе бы мог давить таких за нарушение интеллектуальных прав - устроил бы что-то вроде "ECMAScript наоборот"*.

---
Конечно, стандарт - это просто (в меру полезная) бумажка. У майкрософта вон тоже своё ядро на своём Си со своими расширениями. То что у тебя по поводу Линуса болит - проигнорирую.

* То есть обязывал бы каждую non-conforming implementation называть так, чтобы не было связи с названием "Си". Стандарт бы назывался просто "Си", а почти все реализации - с подвывертом, чтобы не засудили (не "Си с расширениями IAR", например, а ThirdLetterLang).

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

455. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от n00by (ok), 02-Авг-24, 12:09 
В чём n00by жесточайше принципиален, так это в классификации персонажей, кто любит фантазировать и приписывать n00by своё мнение.

Тёмные Силы Электричества согласны с n00by, выдав капчу 77777 ;)

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

460. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (89), 02-Авг-24, 20:33 
> В чём n00by жесточайше принципиален, так это в классификации персонажей, кто любит
> фантазировать и приписывать n00by своё мнение.

Это не та ситуация, в которой надо на всякий случай всё отрицать.

Вот библиотека Cosmopolitan Libc обсуждалась[1], в которой `extern const errno_t EINVAL`, `#define EINVAL EINVAL`.
Ты медленно достал свой ISO/IEC 9899:2017, назвал нарушенный пункт и пришёл к выводу:

> То есть формулировка "Си-библиотека Cosmopolitan" не является корректной.
> Правильнее говорить "похожая на Си"

Чтобы сделать вывод про Linux или любое другое применение нестандартного Си, достаточно индукции.

[1] https://www.opennet.me/openforum/vsluhforumID3/130995.html#32

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

474. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от n00by (ok), 03-Авг-24, 10:17 
>[оверквотинг удален]
> Это не та ситуация, в которой надо на всякий случай всё отрицать.
> Вот библиотека Cosmopolitan Libc обсуждалась[1], в которой `extern const errno_t EINVAL`,
> `#define EINVAL EINVAL`.
> Ты медленно достал свой ISO/IEC 9899:2017, назвал нарушенный пункт и пришёл к
> выводу:
>> То есть формулировка "Си-библиотека Cosmopolitan" не является корректной.
>> Правильнее говорить "похожая на Си"
> Чтобы сделать вывод про Linux или любое другое применение нестандартного Си, достаточно
> индукции.
> [1] https://www.opennet.me/openforum/vsluhforumID3/130995.html#32

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

Пока ты взял мою оценку реализации стандартной библиотеки Си (требования к ней описывает стандарт) и попробовал натянуть её на клиентский код (к чему стандарт определяет понятие ill-formed, и то лишь в Си++).

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

479. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (89), 03-Авг-24, 23:40 
> Пока ты взял мою оценку реализации стандартной библиотеки Си (требования к ней
> описывает стандарт) и попробовал натянуть её на клиентский код (к чему
> стандарт определяет понятие ill-formed, и то лишь в Си++).

Ну ты шутник, какая разница, где стандарт нарушать? Вот клиентский код на Rust нарушает стандарт Си, совсем не компилируется. А по твоей логике его можно назвать Си-программой?

Или серьёзный пример:
- берём компилятор с расширением, делающим реализацию Си nonconforming[1] (например, asm())
- называем его компилятором "языка, похожего на Си" из-за нарушения стандарта
- пишем программу с использованием этого расширения, получаем nonconforming program[2]
- на каком языке эта программа?

> стандарт определяет понятие ill-formed, и то лишь в Си++

В стандарте Си вместо плюсового well-formed program используют conforming program и strictly conforming program. Есть совпадающая фраза, где strictly conforming в Си++ лишь заменили на well-formed[3] (смысл поменялся, но не уверен, что намеренно).


---
[1] "The inclusion of any extension that may cause a strictly conforming program to become invalid renders an implementation nonconforming. Examples of such extensions are new keywords, extra library functions declared in standard headers, or predefined macros with names that do not begin with an underscore."

[2] "A conforming program is one that is acceptable to a conforming implementation"

[3] "A conforming implementation may have extensions (including additional library functions), provided they do not alter the behavior of any well-formed program."

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

480. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от n00by (ok), 04-Авг-24, 12:49 
>> Пока ты взял мою оценку реализации стандартной библиотеки Си (требования к ней
>> описывает стандарт) и попробовал натянуть её на клиентский код (к чему
>> стандарт определяет понятие ill-formed, и то лишь в Си++).
> Ну ты шутник, какая разница, где стандарт нарушать?

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

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

481. Скрыто модератором  +/
Сообщение от Аноним (89), 04-Авг-24, 21:07 
Ответить | Правка | К родителю #480 | Наверх | Cообщить модератору

482. Скрыто модератором  +/
Сообщение от n00by (ok), 05-Авг-24, 08:33 
Ответить | Правка | К родителю #481 | Наверх | Cообщить модератору

483. Скрыто модератором  +/
Сообщение от Аноним (89), 06-Авг-24, 09:32 
Ответить | Правка | К родителю #482 | Наверх | Cообщить модератору

484. Скрыто модератором  +/
Сообщение от n00by (ok), 06-Авг-24, 10:22 
Ответить | Правка | К родителю #483 | Наверх | Cообщить модератору

485. Скрыто модератором  +/
Сообщение от Аноним (89), 06-Авг-24, 11:12 
Ответить | Правка | К родителю #484 | Наверх | Cообщить модератору

486. Скрыто модератором  +/
Сообщение от n00by (ok), 06-Авг-24, 12:24 
Ответить | Правка | К родителю #485 | Наверх | Cообщить модератору

364. "Выпуск языка программирования Rust 1.80"  +2 +/
Сообщение от morphe (?), 29-Июл-24, 16:40 
Потому что printf и прочие при каждом вызове заново интерпретируют строку форматирования, что медленно и зачем
Макрос println! в Rust парсит шаблон один раз на этапе компиляции, сразу выдаёт ошибки в синтаксисе если они есть, и генерирует оптимальный код

Зачем делать хуже, если можно сделать лучше?

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

423. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от n00by (ok), 30-Июл-24, 12:15 
> Потому что printf и прочие при каждом вызове заново интерпретируют строку форматирования,
> что медленно

На самом деле GCC разбирает большинство вариантов использования на этапе трансляции, заменяя на puts (или даже write, но не суть) и т.п.

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

432. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от morphe (?), 30-Июл-24, 20:56 
>> Потому что printf и прочие при каждом вызове заново интерпретируют строку форматирования,
>> что медленно
> На самом деле GCC разбирает большинство вариантов использования на этапе трансляции, заменяя
> на puts (или даже write, но не суть) и т.п.

Как минимум не по дефолту.
https://godbolt.org/z/YxG46dKWK

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

454. "Выпуск языка программирования Rust 1.80"  –2 +/
Сообщение от n00by (ok), 02-Авг-24, 12:02 
>>> Потому что printf и прочие при каждом вызове заново интерпретируют строку форматирования,
>>> что медленно
>> На самом деле GCC разбирает большинство вариантов использования на этапе трансляции, заменяя
>> на puts (или даже write, но не суть) и т.п.
> Как минимум не по дефолту.
> https://godbolt.org/z/YxG46dKWK

"%d + %d = %d" - один из спецификаторов, а не большинство.

https://godbolt.org/z/vGxxTre5s

https://www.ciselant.de/projects/gcc_printf/gcc_printf.html

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

458. "Выпуск языка программирования Rust 1.80"  +2 +/
Сообщение от morphe (?), 02-Авг-24, 15:37 
> "%d + %d = %d" - один из спецификаторов, а не большинство.
> https://www.ciselant.de/projects/gcc_printf/gcc_printf.html

Согласно документу, упомянутые тобой "большинство спецификаторов" = строки, РАВНЫЕ
"%s\n"
"%c"
""
<Строка из одного символа>
<Константная строка кончающаяся на \n>

И где ж это "большинство вариантов использования", если оно не поддерживает ни один спецификаторов в составе строки, зачем в таком случае нужен printf?)
Прямо говоря - оно может заменить один вызов printf на один вызов puts/putchar в тривиальных случаях.

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

475. "Выпуск языка программирования Rust 1.80"  –2 +/
Сообщение от n00by (ok), 03-Авг-24, 12:17 
>> "%d + %d = %d" - один из спецификаторов, а не большинство.
>> https://www.ciselant.de/projects/gcc_printf/gcc_printf.html
> Согласно документу, упомянутые тобой "большинство спецификаторов"

Не стоит приписывать мне ложные заявления. Цитирую себя, #423: "GCC разбирает большинство вариантов использования на этапе трансляции".

> = строки, РАВНЫЕ
> "%s\n"
> "%c"
> ""
> <Строка из одного символа>
> <Константная строка кончающаяся на \n>
> И где ж это "большинство вариантов использования", если оно не поддерживает ни
> один спецификаторов в составе строки, зачем в таком случае нужен printf?)

Большинство вариантов использования функции printf() находится в бесконечном количестве программ "Hello, World!" (только я их написал штук 30 или 40), а не в том единичном надуманном примере.

А что такое спецификатор формата, написано в стандарте, советую его почитать, если подмена тезиса произошла не намеренно, а по недоразумению.

> Прямо говоря - оно может заменить один вызов printf на один вызов
> puts/putchar в тривиальных случаях.

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

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

224. "Выпуск языка программирования Rust 1.80"  –3 +/
Сообщение от Анони (?), 27-Июл-24, 18:57 
в Си макросы как-то без восклицательных знаков справляются. Может для каждой синтаксической конструкции по спец символу дописивать?
Ответить | Правка | К родителю #173 | Наверх | Cообщить модератору

227. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (45), 27-Июл-24, 19:44 
> в Си макросы как-то без восклицательных знаков справляются.

Вот смотришь ты на код на сишки, и можешь сразу ответить "это макрос или нет?"
А "спец символ" сразу позволяет это понять в расте.

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

230. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Анони (?), 27-Июл-24, 20:27 
Да, традиционно они пишутся капсом. В противном случае есть LSP.
Ответить | Правка | Наверх | Cообщить модератору

232. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Facemaker (?), 27-Июл-24, 20:35 
>традиционно они пишутся капсом

То есть оставлена возможность совершения ошибки на ровном месте (вспомнить знаменитые C-макросы min и max). А в Rust нет такой возможности, что прекрасно. Не вижу проблемы в восклицательном знаке; можно произносить "про себя" println! как "принтлн-макро".

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

281. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от Аноним (281), 28-Июл-24, 10:13 
> А в Rust нет такой возможности, что прекрасно

Вам лишь бы запретить

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

283. "Выпуск языка программирования Rust 1.80"  +2 +/
Сообщение от Аноним (-), 28-Июл-24, 10:38 
>> А в Rust нет такой возможности, что прекрасно
> Вам лишь бы запретить

Прикинь, жизнь человека наверное наполовину (хотя мне кажется больше) состоит из запретов.
Нельзя ссать в лифте, нельзя приставать и делать определенные действия сексуального характера, если человек против.
Нельзя продавать г̶о̶л̶у̶б̶ц̶ы̶ ̶с̶ ̶г̶о̶в̶н̶о̶м̶ испорченную еду, бегать на красный свет или ехать по встречке со скорость в 200км/ч (вообще ПДД это сплошные запреты! ДОКОЛЕ!).

И знаешь, я в общем-то не против)

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

258. "Выпуск языка программирования Rust 1.80"  +3 +/
Сообщение от Аноним (-), 27-Июл-24, 23:19 
> Да, традиционно они пишутся капсом.

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

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

261. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (31), 27-Июл-24, 23:43 
> в Си макросы

… такое убожество, что непонятно, почему они вообще макросами называются.

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

332. "Выпуск языка программирования Rust 1.80"  +3 +/
Сообщение от Наноним (?), 29-Июл-24, 01:54 
Да нормальный синтаксис, что тебе не нравится?
```
unsafe {
  fn main() {
    std::::::input::::::output::::::stdout::::::<&'static mut dyn impl Box<StdOut>>!!!!!("helo world")??.unwrap()?.unwrap()???.unwrap()?;
  }
}
```
Ответить | Правка | К родителю #168 | Наверх | Cообщить модератору

357. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от Boboms (ok), 29-Июл-24, 13:17 
> Да нормальный синтаксис, что тебе не нравится?
> ```
> unsafe {
>   fn main() {
>     std::::::input::::::output::::::stdout::::::<&'static mut dyn impl Box<StdOut>>!!!!!("helo
> world")??.unwrap()?.unwrap()???.unwrap()?;
>   }
> }
> ```

Ахаха... Спасибо большое, поднял настроение!!!

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

360. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Тов. Майор (-), 29-Июл-24, 15:08 
Ну, умственно отсталые шуточки это всегда популярно.
Ты не думал заняться стендапом?

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

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

395. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от Boboms (ok), 29-Июл-24, 23:00 
Ты сначала ник свой подправь, "гений" долбаный, потом уже про юмор будешь разглагольствовать...
Ответить | Правка | Наверх | Cообщить модератору

203. "Выпуск языка программирования Rust 1.80"  +2 +/
Сообщение от Аноним (203), 27-Июл-24, 15:07 
Помнится пытался носую mesa сеобрать для дебиан, Одна из реализаций написана на rust в и требует либу поновей а та стебует компилятор раста новый, он в свою очередь требует пересобрать пол системы...  С плюсамы такой хрени почему-то не случается LLvm 10 летней свежести прекрасно справляется, но растоманам надо все новое... и пофиг тчо его еще нет в дистрибутивах нормальных.
Ответить | Правка | Наверх | Cообщить модератору

242. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Прохожий (??), 27-Июл-24, 22:20 
> С плюсамы такой хрени почему-то не случается

Может потому, что, во-первых, новые версии для Плюсов выходят раз в несколько лет. А во-вторых, потому, что далеко не все компиляторы Плюсов сразу могут поддерживать новые стандарты?

В Rust же версии выходят раз в полтора месяца (примерно, точный период не помню). И там с компилятором проблем, подобных Плюсам, нет.

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

252. "Выпуск языка программирования Rust 1.80"  –2 +/
Сообщение от Аноним (252), 27-Июл-24, 22:59 
Может потому на расте так и не написали ничего путного, ибо нельзя что-то серьезное поддерживать с таким подходом...
Ответить | Правка | Наверх | Cообщить модератору

257. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Прохожий (??), 27-Июл-24, 23:17 
Дай определение слову "путное" для начала, чтобы продолжать с тобой дискуссию.

А так, примером продуктов на Rust - предостаточно уже. Это тебе и Дискорд, и Дропбокс, и часть ОС Android, и прокси Клаудфлэр, и утилитки, подобные ripgrep.

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

260. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от Аноним (252), 27-Июл-24, 23:29 
о да... наверное самая самая важная часть андройда? или как обычно - давайте впендюрим запасное колесо на расте - вроде ехать не мешает и растоманы довольны...
Ответить | Правка | Наверх | Cообщить модератору

263. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Аноним (-), 28-Июл-24, 00:04 
> о да... наверное самая самая важная часть андройда?

Сложно сказать какая часть ОСи самая важная.
Но те, про которые речь, имеют повышенные требования к надежности.
Это напр. Android Keystore 2
android.googlesource.com/platform/system/security/+/refs/heads/main/keystore2/src/

Bluetooth стек, еще не весь переписан, но там работа еще в процессе
android.googlesource.com/platform/packages/modules/Bluetooth/+/refs/heads/main/system/rust/
android.googlesource.com/platform/packages/modules/Bluetooth/+/refs/heads/main/system/gd/rust/

Это для тебя запасное колесо? Или как?

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

269. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от Аноним (252), 28-Июл-24, 00:39 
Одно никто толком не успел использовать, второе вообще не доделано

что-то мне это напоминает... ах да... другой проект на р :)

https://www.linux.org.ru/news/opensource/12361609?cid=12362052

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

365. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Прохожий (??), 29-Июл-24, 17:12 
То есть, по поводу остальных перечисленных продуктов (кроме Андроида) у тебя вопросов нет? Вот и отлично.
Ответить | Правка | К родителю #260 | Наверх | Cообщить модератору

410. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (252), 30-Июл-24, 08:39 
Есть :)

Но ведь также как с ведройдом сольетесь... не интересно...

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

470. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от wyry (-), 03-Авг-24, 04:36 
clang, gcc и msvc поддерживают, для специфических компиляторов под микрухи, вы и так не будете использовать 80% функциональности и там вам компилятор урежут до с++11 или до с++98 (ну а под Rust в особых случаях может вообще не быть компилятора, окэй?).
Ответить | Правка | К родителю #242 | Наверх | Cообщить модератору

211. "Выпуск языка программирования Rust 1.80"  –4 +/
Сообщение от Аноним (211), 27-Июл-24, 16:00 
Каждый месяц выпускают новые вырсии, хочется спросить, а слабо сразу нормально выпустить? Ну не шлепать каждый месяц, а лет 5, а лучше все 10, работать над архитектурой и чтоб все к релизу стабильно было
Ответить | Правка | Наверх | Cообщить модератору

220. "Выпуск языка программирования Rust 1.80"  –3 +/
Сообщение от Аноним (-), 27-Июл-24, 17:20 
Раз в 5 лет, раз в 10 лет - это для старых пердунов. Да и не модно так нынче. Если хочется прогресса, то надо выпускать новую версию каждый месяц!
Ответить | Правка | Наверх | Cообщить модератору

251. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Аноним (244), 27-Июл-24, 22:57 
А теперь давайте подумаем: если каждый месяц (а лучше каждый день) выпускать новую версию с кучей новых фич, что станет с этим языком через 5 лет? А каким он будет через 10 лет? А сколько книжных страниц будет занимать полное описание такого языка?

Учитывая, что объём памяти человека не меняется уже 20 тысяч лет, сколько времени понадобится программисту через 10 лет чтобы прочитать и освоить полное описание Rusta?

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

266. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Аноним (264), 28-Июл-24, 00:21 
Люди хотят повторить ошибку плюсов.
Ответить | Правка | Наверх | Cообщить модератору

336. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от ЦукаНя (?), 29-Июл-24, 04:30 
Ошибка плюсов что в них слишком мало фич и некоторые недостаточно продуманы
Ответить | Правка | Наверх | Cообщить модератору

390. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Facemaker (?), 29-Июл-24, 22:05 
>А теперь давайте подумаем: если каждый месяц (а лучше каждый день) выпускать новую версию с кучей новых фич, что станет с этим языком через 5 лет? А каким он будет через 10 лет? А сколько книжных страниц будет занимать полное описание такого языка?

Мне кажется, ты не совсем понимаешь, как развивается Rust. Концептуально новых фич (вроде async или появившихся не так давно GAT) добавляется совсем немного. Даже соседние редакции (2018 -> 2021) не означают революции, так что программист переходит с одной на другую почти без усилий. Тот список изменений, который публикуется с каждой новой версией, как правило, представляет расширение действия уже имеющихся фич, багфиксы и т.п. Это, на мой взгляд, означает, что язык получился весьма удачным.

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

408. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Аноним (383), 30-Июл-24, 00:12 
> А теперь давайте подумаем: если каждый месяц (а лучше каждый день) выпускать новую версию с кучей новых фич, что станет с этим языком через 5 лет? А каким он будет через 10 лет? А сколько книжных страниц будет занимать полное описание такого языка?
>
> Учитывая, что объём памяти человека не меняется уже 20 тысяч лет, сколько времени понадобится программисту через 10 лет чтобы прочитать и освоить полное описание Rusta?

Ты наверное никогда не программировал и не знаешь что во-первых, не обязательно всё это осваивать чтобы писать программы, при этом даже качественные, во-вторых, полное описание избыточно относительно основных концепций, которые даже с ростом спеки остаются константного размера? Например, я никогда не пользовался HastSet, но знаю что у контейнера есть iter(), а у итератора есть collect(). Значит пусть в следующей версии появится хоть 100500 новых контейнеров, я знаю как их друг в друга конвертировать и как по ним итерироваться, и вообще всё что можно делать с коллекциями. На самом деле, язык наоборот идёт к консистентности - например я знаю что у итератора должен быть collect_into(). Но в языке его ещё нет, но будет.

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

222. "Выпуск языка программирования Rust 1.80"  +3 +/
Сообщение от Facemaker (?), 27-Июл-24, 18:26 
>слабо сразу нормально выпустить?

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

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

228. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (234), 27-Июл-24, 19:56 
Раст критикуют в основном не программисты, люди не из отрасли. Поэтому и претензии идиотские - нумерация версий, синтаксис и тп
Ответить | Правка | Наверх | Cообщить модератору

249. "Выпуск языка программирования Rust 1.80"  +2 +/
Сообщение от Аноним (252), 27-Июл-24, 22:53 
внезапно... в следующий раз когда ты придешь в кафешку и тебя принесут какую-нибудь хрень - не смей критиковать блюдо - ты же не повар и не из представителей общепита!
Ответить | Правка | Наверх | Cообщить модератору

265. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (-), 28-Июл-24, 00:13 
> внезапно... в следующий раз когда ты придешь в кафешку и тебя принесут
> какую-нибудь хрень - не смей критиковать блюдо - ты же не
> повар и не из представителей общепита!

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

А вот когда оно влияет на готовое блюдо - ты критиковать имеешь полное право.
И если у повара грязная кухня, в полу куча дыр из которых лезут крысы и тараканы, со сковородок давно облезло покрытие и к ним все пригорает, а суп он мешает ершиком от унитаза, просто потому что... то ты в полном праве говорить - "ваша еда ##### в том числе потому что ваша кухня #####"

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

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

270. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (252), 28-Июл-24, 00:50 
ой...

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


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

287. Скрыто модератором  +/
Сообщение от Аноним (64), 28-Июл-24, 12:02 
Ответить | Правка | Наверх | Cообщить модератору

288. Скрыто модератором  +/
Сообщение от Аноним (288), 28-Июл-24, 12:26 
Ответить | Правка | Наверх | Cообщить модератору

348. Скрыто модератором  +/
Сообщение от Аноним (252), 29-Июл-24, 10:03 
Ответить | Правка | Наверх | Cообщить модератору

248. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Прохожий (??), 27-Июл-24, 22:49 
Есть два подхода к проектированию и разработке софта. Первая модель - waterfall - хороша, когда всё (или почти всё) известно на старте. И тогда почти всегда можно "сразу" сделать нормально. При этом, если требования вдруг как-то изменились, так, что спланированная архитектура уже не может им соответствовать, переделка влетает в немалую копеечку.

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

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

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

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

250. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Аноним (252), 27-Июл-24, 22:56 
> Потому что разработчики находятся на терра инкогнита

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

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

256. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Аноним (-), 27-Июл-24, 23:10 
> ну да... это же первый язык...

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

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

298. "Выпуск языка программирования Rust 1.80"  –2 +/
Сообщение от Аноним (155), 28-Июл-24, 16:32 
Ахах, там ращёты лайфтаймов на уровне С++11.
Ответить | Правка | Наверх | Cообщить модератору

255. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (244), 27-Июл-24, 23:07 
Это только прикладные программы можно так разрабатывать. Дизайн языка должен быть с самого начала хорош. С языком не получится так: сделаем сначала дрянь, а потом потихонечку трансформируем её в конфету.
Ответить | Правка | К родителю #248 | Наверх | Cообщить модератору

278. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (288), 28-Июл-24, 09:19 
А какие у тебя примеры, как-либо подтверждающие твои слова? С питоном и додиезом же получилось, и это говорит об обратном.
Ответить | Правка | Наверх | Cообщить модератору

285. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от n00by (ok), 28-Июл-24, 10:47 
> С питоном и додиезом же получилось, и это говорит об обратном.

Потому 10 лет с Питон 2 переписывали на Питон 3, а джависты при необходимости берутся перевести с шарпа на свой за разумное время?

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

300. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (300), 28-Июл-24, 17:43 
Примеры? Все хорошие языки с самого начала были хорошие, а с плохим дизайном как были плохие так и остались плохие.
Python и C# - как раз пример деградации. Изначально были хороши, а потом стали слишком сложные.
Ответить | Правка | К родителю #278 | Наверх | Cообщить модератору

310. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (310), 28-Июл-24, 18:57 
Плохой дизайн у стандартного Пролога и стандартного Паскаля (ISO Pascal и ISO Extended Pascal). Их никто не использует.
Ответить | Правка | Наверх | Cообщить модератору

407. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (383), 30-Июл-24, 00:02 
> Python и C# - как раз пример деградации. Изначально были хороши, а потом стали слишком сложные.

В python новые конструкции в язык вводят раз в год от силы. Что там за последние лет 10 вообще было? async, match, f-строки, :=, positional-only args. Это всё. Даже изменения в 2->3 можно по пальцам двух рук пересчитать. Если ты не успеваешь за этим темпом, то это пример твоей дегрдации.

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

325. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Bottle (?), 28-Июл-24, 23:05 
А с сишкой не получилось, как было 101 UB, так и осталось.
Ответить | Правка | К родителю #278 | Наверх | Cообщить модератору

367. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Прохожий (??), 29-Июл-24, 17:22 
> Дизайн языка должен быть с самого начала хорош

Не должен. Желательно, конечно, но всякое случается. Вот в Rust есть редакции на такие случаи. И они работают.

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

393. "Выпуск языка программирования Rust 1.80"  +2 +/
Сообщение от Аноним (383), 29-Июл-24, 22:42 
> Дизайн языка должен быть с самого начала хорош.

Такого не бывает.

> С языком не получится так: сделаем сначала дрянь, а потом потихонечку трансформируем её в конфету.

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

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

284. "Выпуск языка программирования Rust 1.80"  –3 +/
Сообщение от n00by (ok), 28-Июл-24, 10:42 
Вторая "модель", совершенно внезапно - прямая противоположность waterfall - reverse engineering. Agile придумали неспособные комбинировать два основных подхода, кому важен не результат, а процесс.
Ответить | Правка | К родителю #248 | Наверх | Cообщить модератору

366. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Прохожий (??), 29-Июл-24, 17:19 
Причём здесь reverse engineering? Какое он имеет отношение к созданию нового ПО?

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

Прям неспособные? Ты вот реально предвидеть на много лет вперёд? А ведь проектирование и реализация языка программирования - это многолетний проект. Я уж молчу про ПО для реального бизнеса, где обстоятельства меняются иной раз кардинально чуть ли не каждый месяц.


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

424. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от n00by (ok), 30-Июл-24, 12:29 
> Причём здесь reverse engineering? Какое он имеет отношение к созданию нового ПО?

Такое же, как и инженерия в общем. Проектирование бывает "прямое" (в твоей терминологии - Waterfall) и "обратное". Новое требуется, когда старое не устраивает. Автор Rust взял части из OCaml, C++, чего-то то там ещё и слепил из них, что получилось - это обычная реверсинженерия, если ты не знал и путаешь с reverse code engineering. Потом подрихтовал дизайн сверху вниз, что бы стало красиво.

>> Agile придумали неспособные комбинировать два основных подхода, кому важен не результат, а процесс.
> Прям неспособные?

Прямо. Инженеров же нет, есть какие-то бакалавры и магистры, не так ли?

> Ты вот реально предвидеть на много лет вперёд? А ведь
> проектирование и реализация языка программирования - это многолетний проект. Я уж
> молчу про ПО для реального бизнеса, где обстоятельства меняются иной раз
> кардинально чуть ли не каждый месяц.

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

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

425. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Аноним (-), 30-Июл-24, 13:13 
> Автор Rust взял части из OCaml, C++, чего-то то там ещё и слепил из них, что получилось - это обычная реверсинженерия, если ты не знал и путаешь с reverse code engineering. Потом подрихтовал дизайн сверху вниз, что бы стало красиво.

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

> Прямо. Инженеров же нет, есть какие-то бакалавры и магистры, не так ли?

Анал-итика уровня ПТУ животноводства.
Итеративная разработка применялась уже в 60х. А ты ее пропускаешь вспоминая только водопад.
То что старые идеи немного развили и завернули в более мягкую упаковку не делает их плохими.
В 90х уже был RAD, которые разработали где-то в 80х в ИБМ.
Всякие скрамы и агили появились попозже.

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

А может не составлять) Может у тебя время на адаптацию 2 недели или месяц.
Я уже молчу что водопад точно так же пролетит, ибо за 2 часа можно только залепить баг.

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

456. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от n00by (ok), 02-Авг-24, 12:13 
>> Автор Rust взял части из OCaml, C++, чего-то то там ещё и слепил из них, что получилось - это обычная реверсинженерия, если ты не знал и путаешь с reverse code engineering. Потом подрихтовал дизайн сверху вниз, что бы стало красиво.
> Т.е он не добавил новых идей?
> Мне казалось что все началось таки с идеи, а потом обросло синтакисом
> который ему понравился.

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

>> Прямо. Инженеров же нет, есть какие-то бакалавры и магистры, не так ли?
> Анал-итика уровня ПТУ животноводства.
> Итеративная разработка применялась уже в 60х. А ты ее пропускаешь вспоминая только
> водопад.

Цитирую себя, #284: "... комбинировать два основных подхода"

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

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

457. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (-), 02-Авг-24, 14:54 
> Попробуй заняться инженерным делом, если повезёт, поймёшь ошибки в своих рассуждениях.

Это как раз тебе нужно сделать. Потому что кроме трепа тут ты ничего не демонстрируешь.

> Цитирую себя, #284: "... комбинировать два основных подхода"
> Как видно, пропустил ты, так что записываем и остальное в проекции.

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

И завязывай со своими навязчивыми идеями про проекции.

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

476. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от n00by (ok), 03-Авг-24, 12:26 
>> Попробуй заняться инженерным делом, если повезёт, поймёшь ошибки в своих рассуждениях.
> Это как раз тебе нужно сделать. Потому что кроме трепа тут ты
> ничего не демонстрируешь.

Твой мозг уже на уровне рефлексов должен был сгенерировать мой ответ на подобный выпад: кому демонстрировать? Анониму?

>> Цитирую себя, #284: "... комбинировать два основных подхода"
>> Как видно, пропустил ты, так что записываем и остальное в проекции.
> Не пропустил. Ты голословно утвержаешь, что "есть два основных", как обычно ничем
> не подтверждая свои слова.

Ты подтвердил это за меня, написав "итеративная разработка".

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

477. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от n00by (ok), 03-Авг-24, 12:28 
> Может у тебя время на адаптацию 2 недели или месяц.

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

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

403. "Выпуск языка программирования Rust 1.80"  +2 +/
Сообщение от Аноним (383), 29-Июл-24, 23:44 
> Каждый месяц выпускают новые вырсии, хочется спросить, а слабо сразу нормально выпустить? Ну не шлепать каждый месяц, а лет 5, а лучше все 10, работать над архитектурой и чтоб все к релизу стабильно было

Это невозможно. Тогда этот rust никогда не выпустят, а к тому моменту когда должны были выпустить, все будут уже 9 лет писать на hrust который эти 10 лет каждый месяц выпускал новые версии, гармонично развивался, обрастал сообществом, тулингом и библиотеками.

Вам лично чем-то мешает что язык развивается?

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

301. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Аноним (301), 28-Июл-24, 17:44 
А вот интересный момент. Почему разработчики RUST решили сделать такой "новый" синтаксис, вместо того, чтобы взять тот же С++ (или С, если так нравиться) и, оставив годные части, исключить то, что было "унаследованно" из старых стандартов и реализаций языка?

Т.е. сделать формально несовместимый язык, но - легко осваиваемый программистами?

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

303. "Выпуск языка программирования Rust 1.80"  –2 +/
Сообщение от Аноним (-), 28-Июл-24, 17:57 
А почему разработчики RUST должны тырить чужие синтаксисы? Ей богу, ты рассуждаешь как ворюга! Их язык как хотят так и делают.
Ответить | Правка | Наверх | Cообщить модератору

306. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от Аноним (310), 28-Июл-24, 18:40 
Для того, чтобы Rust не был похож ни на какой язык.
Это была ошибка, что Java сделали похожим на C++, из-за этого эти языки путаются в голове (у меня, по крайней мере). Пишешь на Java, а руки непроизвольно пишут на C++.
Поэтому Python такой популярный, что не похож ни на какой язык. Ничего не путается.
Ответить | Правка | К родителю #301 | Наверх | Cообщить модератору

307. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (288), 28-Июл-24, 18:49 
Почему ни на какой? На Icon похож.
Ответить | Правка | Наверх | Cообщить модератору

309. "Выпуск языка программирования Rust 1.80"  +3 +/
Сообщение от Аноним (310), 28-Июл-24, 18:51 
Но Icon же практически никто не знает. Поэтому не похож.
Ответить | Правка | Наверх | Cообщить модератору

384. "Выпуск языка программирования Rust 1.80"  +4 +/
Сообщение от Аноним (383), 29-Июл-24, 19:51 
В синтаксисе раста нет НИЧЕГО что принципиально отличалось бы от плюсового синтаксиса в их общем подмножестве языковых конструкций. А все непринципиальные различия - в сторону упрощения. Как-то оператор . вместо . и ->, || вместо [](){}.
Ответить | Правка | К родителю #301 | Наверх | Cообщить модератору

463. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от wyry (-), 03-Авг-24, 03:40 
В Rust очень раздражающая тема - это время жизни. То, что C++ делает сам, пусть иногда по хитрым правилам, в Rust запросто может появиться ситуация, когда ваша программа не скомпилируется из-за того, что где-то вы забыли ' указать. Это абсолютно уродливая методология как при написании, так и чтении кода. Притом, что Rust не предлагает вообще ничего нового, а 80% функционала уже было в C++11 (умные указатели, парадигма владения ресурсами, семантика перемещения) подкрепив всё это санитайзерами и строгой компиляцией в C++11 вообще не останется пространства для ошибок (разве что допустить их специально), а от семантических ошибок не застрахован никто. При этом компилятор C++ не делает вас своим рабом.
Ответить | Правка | Наверх | Cообщить модератору

302. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Аноним (301), 28-Июл-24, 17:47 
Интересно, а Rust уже достиг проблемы Ada? Это когда в язык и стандартные библиотеки нахреначили столько разных фич, что никто из программистов не использует их все. И даже половину.

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

С моей точки зрения, современный С++ к этому пришёл где-то начиная с 14 стандарта.

А Rust похоже изначально именно так и проектировался.

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

308. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (310), 28-Июл-24, 18:50 
Rust ещё не дошёл, но это вопрос времени.
Нельзя объять необъятное - учила история с PL/1. PL/1 тоже настолько разросся, что никто не знал его полностью, а в каждой программисткой компании была целая группа экспертов по PL/1: один знал эту фичу в языке, другой - другую, третий - ещё другую фичу и т.д.
Кончилось тем , что все плюнули на этот PL/1 и перешли на простой C, который один человек может выучить и помнить.
Ответить | Правка | Наверх | Cообщить модератору

313. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Bottle (?), 28-Июл-24, 19:35 
А затем Си и C++ разбухли до такой степени, что количество страниц в спецификации ISO либо сравнялось с PL/1, либо превзошло. И ведь ими всё ещё пользуются! И будут пользоваться ещё несколько десятилетий! Никто не перепишет Linux, GCC, Clang и кучу других продуктов с си и плюсов.
Ответить | Правка | Наверх | Cообщить модератору

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

418. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от BeLord (ok), 30-Июл-24, 10:25 
Книжка и книжка, привычка читать снимает страх перед объемом. Вот по работе в одной из систем описание аналитической подсистемы порядка 1500 листов и это подсистема, которая за аналитические функции отвечает, а есть еще системные, интеграции, интерфейсные и т.д. Причем в описании кода считай нет, там диаграммы, алгоритмы, пояснения. Так, что С++ весьма лаконичен.
Ответить | Правка | Наверх | Cообщить модератору

464. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от wyry (-), 03-Авг-24, 03:45 
Вообще не страшно. Особенно ещё и потому, что её не обязательно читать полностью, а также то, что там довольно просто объясняются принципы языка с примерами типичного использования (т.е. вы сразу поймёте как это работает и сможете безопасно применить на практике). На самом деле в C++ страшнее лезть в неизведанные земли отходя от концепций "типичного" использования некоторых инструментов (например, это касается R-value ссылок). В Rust типичная история, это когда вы берёте пример, который в одних ситуациях работает, а в других - нет. А дело вскроется, что где-то вы не учли время жизни объекта и всё пошло наперекосяк. Часто проблему можно исправить, но это начинает походить на шаманизм, когда вы выполняете действия, которые язык должен делать сам.
Ответить | Правка | К родителю #328 | Наверх | Cообщить модератору

469. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от wyry (-), 03-Авг-24, 04:29 
Ложь про C. Язык C по прежнему очень прост. В С11 добавили НЕОБЯЗАТЕЛЬНУЮ поддержку атомарных типов (для упрощения многопоточности), простенькую либу (тоже необязательную), которая фактически копирует pthread и отменили кое-какие правила стандарта с99. Т.е. в переводе означает, что вы можете читать книгу по c89 и всё освоите, останется лишь изучить теорию параллелизма и многопоточности, но эту теорию для любого языка придётся учить и она везде похожа.
На C++ всё хорошо тем, что он развивается модульно, и никто не заставляет вас переходить на новые парадигмы или наоборот использовать старые, это тот язык, на котором можно начать писать в ВУЗе со 2-го курса, что-то доучить на 1-й работе, и это всё происходит почти автоматически, т.к. концепции хорошо документированы и по ним много реальных примеров и промышленного кода, который прост как палка и зарефакторен до блеска.
Ответить | Правка | К родителю #313 | Наверх | Cообщить модератору

478. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от n00by (ok), 03-Авг-24, 12:36 
Миф "Си и C++ разбухли" я здесь старательно поддерживаю фразами вида "кто читал 2000 страниц стандарта?" Они, естественно, их не читали, а потому понимают по-своему. :)
Ответить | Правка | Наверх | Cообщить модератору

370. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Прохожий (??), 29-Июл-24, 17:37 
> Rust ещё не дошёл, но это вопрос времени.

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

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

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

341. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Ф1 (?), 29-Июл-24, 08:43 
>С моей точки зрения, современный С++ к этому пришёл где-то начиная с 14 стандарта.

C++ 98 уже вполне успешно этого достиг, были его подварианты "Си с классами", "не используем stl", "варианты завязанные на GUI фреймворки MFC, Qt, VCL (c++ builder)", "укушен Александреску" и т.п. .

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

392. "Выпуск языка программирования Rust 1.80"  +2 +/
Сообщение от Аноним (383), 29-Июл-24, 22:34 
> С моей точки зрения, современный С++ к этому пришёл где-то начиная с 14 стандарта.
>
> А Rust похоже изначально именно так и проектировался.

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

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

409. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от morphe (?), 30-Июл-24, 04:09 
У Rust есть классный встроенный линтер, который тебе все новые удобные фичи наглядно покажет, после него код становится совсем приятным

https://rust-lang.github.io/rust-clippy/master/index.html

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

329. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от Аноним (328), 28-Июл-24, 23:36 
Не все ещё знакомы с языком Rust (наверное), поэтому перечислю его достоинства и недостатки. Достоинств два. Первое - высокая скорость работы программ на нём. Rust - самый высокоскоростной язык высокого уровня, то есть быстрее C++, Ada, Delphi, Free pascal и т.д.
Скорость практически как у C.
Второе достоинство - надёжность. Даже у полных раздолбаев программы на Ruste, на удивление, не падают.
Недостатков тоже два. За высокую скорость и надёжность надо платить. Платить приходится неудобством разработки и ограничением области применения.
Ответить | Правка | Наверх | Cообщить модератору

331. "Выпуск языка программирования Rust 1.80"  –2 +/
Сообщение от Аноним (-), 28-Июл-24, 23:50 
> Недостатков тоже два. За высокую скорость и надёжность надо платить. Платить приходится
> неудобством разработки и ограничением области применения.

Хм.. удобство-неудобство это немного вусовщина.
У меня был коллега из соседней команды, которому было ок писать JS код прямо в блокноте.
Синтаксис это тоже дело привычки, писали же люди на лиспе и фортране))
Ну и для программиста должно быть нормой относительно быстро обучаться чему-то новому.

Ограничение области применения..
Тут соглашусь, но с оговоркой - у перечисленных языков тоже область ограниченная.
Никто не будет писать сайт на C++ или Ada.
Мало кто будет писать прикладные программы на чистой СИшке, скорее возьмут плюсы.
Мало кто будет вообще что-то пистаь на делфи и тем более на паскале)

Так что каждому языку - своя ниша.

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

333. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Наноним (?), 29-Июл-24, 02:05 
> Даже у полных раздолбаев программы на Ruste, на удивление, не падают

None.unwrap() - "не падает"? Открой любой исходный код на расте, там всё на unwrap-ах. Всё это может не падать только если где-то в main паники перехватываются, иначе время от времени будет неизбежно падать. В чём тогда эта ваша "надёжность" заключается?

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

388. "Выпуск языка программирования Rust 1.80"  +3 +/
Сообщение от Facemaker (?), 29-Июл-24, 21:43 
В хорошем Rust-коде не должно быть голых unwrap, вместо них expect. И только в тех случаях, когда паника — лучшая реакция на конкретное состояние (как правило — "ошибки, которые не должны происходить"). В таких случаях обычно лучше пораньше упасть, чем продолжать работу в некорректном состоянии. Надёжность — больше, чем способность программы дольше "продержаться" :-).
Ответить | Правка | Наверх | Cообщить модератору

401. "Выпуск языка программирования Rust 1.80"  +3 +/
Сообщение от Аноним (383), 29-Июл-24, 23:36 
expect от unwrap ничем не отличается кроме наличия сообщения - разница чисто косметическая, а так это паника в любом случае. Только какие претензии могут быть к панике, когда данные невалидны? Звиняй, если 1/0 в целых числах, то это не 1, не 0, не 42, не <type>::max(), не random, не ввести значение вместо 0. Это некорректная операция, поэтому либо паника, либо возврат ошибки, поэтому либо unwrap/expect, либо ?, другого не дано. И конечно rust код будеи пестрить этими unwrap/expect и ?, потому что там каждая некорректная операция проверяется. Не может там nullptr неожиданно вернуться, или число переполниться.
Ответить | Правка | Наверх | Cообщить модератору

396. "Выпуск языка программирования Rust 1.80"  +4 +/
Сообщение от Аноним (383), 29-Июл-24, 23:05 
> None.unwrap() - "не падает"? Открой любой исходный код на расте, там всё на unwrap-ах.

В том что оно падает, представь себе. Потому что если оно не будет падать, оно будет генерировать некорректные данные, корраптить существующие, или падать в другом месте уже с SEGV, предварительно нагеренив некорректных и покорраптив существующих данных, и это ещё придётся с другом отлавливать. В плюсах вместо None.unwrap() будет *(sometype*)(nullptr_t).

Ты что думаешь, там эти unwrap'ы на пустом месте берутся? Они берутся там где операция может завершиться неуспешно. Их могло бы быть только если неуспешный результат тихо заметается под ковёр, как в C++ переполнение (в том числе и беззнаковое, которое хоть и не UB, но ожидаемо и допустимо только в редких случаях которые должны быть обозначены явно).

> Всё это может не падать только если где-то в main паники перехватываются, иначе время от времени будет неизбежно падать. В чём тогда эта ваша "надёжность" заключается?

А это ничем не отличается от любого другого языка. Так и в плосах, и в питоне большинство приложений не ловят исключений. Для cli утилиты, например, это совершенно нормально - потому что она либо выполняется успешно без ошибок, либо падает при любой возможности. Ловля исключений появляется там где можно что-то поретраить, там же она появляется и в rust.

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

426. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Карлос Сношайтилис (ok), 30-Июл-24, 13:53 
Если выкинуть исключение и не перехватить его - программа упадёт.
Открытие века!

Уровень экспертов достиг подвала, но экспертов не остановить...

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

461. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Наноним (?), 02-Авг-24, 23:09 
Так C++ и не преподносится как "safe" язык, в этом и разница. Зачем обманывать?
Ответить | Правка | Наверх | Cообщить модератору

488. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от ferris (?), 07-Авг-24, 05:40 
Если для тебя "безопасность" - означает что программа никогда не упадёт, то у меня плохие новости: безопасность в расте совсем про другое. Паника - это безопасная операция.
Ответить | Правка | Наверх | Cообщить модератору

489. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от n00by (ok), 07-Авг-24, 10:27 
> Если для тебя "безопасность" - означает что программа никогда не упадёт, то
> у меня плохие новости: безопасность в расте совсем про другое. Паника
> - это безопасная операция.

Безопасная атака вида "отказ в обслуживании"?

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

491. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Карлос Сношайтилис (ok), 10-Авг-24, 01:48 
> Безопасная атака вида "отказ в обслуживании"?

Потрясающее умение складывать слова в бессмысленные предложения.

Как, на уровне языка, ты собираешься защищаться от dos'а?

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

494. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от n00by (ok), 10-Авг-24, 10:55 
>> Безопасная атака вида "отказ в обслуживании"?
> Потрясающее умение складывать слова в бессмысленные предложения.

Да, не могу уловить смысл.

> Как, на уровне языка, ты собираешься защищаться от dos'а?

Просто не выпускать компилятор для DOS. WSL2 хватит всем.

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

490. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Карлос Сношайтилис (ok), 10-Авг-24, 01:44 
> Так C++ и не преподносится как "safe" язык, в этом и разница.
> Зачем обманывать?

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

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

334. "Выпуск языка программирования Rust 1.80"  +2 +/
Сообщение от Наноним (?), 29-Июл-24, 02:10 
> Rust - самый высокоскоростной язык высокого уровня

Особенно когда половина кода это обёртки по типу `Rc<RefCell<_>>` или `Arc<_>` и куча `.clone()` чтобы хоть как-то обойти чеккер и уже начать писать что-то полезное. Писать действительно оптимальный код уровня Си на расте практически невозможно, так как кучу лайфтаймов пронести через всю программу нереально.

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

352. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Соль земли (?), 29-Июл-24, 10:23 
Когда хочется вечных переменных, то это процедурное мышление. А функциональное - получил данные, вычислил, отдал, очистил всё.
Ответить | Правка | Наверх | Cообщить модератору

378. "Выпуск языка программирования Rust 1.80"  +3 +/
Сообщение от Прохожий (??), 29-Июл-24, 18:40 
> чтобы хоть как-то обойти чеккер и уже начать писать что-то полезное

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

> Писать действительно оптимальный код уровня Си на расте практически невозможно, так как кучу лайфтаймов пронести через всю программу нереально.

Но опыт других людей показывает, что ты не прав. Взять тех же Гугловцев или программистов из Клаудфлэр. Их опыт показывает, что код получается и более быстрый, и более безопасный в итоге. Впрочем, может у тебя другое понимание "оптимальности".

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

380. "Выпуск языка программирования Rust 1.80"  +2 +/
Сообщение от Fyjy (-), 29-Июл-24, 18:56 
> Особенно когда половина кода это обёртки по типу `Rc<RefCell<_>>` или `Arc<_>` и куча `.clone()` чтобы хоть как-то обойти чеккер и уже начать писать что-то полезное.

Полезное? А ты уверен что тот дырявый код, который не пропускает черкер это что-то полезное?

> Писать действительно оптимальный код уровня Си на расте практически
> невозможно, так как кучу лайфтаймов пронести через всю программу нереально.

Конечно, лучше побыстрячку наовнокодить кучу дырок и CVE, главное быстро!


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

389. "Выпуск языка программирования Rust 1.80"  +5 +/
Сообщение от Аноним (383), 29-Июл-24, 21:49 
> Особенно когда половина кода это обёртки по типу `Rc<RefCell<_>>` или `Arc<_>` и куча `.clone()` чтобы хоть как-то обойти чеккер и уже начать писать что-то полезное. Писать действительно оптимальный код уровня Си на расте практически невозможно

Практика показывает что это отчасти правда, но имеет место только в небольших функция реализующих нетривиальные алгоритмы, например встречались построить дерево из потока записей с заданным уровнем вложенности (там нужен mutable стек текущей ветки из-за чего получаем двойной mutable borrow), и мутирующий обход списка элементов ссылающихся друг на друга, в процессе которого нужен был ещё один мутирующий обход по связям). В обоих случаях получилось переписать даже не прибегая к RefCell, при этом всегда был вариант с RefCell и на совсем крайний случай, unsafe и сырые указатели. Последнее позволяет писать код полностью эквивалентный "оптимальному оду уровня C".

Это вообще типичная проблема неопытных в rust люлей: первые ожидают от последнего решения всех проблем программирования. Я понимаю что хотелось бы, но увы, мы живём в неидеальном мире, rust далеко не завершён (см. например продление ссылок в, емнип, 1.79), а некоторые вещи неразрешимы вовсе (см. проблемма останова). Важно то что rust никаких возможностей не забирает - ты можешь писать в точности как на C где это нужно, а предоставляет беспрецедентный их набор, потому что в 98% остального где не нужны такие сложности тебе гарантируется отсутствие UB, да и те 2% ты можешь писать безопасно с рантайм костом на RefCell'ах, а в каких-то случаях и на чистом расте.

> так как кучу лайфтаймов пронести через всю программу нереально.

Что это вообще значит? Лайфтаймы проносятся вместе с ссылками через функции которые их возвращают и структуры где они хранятся, нет никаких "через всю программу". Нет и не может быть с ними никаких проблем. Если ты этого ещё не понял, задумайся что точно такие же лайфтаймы есть и C, только там от тебя их скрывают и никто тебе не скажет что ты возвращаещь ссылку на локальную переменную или освобождённую память.

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

343. "Выпуск языка программирования Rust 1.80"  –4 +/
Сообщение от Аноним (343), 29-Июл-24, 09:31 
Бред. В типовых задачах в 2 раза медленнее Си.
Ответить | Правка | К родителю #329 | Наверх | Cообщить модератору

377. "Выпуск языка программирования Rust 1.80"  +1 +/
Сообщение от Прохожий (??), 29-Июл-24, 18:35 
У тебя, конечно, и доказательства есть?
Ответить | Правка | Наверх | Cообщить модератору

379. "Выпуск языка программирования Rust 1.80"  +2 +/
Сообщение от Карлос Сношайтилис (ok), 29-Июл-24, 18:56 
После обкладывания кода на С кучей обёрток и проверок для устранения возможностей выстрелить в лицо, прыткость С убавляется, а сложность поддержки увеличивается.
Ответить | Правка | К родителю #343 | Наверх | Cообщить модератору

385. "Выпуск языка программирования Rust 1.80"  +2 +/
Сообщение от Аноним (383), 29-Июл-24, 19:55 
> Rust - самый высокоскоростной язык высокого уровня, то есть быстрее C++, Ada, Delphi, Free pascal и т.д. Скорость практически как у C.

Это бред, конечно, языки по скорости не сравнивают. Можно сравнивать компиляторы, и в рамках llvm, а это c, c++ и rust, скорость логически идентичных программ будет равна. Нет в C ничего, что магически ускоряло бы код.

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

387. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Facemaker (?), 29-Июл-24, 21:30 
>Нет в C ничего, что магически ускоряло бы код

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

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

391. "Выпуск языка программирования Rust 1.80"  +7 +/
Сообщение от Аноним (383), 29-Июл-24, 22:27 
> Читал в разных популярных статьях, что некоторые компиляторы C и C++ действительно достигают лучшей производительности благодаря тому, что производят оптимизации на основе неопределённого поведения.

Такого же UB можно добиться и в rust, только это нужно делать явно, для этого есть всякие unchecked_*, unsafe{} и прочая. И это правильно, потому что должно быть безопасно по умолчанию, и максимально явно, когда небезопасно.

Вот такой пример мы буквально на прошлой неделе разбирали со студентами (код берёт цифру полученную с numpad и транстирует её в альтернтивную функцию клавиши которая включается по numlock):

```rust
let num_key: u32 = read_numpad(); // возвращает число от 0 до 9
let numlock_key = match num_key {
    0 => Some(Ins),
    1 => Some(End),
    2 => Some(Down),
    3 => Some(PgDn),
    4 => Some(Left),
    5 => None,
    6 => Some(Right),
    7 => Some(Home),
    8 => Some(Up),
    9 => Some(PgUp),
    10.. => //???
};
```

пользуясь случаем отмечу крутость match, которая позволяет гарантировать что все варианты обработаны, при том что в C++ можно только warning (да, можно `-Werror`, но это надо не забыть) и то только для `enum class`. При этом fallback можно сделать не просто `_`, а `10..`, что не позволит пропустить один из 10 вариантов.

Возвращаясь к оптимизациям, что написать в fallback ветке, если мы считаем что не можем получить ничего кроме 0..9 (ну и нам очень важна тут производительность)?

Можно написать `unreachable!()`. И это safe default. При этом сгенерируется примерно такой код:

```
ЕСЛИ num_key > 9
    ПАНИКА
ИНАЧЕ
    ПОЛОЖИТЬ В numlock_key ЗНАЧЕНИЕ ИЗ ТАБЛИЦЫ ИЗ 10 ЭЛЕМЕНТОВ ПО КЛЮЧУ num_key.
```

Что позволяет сделать rust? Написать вместо `unreachable!()` `std::hint::unreachable_unchecked()`. Это вот то самое UB. Компилятор считает что оно никогда не происходит, и генерирует более оптимальный код:

```
ПОЛОЖИТЬ В numlock_key ЗНАЧЕНИЕ ИЗ ТАБЛИЦЫ ИЗ 10 ЭЛЕМЕНТОВ ПО КЛЮЧУ num_key.
```

Это отлично демонстрирует и оптимизации связанные с UB, и его опасность (подумайте что будет когда в num_key таки окажется 11), а также гибкость и мощность rust в работе с ним.

И таких инструментов в rust широчайший набор, и он позволяет в том числе код оптимальнее C, потому что в последнем очень много случаев где считается что полагаться на UB небезопасно, и возможность оптимизации упускается. Rust же позволяет
- выразить невозможные ситуации явно, что открывает больше возможностей для оптимизации.
- имеет безопасное поведение по умолчанию, причём это касается не только UB, но и определённого, но обычно нежелательного поведения - например, беззнакового переполнения.
- имеет возможность явно задать поведение (overflowing_{add,...}, saturating_{add,...}), причем симметрично для знаковых и беззнаковых типов.

PS. Кстати, правильный ответ на вопрос про fallback ветку = `debug_assert!()` + `unreachable_unchecked()`, что позволит ловить проблему в debug и даст оптимизацию в release.

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

429. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (429), 30-Июл-24, 18:03 
Мне кажется, если вы напишете книжку про тонкости программирования на Rust, то будет хороший спрос на неё. Если надо проспонсировать написание, то этот вопрос, в принципе, решаемый.
Ответить | Правка | Наверх | Cообщить модератору

438. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (383), 31-Июл-24, 15:33 
Но книга уже написана https://www.rust-lang.org/learn

[сообщение отредактировано модератором]

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

431. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (-), 30-Июл-24, 19:20 
Было очень познавательно, спасибо!

> на прошлой неделе разбирали со студентами

А у вас нет видео лекций или статей на каких-то ресурсах?

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

430. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (429), 30-Июл-24, 18:26 
>Это бред, конечно, языки по скорости не сравнивают

Сравнивают
https://benchmarksgame-team.pages.debian.net/benchmarksgame/...

https://benchmarksgame-team.pages.debian.net/benchmarksgame/...

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

439. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (383), 31-Июл-24, 15:41 
>> Это бред, конечно, языки по скорости не сравнивают
> Сравнивают

Нет уж, вы меня полностью процитируйте:

>> Можно сравнивать компиляторы, и в рамках llvm, а это c, c++ и rust, скорость логически идентичных программ будет равна. Нет в C ничего, что магически ускоряло бы код.

И да, там сходу видно что сравнивают компиляторы, например llvm для rust и gcc для C. Будете спорить что если для паскаля вместо поделки FPC написать фронтэнд для llvm то он будет отличаться по скорости от C?

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

337. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от Аноним (288), 29-Июл-24, 07:35 
И ни слова о том, сколько проблем и багов у пакетов с этой 1.80. Ох уж эта хвалёная растовая совместимость.
Ответить | Правка | Наверх | Cообщить модератору

369. "Выпуск языка программирования Rust 1.80"  +3 +/
Сообщение от PROgrm_JARvis (ok), 29-Июл-24, 17:31 
И сколько же?

С совместимостью всё прекрасно, Rust 1.80 успешно собирает хоть Rust 1.0 программы, за SemVer-совместимостью следят.

Более того, есть специальный тул [1], который при потенциально масштабных изменениях в компиляторе/std пересобирает огромную кучу либ и программ с crates.io и GitHub'а, просто чтобы убедиться, что нет регрессий.

Разумеется, можно откопать конкретные проблемные API, которые со временем задепрекейтили, как например mem::uninitialized [2], но даже для них сохраняется совместимость (несмотря на то, что уже есть правильное API [3] для этого).

Отвечая на вопрос сколько, отвечу честно, что больше нуля, и вполне себе возникла регрессия [4], проявляющаяся в том, что специфическая версия конкретной библиотеки перестала собираться. К сожалению, и такое бывает: причина в том, что type inference не всегда может отработать однозначно, и порой добавление реализации чего-то убирает эту однозначность, что приводит к ошибке (что явно приятнее, чем непредсказуемое поведение). Но даже тут инструменты языка позволяют решить супер-специфическую проблему:
1. Проблема в библиотеке исправлена в следующей патч-версии;
2. Даже если бы не была исправлена, из коробки есть инструмент, чтобы пропатчить код чужой библиотеки [5] при локальной сборке.

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

[1]: https://github.com/rust-lang/crater
[2]: https://doc.rust-lang.org/stable/core/mem/fn.uninitialized.html
[3]: https://doc.rust-lang.org/stable/core/mem/union.MaybeUninit....
[4]: https://github.com/rust-lang/rust/issues/127343
[5]: https://doc.rust-lang.org/cargo/reference/overriding-depende...

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

371. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (288), 29-Июл-24, 17:39 
Похоже, не так прекрасно https://github.com/gentoo/gentoo/pull/37727
Ответить | Правка | Наверх | Cообщить модератору

400. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от PROgrm_JARvis (ok), 29-Июл-24, 23:29 
Про проблему с крейтом time я как раз выше написал (это то, что про type inference).

То же, что ниже:

> One of the new features of Rust 1.80 is that it validates feature flags. I see another build failure in bottom that may be due to this

Это то, что компилятор научился ловить багу с `cfg` (суть баги, которую научился обнаруживать компилятор: кто-то описывал условную компиляцию по невозможной фиче).

На самом деле, для меня тоже странно, что эту проверку [1] включили в рамках релиза (1.80) а не edition'а (2024 скоро будет), и я тут также на стороне мейнтейнеров пакетов, но полагаю, что найдут способ разрешить проблему (тут снова работает подход с тем, что если возможно -- лучше обновить пакет, а если нет, то просто оверрайднуть его на свою фикснутую версию).

[1]: https://github.com/rust-lang/cargo/pull/13571/

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

386. "Выпуск языка программирования Rust 1.80"  +9 +/
Сообщение от Аноним (383), 29-Июл-24, 20:02 
> И ни слова о том, сколько проблем и багов у пакетов с этой 1.80.

Ни одного?

> Ох уж эта хвалёная растовая совместимость.

Ну хвалёная - не хвалёная, а среди всех популярных языков она лучшая. Языки без пакетного менеджера типа C и C++ он уделывает его наличием, из чего вытекает явная возможность использовать любые явно заданные версии зависимостей. А среди языков с ПМ он единственный кто явно постулирует semver для модулей. Сам язык совместимость не ломает с первой версии. В сумме я даже не представляю как на современном уровне развития технологий обеспечить лучшую поддержку обратной совместимости. Разве что на уровне пакетного репозитория автоматически проверять совместимость API, но это пока отдалённое будущее, и всех проблем всё равно не решит, потому что проблема совместимости значительно шире чем только лишь API.

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

414. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (416), 30-Июл-24, 10:11 
Если почитать некоторых товарищей, то C++ и C чуть ли не вселенское зло и что–то настолько замороченное что доступно для понимания разве что сверхразумам а все остальные непременно не осилят и сделают не так, а между тем куча программ написано именно на этих двух языках и раньше народ как–то же справлялся.

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

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

420. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Facemaker (?), 30-Июл-24, 11:30 
>C++ и C — вселенское зло

Не зло, а устаревшая технология, начавшая мешать прогрессу. Остальное в цитируемом посте — беспочвенные теоретизирования.

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

427. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (416), 30-Июл-24, 15:56 
Какому именно прогрессу и в чём именно? И почему устаревшая?
Ответить | Правка | Наверх | Cообщить модератору

436. "Выпуск языка программирования Rust 1.80"  +2 +/
Сообщение от Facemaker (?), 31-Июл-24, 12:35 
>Какому именно прогрессу и в чём именно?

Требования к надёжности и защищённости программных систем повысились с 70-х годов прошлого века. Традиционные языки разработки, такие как C и C++, недостаточно хорошо помогают программисту защититься от типовых ошибок.

>И почему устаревшая?

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

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

440. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (383), 31-Июл-24, 15:56 
> тотальный ООП

В плюсах нет тотольного ООП. Тотальный ООП в жаве, а в плюсах он как раз вообще ненавязчив.

> и исключения

Исключения безальтернативны и будут в том или ином виде в любом мейнстримовом языке. Потому что программа должна быть сосредоточена вокруг успешного пути выполнения, а обработка ошибок не должка его замусоривать. Явная обработка каждой ошибки как в Go и C - это вообще немыслимо, и даже ? в rust - это слишком многословно для этой цели. Тем более что ? нельзя делать в лямбдах.

Поэтому в rust есть паники, и никто никогда не будет в прикладном коде (например, cli утилите) городить Result'ы, а будет всегда звать expect(). Библиотечный код, увы, приходится обкладывать вопросами, и только для того чтобы caller сделал с такими силами проброшенному Result unwrap().

> заодно показал на практике, что сохранение обратной совместимости с C обходится слишком дорого.

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

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

450. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от freecoder (ok), 01-Авг-24, 10:22 
? работает в замыканиях, как и return.
Про Result в прикладном коде вы чушь написали. Сразу видно, что на Rust не программировали: "никто никогда не будет в прикладном коде (например, cli утилите) городить Result'ы" - сплошь и рядом, практически всегда в прикладном коде используется Result.
Ответить | Правка | Наверх | Cообщить модератору

451. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (451), 01-Авг-24, 12:20 
> ? работает в замыканиях, как и return.

Нет, не работает, потому что введение резалта в лямбду меняет её сигнатуру, а сигнатура фиксирована, потому что это вызов map или какого-нибудь fold.

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

441. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (383), 31-Июл-24, 16:05 
> а между тем куча программ написано именно на этих двух языках и раньше народ как–то же справлялся.

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

Нет, C и C++ не заморочены и на них вполне можно писать. Но зачем, если есть инструмент на голову выше? А вселенское зло это те кто в этих условиях продолжает увеличивать легаси кодбазу на C/C++.

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

442. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (-), 31-Июл-24, 16:24 
> Нет, C и C++ не заморочены и на них вполне можно писать.

Совершенно не согласен.
Начиная от толстенного талмуда бесполезного "типа стандарта" в котором куча UB и IB.
Заканчивая компиляторами в которых сделано как захотелось левой пятке, и которые тот самый "стандарт" полностью не реализуют.


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

443. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Джог (?), 31-Июл-24, 18:18 
Да просто не нужно мудрствовать и писать наворочено..

Пиши просто, понятный другим код, инициализируй переменные и объекты, не используй самый последний стандарт, используй анализаторы кода и все будет тип-топ, уже много раз проверено!

И не будет нужен RUST, для которого даже UI внятного еще не написали..

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

444. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (-), 31-Июл-24, 19:08 
> Да просто не нужно мудрствовать и писать наворочено..

Просто делайте хорошо и не делайте плохо!
Зачем вы пишете код с багами, надо писать без багов!
...
и другие премудрости с п̶а̶ц̶а̶н̶с̶к̶и̶х̶ пограмистких форумов

> Пиши просто, понятный другим код, инициализируй переменные и объекты, не используй самый последний стандарт, используй анализаторы кода и все будет тип-топ, уже много раз проверено!

Ага, вот заглянул я в ядро... а там /_-
СИшка копролитной версии которой уже больше десятка лет (а джва года назад был вообще С99!).

Патчи отправляются почтой (слава богу-машине не голубиной), в ядро заливается просто не компилирующееся офно, так что какому-то Торвальдсу приходится идти в комменты и ругаться (lore.kernel.org/dri-devel/CAHk-=wgPJttFz8yrdpPTN-ypMmDXHOKw9yi1nZSEq+7+tGftZA@mail.gmail.com/).

Тесты, анализаторы кода, CI который не пропустит плохой пуллреквест...
Это вообще фантастика)
Ты в курсе что параметр компиляции ядра -Werror добавили в 2021 (две тысячи двадцать первом, Карл!) году?
И все годы до этого было "компилятор сыплет warning'ами? А нам просто пøх!"
А ведь речь идет о ядре, наверное один из главнейших столпов существования линукса.

> И не будет нужен RUST, для которого даже UI внятного еще не написали..

Думаю Торвальдс понял (или ему помогли) что офнокодеры в ядре навсегда. Пока там есть дыряшка.
Поэтому он добавил Раст в ядро, чтобы хоть немного улучшить ситуацию.

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

446. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Джог (?), 31-Июл-24, 21:09 
Да я C++ имел ввиду, современный. И без ковыряния говна мамонта.
Так-то да, конечно.
Ответить | Правка | Наверх | Cообщить модератору

448. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (-), 31-Июл-24, 23:44 
> Да я C++ имел ввиду, современный. И без ковыряния говна мамонта.
> Так-то да, конечно.

Из всех проектах на с++ меня больше всего впечатлил LLVM.
Здоровая кодовая база, но при этом современный С++17, тонны тестов включая фаззинг.
Поэтому их аудит просто зависть)
opennet.ru/opennews/art.shtml?num=60707

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

466. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от wyry (-), 03-Авг-24, 04:02 
То, что LLVM и GCC написаны на C++, фактически уже обеспечили языку бессмертие. Разве что часть функциональности постепенно будут условно "запрещать" (компилятор выдаст warning или ошибку в зависимости от настроек). Мягко это даже УЖЕ произошло, т.к. в старом стиле если и пишут, то для личных проектов и своего рода развлечения. Серьёзный проект, который не должен упасть уже невозможен без умных указателей, move-семантики, подкреплённых санитайзерами, при этом компилятор не стремится сделать из вас осла и даёт вам ВЫБОР как стиля, так и степени беспокойства о качестве вашего кода.
Ответить | Правка | Наверх | Cообщить модератору

445. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (383), 31-Июл-24, 20:06 
> Начиная от толстенного талмуда бесполезного "типа стандарта" в котором куча UB и IB.

А к чему конкретно претензия?

- К наличию стандарта? Было бы лучше без него?
- К его размеру? К тому что язык подробно написан? Или ты думаешь что стандарт другого языка был тоньше?
- К наличию UB? UB позволяет делать оптимизации.
- К наличию IB? IB позволяет языку быть переносимым и при этом эффективным.

> Заканчивая компиляторами в которых сделано как захотелось левой пятке, и которые тот самый "стандарт" полностью не реализуют.

Про левую пятку это ты врёшь. А то что реализации отстают от стандарта вообще неминуемо, пока стандарт есть и над ним работает отдельная команда.

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

447. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (-), 31-Июл-24, 22:24 
> К наличию стандарта? Было бы лучше без него?

Да, было бы не хуже. Потому что "стандарт" не написали, его просто зафиксировали текущее состояние в 1988-89 через десятилетия после создания языка. А предыдущее описание вроде K&R C стандартом не было, но почему-то как-то работало.

> К его размеру? К тому что язык подробно написан? Или ты думаешь что стандарт другого языка был тоньше?

К соотношению размер-качество. Можно написать толстый, но при этом продуманный и однозначный стандарт. А можно написать толстый "стандарт" Си. Почувствуй разницу.

> К наличию UB? UB позволяет делать оптимизации...

А также отстреливать себе ноги по самую ж. Что мы наблюдаем доброй части CVE.

> К наличию IB? IB позволяет языку быть переносимым и при этом эффективным.

Позволяет языку быть НЕпереносимым. Потому что как только тебе нужно перенести уже имеющийся код на другую платформу, тебе нужно вычитать его практически весь заново и найти все места, где на новой платформе будет другое поведение. И обмазаться еще ifdef'ами.

> Про левую пятку это ты врёшь.

Думаешь это всё решала правая пятка? Ну, может быть, может быть...

PS. А ты знаешь почему стандарт получился таким какой он есть? С таким количеством UB и IB.
Совсем не ради каких-то оптимизаций и переносимостей. А потому что к моменту стандартизации уже была уже кодовая с различными реализациями под разные платформы. И если посмотреть, кто сидел в комитете, то неудивительно что каждый тянул одеяло на себя и они просто не могли договориться - никто не хотел переписывать свою кодовую базу.

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

452. "Выпуск языка программирования Rust 1.80"  –1 +/
Сообщение от Аноним (451), 01-Авг-24, 12:21 
Т.е. ни одну претензию ты так и не озвучил, типичный некомпетентный балабол.
Ответить | Правка | Наверх | Cообщить модератору

453. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Аноним (-), 01-Авг-24, 14:11 
> Т.е. ни одну претензию ты так и не озвучил, типичный некомпетентный балабол.

Дурилка, ты что читать не умеешь?
Претензии уже перечислены - "стандарт" из офна и палок.
Язык с кучей архитектурных проблем (например отвратительные enumʼы или макросы).
Куча UB которые стреляют CVEшками постоянно уже 30+ лет.
Ни и умственно отсталые пограммисты которые этим пользуются и воняют на новые инструменты.
Этого что мало)?

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

465. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от wyry (-), 03-Авг-24, 03:54 
На какую голову Rust выше? В C++ ДО появления Rust появилась концепция владения, умные указатели, move семантика, при этом вам решать какую концепцию владения ресурсами использовать в вашем проекте. Из "новомодного" уже добавили корутины, фактически добавили транзакционную память (ещё нет в стандарте, но уже есть реализации). Ваш пост (этот и другой) говорит лишь о том, что вы абсолютно не разбираетесь в C++ и знаете его где-то на уровне "Си с классами". Даже не C++11, который УЖЕ делает Rust бесполезным. Сегодня на дворе 2024 и в C++ добавлено немало инструментов на все случаи жизни. На сырых указателях давно никто не пишет (разве что энтузиасты "для души" в личных проектах или высокопроизводительных системах).
Ответить | Правка | К родителю #441 | Наверх | Cообщить модератору

498. "Выпуск языка программирования Rust 1.80"  +/
Сообщение от Дырникemail (?), 15-Авг-24, 02:03 
Rust 1.80? Ну это прям прорыв в мир безопасных указателей и грамотно утилизированной оперативной памяти! Значит, теперь, наконец-то, можно писать код, который не свалится в ядро на 14-й минуте работы из-за попытки разыменовать нулевой указатель. Ну и кстати, вот ты говоришь про отсутствие сборщика мусора — это вообще-то просто находка для тех, кто хочет экономить на электричестве! Не нужно гонять этот сборщик, который работает в режиме ядра через DirectX-предикаты, сжирая мегагерцы прямо с видеокарты.

Cargo — это вообще песня! Я всегда говорил, что сборка проекта через пакетный менеджер — это как залить данные в БД через аудиопорт, только тут ещё и с гарантией, что библиотеки не перекрестятся. Особенно порадовала тема с crates.io — как будто ты скачиваешь пакеты прямо через FTP-протокол в облаке, только без облака и без FTP, но с поддержкой Rust. Всё это накладывает строгие ограничения на целочисленные переполнения, которые, кстати, можно обойти.

Ну и концепция неизменяемости переменных — это вообще что-то с чем-то! Представь себе, у тебя есть ссылка, а её изменить нельзя! Это как попробовать скомпилировать JavaScript через BIOS. Но если вдруг начнутся проблемы, всегда можно пересобрать ядро компилятора в режиме совместимости с Fortran и, конечно, не забыть включить телеметрию, чтобы следить за частотой нажатий на клавишу "Enter".

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

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

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




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

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