The OpenNET Project / Index page

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



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

Оглавление

Выпуск языка программирования Rust 1.51, opennews (??), 26-Мрт-21, (0) [смотреть все]

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


11. "Выпуск языка программирования Rust 1.51"  –3 +/
Сообщение от Аноним (5), 26-Мрт-21, 14:01 
Норм
for item in array.iter().copied() {
for item in IntoIter::new(array) {

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

16. "Выпуск языка программирования Rust 1.51"  +3 +/
Сообщение от Аноним (16), 26-Мрт-21, 14:05 
foreach (var item in array)
Ответить | Правка | Наверх | Cообщить модератору

24. "Выпуск языка программирования Rust 1.51"  +17 +/
Сообщение от Филимон Осмотрительный (?), 26-Мрт-21, 14:15 
for (auto item : array)
{}

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

Почему злой и страшный С++ выглядит удобнее и понятнее Rust ?


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

48. "Выпуск языка программирования Rust 1.51"  +/
Сообщение от боня (?), 26-Мрт-21, 14:44 
к плюсам не из-за этого претензии
Ответить | Правка | Наверх | Cообщить модератору

55. "Выпуск языка программирования Rust 1.51"  +4 +/
Сообщение от Кир (?), 26-Мрт-21, 14:55 
Сколько ни спрашивал, все либо затрудняются сформулировать претензии к C++, либо несут ахинею. С учётом последних нововведений, C++ рулит и педалит остальные ЯП почти во всех областях применения.
Ответить | Правка | Наверх | Cообщить модератору

100. "Выпуск языка программирования Rust 1.51"  +/
Сообщение от Аноним (-), 26-Мрт-21, 16:31 
Нововведения убили плюсы
Ответить | Правка | Наверх | Cообщить модератору

109. "Выпуск языка программирования Rust 1.51"  –4 +/
Сообщение от Аноним (109), 26-Мрт-21, 16:48 
Недавно на хабре видел статью человека, который устал пытаться писать на C++ без UB. Я пытался писать без UB, устал и забил. Теперь с покерфейсом пишу код с UB, потому что так и не нашел куда спрыгнуть. Человек, который не увидит в следующей функции UB, за которое ОСь может прибивать программу, не должен допускаться до C++.

size_t count_spaces(const std::string& str)
{
    size_t ret = 0;
    for (char c: str)
    {
        if (std::isspace(c))
            ++ret;
    }
    return ret;
}

Спойлер UB есть в описании isspace на en.cppreference.com

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

123. "Выпуск языка программирования Rust 1.51"  +3 +/
Сообщение от Онаним (?), 26-Мрт-21, 17:32 
Ну в принципе ожидаемо. Особенно на хабре, как раз тот уровень.
Называется: надо читать описания-то.
Ответить | Правка | Наверх | Cообщить модератору

132. "Выпуск языка программирования Rust 1.51"  +1 +/
Сообщение от Аноним (109), 26-Мрт-21, 17:59 
А поделитесь своими ощущениями от чтения стандарта по плюсам во время написания программы? Или вы даже из тех, кто помнит его наизусть, учитывая намек на разницу уровней? А то мой потолок - это стандарт чистых сей. При чтении плюсового, даже не всегда могу понять правильно ли понял прочитанное.
Ответить | Правка | Наверх | Cообщить модератору

143. "Выпуск языка программирования Rust 1.51"  +2 +/
Сообщение от Кир (?), 26-Мрт-21, 18:23 
Читать стандарты надо, в общем-то, ДО написания программы. Простая аналогия: если ты словарь и грамматику китайского, скажем, языка начнешь читать только во время общения на оном, то много не наобщаешь, поверь.
Ответить | Правка | Наверх | Cообщить модератору

148. "Выпуск языка программирования Rust 1.51"  +/
Сообщение от Аноним (109), 26-Мрт-21, 18:41 
А те, кто не видят проблем в C++, стандарт читали? Запомнить я его не смог, перечитывать каждый раз запарился. Где чудо богатыри, которые могут выйти и сказать: "Пишу на C++ без UB, проблем никаких". Я от стандарта плюсов даже 2003 года помню сильно меньше половины. В основном то, что с сями пересекается.
Ответить | Правка | Наверх | Cообщить модератору

154. "Выпуск языка программирования Rust 1.51"  +1 +/
Сообщение от Кир (?), 26-Мрт-21, 18:50 
Ты правда считаешь, что это проблемы именно C++? Похоже, у меня для тебя плохие новости... )))
Ответить | Правка | Наверх | Cообщить модератору

157. "Выпуск языка программирования Rust 1.51"  +/
Сообщение от InuYasha (??), 26-Мрт-21, 18:58 
Достали шаблоны, многоэтажные конструкции с кучами двоеточий. Прешёл обратно на Си. Потому и не кусают. \(o_O)/
Ответить | Правка | К родителю #148 | Наверх | Cообщить модератору

168. "Выпуск языка программирования Rust 1.51"  +/
Сообщение от Онаним (?), 26-Мрт-21, 19:37 
Шаблоны - прекрасная штука, если с умом готовить.
Особенно когда у тебя куча однотипных вещей для различных вложенных типов.
Ответить | Правка | Наверх | Cообщить модератору

199. "Выпуск языка программирования Rust 1.51"  +/
Сообщение от Урри (ok), 26-Мрт-21, 22:07 
Это и на си можно делать. Точнее на gcc расширении c, которое сто лет поддерживают и шланг и тайниси.
Правда, на плюсах это красивее выглядит.

Ну и да, под разные задачи разные инструменты, факт.

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

164. "Выпуск языка программирования Rust 1.51"  +/
Сообщение от Онаним (?), 26-Мрт-21, 19:29 
Возьмите MaNGOS, попробуйте разобрать код. Попутно прокачаетесь :)
Ответить | Правка | К родителю #132 | Наверх | Cообщить модератору

167. "Выпуск языка программирования Rust 1.51"  +/
Сообщение от Онаним (?), 26-Мрт-21, 19:36 
А так-то без хендбука под рукой лезть в дебри языков вообще смысла нет. Любых.
Ну и бОльшую часть нужного надо запомнить прежде, чем начинать писать что-либо серьёзно.
А всё, что постоянного использования не имеет - в хендбуке.
Ответить | Правка | К родителю #132 | Наверх | Cообщить модератору

133. "Выпуск языка программирования Rust 1.51"  +1 +/
Сообщение от Филимон Мудрый (?), 26-Мрт-21, 18:02 
UB - само по себе не плохо и не хорошо. Это не ошибка. UB - это когда определяет не стандарт, а реализация.

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

Конкретно в вашем примере, нужно просто прочитать документацию к isspace. Ещё можно почитать почему так сделано (что это даёт взамен)

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

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


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

155. "Выпуск языка программирования Rust 1.51"  +1 +/
Сообщение от Аноним (109), 26-Мрт-21, 18:55 
Нет. Детали реализации это - unspecified behavior или implementation-defined behavior. Undefined behavior - это вот это вот:
Permissible undefined behavior ranges from ignoring the situation completely with unpredictable results, to behaving during translation or program execution in a documented manner characteristic of the environment (with or without the issuance of a diagnostic message), to terminating a translation or execution (with the issuance of a diagnostic message).
Ответить | Правка | Наверх | Cообщить модератору

212. "Выпуск языка программирования Rust 1.51"  –1 +/
Сообщение от Онаним (?), 26-Мрт-21, 22:51 
Вообще UB при кривом исходном вводе - это нормально, и существует даже вне ЯП - в железе, в приложениях в целом. Где-то ловишь exception или прерывание исключения, где-то срач в логи и терминацию, где-то - вывод, вполне соответствущий вводу, но никуда далее не годный. C'est la vie.

И вообще Сначала мы загоняем в функцию, обрабатывающую данные как unsigned char, просто char, а потом удивляемся - ОЙ. А ЧОЭТООНО??!!!! БОЛЬНОЖЕ!!!

Это не оно, это руки. Изящно изогнутые.

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

135. "Выпуск языка программирования Rust 1.51"  +3 +/
Сообщение от Кир (?), 26-Мрт-21, 18:10 
А для кого приведен пример на том же cppreference?


int count_spaces(const std::string& s)
{
    return std::count_if(s.begin(), s.end(),
                         [](unsigned char c){ return std::isspace(c); } // correct
                        );
}

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

153. "Выпуск языка программирования Rust 1.51"  –1 +/
Сообщение от Аноним (109), 26-Мрт-21, 18:49 
Я привел пример для отсева абсолютно некомпетентных и пример того, что даже самая безобидная на вид функция может уронить программу. Плюсы - это минное поле, где ты примерно знаешь мины на участке где ходишь, при этом продолжаешь топтаться по нему каждый день. И знаешь, что вне участка полно мин, о которых не знаешь. Чтоб писать на плюсах надо 100% времени поддерживать 100% концентрацию. У меня вот есть проблема - не получается так.
Ответить | Правка | Наверх | Cообщить модератору

158. "Выпуск языка программирования Rust 1.51"  +/
Сообщение от Кир (?), 26-Мрт-21, 18:58 
"Трехколесный велосипед лучше мерседеса, потому что на нем вы никогда не въедете в столб на скорости 200 км/ч" Да, не въедете, потому что не разгонитесь до такой скорости. А так-то программисты обычно думают мозгом, когда пишут программы. Ну, как минимум некоторые )))
Ответить | Правка | Наверх | Cообщить модератору

228. "Выпуск языка программирования Rust 1.51"  +/
Сообщение от боня (?), 27-Мрт-21, 00:17 
> А так-то программисты обычно думают мозгом, когда пишут программы.

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

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

> Трехколесный велосипед лучше мерседеса

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

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

195. "Выпуск языка программирования Rust 1.51"  +/
Сообщение от Филимон Участливый (?), 26-Мрт-21, 21:19 
Это плохо. Если с концентрацией проблемы первым делом проверьте уровень кортизола и пейте витамины группы Б - при их дефиците у организма возникают проблемы с выработкой тормозящих нейромедиаторов. Наврятли вам Rust с этим поможет.

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

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

213. "Выпуск языка программирования Rust 1.51"  –1 +/
Сообщение от Онаним (?), 26-Мрт-21, 22:55 
Если концентрацию поддерживать "не получается" - лучше сразу сменить профессию.
Ответить | Правка | К родителю #153 | Наверх | Cообщить модератору

163. "Выпуск языка программирования Rust 1.51"  +2 +/
Сообщение от Vkni (ok), 26-Мрт-21, 19:13 
> Я пытался писать без UB, устал и забил. Теперь с покерфейсом пишу код с UB, потому что так и не нашел куда спрыгнуть.

Рекомендую прочитать статью MA Ertl'а "What every compiler writer should know about programmers". В ней, в частности, рассказывается, что исторически UB использовались для заточки под конкретный компилятор и систему. И, в общем, язык системный => написание "generic" кода, который системно независим, это выход за пределы области применения C.

К сожалению, это конфликтует с желанием компиляторщиков использовать UB для чего угодно. :-(

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

216. "Выпуск языка программирования Rust 1.51"  +/
Сообщение от Аноним (109), 26-Мрт-21, 23:09 
Спасибо за статью. Истоки UB я знаю и с рассуждениями по ходу статьи согласен. Когда я начинал программировать, я выделывался с оптимизациями. А теперь мне нужен способ написать код, который будет гарантированно одинаково работать под STM32, Linux(ARM и x64) и Windows(x86) независимо от компилятора. И я его не вижу. Обмазал всё тестами, включил предупреждения на почти максимум, прогнал через анализаторы, а гарантий то нет. Мне нравится идея раста, что если хочешь, пиши unsafe и выделывайся. Но сам он как-то не зашел.
Ответить | Правка | Наверх | Cообщить модератору

260. "Выпуск языка программирования Rust 1.51"  +/
Сообщение от fidoman (ok), 27-Мрт-21, 10:44 
Потому что unsigned char надо использовать. Вроде бы не такая сложная головоломка, чтоб прям "спрыгивать".
Ответить | Правка | К родителю #109 | Наверх | Cообщить модератору

267. "Выпуск языка программирования Rust 1.51"  +/
Сообщение от Аноним (109), 27-Мрт-21, 15:31 
Это просто одна из мин, на которой я подорвался. Мне о ней лет 10 назад сказал MSVC с отладочным рантаймом, тогда я даже не задумался, что что-то не так если функция не модифицирующая строку роняет программу. Спрыгнуть хочу потому, что концентрацию теряю, ну не больше 10 раз в год. А после каждого такого случая минимум 3 дня: думаю как может происходит странная херня о которой сообщили, листаю коммиты, перечитываю исходники... Странная херня не обязана начать происходить сразу. Вот есть проект в котором больше 1МБ исходных кодов и ищи как хочешь, стрелять то может всё. Крайне боюсь, что когда-нибудь придется иметь дела с проектами больше 10МБ. Если знаешь, что не потянешь, лучше спрыгнуть.
Ответить | Правка | Наверх | Cообщить модератору

273. "Выпуск языка программирования Rust 1.51"  +/
Сообщение от fidoman (ok), 27-Мрт-21, 17:31 
Она реально роняет? Интересно бы в либе код посмотреть, как им это удаётся)
Ответить | Правка | Наверх | Cообщить модератору

111. "Выпуск языка программирования Rust 1.51"  +6 +/
Сообщение от боня (?), 26-Мрт-21, 16:56 
> Сколько ни спрашивал, все либо затрудняются сформулировать претензии к C++.

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

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

124. "Выпуск языка программирования Rust 1.51"  +/
Сообщение от Онаним (?), 26-Мрт-21, 17:33 
Полиморфные указатели на абстракции от структур :D
Ответить | Правка | Наверх | Cообщить модератору

126. "Выпуск языка программирования Rust 1.51"  +/
Сообщение от Онаним (?), 26-Мрт-21, 17:34 
(всерьёз воспримется только теми, кто понимает, как оно внутри работает)
Ответить | Правка | Наверх | Cообщить модератору

134. "Выпуск языка программирования Rust 1.51"  –1 +/
Сообщение от Sw00p aka Jerom (?), 26-Мрт-21, 18:08 
foreach ($arr as $key => $value)
{
}

куда "красивее", пхпешники поддержат :)

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

176. "Выпуск языка программирования Rust 1.51"  –1 +/
Сообщение от Варенье (?), 26-Мрт-21, 20:17 
Только у вас нарушение PSR-12 (секция 5.5), фигурная скобка в foreach должна быть на той же строке, что и закрывающая круглая скобка
Ответить | Правка | Наверх | Cообщить модератору

207. "Выпуск языка программирования Rust 1.51"  –1 +/
Сообщение от Sw00p aka Jerom (?), 26-Мрт-21, 22:24 
> Только у вас нарушение PSR-12 (секция 5.5), фигурная скобка в foreach должна
> быть на той же строке, что и закрывающая круглая скобка

в топку, когда после цикла идет длинная строка - не удобно читать, дело вкуса.

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

215. "Выпуск языка программирования Rust 1.51"  +/
Сообщение от Онаним (?), 26-Мрт-21, 23:07 
У меня часто складывается ощущение, что в написании PSR отчасти участвовали неадекваты.
Нет, там очень много здравого, чему стоит следовать.
Но вот эти MUST типа "There MUST NOT be more than one statement per line"
Ага, вот прямо сейчас разбежался 10-15 переменных для цикла инициализировать портянкой по пять букв в строчке.
То же самое со скобками. Здесь конечно лучше наверх вытащить. Но в ряде случаев действительно читабельнее, когда открывается на своей строке.
Ответить | Правка | Наверх | Cообщить модератору

217. "Выпуск языка программирования Rust 1.51"  +1 +/
Сообщение от Онаним (?), 26-Мрт-21, 23:12 
Потом открываешь какой-нибудь моднявый прожектик килобайт в 25 для вызова внешней утилиты с тремя параметрами в 5-10 классов, видишь там нечитабельное говно, сплошь состоящее из PSR, закрываешь, и пишешь один класс в три килобайта, делающий больше и правильнее, и куда осязаемее (за отсутствием необходимости помнить про те самые (5-10)-1 классов из 50 строчек, 3/4 из которых - скобки, отступы и комментарии), чем вот та самая портянка.
Ответить | Правка | Наверх | Cообщить модератору

218. "Выпуск языка программирования Rust 1.51"  +/
Сообщение от Онаним (?), 26-Мрт-21, 23:14 
(причём качество тех же комментариев, записанных правда покороче, без лишних строк, у тебя получается не хуже, и даже аргументы описаны так же хорошо, просто ты уже не PSRаведник)
Ответить | Правка | Наверх | Cообщить модератору

214. "Выпуск языка программирования Rust 1.51"  +/
Сообщение от Онаним (?), 26-Мрт-21, 22:56 
Поддерживаю.
PSR идут в задницу, но да, скобочку лучше таки утащить в первую строку.
Индекс нам там тоже в исходной задаче вроде не нужен.

foreach ($array as $item) {
}

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

225. "Выпуск языка программирования Rust 1.51"  +/
Сообщение от Sw00p aka Jerom (?), 26-Мрт-21, 23:49 
> скобочку лучше таки утащить в первую строку.

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


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

253. "Выпуск языка программирования Rust 1.51"  +/
Сообщение от Онаним (?), 27-Мрт-21, 09:18 
Согласен, дело вкуса. Кроме вкуса ещё есть дело читабельности.
Я например легко читаю почти весь код, даже откровенный говнокод - кроме кода, написанного строго по PSR... :D Возможно потому, что нынешние мониторы широки вширь, но узки ввысь, и листать километровую портянку задалбывает.
Ответить | Правка | Наверх | Cообщить модератору

254. "Выпуск языка программирования Rust 1.51"  +/
Сообщение от Онаним (?), 27-Мрт-21, 09:22 
А вообще чессгря с годами всё больше уверенности, что PHP занимаются практики, а не теоретики.

Даже на этом примере. Очевидное foreach. Обычное для C-подобных языков открытие блока кода. Все переменные сразу видны - с ключевыми словами не спутаешь никак. as в нужном месте, сразу понятно, кто есть кто. Ну и $key => $value, учитывая, что значения хешей к ключам именно через => объявляются, тоже вполне логично.

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

255. "Выпуск языка программирования Rust 1.51"  –1 +/
Сообщение от Онаним (?), 27-Мрт-21, 09:24 
То же

for item in IntoIter::new(array)

ШТО ЭТО, БЛ***???
IntoIter - это класс какой-то? Статический вызов new - ну, тут вроде понятно.
А array что такое? Ключевое слово именования типа? То есть IntoIter::new принимает имя типа на входе?
БРРРГГГ...

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

256. "Выпуск языка программирования Rust 1.51"  –1 +/
Сообщение от Онаним (?), 27-Мрт-21, 09:26 
std::array::IntoIter::new(array) же - это вообще лютый Ц
Ответить | Правка | Наверх | Cообщить модератору

275. "Выпуск языка программирования Rust 1.51"  +/
Сообщение от burjui (ok), 27-Мрт-21, 19:58 
Уже давно можно писать "for item in &array".
Ответить | Правка | К родителю #24 | Наверх | Cообщить модератору

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

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




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

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