1.13, 3draven (ok), 21:22, 26/07/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +10 +/– |
Изучаю его, по моему отличная штука. Сейчас хэловорд проект на нем катаю. Долго возился с обработкой ошибок что бы сделать ее удобной в проекте так как есть море их видов, а на выходе вебсервера вебсерверу надо одну. Так же долго возился с тем что бы в порождающих функциях делать всякое ссылками вместо возврата упаковки, но плюнул, шибко неудобно возвращаю умные указатели и прочее подобное. Сошелся на том, что порождая возвращать упаковку, а используя отдавать ссылку. В целом штука годная, либы нужные уже есть, можно пилить себе всякое. Время ответа вебсервера на простенькое 1мс, памяти ест немного.
| |
|
2.15, Аноним (15), 21:26, 26/07/2024 [^] [^^] [^^^] [ответить]
| +7 +/– |
Напомни а зачем в твоём хеллоуворлде безопасная работа с памятью? Кто и зачем будем за границы буфера выходить и что он с этим будет делать?
| |
|
3.19, 3draven (ok), 21:39, 26/07/2024 [^] [^^] [^^^] [ответить]
| +11 +/– |
Предлагаешь написать хэловорд на расте без безопасного управления памятью?
| |
|
|
5.106, Аноним (106), 08:11, 27/07/2024 [^] [^^] [^^^] [ответить]
| +5 +/– |
> Да, предлагаю!
Поддерживаю! Отличный язык!
А те кто против от обид за собственную бездарность - уже не знают что сказать, уже сколько лет в начале говорили, что clang не взлетит, и обо...сь в своих прогнозах, потом про Rust, и набрасывают уже лишь собственную желчь, без осмысленного содержания...
| |
|
6.116, Аноним (15), 09:08, 27/07/2024 [^] [^^] [^^^] [ответить]
| –7 +/– |
Проблема лишь в том что ты судишь по себе. И приписываешь другим свои негативные стороны. Это при том что раст не взлетел от слова ваще.
| |
|
7.128, Аноним (-), 09:42, 27/07/2024 [^] [^^] [^^^] [ответить]
| +2 +/– |
Угу, только его добавили в ядро, разрешив использование в отличии от плюсов.
На нем пишут команды в таких проектах как андроид и хром.
Ну и куча софта который уже работает (амазок, клоудфаря и тд)
Совершенно не взлетел! Анон не может ошибаться))
| |
|
|
9.145, Аноним (145), 11:40, 27/07/2024 [^] [^^] [^^^] [ответить] | +2 +/– | Внезапно люди с годами опыта на C порождают бесконечные CVE, а вроде не обезьянк... текст свёрнут, показать | |
|
8.155, Аноним (155), 12:56, 27/07/2024 [^] [^^] [^^^] [ответить] | +/– | Как сразу весь кипешь вокруг написания модулей ядра на расте мгновенно затих, да... текст свёрнут, показать | |
|
9.171, Аноним (171), 14:17, 27/07/2024 [^] [^^] [^^^] [ответить] | +/– | Так кипиш был из-за самого факта добавления, а не из-за того что на нем что-то п... текст свёрнут, показать | |
|
|
|
|
|
|
|
4.138, Facemaker (?), 10:31, 27/07/2024 [^] [^^] [^^^] [ответить]
| +4 +/– |
>Потому что люди просто устали от сишки. Надоело
Однозначно. Хорошо помню такое своё настроение ("надоело!") после очередного многочасового дебага необходимой C++-библиотеки с понасаженными там UB.
| |
|
|
|
3.21, 3draven (ok), 21:44, 26/07/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
Да, их и заюзал и двойную упаковку, сначала все в anyhow, а потом anyhow в свое с реализацией трейтов, которые надо вебсерверу и на стадии генерации ответа распаковка бутерброда. Таким образом в коде все просто, хоть и не шибко красиво. А своя ошибка на thiserror
| |
3.141, Facemaker (?), 10:34, 27/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
>thiserror
>anyhow
Почему-то мало известна такая библиотека, как SNAFU. А она лучшая в обработке ошибок. Имел долгий опыт и с anyhow, и с thiserror; они хороши и полезны, но SNAFU — ещё лучше (один только метод context трейта ResultExt экономит массу усилий). Правда, достоинства не сразу очевидны и, пожалуй, в полной мере проявляются на реально больших и сложных проектах.
| |
|
4.157, Карлос Сношайтилис (ok), 13:21, 27/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
SNAFU известна – она появилась первая и является основоположником обёрток для ошибок в расте.
thiserror и anyhow появились спустя несколько месяцев, как работа над ошибками в дизайне SNAFU.
| |
|
5.223, Facemaker (?), 18:38, 27/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
>работа над ошибками в дизайне SNAFU
Ты что-то путаешь. Anyhow вообще костыльная штука для быстрого прототипирования, и почти ничего общего у него ни с thiserror, ни с snafu нет.
| |
|
6.338, Ф1 (?), 08:10, 29/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
>Anyhow вообще костыльная штука для быстрого прототипирования, и почти ничего общего у него ни с thiserror, ни с snafu нет.
Anyhow просто для приложений, а не для библиотек, и вполне приближает легкость обработки ошибок к языкам с исключениями.
Есть еще улучшенный вариант anyhow - eyre, и если использовать еще и color-eyre то получаются вполне читабельные отчеты намного лучше чем портянки стектрейсов в языках с исключениями.
| |
|
|
|
|
2.25, Омоним (?), 21:47, 26/07/2024 [^] [^^] [^^^] [ответить]
| –3 +/– |
>долго возился с тем что бы в порождающих функциях делать всякое ссылками вместо возврата упаковки, но плюнул, шибко неудобно
Очень неудобно что надо указывать время жизни ссылок
| |
2.59, Аноним (59), 00:40, 27/07/2024 [^] [^^] [^^^] [ответить]
| –2 +/– |
Да вот тоже хотел запилить проект HelloWorldNG. Ну, значит, начал с создания базового класса... Упс, а нету такого ключевого слова. Обломалсо.
| |
|
3.82, Аноним (82), 02:30, 27/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
Классы -- бредовая идея, если так подумать. С самого начала существования различных ЯП - данные отделяли от логики. К этому мы возвращаемся вновь в современных языках типа раста. Ну а классы породили такую бессмысленную дисциплину, как "паттерны ООП", причем значительная их часть посвящена решению проблем, возникших при добавлении в ЯП такой бредовой идеи, как классы.
| |
|
4.91, Аноним (-), 04:49, 27/07/2024 [^] [^^] [^^^] [ответить]
| +3 +/– |
Да-да-да, мметь рядом с данными семантику их использования выраженую через набор методов это очень бредовая идея. А вот передавать и валидировать сырые данные в наборе несвязанных лапшеобразных функций это очень прогрессивно.
А паттерны ООП нужны для очень больших проектов, где всю кодовую базу знать тяжело. За каждым велосипедом не уследишь, а вот за унифицированными архитектурными решениями вполне.
| |
|
5.109, Ф1 (?), 08:30, 27/07/2024 [^] [^^] [^^^] [ответить]
| –2 +/– |
>Да-да-да, мметь рядом с данными семантику их использования выраженую через набор методов это очень бредовая идея
Это как-раз в расте более чем доступно, из ООП там только наследования реализации нет.
| |
|
|
7.219, Ф1 (?), 16:57, 27/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
>В расте нет наследования данных. Реализация как раз наследуется
Корректнее будет что наследования вообще нет, реализация тоже "наследуется" только из функций трейтов которые данные не могут использовать. Но с данными как раз попроще, агрегация + Deref который тривиально реализуется.
| |
|
|
9.339, Ф1 (?), 08:21, 29/07/2024 [^] [^^] [^^^] [ответить] | +/– | Не хочется терминологический спор начинать, но все-таки наследования нет, трейты... текст свёрнут, показать | |
|
|
|
|
|
|
|
|
1.26, анон (?), 21:51, 26/07/2024 [ответить] [﹢﹢﹢] [ · · · ]
| –10 +/– |
99% функционала раста с легкостью достигается на плюсах через:
-mshstk
-fsanitize=safe-stack
Пользуйтесь.
| |
|
2.31, Аноним (31), 21:58, 26/07/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
Так дьявол в оставшемся 1%. И без той 99%-ой сковородки та 1%-я чалма не работает. Это не говоря уже об «удовольствии» программирования на C++. Даже за деньги трижды подумал бы связываться.
| |
|
3.101, Аноним (101), 06:33, 27/07/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
Я бы согласился про "довольствие" от с++, если бы не было сравнения с растом
| |
|
2.53, Аноним (53), 00:10, 27/07/2024 [^] [^^] [^^^] [ответить]
| +5 +/– |
> 99% функционала раста с легкостью достигается на плюсах через...
Чел, это флажки рантаймовых проверок. Они никакого функционала из Раста не достигают.
| |
2.66, Аноним (66), 01:25, 27/07/2024 [^] [^^] [^^^] [ответить]
| +10 +/– |
Я дико извиняюсь, но как с помошью
> -mshstk
> -fsanitize=safe-stack
можно достичь move-семантики, match-выражений, монадов, асинхронного программирования, отсутствия заскарузлого синтаксиса вроде "void*(*name)(void*)", отсутствия 65535 нестандартных расширений, адекватных макросов, единой системы документации, качественной документации стандартной библиотеки, единой системы сборки, единого репозитория пакетов с утановкой в одну команду без dependency hell, отсутсвия UB на каждом шаге (Вы же в курсе что бесконечный цикл может вызвать UB? Как и (int8_t)(INT8_MIN / -1).), стандартизированного поведения оператора >> для беззнаковых, стандартизированного представления целых чисел, осмысленных сообщений об ошибках от компиляторя, отсутсвия парсинга литералов в рантайме и так далее?
| |
|
3.89, Аноним (89), 04:28, 27/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
> стандартизированного поведения оператора >> для беззнаковых
Мне кажется, или ты сначала написал про UB, а потом отредактировал коммент? Там именно UB[1].
Чего-то можно достичь заменой сей на плюсы, что-то из недостатков позволяет поддерживать больше платформ, где-то "безопасности по умолчанию" на самом деле не хватает, где-то UB - продукт эволюции от "продвинутого макроассемблера[2]" до "языка с умными[3] оптимизациями".
[1] https://godbolt.org/z/1xEbe95fa
[2] это как когда сишку хвалят за отсутствие неявного поведения, когда-то это было правдой
[3] ну, по мнению комитета - умными, а на деле ядро с нестандартным -fno-strict-aliasing собрано
| |
|
4.135, Аноним (66), 10:22, 27/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Мне кажется, или ты сначала написал про UB, а потом отредактировал коммент? Там именно UB[1].
Опечатался, вместо "знаковых" написал "беззнаковых". Я имел ввиду значение вдвигаемого слева бита, которое может быть как 0, так и 1 в зависимости от имплементации.
> то из недостатков позволяет поддерживать больше платформ,
По-моему чья-то необходимость прогрммировать 3.5 DSP и 2.5 вымерших архитектуры процессора не оправдывает введения поведения, специфичного для этих эзотерических платформ, в язык общего назначения.
| |
|
|
6.152, Аноним (66), 12:29, 27/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
То что сдвиг на число бит, превышающее размер операнда это 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
| |
|
7.189, Аноним (89), 14:32, 27/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
> То что сдвиг на число бит, превышающее размер операнда это UB и так понятно
Нет, если его честно выполнять, то результатом будет ноль. Надо понять, что в процессорах это могут оптимизировать так, что 'uint64_t(x) >> y' выполняется как 'uint64_t(x) >> (y & 0b11'1111)', тупо по маске. В альтернативной реальности все процессоры могли бы делать ещё 'if (y & ~0b11'1111) return 0;' и UB бы не было. Не так уж очевидно.
| |
|
|
|
|
3.335, ЦукаНя (?), 04:13, 29/07/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
move семантика есть, асинхронное программирование есть, с синтаксисом раст ничуть не лучше. А говорить про нестандартные расширения, когда в расте стандарта нет вообще, ты это серьёзно? Да и многие ими не пользуются. В расте нет нормальных шаблонов и вот вообще всё реализуется через костыли в виде макросов. Документация стандартной библиотеки и остального: cppreference. Единая система сборки? Так cmake можно сказать что монополизировал всё. А за счёт того что в языке есть UB, компилятор может лучше оптимизировать код, или это сделано для поддержки платформ. Чтобы не парсить литералы в рантайме, можно просто использовать constexpr. И закинуть строку в шаблон. А вот костыли в виде паттерн матчина из раста, или его енамов с генериками и даром не нужны.
| |
|
4.359, Карлос Сношайтилис (ok), 15:00, 29/07/2024 [^] [^^] [^^^] [ответить]
| +3 +/– |
> когда в расте стандарта нет вообще
Так и в плюсах нет стандарта. А то им называют - набор рекомендаций для компиляторописателей. Как они заимплементят тот или иной пункт - терра инкогнита. И ладно бы реализация была один раз и навсегда, так нет, может и с версией поменятся.
Это всё что угодно, но не стандарт.
| |
|
5.467, wyry (-), 04:13, 03/08/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
Ложь. Стандарт C++ это как раз проверка на корректность компилятора. Кстати именно поэтому он допускает UB, смысл которого большинство не понимает. Компилятор ОБЯЗАН делать то, что ему приказывает делать стандарт, но сам стандарт не требует ничего сверхъестественного, а UB позволяет производить оптимизации быстродействия вместо того чтобы обеспечить все варианты "эзотерического" использования функциональности. Если вы не знаете как что-то работает: открываете стандарт и смотрите то, что все компиляторы обязаны поддерживать. Необязательная поддержка указывается отдельно, но "необязательная" здесь НЕ означает то, что можно делать что хочешь, а значит лишь то, что её может не быть в реализации вовсе, а если есть, то будьте добры и следуйте стандарту.
| |
|
6.492, Карлос Сношайтилис (ok), 02:06, 10/08/2024 [^] [^^] [^^^] [ответить]
| +/– |
1. Большинство компиляторов С/++ не поддерживает стандарты полностью, что автоматически переводит понятие "стандарт" в "рекомендации".
2. UB – это неопределенное поведение, а не неопределенная реализация. Ничего "эзотерического", например, в переполнении целых чисел нет, однако UB там есть. Что, опять же, говорит о "рекомендациях".
3. Открыв стандарт, ты не сможешь на 100 процентов быть уверен, что твой компилятор будет работать ожидаемо. Но и после того как ты убедишься, что верно понял релиз нотсы компилятора по конкретной UB и правильно их заимлемнтил, ты не получаешь никаких гарантий, что поведение сохранился в следующих версиях. Стандарт? Ну-ну.
| |
|
|
4.361, Fyjy (-), 15:25, 29/07/2024 [^] [^^] [^^^] [ответить] | +3 +/– | Стандарт СИ это почти как Гост на колбасу вида колбаса делается из мяса, може... большой текст свёрнут, показать | |
4.397, Аноним (383), 23:11, 29/07/2024 [^] [^^] [^^^] [ответить]
| +2 +/– |
> move семантика есть
Это недоразумение, а не move семантика. Когда std::move, внезапно, не делает никакого move, немутабельный объект который можно move'нуть вообще невозможен, return std::move() ломает оптимизации, с moved-from объектом можно делать что угодно..
> асинхронное программирование есть
Какое-какое в плюсах асинхронное программирование? Там корутины даже толком не завезли. Руками сишный libuv дёргать это не асинхронное программирование если что, это онанизм.
> с синтаксисом раст ничуть не лучше
Лучше.
| |
|
5.468, wyry (-), 04:17, 03/08/2024 [^] [^^] [^^^] [ответить]
| +/– |
Вы удивитесь, но Rust на самом деле тоже не делает никакого move "за кадром". Вся концепция владения - это фронтенд для разработчика, на системном уровне ничего подобного не существует в принципе. Только в Rust ещё приплели уродливую концепцию времени жизни, что C++ делает пусть хитро иногда (основные хитрости связаны с R-value ссылками), но полностью сам.
| |
|
6.493, Карлос Сношайтилис (ok), 02:12, 10/08/2024 [^] [^^] [^^^] [ответить]
| +/– |
А в машинах кодах всё превращается в "уродливую" адресную арифметику, без всяких там типов, классов и прочего мусора, который процессору не нужен, а нужен только разработчику. Как и концепция владения.
| |
|
7.495, wyry (-), 16:36, 13/08/2024 [^] [^^] [^^^] [ответить]
| +/– |
Так какой смысл тогда придираться к C++, что move на самом деле "ничего не перемещает" (и это действительно так, это простое преобразование к R-value ссылке), когда в Rust схожая семантическая модель на самом деле тоже "ничего не перемещает".
| |
|
|
9.499, wyry (-), 16:23, 15/08/2024 [^] [^^] [^^^] [ответить] | +/– | Какие проверки move-семантика как раз и создана для того чтобы управление ресур... большой текст свёрнут, показать | |
|
|
|
|
|
|
|
|
3.462, wyry (-), 03:25, 03/08/2024 [^] [^^] [^^^] [ответить]
| +/– |
И у вас нет выбора кроме как использовать конкретно эту модель памяти. В C++ у вас есть выбор между C-подобной моделью, "классики" в виде new, delete, умные указатели и move-семантика (современный подход), дальше появится транзакционная память (частично уже поддерживается кое где), в результате C++ легко подружить с любым проектом на C, что часто бывает необходимо. В Rust же либо переписывают, либо делают обёртки для сишных либ, а политика "владения" и move-семантика в C++ появилась раньше, чем вообще появился Rust (это всё C++11), хотя смарт-указатели появились и того раньше.
| |
|
|
1.32, Омоним (?), 22:16, 26/07/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +10 +/– |
Мне всегда казалось, что компилятор должен помогать программисту делать хорошие программы. То есть программист - главный, а компилятор - его помощник. Однако когда программируешь на Rust е, то складывается ощущение, что всё наоборот: компилятор - хозяин, а программист - его раб. Компилятор диктует что ты должен делать и как ты должен это делать. В Ruste нельзя стукнуть кулаком по столу и приказать "Делай как я тебе говорю и баста!". А в C++ - можно. Rust - это как строптивая и несговорчивая жена. С кем вам лучше жить , со строптивой или покорной - решать вам самим.
| |
|
2.36, DEF (?), 22:33, 26/07/2024 [^] [^^] [^^^] [ответить]
| +6 +/– |
Компилятор и помогает погромисту. Компилятор же будет переводить в машинный код все, что там набил своими культяпками погромист.
| |
2.38, WhitePower1488 (?), 22:39, 26/07/2024 [^] [^^] [^^^] [ответить]
| +2 +/– |
В бородатые восьмидесятые доступ к железу был сродни аудиенции у генсека – по талонам и с предварительной записью. Код писался от руки на чем попало, хоть на туалетной бумаге (если повезёт достать). А уж потом, дрожащими от нетерпения руками, эти каракули вводились в ЭВМ. Так что компетенции нынешних гуманитариев, вошедших в айтишечку, сильно недотягивают до того, чтобы они диктовали компилятору свои условия.
| |
|
3.62, Аноним (59), 00:46, 27/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
>на туалетной бумаге (если повезёт достать)
Не всё так плохо, была ж газета Правда.
| |
|
2.45, Аноним (45), 23:22, 26/07/2024 [^] [^^] [^^^] [ответить]
| +9 +/– |
> компилятор должен помогать программисту делать хорошие программы.
Ненадежная программа не может быть хорошей. А чтобы было хорошо, нужно делать хорошо.
Компилятор мешает программисту сделать плохо.
> В Ruste нельзя стукнуть кулаком по столу и приказать "Делай как я тебе говорю и баста!".
Можно. Пишешь unsafe и делаешь что хочешь.
С женой такое не проканает))
| |
|
3.140, сишник (?), 10:32, 27/07/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Ненадежная программа не может быть хорошей. А чтобы было хорошо, нужно делать хорошо.
> Компилятор мешает программисту сделать плохо.
Так ты бери и делай сразу хорошо! А кто не может хорошо - тот плохой программист!
| |
|
4.381, Прохожий (??), 19:09, 29/07/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
Как показывает многолетний опыт разработки сравнительно сложных программ - никто не может. ¯\_(ツ)_/¯
| |
|
|
2.48, Аноним (155), 23:33, 26/07/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
Давно пора сделать аналог GC, только в compile time. 100% что можно просчитать когда можно уже делать free(), fclose(), glDeleteTextures() и всё такое. К сожалению, современная айтишечка - колосс на глинянных ногах, никто не хочет развивать базу, ЯП развиваются очень медленно. Так что имеем 3 неудобных стула в виде runtime GC, ручного управления и смартпойнтеров / боров чекеров.
| |
|
3.55, Аноним (53), 00:17, 27/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Давно пора
> 100% что можно просчитать когда можно уже делать free(), fclose(), glDeleteTextures() и всё такое.
> Так что имеем 3 неудобных стула в виде [...] смартпойнтеров [...]
Его и сделали давно. RAII называется (смартпоинтеры его частный случай). Что конкретно тебе неудобно?
| |
|
4.83, Аноним (155), 02:39, 27/07/2024 [^] [^^] [^^^] [ответить]
| –2 +/– |
> RAII
Убогое. 90% плюются с плюсов и раста с их raii и боров чекерами, остальные делают вид что им ок (но работают медленнее и зп меньше получают, т.к меньше фич за то же время в прод катят). Инди девелоперам и стартаперам некогда боровов ублажать и юник птр везде тулить и мувить - да и выглядят эти портянки лишних закорючек стремно. Надо чтобы как мейнстрим языках вообще не делать никаких лишних телодвижений, и даже лучше - чтобы не только память автоматически освобождалась, но и все остальные ресурсы. Так как с последним там или ничего или нелепые костыли try-with-resources.
| |
|
5.151, Аноним (53), 12:29, 27/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
> и даже лучше - чтобы не только память автоматически освобождалась, но и все остальные ресурсы. Так как с последним там или ничего или нелепые костыли try-with-resources.
Чел, ты бы вникнул, что такое RAII и не нисал глупости. Оно буквально об освобождении всех ресурсов автоматически без лишних телодвижений и try-with блоков - как раз то, о чем ты писал.
| |
|
6.153, Аноним (155), 12:39, 27/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Чел, ты бы вникнул, что такое RAII
Типикал С++ фан. Про raii я очевидно знаю, раз пишу. Я работал в разных командах, и с С++ в т.ч. - они самые зазнавшиеся и при этом самые медленные. Шире надо мыслить, а не цепляться за устаревшие на коленке слабанные примитивные технологии.
| |
|
7.162, Аноним (53), 13:46, 27/07/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Про raii я очевидно знаю, раз пишу.
Очевидно, не знаешь. Ибо пишешь про него чушь, да и вообще только что удивлялся, почему никто до сих пор не сделал "аналог GC, только в compile time".
> Я работал в разных командах, и с С++ в т.ч
Ты бы лучше не пыль в глаза пускал, а таки описал как, по-твоему, должен выглядеть автоматический fclose(), и чтобы при этом без RAII.
| |
|
8.167, Аноним (155), 14:07, 27/07/2024 [^] [^^] [^^^] [ответить] | –1 +/– | Мне деньги за то что знаю и применяю платили Человек умеет решать эту задачу не... текст свёрнут, показать | |
8.176, Аноним (155), 14:21, 27/07/2024 [^] [^^] [^^^] [ответить] | –1 +/– | Объявить компилятору, какие функции выделяют ресурсы и какие их освобождают, мож... текст свёрнут, показать | |
|
|
|
|
|
|
14.213, Аноним (155), 16:06, 27/07/2024 [^] [^^] [^^^] [ответить] | –1 +/– | Да, все языки говно Компиляторы просто реализовывают это говно С говно потом... большой текст свёрнут, показать | |
|
|
|
|
|
|
|
|
|
|
4.317, anonimous (?), 22:07, 28/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
Если не нравится синтаксис умных указателей С++, посмотри на SWIFT. Там есть структуры и они передаются по значению, а есть классы, они всегда передаются по указателю/ссылке и используют подсчет ссылок и автоматическое освобождение ресурсов.
| |
|
3.209, Аноним (209), 15:49, 27/07/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
Чтобы программе на этапе компиляции просчитать время жизни указателей, ей нужно эту программу, прежде всего, выполнить. Этот факт уже отсекает большую часть областей применения нашего языка, так как нам теперь не рентабельно с точки зрения времени создавать долгоработющие программы. Но мы пойдём дальше: мы создадим аналог нашего идеального языка, но с GC, и во время рантайма запомним, когда нужно освобождать память. Но даже так в этом нет смысла хотя бы потому, что окружающая среда, в которой находится компьютер, постоянно изменяется, и повторить ту же окружающую среду, что была на этапе компиляции нашего идеального языка, невозможно.
| |
|
|
5.233, Аноним (233), 20:45, 27/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
Зачем вам цепляться к словам, проигнорировав при этом суть сообщения?
Возвращаясь к проблеме, я хочу вас спросить: каким ещё в таком случае образом вы можете предложить простому транслятору с человеческого языка узнать результаты ветвления программы, которая будет выполняться когда-то там в будущем, чтобы расставить необходимые закрывающие функции, при этом не нарушая привычные предположения о течении программы, предлагаяя синтаксис, не сложнее чем в Rust'е, и предлагая накладные расходы не больше, чем при использовании GC?
| |
|
6.237, Аноним (155), 21:08, 27/07/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
Так ведь сами эти условия ветвления известны на этапе компиляции, в чем проблема-то.
| |
|
7.299, Аноним (53), 16:56, 28/07/2024 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Так ведь сами эти условия ветвления известны на этапе компиляции, в чем проблема-то.
Проблема в том, что в реальном мире и условия ветвления, и количество экземпляров (в т.ч. копий) переменных зависят от внешних даных, известных тольуо во время выполнения.
Какой к лешему граф во время компиляции?
| |
7.318, anonimous (?), 22:16, 28/07/2024 [^] [^^] [^^^] [ответить]
| +2 +/– |
Эта проблема называется "Проблема остановки" и почти 100 лет назад Тьюринг доказал что она есть и не разрешима.
| |
|
6.239, Аноним (155), 21:26, 27/07/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
Можно построить граф переходов между всеми областями видимостей переменных, затем, если все пути исполнения после выхода из интересующей области ведут туда, где интересующая переменная недоступна, то можно сразу её освобождать в этой же области. Если во всех путях она видима, то освобождать не нужно. Если часть путей ведет туда, где она видима, а часть - туда где не видима, то то же условие выбора пути, по которому дальше пойдёт исполнение программы, должно решать, освободить переменную или нет. Вроде просто звучит.
| |
|
7.262, Аноним (233), 00:03, 28/07/2024 [^] [^^] [^^^] [ответить] | +/– | Возможно я понимаю вы предлагаете каждый раз при выходе из скоупа проверять, бу... большой текст свёрнут, показать | |
|
8.289, Аноним (155), 13:07, 28/07/2024 [^] [^^] [^^^] [ответить] | –1 +/– | Нет, они только для того чтобы компилятор сам расставил free где нужно статиче... текст свёрнут, показать | |
|
|
|
11.304, Аноним (233), 18:03, 28/07/2024 [^] [^^] [^^^] [ответить] | +1 +/– | Это единственный вариант, который пропустит Rust в данном случае, если учитывать... большой текст свёрнут, показать | |
|
|
|
|
|
|
|
|
|
2.54, Аноним (53), 00:13, 27/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Компилятор диктует что ты должен делать и как ты должен это делать. В Ruste нельзя стукнуть кулаком по столу и приказать "Делай как я тебе говорю и баста!". А в C++ - можно.
Тебе делать нечего что ли? Обязательно нужно на ровном месте покрасоваться "смотрите, как я умею"?
Пиши нормальный код и не выпендривайся.
| |
2.74, Аноним (75), 02:15, 27/07/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
Абсолютно верное замечание! Вместо того, чтобы ОСВОБОДИТЬ программиста от головняка с указателями, ржавокомпилер наоборот- НАВАЛИВАЕТ на программиста "вот это проверь, вот здесь укажи, вот там передай".... чего6л....?!?!? А можно я уже начну писать БИЗНЕС-ЛОГИКУ, а не делать прыжки в ширину вокруг ваших, мать их, указателей?!?!?!?!?!?!
| |
|
3.137, Аноним (66), 10:30, 27/07/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
Неделю попишешь и работа с лайфтаймами становится очевидной, в подавляющем большинстве случаев даже задумываться не приходится. Или можно писать на C, там нету головняка с указателями. По крайней мере на момент компиляции).
| |
3.149, Аноним (-), 11:58, 27/07/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
Угумс, вот так навалил целую кучу бузинесс логики, остатки размазал по окружающему коду.
Где-то залепил кастами void*.
И вроде все ок, даже не сильно пованивает, особенно если не принюхиваться.
Но ведь потом попрут баги.
Будут бессонные ночи "откуда взялся это сигабтр?!"
А потом, не дай боже, найдутся уязвимости, типичные для дыряшки (если на ней писалось).
CVEшки получения рута и тд.
В общем если тебе писать прототип - то питон и прочие ЯП.
А если писать надежный код - то лучше получить подсказки от компилятора.
| |
|
2.84, Аноним (-), 03:03, 27/07/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
> В Ruste нельзя стукнуть кулаком по столу и приказать "Делай как я тебе говорю и баста!".
Да ладно тебе врать-то. В расте есть unsafe, это как раз тот самый кулак по столу.
| |
2.112, Ф1 (?), 08:41, 27/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
>В Ruste нельзя стукнуть кулаком по столу и приказать "Делай как я тебе говорю и баста!"
Можно:
fn main () {
unsafe{
// ....
}
}
| |
2.225, S22 (?), 19:30, 27/07/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
Покорная жена которая изменяет на право и налево или строптивая, но верная?
| |
2.394, Аноним (383), 22:50, 29/07/2024 [^] [^^] [^^^] [ответить] | +1 +/– | А мне всегда казалось что программисты должны быть компетентны и не делать ошибо... большой текст свёрнут, показать | |
2.413, anonimous (?), 09:52, 30/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
Один гениальный погромист любил делить на ноль. Перепробовал множество языков и компиляторов к ним. Даже на разных аппаратных платформах пробовал. И потом осознал, что это мировой заговор, плюнул на кодинг и ушел в политику.
| |
|
|
|
|
4.49, Аноним (-), 23:34, 26/07/2024 [^] [^^] [^^^] [ответить]
| +4 +/– |
Ещё бы кобол вспомнил. Впрочем, кобол хотя бы жив в отличии от лиспа.
| |
|
5.236, Аноним (235), 21:07, 27/07/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
Нет, Кобол я бы не вспомнил, так себе язык на мой вкус. Про живость Лиспа тебе придётся с кем-то другим посмотрить, я на Лиспе в прод писал ещё каких-то два года назад, и точно знаю, что тот проект жив и развивается дальше. Как и сам Лисп в общем-то. Но поскольку стандарту Лиспа лет больше, чем большинству местных комментаторов, то не удивительно, что ситуация с ним «олды не понят, нубьё не знает».
| |
|
6.273, залуупа (?), 03:44, 28/07/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Как и сам Лисп в общем-то. Но поскольку стандарту Лиспа лет больше, чем большинству местных комментаторов
сам себе противоречишь
| |
|
7.305, Аноним (31), 18:23, 28/07/2024 [^] [^^] [^^^] [ответить]
| +2 +/– |
Где ты тут увидел противоречие? Или в голове не укладывается как можно было в девяностые написать стандарт языка так, чтобы он мог дальше развиваться без изменения стандарта?
| |
|
|
|
4.319, xPhoenix (ok), 22:27, 28/07/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
Я автор книги "GNU Emacs для технических писателей", и мне Lisp не нравится. Конфиги Emacs вообще неплохо бы в YAML перевести.
| |
|
3.57, Аноним (57), 00:33, 27/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
> А какой по твоему норм? (вопрос серьёзный без подколки)
Pascal. Ruby
| |
|
|
5.67, Аноним (-), 01:49, 27/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
> От Паскаля руки устают.
Можно подумать что ты вручную в блокноте будешь вводить каждую буковку. Более мощный аргумент можно?
| |
|
6.73, Аноним (75), 02:12, 27/07/2024 [^] [^^] [^^^] [ответить]
| +2 +/– |
Можно. ГЛАЗА. Их ты точно никак не ускоришь. Очевидно, что распознать для глаза "begin" СТОКРАТ сложнее, чем "{". Собственно, потому паскакаль таки погряз в своих "научных недрах", а ЛЮБОЙ си-подобный язык взлетел. Даже Руби или, простихоспади, жабоскрипт.
| |
|
7.85, Мимо крокодил (-), 03:11, 27/07/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
> ГЛАЗА
Глаза, как и мозг (если есть), воспринимают гораздо лучше связанные буквы, которые представляют собой слова, а не крючки и закорючки. Сразу можно понять, какой язык создан для долгосрочных проектов, а какой ради потешить ЧСВ.
| |
|
8.93, Аноним (89), 05:29, 27/07/2024 [^] [^^] [^^^] [ответить] | +1 +/– | комментар Глазам хочется цепляться за КВЧ ВАЖНОЕ КВЧ зпт а не отвлекаться на миш... текст свёрнут, показать | |
8.398, Аноним (383), 23:14, 29/07/2024 [^] [^^] [^^^] [ответить] | +/– | Как раз наоборот, лучше воспринимается визуальное отделение блоков, чем слова, с... текст свёрнут, показать | |
|
9.416, Аноним (416), 10:18, 30/07/2024 [^] [^^] [^^^] [ответить] | +/– | Просто Pascal уже не в моде а то что Pascal не используется ни в одном серьёзном... текст свёрнут, показать | |
|
|
7.90, Аноним (90), 04:37, 27/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Очевидно, что распознать для глаза "begin" СТОКРАТ сложнее, чем "{".
Не очевидно вовсе. Начнём с того, как ты определяешь "сложнее"? Энергетически затратнее? Больше времени занимает? Или что?
Если же отвлечься от этого, то в текстовом редакторе begin выделен цветом ключевых слов, и с учётом контекста не надо даже буквы читать, чтобы понимать что это begin. Ты можешь сам попробовать отрендерить текст программы, замылить рендер до неразличимости отдельных букв, и посмотреть.
| |
7.124, Ю.Т. (?), 09:32, 27/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Можно. ГЛАЗА. Их ты точно никак не ускоришь. Очевидно, что распознать для
> глаза "begin" СТОКРАТ сложнее, чем "{".
Неверное понимание. Мозг в известном ему контексте не воспринимает информацию вот так, по буковке, а кусками, т.е. здесь - ключевыми словами формального языка. Если на то пошло, то begin/end как ограничитель ловится именно легче, с меньшей трудозатратой глаз+мозг, чем фигурные скобки, которые близки по очертаниям к квадратным и простым скобкам.
Компактность собственно кода - да, ухудшена.
| |
7.322, Bottle (?), 22:58, 28/07/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
Ух, какая же боль для анонима - читать буковы!
Переходи на китайские иероглифы в программировании, вообще идеал.
| |
7.415, Аноним (416), 10:16, 30/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
Идиотский аргумент. А как же тогда названия функцый, переменных и всего остального что длиннее одного символа?
| |
|
|
|
4.399, Аноним (383), 23:16, 29/07/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
А напомни-ка, у вас там в паскакале лямбды завезли? Как ты напишешь лямбду складывающую число-аргумент с числом из лексически захваченной по ссылке переменной и передашь её в map()?
| |
|
3.103, Я (??), 07:11, 27/07/2024 [^] [^^] [^^^] [ответить]
| +2 +/– |
В универе, в начале 90-х, нам Паскаль преподавали и немножко ассемблер. Потом, уже работая, ковырял Делфи и С++. В начале 2000-х появился С#. Вот это действительно классная вещь. Насчёт серьезности языка - это что?
| |
|
4.350, Соль земли (?), 10:15, 29/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
Всякую шляпу преподавали. Дельфи, прибитый гвоздями к IDE. C# с кучей версий дотнет и теми же трудностями, как у Java.
| |
|
|
|
5.411, Ф1 (?), 08:51, 30/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
>Это язык с GC.
В последних версиях уже GC опционально, по умолчанию идет автоматическое управления памятью с помощью счетчика ссылок (ARC) плюс разруливитель циклов, аналогично питону или Swift.
Вообще очень интересный язык, жаль что не раскрутился.
| |
|
|
5.412, Ф1 (?), 08:54, 30/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Так в nim 1:1 синтаксис раста.
Угу а в питон 1:1 синтаксис C++.
| |
|
|
|
|
|
4.218, Аноним (217), 16:40, 27/07/2024 [^] [^^] [^^^] [ответить]
| –2 +/– |
Гуманитариев хлебом не корми - дай за синтаксис потрындеть. Открой любой курс по CS - там вообще такие вещи как синтаксис не разбираются. Разбирают и критикуют семантические свойства. А синтаксис это бирюльки, если очень хочется на нормальном языке ничего не стоит DSL написать.
| |
|
5.244, Аноним (244), 22:29, 27/07/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
>А синтаксис это бирюльки
Как быстро все забыли Вирта, он же только в этом году ушёл. Дегенерация во всей свой красе.
| |
5.417, Аноним (416), 10:22, 30/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
А программы писать предлагается с помощью семантических свойств или всё таки с помощью этих амых бирюлек?
| |
|
|
|
|
1.65, Аноним (65), 01:07, 27/07/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
От фрагментов исходного кода Perl-ом запахло. Я не берусь судить, хорошо это или плохо, потому что мне все равно.
| |
1.69, Мимо крокодил (-), 01:55, 27/07/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +6 +/– |
Почему в этом языке так активно используются всякого рода скобочки и прочие закорючки? Они лишь ухудшают читабельность. Или это тонкий намёк, что в будущем любой код будет write only?
Хороший пример читаемого синтаксиса у COBOL и Ada. Java тоже норм, но уже на грани.
| |
|
2.92, Прохожий (??), 05:28, 27/07/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
Наверное, по той же причине, что и в математике. Краткость - сестра таланта.
| |
|
3.98, Аноним (89), 05:48, 27/07/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Наверное, по той же причине, что и в математике. Краткость - сестра
> таланта.
В математике нет такого понятия, как простота поддержки (maintainability). Математикам можно побыть страшно далёкими от народа. Они даже языки с динамической типизацией зовут нетипизированными, потому что в голове одни лямбды.
Rust можно покритиковать за закорючечность, потому что в нём на самом деле есть визуально избыточные закорючки для упрощения парсинга (turbofish, например).
| |
|
4.99, Прохожий (??), 05:59, 27/07/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
>В математике нет такого понятия, как простота поддержки (maintainability).
В математике есть такое понятие, как интуитивное понимание.
В чем проблема с чтением кода на Rust, если ты понимаешь концепции, семантику языка? Да, они сложнее, чем в Си. Но при этом проще, чем в Плюсах. Но на Плюсы народ почему-то не жалуется.
>Они даже языки с динамической типизацией зовут нетипизированными
Причём здесь математики? И нет, таким никто не занимается, если мы говорим о грамотных специалистах, потому что динамическую типизацию нельзя приравнять её отсутствию.
>в нём на самом деле есть визуально избыточные закорючки
Но также есть синтаксический сахар.
| |
|
5.104, Аноним (89), 07:49, 27/07/2024 [^] [^^] [^^^] [ответить] | +/– | Для них это одно и то же, что для меня тоже стало открытием на днях Пройдись по... большой текст свёрнут, показать | |
|
6.114, Ф1 (?), 08:49, 27/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
>Если в двух словах, то сишнику не понравится, что у Rust горбы OCaml'овские торчат.
OCaml со всеми своими горбами гораздо читабельнее чем си.
| |
|
7.234, Аноним (234), 20:54, 27/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
Да в смысле? Даже сравнивать сишную императивную лапшу с окамловской строгостью нельзя. А ещё больше мне Clean нравится, такой простоты и четкой сухости никакой имеративщине никогда не добиться.
| |
|
6.160, Прохожий (??), 13:35, 27/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
>Пройдись по гуглокнигам или scholar'у, там такое часто встречается
Я бы обходил стороной такие книги, потому что авторы сами до конца не понимают, о чем пишут.
| |
|
7.201, Аноним (89), 15:02, 27/07/2024 [^] [^^] [^^^] [ответить] | +/– | Кто авторитетнее - профессор или Прохожий Benjamin C Pierce в Types and Progr... большой текст свёрнут, показать | |
|
|
9.276, Аноним (89), 05:25, 28/07/2024 [^] [^^] [^^^] [ответить] | +/– | У него английским по белому здесь по зелёному написано, что это не типы Потом... большой текст свёрнут, показать | |
|
|
11.433, Аноним (89), 05:39, 31/07/2024 [^] [^^] [^^^] [ответить] | +/– | Я понял - есть две точки зрения, твоя и неправильная Кто за неправильную, тот в... большой текст свёрнут, показать | |
|
|
|
|
|
|
5.216, Аноним (-), 16:18, 27/07/2024 [^] [^^] [^^^] [ответить] | +/– | В CS есть такая вещь как теория типов, через её использование можно выйти на док... большой текст свёрнут, показать | |
|
6.231, Аноним (89), 20:30, 27/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Таким образом пара понятий типизированный/нетипизированный становится практически бессмысленной
Не бессмысленнее, чем "язык высокого уровня == язык выше ассемблера", такое разбиение на низкий*/высокий уровень до сих пор живёт.
* машинные коды + asm
| |
|
5.471, wyry (-), 04:47, 03/08/2024 [^] [^^] [^^^] [ответить]
| +/– |
>В математике есть такое понятие, как интуитивное понимание.
И к Rust это не имеет абсолютно никакого отношения.
Вот для примера: язык Haskell или ML (oCaml, F#) любой профессиональный математик поймёт вообще из коробки 80-90% кода (то есть не открывая доков), потому что там прекрасно спроектированный синтаксис (при этом людям, у которых проблемы с математикой будут тупить даже прочитав доки). Открывая код на Rust вы вообще ничего в нём не поймёте независимо от вашей подготовки, в нём минимум интуитивной логики и много базовых правил прямо со старта. А концепция "ручного" времени жизни в виде ' - это вообще уродство и такого не должно быть в языке.
| |
|
|
|
2.290, Аноним (290), 13:30, 28/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
Потому что язык должен быть новым не столько внутри сколько снаружи. А вдруг он снаружи будет похож на какой нить Си или Java? Парни с кольцом в носу, ну или там с тунелем в ухе, и бутылочкой смузи, скажут фу какая гадость и пойдут программировать на другом языке.
| |
|
|
2.158, Прохожий (??), 13:29, 27/07/2024 [^] [^^] [^^^] [ответить]
| –2 +/– |
Называть автора статьи глупым язык не поворачивается. Поэтому скажу, что этот человек просто не озаботился вначале о том, чтобы прояснить для себя одну очевидную вещь: дополнительная безопасность - это всегда дополнительные расходы. И тут уж ты для себя решаешь, стоит ли их нести. Авторы языка Rust об этом знали. Именно по этой причине в языке есть слово unsafe.
| |
|
1.119, Аноним (15), 09:13, 27/07/2024 [ответить] [﹢﹢﹢] [ · · · ]
| –4 +/– |
Язык создан исходя из неверного утверждения что якобы он добавляет безопасности, но мы много раз убеждались что это не так. Это просто цирк безопасности.
| |
|
2.132, Анониим (?), 09:55, 27/07/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
Неправда, чем больше безопасности - тем лучше! Rust - это как замок на двери в вашей квартире!
| |
|
3.165, Аноним (101), 14:04, 27/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
Из-за некомпетентного руководства корпорации все так же подвержены хайповым трендам. Гугловцы постоянно принимают глупые решения. Например внедрение нейронок, которые генерируют бредовые ответы на главной при поиске. Или вот гугл стадия...
| |
|
4.169, Прохожий (??), 14:11, 27/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
>Из-за некомпетентного руководства корпорации
Такого некомпетентного, что корпорация мировой лидер на рынке софтостроения? Интересная у тебя логика.
>подвержены хайповым трендам
Если бы смог осилить простой текст на английском в их блоге, то понял бы, что речь не о хайпе, а об уменьшении количества типовых ошибок и об увеличении производительности труда. Но ты, очевидно, не смог.
| |
|
5.323, Bottle (?), 23:00, 28/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
Олигополии - весьма устойчивы, и за счёт сверхприбылей, распилов и откатов могут себе позволить заниматься чушью.
Вроде бы взрослый, а таких простых вещей не понимаешь.
| |
|
6.375, Прохожий (??), 18:04, 29/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
Сначала добейся. Стань этой самой олигополией. А то, видишь ли, желающих много, а получается на практике у единиц. Вроде бы взрослый, а таких простых вещей не понимает.
| |
6.376, Прохожий (??), 18:27, 29/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
Предыдущее сообщение было про руководство Гугла.
Это будет про применение Rust в ОС Android. В их блоге была заметка о том, что после того, как они перешли на использование Rust, количество ошибок с памятью сократилось, а продуктивность программистов выросла. Теперь предлагаю тебе подумать, каким образом относится твоё заявление про чушь, которой якобы занимаются в Гугле (потому что они же могут ею заниматься), к реальности?
| |
|
5.419, Аноним (416), 10:30, 30/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
Google мировой лидер по части рекламы и слежки в WWW что обеспечивает им кучу денег. Занимая такое положение они там могут заниматься абсолютной хероборой.
| |
5.473, wyry (-), 05:03, 03/08/2024 [^] [^^] [^^^] [ответить]
| +/– |
Тогда почему у Google поиск по картинкам хуже, чем у Яндекса? (это не шутка). Лидеры такие лидеры. Сервисы Google - это треш. Более того, Google может закрыть доступ к вашим же данным (которые правда юридически уже НЕ ваши) в самый неподходящий для вас момент, если у вас сменился IP и аккаунт не привязан по номеру телефона. Всё, вы утратили доступ. Зато "безопасно". При этом Google уже за руку поймали на слежке и это фактически их реальный доход. При этом Google покупает компании и прихлопывает их деятельность в 90% случаев. Лидер на рынке софтостроения...
| |
|
|
3.291, Аноним (290), 13:32, 28/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
Это те что уже изобрели прогрессивный Dart, да на них стоит ровняться.
| |
|
|
1.127, Ю.Т. (?), 09:40, 27/07/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
> Опубликован релиз языка программирования общего назначения Rust 1.80, основанного проектом
> Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации
> Rust Foundation.
Вот в целом если, то ни по замыслу, ни по синтаксису данный ЯП вот такой уж новацией не является.
А смысл его бытия косвенно указывается тем, кто его владельцы и толкачи (как и в любом другом техническом решении/проекте/итд)
| |
|
2.166, Прохожий (??), 14:07, 27/07/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
>такой уж новацией не является
Если рассматривать каждую фичу по отдельности, то так и есть. Но ведь в Rust их все объединили под одной крышей. И это само по себе уже очень даже весомое преимущество.
| |
|
3.354, anonymmmeer (?), 12:56, 29/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
А надо было делать язык, где можно добавлять разных формальных проверок, а можно этого и не делать.
frama-c добавить в c но не как комментарии, чтобы компилятор поддерживал.
что-то типа dafny сделать, но более удобный
А не так, взять 2.5 штуки из формальной верификации и прибить это всё гвоздями.
| |
|
|
1.133, Колян95 (?), 10:09, 27/07/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +2 +/– |
Задумка языка хороша, но реализация в плане синтаксиса для меня диковата. В коде множество спецсимволов из-за этого мне проще читать код c++.
| |
|
2.139, Аноним (139), 10:31, 27/07/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
Дело чисто привычки. Будешь работать с ним, это не будет проблемой.
| |
2.324, Bottle (?), 23:03, 28/07/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
Тебе шашечки или ехать?
Шаблоны в C++ - вообще эзотерика для неподготовленного человека, но тем не менее, их пишут, с расчётом на то, что компилятор всё посчитает на этапе компиляции программы, и итоговая программа будет работать быстрее.
Дело в том, что на фоне решаемых задач синтаксис - лишь флёр для новичков.
| |
2.404, Аноним (383), 23:46, 29/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
В rust синтаксис сильно проще плюсов и меньше перегружен спецсимволами. К чему именно претензии?
| |
|
1.168, Boboms (ok), 14:09, 27/07/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Что за убогий синтаксис у раста? У автора что тремор был когда на двоеточие жал? А в println зачем восклицательный знак? Что за хрень?
| |
|
2.173, Прохожий (??), 14:18, 27/07/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
println! - это макрос. Ты бы хоть немного почитал доку, прежде чем высказывать своё "ценное мнение", а?
| |
|
3.174, Boboms (ok), 14:20, 27/07/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
> println! - это макрос. Ты бы хоть немного почитал доку, прежде чем
> высказывать своё "ценное мнение", а?
Что за хрень? Что, в расте нет функции printf(ln)?
| |
|
4.177, Прохожий (??), 14:22, 27/07/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
Нет там такой функции. Зато есть макрос. Что конкретно тебя смущает? Или ты макрос в глаза в первый раз в жизни видишь?
| |
|
5.179, Boboms (ok), 14:23, 27/07/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Нет там такой функции. Зато есть макрос. Что конкретно тебя смущает? Или
> ты макрос в глаза в первый раз в жизни видишь?
Что за язык такой, если нет printf?
| |
|
6.181, Прохожий (??), 14:26, 27/07/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
А зачем, если если макрос, который делает то же самое плюс ещё некоторые фичи там есть?
| |
|
7.183, Boboms (ok), 14:27, 27/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
Правильно, зачем printf? Лучше двоеточий побольше захреначить, сразу улучшится управление памятью...
| |
|
6.184, Прохожий (??), 14:28, 27/07/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
Да и функция эта - она не относится к языку. Или этого ты тоже не знаешь?
| |
|
|
|
|
|
|
|
13.435, Аноним (435), 11:25, 31/07/2024 [^] [^^] [^^^] [ответить] | +/– | Хм, а разве он не прав Ядро же писалось на ГНУтых расширениях, которые в тот мо... большой текст свёрнут, показать | |
|
|
15.474, n00by (ok), 10:17, 03/08/2024 [^] [^^] [^^^] [ответить] | +/– | gt оверквотинг удален Что бы ты мог воспользоваться индукцией, тебе следует на... большой текст свёрнут, показать | |
|
16.479, Аноним (89), 23:40, 03/08/2024 [^] [^^] [^^^] [ответить] | +/– | Ну ты шутник, какая разница, где стандарт нарушать Вот клиентский код на Rust н... большой текст свёрнут, показать | |
|
|
|
|
22.485, Аноним (89), 11:12, 06/08/2024 [^] [^^] [^^^] [ответить] | +/– | А если всё-таки превозмочь и не надувать щёки Если нарушить в программе, то буд... большой текст свёрнут, показать | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6.364, morphe (?), 16:40, 29/07/2024 [^] [^^] [^^^] [ответить]
| +2 +/– |
Потому что printf и прочие при каждом вызове заново интерпретируют строку форматирования, что медленно и зачем
Макрос println! в Rust парсит шаблон один раз на этапе компиляции, сразу выдаёт ошибки в синтаксисе если они есть, и генерирует оптимальный код
Зачем делать хуже, если можно сделать лучше?
| |
|
7.423, n00by (ok), 12:15, 30/07/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Потому что printf и прочие при каждом вызове заново интерпретируют строку форматирования,
> что медленно
На самом деле GCC разбирает большинство вариантов использования на этапе трансляции, заменяя на puts (или даже write, но не суть) и т.п.
| |
|
|
|
|
11.475, n00by (ok), 12:17, 03/08/2024 [^] [^^] [^^^] [ответить] | –2 +/– | Не стоит приписывать мне ложные заявления Цитирую себя, 423 GCC разбирает бо... большой текст свёрнут, показать | |
|
|
|
|
|
|
|
|
3.224, Анони (?), 18:57, 27/07/2024 [^] [^^] [^^^] [ответить]
| –3 +/– |
в Си макросы как-то без восклицательных знаков справляются. Может для каждой синтаксической конструкции по спец символу дописивать?
| |
|
4.227, Аноним (45), 19:44, 27/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
> в Си макросы как-то без восклицательных знаков справляются.
Вот смотришь ты на код на сишки, и можешь сразу ответить "это макрос или нет?"
А "спец символ" сразу позволяет это понять в расте.
| |
|
5.230, Анони (?), 20:27, 27/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
Да, традиционно они пишутся капсом. В противном случае есть LSP.
| |
|
6.232, Facemaker (?), 20:35, 27/07/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
>традиционно они пишутся капсом
То есть оставлена возможность совершения ошибки на ровном месте (вспомнить знаменитые C-макросы min и max). А в Rust нет такой возможности, что прекрасно. Не вижу проблемы в восклицательном знаке; можно произносить "про себя" println! как "принтлн-макро".
| |
|
7.281, Аноним (281), 10:13, 28/07/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
> А в Rust нет такой возможности, что прекрасно
Вам лишь бы запретить
| |
|
6.258, Аноним (-), 23:19, 27/07/2024 [^] [^^] [^^^] [ответить]
| +3 +/– |
> Да, традиционно они пишутся капсом.
"Просто офигенное решение, если я правильно понял. Надёжное, как швейцарские часы!"
А как отличить константу от макроса без параметров?
А если в конкретном проекте нетрадиционные традиции?
| |
|
|
4.261, Аноним (31), 23:43, 27/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
> в Си макросы
… такое убожество, что непонятно, почему они вообще макросами называются.
| |
|
|
2.332, Наноним (?), 01:54, 29/07/2024 [^] [^^] [^^^] [ответить]
| +3 +/– |
Да нормальный синтаксис, что тебе не нравится?
'''
unsafe {
fn main() {
std::::::input::::::output::::::stdout::::::<&'static mut dyn impl Box<StdOut>>!!!!!("helo world")??.unwrap()?.unwrap()???.unwrap()?;
}
}
'''
| |
|
3.357, Boboms (ok), 13:17, 29/07/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Да нормальный синтаксис, что тебе не нравится?
> '''
> unsafe {
> fn main() {
> std::::::input::::::output::::::stdout::::::<&'static mut dyn impl Box<StdOut>>!!!!!("helo
> world")??.unwrap()?.unwrap()???.unwrap()?;
> }
> }
> '''
Ахаха... Спасибо большое, поднял настроение!!!
| |
3.360, Тов. Майор (-), 15:08, 29/07/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
Ну, умственно отсталые шуточки это всегда популярно.
Ты не думал заняться стендапом?
Но синтаксис раста осиливают даже гошники, а вот сишники нет.
Это печально, но закономерно.
| |
|
4.395, Boboms (ok), 23:00, 29/07/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
Ты сначала ник свой подправь, "гений" долбаный, потом уже про юмор будешь разглагольствовать...
| |
|
|
|
1.203, Аноним (203), 15:07, 27/07/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +2 +/– |
Помнится пытался носую mesa сеобрать для дебиан, Одна из реализаций написана на rust в и требует либу поновей а та стебует компилятор раста новый, он в свою очередь требует пересобрать пол системы... С плюсамы такой хрени почему-то не случается LLvm 10 летней свежести прекрасно справляется, но растоманам надо все новое... и пофиг тчо его еще нет в дистрибутивах нормальных.
| |
|
2.242, Прохожий (??), 22:20, 27/07/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
> С плюсамы такой хрени почему-то не случается
Может потому, что, во-первых, новые версии для Плюсов выходят раз в несколько лет. А во-вторых, потому, что далеко не все компиляторы Плюсов сразу могут поддерживать новые стандарты?
В Rust же версии выходят раз в полтора месяца (примерно, точный период не помню). И там с компилятором проблем, подобных Плюсам, нет.
| |
|
3.252, Аноним (252), 22:59, 27/07/2024 [^] [^^] [^^^] [ответить]
| –2 +/– |
Может потому на расте так и не написали ничего путного, ибо нельзя что-то серьезное поддерживать с таким подходом...
| |
|
4.257, Прохожий (??), 23:17, 27/07/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
Дай определение слову "путное" для начала, чтобы продолжать с тобой дискуссию.
А так, примером продуктов на Rust - предостаточно уже. Это тебе и Дискорд, и Дропбокс, и часть ОС Android, и прокси Клаудфлэр, и утилитки, подобные ripgrep.
| |
|
5.260, Аноним (252), 23:29, 27/07/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
о да... наверное самая самая важная часть андройда? или как обычно - давайте впендюрим запасное колесо на расте - вроде ехать не мешает и растоманы довольны...
| |
|
6.263, Аноним (-), 00:04, 28/07/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
> о да... наверное самая самая важная часть андройда?
Сложно сказать какая часть ОСи самая важная.
Но те, про которые речь, имеют повышенные требования к надежности.
Это напр. 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/
Это для тебя запасное колесо? Или как?
| |
6.365, Прохожий (??), 17:12, 29/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
То есть, по поводу остальных перечисленных продуктов (кроме Андроида) у тебя вопросов нет? Вот и отлично.
| |
|
7.410, Аноним (252), 08:39, 30/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
Есть :)
Но ведь также как с ведройдом сольетесь... не интересно...
| |
|
|
|
|
3.470, wyry (-), 04:36, 03/08/2024 [^] [^^] [^^^] [ответить]
| +/– |
clang, gcc и msvc поддерживают, для специфических компиляторов под микрухи, вы и так не будете использовать 80% функциональности и там вам компилятор урежут до с++11 или до с++98 (ну а под Rust в особых случаях может вообще не быть компилятора, окэй?).
| |
|
|
1.211, Аноним (211), 16:00, 27/07/2024 [ответить] [﹢﹢﹢] [ · · · ]
| –4 +/– |
Каждый месяц выпускают новые вырсии, хочется спросить, а слабо сразу нормально выпустить? Ну не шлепать каждый месяц, а лет 5, а лучше все 10, работать над архитектурой и чтоб все к релизу стабильно было
| |
|
2.220, Аноним (-), 17:20, 27/07/2024 [^] [^^] [^^^] [ответить]
| –3 +/– |
Раз в 5 лет, раз в 10 лет - это для старых пердунов. Да и не модно так нынче. Если хочется прогресса, то надо выпускать новую версию каждый месяц!
| |
|
3.251, Аноним (244), 22:57, 27/07/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
А теперь давайте подумаем: если каждый месяц (а лучше каждый день) выпускать новую версию с кучей новых фич, что станет с этим языком через 5 лет? А каким он будет через 10 лет? А сколько книжных страниц будет занимать полное описание такого языка?
Учитывая, что объём памяти человека не меняется уже 20 тысяч лет, сколько времени понадобится программисту через 10 лет чтобы прочитать и освоить полное описание Rusta?
| |
|
|
5.336, ЦукаНя (?), 04:30, 29/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
Ошибка плюсов что в них слишком мало фич и некоторые недостаточно продуманы
| |
|
4.390, Facemaker (?), 22:05, 29/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
>А теперь давайте подумаем: если каждый месяц (а лучше каждый день) выпускать новую версию с кучей новых фич, что станет с этим языком через 5 лет? А каким он будет через 10 лет? А сколько книжных страниц будет занимать полное описание такого языка?
Мне кажется, ты не совсем понимаешь, как развивается Rust. Концептуально новых фич (вроде async или появившихся не так давно GAT) добавляется совсем немного. Даже соседние редакции (2018 -> 2021) не означают революции, так что программист переходит с одной на другую почти без усилий. Тот список изменений, который публикуется с каждой новой версией, как правило, представляет расширение действия уже имеющихся фич, багфиксы и т.п. Это, на мой взгляд, означает, что язык получился весьма удачным.
| |
4.408, Аноним (383), 00:12, 30/07/2024 [^] [^^] [^^^] [ответить] | +1 +/– | Ты наверное никогда не программировал и не знаешь что во-первых, не обязательно ... большой текст свёрнут, показать | |
|
|
2.222, Facemaker (?), 18:26, 27/07/2024 [^] [^^] [^^^] [ответить]
| +3 +/– |
>слабо сразу нормально выпустить?
Что за идиотская претензия? Любой программист знает, что лучше всего разрабатывать систему эволюционно, небольшими контролируемыми изменениями.
| |
|
3.228, Аноним (234), 19:56, 27/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
Раст критикуют в основном не программисты, люди не из отрасли. Поэтому и претензии идиотские - нумерация версий, синтаксис и тп
| |
|
4.249, Аноним (252), 22:53, 27/07/2024 [^] [^^] [^^^] [ответить]
| +2 +/– |
внезапно... в следующий раз когда ты придешь в кафешку и тебя принесут какую-нибудь хрень - не смей критиковать блюдо - ты же не повар и не из представителей общепита!
| |
|
5.265, Аноним (-), 00:13, 28/07/2024 [^] [^^] [^^^] [ответить] | +/– | Вообще мимо Ты собираешься придти в кафешку, завалиться на кухную и начать крит... большой текст свёрнут, показать | |
|
6.270, Аноним (252), 00:50, 28/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
ой...
это вроде не специализированный растовский ресурс для фанбоев, почему же здесь я не имеею полного права обсуждать раст по твоему мнению?
| |
|
|
|
|
|
3.250, Аноним (252), 22:56, 27/07/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Потому что разработчики находятся на терра инкогнита
ну да... это же первый язык пограммирования в мире... до этого не было вообще ничего, они пионеры первопроходцы...
| |
|
4.256, Аноним (-), 23:10, 27/07/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
> ну да... это же первый язык...
... с попыткой расчета времен жизни на этапе компиляции.
По крайней мере, среди тех, кто вышел за пределы чьей-то дипломной работы.
И таки да, они сталкиваются с проблемами, которые никто раньше не решал.
| |
|
3.255, Аноним (244), 23:07, 27/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
Это только прикладные программы можно так разрабатывать. Дизайн языка должен быть с самого начала хорош. С языком не получится так: сделаем сначала дрянь, а потом потихонечку трансформируем её в конфету.
| |
|
4.278, Аноним (288), 09:19, 28/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
А какие у тебя примеры, как-либо подтверждающие твои слова? С питоном и додиезом же получилось, и это говорит об обратном.
| |
|
5.285, n00by (ok), 10:47, 28/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
> С питоном и додиезом же получилось, и это говорит об обратном.
Потому 10 лет с Питон 2 переписывали на Питон 3, а джависты при необходимости берутся перевести с шарпа на свой за разумное время?
| |
5.300, Аноним (300), 17:43, 28/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
Примеры? Все хорошие языки с самого начала были хорошие, а с плохим дизайном как были плохие так и остались плохие.
Python и C# - как раз пример деградации. Изначально были хороши, а потом стали слишком сложные.
| |
|
6.310, Аноним (310), 18:57, 28/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
Плохой дизайн у стандартного Пролога и стандартного Паскаля (ISO Pascal и ISO Extended Pascal). Их никто не использует.
| |
6.407, Аноним (383), 00:02, 30/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Python и C# - как раз пример деградации. Изначально были хороши, а потом стали слишком сложные.
В python новые конструкции в язык вводят раз в год от силы. Что там за последние лет 10 вообще было? async, match, f-строки, :=, positional-only args. Это всё. Даже изменения в 2->3 можно по пальцам двух рук пересчитать. Если ты не успеваешь за этим темпом, то это пример твоей дегрдации.
| |
|
|
4.367, Прохожий (??), 17:22, 29/07/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Дизайн языка должен быть с самого начала хорош
Не должен. Желательно, конечно, но всякое случается. Вот в Rust есть редакции на такие случаи. И они работают.
| |
4.393, Аноним (383), 22:42, 29/07/2024 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Дизайн языка должен быть с самого начала хорош.
Такого не бывает.
> С языком не получится так: сделаем сначала дрянь, а потом потихонечку трансформируем её в конфету.
Только так и получится, потому что какую бы конфету ты там не напроектировал, через 10 лет требования поменяются кардинально и она уже будет говном по определению. Поэтому всё что должно быть спроектировано в языке - грамотная политика поддержки и депрекаций, чтобы не тащить за собой полвека все изначально неудачные или ставшие неудачными решения, как плюсы, и не кидать всё сообщество полной потерей совместимости как питон.
| |
|
3.284, n00by (ok), 10:42, 28/07/2024 [^] [^^] [^^^] [ответить]
| –3 +/– |
Вторая "модель", совершенно внезапно - прямая противоположность waterfall - reverse engineering. Agile придумали неспособные комбинировать два основных подхода, кому важен не результат, а процесс.
| |
|
4.366, Прохожий (??), 17:19, 29/07/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
Причём здесь reverse engineering? Какое он имеет отношение к созданию нового ПО?
> Agile придумали неспособные комбинировать два основных подхода, кому важен не результат, а процесс.
Прям неспособные? Ты вот реально предвидеть на много лет вперёд? А ведь проектирование и реализация языка программирования - это многолетний проект. Я уж молчу про ПО для реального бизнеса, где обстоятельства меняются иной раз кардинально чуть ли не каждый месяц.
| |
|
5.424, n00by (ok), 12:29, 30/07/2024 [^] [^^] [^^^] [ответить] | –1 +/– | Такое же, как и инженерия в общем Проектирование бывает прямое в твоей терми... большой текст свёрнут, показать | |
|
6.425, Аноним (-), 13:13, 30/07/2024 [^] [^^] [^^^] [ответить] | +1 +/– | Т е он не добавил новых идей Мне казалось что все началось таки с идеи, а потом... большой текст свёрнут, показать | |
|
7.456, n00by (ok), 12:13, 02/08/2024 [^] [^^] [^^^] [ответить] | +/– | Попробуй заняться инженерным делом, если повезёт, поймёшь ошибки в своих рассужд... большой текст свёрнут, показать | |
|
|
9.476, n00by (ok), 12:26, 03/08/2024 [^] [^^] [^^^] [ответить] | +/– | Твой мозг уже на уровне рефлексов должен был сгенерировать мой ответ на подобный... текст свёрнут, показать | |
|
|
7.477, n00by (ok), 12:28, 03/08/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Может у тебя время на адаптацию 2 недели или месяц.
Видишь ли в чём дело. Для тебя это такой привычный манипулятивный убедительный приём, а для меня показатель - у тебя нет собственных случаев, о каких ты можешь сообщить. То есть ты не авторитет в вопросе и потому с тобой не интересно обсуждать, что там может быть у меня.
| |
|
|
|
|
|
2.403, Аноним (383), 23:44, 29/07/2024 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Каждый месяц выпускают новые вырсии, хочется спросить, а слабо сразу нормально выпустить? Ну не шлепать каждый месяц, а лет 5, а лучше все 10, работать над архитектурой и чтоб все к релизу стабильно было
Это невозможно. Тогда этот rust никогда не выпустят, а к тому моменту когда должны были выпустить, все будут уже 9 лет писать на hrust который эти 10 лет каждый месяц выпускал новые версии, гармонично развивался, обрастал сообществом, тулингом и библиотеками.
Вам лично чем-то мешает что язык развивается?
| |
|
1.301, Аноним (301), 17:44, 28/07/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
А вот интересный момент. Почему разработчики RUST решили сделать такой "новый" синтаксис, вместо того, чтобы взять тот же С++ (или С, если так нравиться) и, оставив годные части, исключить то, что было "унаследованно" из старых стандартов и реализаций языка?
Т.е. сделать формально несовместимый язык, но - легко осваиваемый программистами?
| |
|
2.303, Аноним (-), 17:57, 28/07/2024 [^] [^^] [^^^] [ответить]
| –2 +/– |
А почему разработчики RUST должны тырить чужие синтаксисы? Ей богу, ты рассуждаешь как ворюга! Их язык как хотят так и делают.
| |
2.306, Аноним (310), 18:40, 28/07/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
Для того, чтобы Rust не был похож ни на какой язык.
Это была ошибка, что Java сделали похожим на C++, из-за этого эти языки путаются в голове (у меня, по крайней мере). Пишешь на Java, а руки непроизвольно пишут на C++.
Поэтому Python такой популярный, что не похож ни на какой язык. Ничего не путается.
| |
2.384, Аноним (383), 19:51, 29/07/2024 [^] [^^] [^^^] [ответить]
| +4 +/– |
В синтаксисе раста нет НИЧЕГО что принципиально отличалось бы от плюсового синтаксиса в их общем подмножестве языковых конструкций. А все непринципиальные различия - в сторону упрощения. Как-то оператор . вместо . и ->, || вместо [](){}.
| |
|
3.463, wyry (-), 03:40, 03/08/2024 [^] [^^] [^^^] [ответить]
| +/– |
В Rust очень раздражающая тема - это время жизни. То, что C++ делает сам, пусть иногда по хитрым правилам, в Rust запросто может появиться ситуация, когда ваша программа не скомпилируется из-за того, что где-то вы забыли ' указать. Это абсолютно уродливая методология как при написании, так и чтении кода. Притом, что Rust не предлагает вообще ничего нового, а 80% функционала уже было в C++11 (умные указатели, парадигма владения ресурсами, семантика перемещения) подкрепив всё это санитайзерами и строгой компиляцией в C++11 вообще не останется пространства для ошибок (разве что допустить их специально), а от семантических ошибок не застрахован никто. При этом компилятор C++ не делает вас своим рабом.
| |
|
|
1.302, Аноним (301), 17:47, 28/07/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
Интересно, а Rust уже достиг проблемы Ada? Это когда в язык и стандартные библиотеки нахреначили столько разных фич, что никто из программистов не использует их все. И даже половину.
А значит, возникают проблемы: код одного программиста с трудом воспринимается другим программистом, т.к. они используют разный набор возможностей языка?
С моей точки зрения, современный С++ к этому пришёл где-то начиная с 14 стандарта.
А Rust похоже изначально именно так и проектировался.
| |
|
2.308, Аноним (310), 18:50, 28/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
Rust ещё не дошёл, но это вопрос времени.
Нельзя объять необъятное - учила история с PL/1. PL/1 тоже настолько разросся, что никто не знал его полностью, а в каждой программисткой компании была целая группа экспертов по PL/1: один знал эту фичу в языке, другой - другую, третий - ещё другую фичу и т.д.
Кончилось тем , что все плюнули на этот PL/1 и перешли на простой C, который один человек может выучить и помнить.
| |
|
3.313, Bottle (?), 19:35, 28/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
А затем Си и C++ разбухли до такой степени, что количество страниц в спецификации ISO либо сравнялось с PL/1, либо превзошло. И ведь ими всё ещё пользуются! И будут пользоваться ещё несколько десятилетий! Никто не перепишет Linux, GCC, Clang и кучу других продуктов с си и плюсов.
| |
|
4.328, Аноним (328), 23:23, 28/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
Смотрю на пугающе толстую книгу Страуструпа "Язык C++", как-то сразу грустно становится
| |
|
5.418, BeLord (ok), 10:25, 30/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
Книжка и книжка, привычка читать снимает страх перед объемом. Вот по работе в одной из систем описание аналитической подсистемы порядка 1500 листов и это подсистема, которая за аналитические функции отвечает, а есть еще системные, интеграции, интерфейсные и т.д. Причем в описании кода считай нет, там диаграммы, алгоритмы, пояснения. Так, что С++ весьма лаконичен.
| |
5.464, wyry (-), 03:45, 03/08/2024 [^] [^^] [^^^] [ответить]
| +/– |
Вообще не страшно. Особенно ещё и потому, что её не обязательно читать полностью, а также то, что там довольно просто объясняются принципы языка с примерами типичного использования (т.е. вы сразу поймёте как это работает и сможете безопасно применить на практике). На самом деле в C++ страшнее лезть в неизведанные земли отходя от концепций "типичного" использования некоторых инструментов (например, это касается R-value ссылок). В Rust типичная история, это когда вы берёте пример, который в одних ситуациях работает, а в других - нет. А дело вскроется, что где-то вы не учли время жизни объекта и всё пошло наперекосяк. Часто проблему можно исправить, но это начинает походить на шаманизм, когда вы выполняете действия, которые язык должен делать сам.
| |
|
4.469, wyry (-), 04:29, 03/08/2024 [^] [^^] [^^^] [ответить] | +1 +/– | Ложь про C Язык C по прежнему очень прост В С11 добавили НЕОБЯЗАТЕЛЬНУЮ поддер... большой текст свёрнут, показать | |
|
5.478, n00by (ok), 12:36, 03/08/2024 [^] [^^] [^^^] [ответить]
| +/– |
Миф "Си и C++ разбухли" я здесь старательно поддерживаю фразами вида "кто читал 2000 страниц стандарта?" Они, естественно, их не читали, а потому понимают по-своему. :)
| |
|
|
3.370, Прохожий (??), 17:37, 29/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Rust ещё не дошёл, но это вопрос времени.
Так про любой язык программирования можно сказать, который более-менее активно развивается. Почему? Потому что со временем появляются какие-то ситуации, которые предусмотреть ранее было невозможно. Или какие-то программисты захотели новых функциональных возможностей. И всё это закрывается новым синтаксисом и/или семантикой.
А потом появляется новый язык, который исправляет недостатки предыдущего. И так, похоже, будет продолжаться до тех пор, пока компьютеры не научатся сначала полноценно читать мысли людей, а потом и выполнять все их хотелки. Собственно, подвижки в эту сторону уже начались, хотя до желаемого результата пока далеко.
| |
|
2.341, Ф1 (?), 08:43, 29/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
>С моей точки зрения, современный С++ к этому пришёл где-то начиная с 14 стандарта.
C++ 98 уже вполне успешно этого достиг, были его подварианты "Си с классами", "не используем stl", "варианты завязанные на GUI фреймворки MFC, Qt, VCL (c++ builder)", "укушен Александреску" и т.п. .
| |
2.392, Аноним (383), 22:34, 29/07/2024 [^] [^^] [^^^] [ответить]
| +2 +/– |
> С моей точки зрения, современный С++ к этому пришёл где-то начиная с 14 стандарта.
>
> А Rust похоже изначально именно так и проектировался.
Такое же ощущение. Но только грустить тут не о чем, потому что это неизбежно. И у rust тут ситуация несравнимо лучше плюсов, отягощённых легаси с одной стороны, неадекватным лебедь-рак-щука комитетом с другой, и двумя декадами стаграции с третьей.
| |
|
1.329, Аноним (328), 23:36, 28/07/2024 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
Не все ещё знакомы с языком Rust (наверное), поэтому перечислю его достоинства и недостатки. Достоинств два. Первое - высокая скорость работы программ на нём. Rust - самый высокоскоростной язык высокого уровня, то есть быстрее C++, Ada, Delphi, Free pascal и т.д.
Скорость практически как у C.
Второе достоинство - надёжность. Даже у полных раздолбаев программы на Ruste, на удивление, не падают.
Недостатков тоже два. За высокую скорость и надёжность надо платить. Платить приходится неудобством разработки и ограничением области применения.
| |
|
2.331, Аноним (-), 23:50, 28/07/2024 [^] [^^] [^^^] [ответить] | –2 +/– | Хм удобство-неудобство это немного вусовщина У меня был коллега из соседней к... большой текст свёрнут, показать | |
2.333, Наноним (?), 02:05, 29/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Даже у полных раздолбаев программы на Ruste, на удивление, не падают
None.unwrap() - "не падает"? Открой любой исходный код на расте, там всё на unwrap-ах. Всё это может не падать только если где-то в main паники перехватываются, иначе время от времени будет неизбежно падать. В чём тогда эта ваша "надёжность" заключается?
| |
|
3.388, Facemaker (?), 21:43, 29/07/2024 [^] [^^] [^^^] [ответить]
| +3 +/– |
В хорошем Rust-коде не должно быть голых unwrap, вместо них expect. И только в тех случаях, когда паника — лучшая реакция на конкретное состояние (как правило — "ошибки, которые не должны происходить"). В таких случаях обычно лучше пораньше упасть, чем продолжать работу в некорректном состоянии. Надёжность — больше, чем способность программы дольше "продержаться" :-).
| |
|
4.401, Аноним (383), 23:36, 29/07/2024 [^] [^^] [^^^] [ответить]
| +3 +/– |
expect от unwrap ничем не отличается кроме наличия сообщения - разница чисто косметическая, а так это паника в любом случае. Только какие претензии могут быть к панике, когда данные невалидны? Звиняй, если 1/0 в целых числах, то это не 1, не 0, не 42, не <type>::max(), не random, не ввести значение вместо 0. Это некорректная операция, поэтому либо паника, либо возврат ошибки, поэтому либо unwrap/expect, либо ?, другого не дано. И конечно rust код будеи пестрить этими unwrap/expect и ?, потому что там каждая некорректная операция проверяется. Не может там nullptr неожиданно вернуться, или число переполниться.
| |
|
3.396, Аноним (383), 23:05, 29/07/2024 [^] [^^] [^^^] [ответить] | +4 +/– | В том что оно падает, представь себе Потому что если оно не будет падать, оно б... большой текст свёрнут, показать | |
3.426, Карлос Сношайтилис (ok), 13:53, 30/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
Если выкинуть исключение и не перехватить его - программа упадёт.
Открытие века!
Уровень экспертов достиг подвала, но экспертов не остановить...
| |
|
4.461, Наноним (?), 23:09, 02/08/2024 [^] [^^] [^^^] [ответить]
| +/– |
Так C++ и не преподносится как "safe" язык, в этом и разница. Зачем обманывать?
| |
|
5.488, ferris (?), 05:40, 07/08/2024 [^] [^^] [^^^] [ответить]
| +/– |
Если для тебя "безопасность" - означает что программа никогда не упадёт, то у меня плохие новости: безопасность в расте совсем про другое. Паника - это безопасная операция.
| |
|
6.489, n00by (ok), 10:27, 07/08/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Если для тебя "безопасность" - означает что программа никогда не упадёт, то
> у меня плохие новости: безопасность в расте совсем про другое. Паника
> - это безопасная операция.
Безопасная атака вида "отказ в обслуживании"?
| |
|
7.491, Карлос Сношайтилис (ok), 01:48, 10/08/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Безопасная атака вида "отказ в обслуживании"?
Потрясающее умение складывать слова в бессмысленные предложения.
Как, на уровне языка, ты собираешься защищаться от dos'а?
| |
|
8.494, n00by (ok), 10:55, 10/08/2024 [^] [^^] [^^^] [ответить] | +/– | Да, не могу уловить смысл Просто не выпускать компилятор для DOS WSL2 хватит в... текст свёрнут, показать | |
|
|
|
5.490, Карлос Сношайтилис (ok), 01:44, 10/08/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Так C++ и не преподносится как "safe" язык, в этом и разница.
> Зачем обманывать?
Обманывать кого? Тех кто решил, что безопасность в расте относится ко всему что можно придумать? Это личные проблемы этих фантазёров.
| |
|
|
|
2.334, Наноним (?), 02:10, 29/07/2024 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Rust - самый высокоскоростной язык высокого уровня
Особенно когда половина кода это обёртки по типу 'Rc<RefCell<_>>' или 'Arc<_>' и куча '.clone()' чтобы хоть как-то обойти чеккер и уже начать писать что-то полезное. Писать действительно оптимальный код уровня Си на расте практически невозможно, так как кучу лайфтаймов пронести через всю программу нереально.
| |
|
3.352, Соль земли (?), 10:23, 29/07/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
Когда хочется вечных переменных, то это процедурное мышление. А функциональное - получил данные, вычислил, отдал, очистил всё.
| |
3.378, Прохожий (??), 18:40, 29/07/2024 [^] [^^] [^^^] [ответить]
| +3 +/– |
> чтобы хоть как-то обойти чеккер и уже начать писать что-то полезное
Если не привык задумываться на безопасностью своего кода, поначалу будет больно, конечно. Но потом адаптируешься, и уже перестаёшь это замечать.
> Писать действительно оптимальный код уровня Си на расте практически невозможно, так как кучу лайфтаймов пронести через всю программу нереально.
Но опыт других людей показывает, что ты не прав. Взять тех же Гугловцев или программистов из Клаудфлэр. Их опыт показывает, что код получается и более быстрый, и более безопасный в итоге. Впрочем, может у тебя другое понимание "оптимальности".
| |
3.380, Fyjy (-), 18:56, 29/07/2024 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Особенно когда половина кода это обёртки по типу 'Rc<RefCell<_>>' или 'Arc<_>' и куча '.clone()' чтобы хоть как-то обойти чеккер и уже начать писать что-то полезное.
Полезное? А ты уверен что тот дырявый код, который не пропускает черкер это что-то полезное?
> Писать действительно оптимальный код уровня Си на расте практически
> невозможно, так как кучу лайфтаймов пронести через всю программу нереально.
Конечно, лучше побыстрячку наовнокодить кучу дырок и CVE, главное быстро!
| |
3.389, Аноним (383), 21:49, 29/07/2024 [^] [^^] [^^^] [ответить] | +5 +/– | Практика показывает что это отчасти правда, но имеет место только в небольших фу... большой текст свёрнут, показать | |
|
|
3.379, Карлос Сношайтилис (ok), 18:56, 29/07/2024 [^] [^^] [^^^] [ответить]
| +2 +/– |
После обкладывания кода на С кучей обёрток и проверок для устранения возможностей выстрелить в лицо, прыткость С убавляется, а сложность поддержки увеличивается.
| |
|
2.385, Аноним (383), 19:55, 29/07/2024 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Rust - самый высокоскоростной язык высокого уровня, то есть быстрее C++, Ada, Delphi, Free pascal и т.д. Скорость практически как у C.
Это бред, конечно, языки по скорости не сравнивают. Можно сравнивать компиляторы, и в рамках llvm, а это c, c++ и rust, скорость логически идентичных программ будет равна. Нет в C ничего, что магически ускоряло бы код.
| |
|
3.387, Facemaker (?), 21:30, 29/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
>Нет в C ничего, что магически ускоряло бы код
Читал в разных популярных статьях, что некоторые компиляторы C и C++ действительно достигают лучшей производительности благодаря тому, что производят оптимизации на основе неопределённого поведения.
| |
|
4.391, Аноним (383), 22:27, 29/07/2024 [^] [^^] [^^^] [ответить]
| +7 +/– |
> Читал в разных популярных статьях, что некоторые компиляторы 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.
| |
|
5.429, Аноним (429), 18:03, 30/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
Мне кажется, если вы напишете книжку про тонкости программирования на Rust, то будет хороший спрос на неё. Если надо проспонсировать написание, то этот вопрос, в принципе, решаемый.
| |
5.431, Аноним (-), 19:20, 30/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
Было очень познавательно, спасибо!
> на прошлой неделе разбирали со студентами
А у вас нет видео лекций или статей на каких-то ресурсах?
| |
|
|
|
4.439, Аноним (383), 15:41, 31/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
>> Это бред, конечно, языки по скорости не сравнивают
> Сравнивают
Нет уж, вы меня полностью процитируйте:
>> Можно сравнивать компиляторы, и в рамках llvm, а это c, c++ и rust, скорость логически идентичных программ будет равна. Нет в C ничего, что магически ускоряло бы код.
И да, там сходу видно что сравнивают компиляторы, например llvm для rust и gcc для C. Будете спорить что если для паскаля вместо поделки FPC написать фронтэнд для llvm то он будет отличаться по скорости от C?
| |
|
|
|
1.337, Аноним (288), 07:35, 29/07/2024 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
И ни слова о том, сколько проблем и багов у пакетов с этой 1.80. Ох уж эта хвалёная растовая совместимость.
| |
|
2.386, Аноним (383), 20:02, 29/07/2024 [^] [^^] [^^^] [ответить]
| +9 +/– |
> И ни слова о том, сколько проблем и багов у пакетов с этой 1.80.
Ни одного?
> Ох уж эта хвалёная растовая совместимость.
Ну хвалёная - не хвалёная, а среди всех популярных языков она лучшая. Языки без пакетного менеджера типа C и C++ он уделывает его наличием, из чего вытекает явная возможность использовать любые явно заданные версии зависимостей. А среди языков с ПМ он единственный кто явно постулирует semver для модулей. Сам язык совместимость не ломает с первой версии. В сумме я даже не представляю как на современном уровне развития технологий обеспечить лучшую поддержку обратной совместимости. Разве что на уровне пакетного репозитория автоматически проверять совместимость API, но это пока отдалённое будущее, и всех проблем всё равно не решит, потому что проблема совместимости значительно шире чем только лишь API.
| |
|
1.414, Аноним (416), 10:11, 30/07/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Если почитать некоторых товарищей, то C++ и C чуть ли не вселенское зло и что–то настолько замороченное что доступно для понимания разве что сверхразумам а все остальные непременно не осилят и сделают не так, а между тем куча программ написано именно на этих двух языках и раньше народ как–то же справлялся.
По поводу полных раздолбаев у которых программы на Ruste, на удивление, не падают, то таких раздолбаев быть не должно и если потакать раздолбаям, то в итоге станет только хуже. Причём всем.
| |
|
2.420, Facemaker (?), 11:30, 30/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
>C++ и C — вселенское зло
Не зло, а устаревшая технология, начавшая мешать прогрессу. Остальное в цитируемом посте — беспочвенные теоретизирования.
| |
|
|
4.436, Facemaker (?), 12:35, 31/07/2024 [^] [^^] [^^^] [ответить]
| +2 +/– |
>Какому именно прогрессу и в чём именно?
Требования к надёжности и защищённости программных систем повысились с 70-х годов прошлого века. Традиционные языки разработки, такие как C и C++, недостаточно хорошо помогают программисту защититься от типовых ошибок.
>И почему устаревшая?
Язык C был создан на базе случайных, ограниченных и устаревших знаний о системах. Теория выработала с тех пор много идей, которые могут быть реализованы в более совершенных языках. C++ попытался применить некоторые оказавшиеся неудачными идеи: тотальный ООП и исключения и заодно показал на практике, что сохранение обратной совместимости с C обходится слишком дорого.
| |
|
5.440, Аноним (383), 15:56, 31/07/2024 [^] [^^] [^^^] [ответить] | +/– | В плюсах нет тотольного ООП Тотальный ООП в жаве, а в плюсах он как раз вообще ... большой текст свёрнут, показать | |
|
6.450, freecoder (ok), 10:22, 01/08/2024 [^] [^^] [^^^] [ответить]
| +/– |
? работает в замыканиях, как и return.
Про Result в прикладном коде вы чушь написали. Сразу видно, что на Rust не программировали: "никто никогда не будет в прикладном коде (например, cli утилите) городить Result'ы" - сплошь и рядом, практически всегда в прикладном коде используется Result.
| |
|
7.451, Аноним (451), 12:20, 01/08/2024 [^] [^^] [^^^] [ответить]
| +/– |
> ? работает в замыканиях, как и return.
Нет, не работает, потому что введение резалта в лямбду меняет её сигнатуру, а сигнатура фиксирована, потому что это вызов map или какого-нибудь fold.
| |
|
|
|
|
|
2.441, Аноним (383), 16:05, 31/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
> а между тем куча программ написано именно на этих двух языках и раньше народ как–то же справлялся.
Ну кучу лет дровами грелись и на лошадях грузы перевозили, скажите умно ли было при появлении автомобилей и центрального отопления спорить с тем что пора от дров и лошадей отказываться?
Нет, C и C++ не заморочены и на них вполне можно писать. Но зачем, если есть инструмент на голову выше? А вселенское зло это те кто в этих условиях продолжает увеличивать легаси кодбазу на C/C++.
| |
|
3.442, Аноним (-), 16:24, 31/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Нет, C и C++ не заморочены и на них вполне можно писать.
Совершенно не согласен.
Начиная от толстенного талмуда бесполезного "типа стандарта" в котором куча UB и IB.
Заканчивая компиляторами в которых сделано как захотелось левой пятке, и которые тот самый "стандарт" полностью не реализуют.
| |
|
4.443, Джог (?), 18:18, 31/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
Да просто не нужно мудрствовать и писать наворочено..
Пиши просто, понятный другим код, инициализируй переменные и объекты, не используй самый последний стандарт, используй анализаторы кода и все будет тип-топ, уже много раз проверено!
И не будет нужен RUST, для которого даже UI внятного еще не написали..
| |
|
5.444, Аноним (-), 19:08, 31/07/2024 [^] [^^] [^^^] [ответить] | +/– | Просто делайте хорошо и не делайте плохо Зачем вы пишете код с багами, надо пис... большой текст свёрнут, показать | |
|
6.446, Джог (?), 21:09, 31/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
Да я C++ имел ввиду, современный. И без ковыряния говна мамонта.
Так-то да, конечно.
| |
|
7.448, Аноним (-), 23:44, 31/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Да я C++ имел ввиду, современный. И без ковыряния говна мамонта.
> Так-то да, конечно.
Из всех проектах на с++ меня больше всего впечатлил LLVM.
Здоровая кодовая база, но при этом современный С++17, тонны тестов включая фаззинг.
Поэтому их аудит просто зависть)
opennet.ru/opennews/art.shtml?num=60707
| |
|
8.466, wyry (-), 04:02, 03/08/2024 [^] [^^] [^^^] [ответить] | +/– | То, что LLVM и GCC написаны на C , фактически уже обеспечили языку бессмертие ... текст свёрнут, показать | |
|
|
|
|
4.445, Аноним (383), 20:06, 31/07/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Начиная от толстенного талмуда бесполезного "типа стандарта" в котором куча UB и IB.
А к чему конкретно претензия?
- К наличию стандарта? Было бы лучше без него?
- К его размеру? К тому что язык подробно написан? Или ты думаешь что стандарт другого языка был тоньше?
- К наличию UB? UB позволяет делать оптимизации.
- К наличию IB? IB позволяет языку быть переносимым и при этом эффективным.
> Заканчивая компиляторами в которых сделано как захотелось левой пятке, и которые тот самый "стандарт" полностью не реализуют.
Про левую пятку это ты врёшь. А то что реализации отстают от стандарта вообще неминуемо, пока стандарт есть и над ним работает отдельная команда.
| |
|
5.447, Аноним (-), 22:24, 31/07/2024 [^] [^^] [^^^] [ответить] | +/– | Да, было бы не хуже Потому что стандарт не написали, его просто зафиксировали... большой текст свёрнут, показать | |
|
6.452, Аноним (451), 12:21, 01/08/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
Т.е. ни одну претензию ты так и не озвучил, типичный некомпетентный балабол.
| |
|
7.453, Аноним (-), 14:11, 01/08/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Т.е. ни одну претензию ты так и не озвучил, типичный некомпетентный балабол.
Дурилка, ты что читать не умеешь?
Претензии уже перечислены - "стандарт" из офна и палок.
Язык с кучей архитектурных проблем (например отвратительные enumʼы или макросы).
Куча UB которые стреляют CVEшками постоянно уже 30+ лет.
Ни и умственно отсталые пограммисты которые этим пользуются и воняют на новые инструменты.
Этого что мало)?
| |
|
|
|
|
3.465, wyry (-), 03:54, 03/08/2024 [^] [^^] [^^^] [ответить]
| +/– |
На какую голову Rust выше? В C++ ДО появления Rust появилась концепция владения, умные указатели, move семантика, при этом вам решать какую концепцию владения ресурсами использовать в вашем проекте. Из "новомодного" уже добавили корутины, фактически добавили транзакционную память (ещё нет в стандарте, но уже есть реализации). Ваш пост (этот и другой) говорит лишь о том, что вы абсолютно не разбираетесь в C++ и знаете его где-то на уровне "Си с классами". Даже не C++11, который УЖЕ делает Rust бесполезным. Сегодня на дворе 2024 и в C++ добавлено немало инструментов на все случаи жизни. На сырых указателях давно никто не пишет (разве что энтузиасты "для души" в личных проектах или высокопроизводительных системах).
| |
|
|
1.498, Дырник (?), 02:03, 15/08/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Rust 1.80? Ну это прям прорыв в мир безопасных указателей и грамотно утилизированной оперативной памяти! Значит, теперь, наконец-то, можно писать код, который не свалится в ядро на 14-й минуте работы из-за попытки разыменовать нулевой указатель. Ну и кстати, вот ты говоришь про отсутствие сборщика мусора — это вообще-то просто находка для тех, кто хочет экономить на электричестве! Не нужно гонять этот сборщик, который работает в режиме ядра через DirectX-предикаты, сжирая мегагерцы прямо с видеокарты.
Cargo — это вообще песня! Я всегда говорил, что сборка проекта через пакетный менеджер — это как залить данные в БД через аудиопорт, только тут ещё и с гарантией, что библиотеки не перекрестятся. Особенно порадовала тема с crates.io — как будто ты скачиваешь пакеты прямо через FTP-протокол в облаке, только без облака и без FTP, но с поддержкой Rust. Всё это накладывает строгие ограничения на целочисленные переполнения, которые, кстати, можно обойти.
Ну и концепция неизменяемости переменных — это вообще что-то с чем-то! Представь себе, у тебя есть ссылка, а её изменить нельзя! Это как попробовать скомпилировать JavaScript через BIOS. Но если вдруг начнутся проблемы, всегда можно пересобрать ядро компилятора в режиме совместимости с Fortran и, конечно, не забыть включить телеметрию, чтобы следить за частотой нажатий на клавишу "Enter".
| |
|