|
2.3, Урри (ok), 16:45, 19/11/2021 [^] [^^] [^^^] [ответить]
| +/– |
Сам себе отвечу - все еще нужен. Но только после того, как в него будет встроена обученная система (путём построения статистической модели имеющегося массива кода открытых проектов, опубликованных в GitHub и подобных публичных репозиториях) с парочкой новых синтаксических конструкций вроде $$&: и $$&:$.
И главное(!) не забыть что-нибудь сломать. Чтобы новым компилятором старый код больше не собирался.
| |
|
3.34, пох. (?), 19:42, 19/11/2021 [^] [^^] [^^^] [ответить]
| –1 +/– |
> И главное(!) не забыть что-нибудь улучшить!
поправил, не благодари.
P.S. разумеется, немодный неулучшенный исходник улучшенным компилятором собираться не будет. Это, в конце-концов, просто небезопастно.
| |
3.181, freecoder (ok), 22:40, 21/11/2021 [^] [^^] [^^^] [ответить]
| +/– |
Вы описали бессмысленные и несуществующие в Rust синтаксические конструкции. Что же касается сборки старых проектов: у вас есть негативный опыт? Можете его описать подробне? Не встречал ни разу сколь либо значимых проблем с обратной совместимостью в Rust. Не за то критикуете.
| |
|
2.5, Андрей (??), 16:58, 19/11/2021 [^] [^^] [^^^] [ответить]
| +/– |
ПМСМ и не нужен был, сразу со своего появления всё чем он тащил, так это рекламой, в остальном по мне код на расте ужасное нечитаемое Г, как будто раст развивают те же любители бесконтрольно пачками тащить в язык новомодные конструкции и плюшки, как в том же питоне и плюсах - как итог однородность кода падает и постоянные переключения в восприятии препятствуют накоплению устойчивого опыта в анализе кода, другими словами - лучше проще, но без крайностей.
| |
|
3.142, Прохожий (??), 23:46, 20/11/2021 [^] [^^] [^^^] [ответить]
| +1 +/– |
>по мне код на расте ужасное нечитаемое Г
Или твои когнитивные способности оставляют желать лучшего. Ну не всем в жизни с интеллектом повезло, бывает.
| |
|
2.7, Enamel (ok), 17:02, 19/11/2021 [^] [^^] [^^^] [ответить]
| +2 +/– |
В Расте гораздо больше интересностей, чем почему-то рекламирумый один лишь safe.
Сям до него далеко.
Но старый код на си никто не отменял, к сожалению.
| |
|
|
4.21, _ (??), 18:04, 19/11/2021 [^] [^^] [^^^] [ответить]
| +11 +/– |
Три дня! Три дня я гналась за вами, чтобы сказать, как вы мне безразличны!
| |
|
5.134, Аноним (134), 17:15, 20/11/2021 [^] [^^] [^^^] [ответить]
| –2 +/– |
Да нет. Написать однострочный комментарий это дело максимум одной минуты. Тем более, ответить "да мне всё равно" на чей-нибудь рассказ и гнаться за кем-то, чтобы первым завести разговор это разные вещи.
Но вот за всех говорить не есть хорошо.
| |
|
4.84, Ordu (ok), 06:04, 20/11/2021 [^] [^^] [^^^] [ответить]
| +2 +/– |
Загляни в лог модерирования, чтобы заценить насколько "всем пофиг".
| |
|
3.28, Аноним (27), 19:02, 19/11/2021 [^] [^^] [^^^] [ответить]
| –3 +/– |
проблема раст какраз в safe и unsafe
без unsafe вы не можете ничего.
А суть в чём? вы пытаетесь решить те проблемы которых в современном C++ не существует уже 100 лет в обед.
Всё уже решено без вас, но вы же что, документацию осилить не в состоянии!
smart pointers, range loop, etc, не не слышали?
| |
|
4.63, Аноним (-), 21:20, 19/11/2021 [^] [^^] [^^^] [ответить]
| +/– |
> проблема раст
> Всё уже решено без вас, но вы же что, документацию осилить не в состоянии!
> smart pointers,
А ты самокритичный. Только зачем пишешь о себе в третьем лице?
| |
4.76, adolfus (ok), 00:50, 20/11/2021 [^] [^^] [^^^] [ответить]
| +/– |
Речь идет о С. Каким боком тут С++?
Кстати, пишу на C со времен Microsoft С 6.0. Что-то ни в какой safety и прочей нубо-херне не нуждаюсь. Да, на C писать занудно, долго, напряжно и, возможно, даже опасно, если не быть паранойиком, но на С++ косяков можно наделать на порядок больше, да и сами они будут гораздо убойнее. При этом програма будет зело тормозной.
Не знаю за раст, но если там нет возможности управлять памятью, обращаясь для этого напрямую к операционке, то место его рядом с жаврой и решетками.
| |
|
5.77, Аноним (77), 01:16, 20/11/2021 [^] [^^] [^^^] [ответить]
| –2 +/– |
> Речь идет о С. Каким боком тут С++?
Ты совершенно прав. Это именно так.
Я думаю C++ сюда приплели тем-же боком каким приплели rust. Т.е. это был ответ тому вон пленному слоугному который приплёл сюда свой раст.
Тем не менее C++ гораздо ближе к C чем раст. Так таки обоим + а расту -
| |
|
4.257, Enamel (ok), 19:28, 04/12/2021 [^] [^^] [^^^] [ответить] | +/– | Нет unsafe в избранных местах и 146 unsafe -- разные вещи Ну конечно И сегфо... большой текст свёрнут, показать | |
|
|
2.82, anonymous (??), 04:21, 20/11/2021 [^] [^^] [^^^] [ответить]
| +5 +/– |
Не спору ради, а просто уточнить: вы действительно думаете что вероятностная определялка локальных AST-паттернов (на основе обучения) заменяет safety-by-design от Rust?
| |
|
3.115, Урри (ok), 14:49, 20/11/2021 [^] [^^] [^^^] [ответить]
| –2 +/– |
Нет. И мне кажется, что мой троллинг должен быть вполне очевиден любому человеку с IQ больше 50.
И еще: мне очень нравится идея safety-by-design от Rust, но очень не нравится сам Rust, который взял и навалил огромнейшую кучу гoвнa поверх жемчужины. При этом я искренне не могу понять тех, кто это гoвнeцo наворачивает с причмокиванием и хвалит.
Жду, когда ту же идею реализуют в чем то, что будет иметь изначально продуманный дизайн, который не придятся ломать каждых три месяца ввиду "ой, а вот это мы не продумали, давайте навалим парочку новых заплаток".
| |
|
4.143, Прохожий (??), 23:53, 20/11/2021 [^] [^^] [^^^] [ответить]
| +1 +/– |
Можно больше подробностей про то, где в Расте что-то ломают каждые три месяца?
Ну и про кучу Г в исполнении Раста, тоже хотелось бы понять, что вы там никак не осилите. Обычно человек ругает то, с чем не в состоянии разобраться.
| |
|
5.171, Урри (ok), 18:30, 21/11/2021 [^] [^^] [^^^] [ответить]
| –2 +/– |
> Обычно человек ругает то, с чем не в состоянии разобраться.
"Я не жирная, меня все оговаривают потому что завидуют" (с)
Обычно не надо разбираться в последних нюансах вкуса сортов говна и деталях запаха оного чтобы утверждать "это говно".
Или вы действительно считаете, что раст - это такой недостижимый рокет-саенс, самый сложный и умный язык тысячелетия, с которым не судьба разобраться практикующим уже более 20 лет программирование на различных языках, начиная с ассемблера и заканчивая хаскелем? Поэтому они и плюются, ведь им так больно, что не смогли осилить то, что осилили вы с вашим iq 75?
> тоже хотелось бы понять
Тысячу раз уже перетирали, с большими и пространными простынями. Не вижу смысла делать то же самое тысячапервый.
| |
|
6.176, Аноним (-), 20:43, 21/11/2021 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Или вы действительно считаете, что раст - это такой недостижимый рокет-саенс, самый
> сложный и умный язык тысячелетия, с которым не судьба разобраться практикующим
> уже более 20 лет программирование на различных языках, начиная с ассемблера
> и заканчивая хаскелем? Поэтому они и плюются, ведь им так больно,
> что не смогли осилить то, что осилили вы с вашим iq
> 75?
Ну вот ты - не осилил, на чем тебя пару раз и ловили. После чего ты предпочел писать поменьше конкретики, ограничивая обыкновенным словесным поносом "ни о чем".
А судя по плаванию в терминологии с той же "хвостовой рекурсией" - и хаскель ты тоже "осилил" примерно на том же уровне.
| |
|
7.180, Урри (ok), 22:07, 21/11/2021 [^] [^^] [^^^] [ответить]
| –2 +/– |
Ээээ, щито? На чем там меня ловили?
Вам, уважаемый, раст совсем мозги выел?
---
Ахахахахах, растоманы действительно считают раст самым сложным языком, недоступным другим. Спасибо, я хорошо проржался. У меня появился еще один аргумент в троллинге растофанатиков.
| |
|
|
|
|
|
2.141, Прохожий (??), 23:41, 20/11/2021 [^] [^^] [^^^] [ответить]
| –1 +/– |
Как только люди не извращаются, только бы не переходить на изначально нормальный, современный язык Rust, свободный от недостатков г-на мамонта под названием Си. Ещё больше чекеров богу чекеров. Уже до машинного обучения дошло там, где нормальный компилятор проверяет подобные ошибки легко и непринуждённо. А луддиты ликуют - им очередной костыль подарили. Инвалиды, что с них взять. Интеллектуальные инвалиды.
| |
|
1.4, Андрей (??), 16:52, 19/11/2021 [ответить] [﹢﹢﹢] [ · · · ]
| +6 +/– |
Вообще интересно, что на это скажут PVSники и находит ли их анализатор эти ошибки ?
| |
|
2.6, Старшина (?), 17:02, 19/11/2021 [^] [^^] [^^^] [ответить]
| –3 +/– |
именем чебурнета нашаго, не задавай такие наивные вопросы. кому надо, тому доложено
| |
2.8, Аноним (8), 17:02, 19/11/2021 [^] [^^] [^^^] [ответить]
| +/– |
присоединяюсь к вопросу. может быть достойных конкурент для них
| |
|
3.13, Аноним (10), 17:10, 19/11/2021 [^] [^^] [^^^] [ответить]
| +8 +/– |
PVS и раньше не был единственный производителем анализаторов кода.
| |
|
4.17, Аноним (8), 17:24, 19/11/2021 [^] [^^] [^^^] [ответить]
| +/– |
Тут, как я понимаю, принциально другой подход к поиску - с отличием от набора эвристик для поиска. таких не было
| |
|
|
2.12, Аноним (10), 17:09, 19/11/2021 [^] [^^] [^^^] [ответить]
| +4 +/– |
Да они опубликуют очередной пост на хабре. Это не компания производитель софта это компания производитель постов на хабр.
| |
2.197, Аноним (197), 13:59, 22/11/2021 [^] [^^] [^^^] [ответить]
| +1 +/– |
Можно подумать это не они тут seo себе накручивают в комментах...
| |
|
1.18, Аноним (18), 17:34, 19/11/2021 [ответить] [﹢﹢﹢] [ · · · ]
| –2 +/– |
Неужели эта поделка поможет решету стать менее дырявым? Лучше бы труЪ-сишников, у которых никогда ничего не падает, научились клонировать. Вот на опеньке сколько именных кандидатов - один 100 языков знает, другой всегда пишет без бэд-аксесов.
| |
|
2.144, Прохожий (??), 00:00, 21/11/2021 [^] [^^] [^^^] [ответить]
| –3 +/– |
>Неужели эта поделка поможет решету стать менее дырявым?
Нет, конечно. Но она поможет какое-то время верить луддитам в свою восстребованность без необходимости учить что-то более нормальное и адекватное (Rust). Мозг-то изначально интеллектом не блистал, только на Си их и хватило за всю жизнь. А к старости и усыхать начал. Обидно ведь за бортом рынка труда остаться.
| |
|
3.155, Аноним (155), 10:25, 21/11/2021 [^] [^^] [^^^] [ответить]
| +1 +/– |
Ох как только языком это раст’аманы могу. Это все что они могут - трепать языком. А теперь давай собирай свои растовые программы без libc. Если мозгов только хватает чтобы за тебя другие разработчики возились с памятью, указателями и процессором тебе бы лучше оставить профессию людям с IQ куда выше табуретки. Иди на надевай фуфайку и на завод работать, нечего делать тебе в офисе.
| |
|
4.165, DyadyushkaAU (ok), 13:08, 21/11/2021 [^] [^^] [^^^] [ответить]
| +/– |
> А теперь давай собирай свои растовые программы без libc
Ты так пишешь, как будто ты - один из авторов libc. Хорош петросянить, займись уже чем-нибудь более полезным. ;)
| |
4.166, Аноним (-), 13:11, 21/11/2021 [^] [^^] [^^^] [ответить]
| –1 +/– |
> А теперь давай собирай свои растовые программы без libc.
Какой занятно-махровый ламеризм
https://man7.org/linux/man-pages/man2/syscalls.2.html
> System calls are generally not invoked directly, but rather via
> wrapper functions in glibc (or perhaps some other library).
Хотя да, сначала можно повозмущаться использованием программамаи на rust "системного апи", а если притащат свой рантайм - "опять у них синдром НИХ!" - вин-вин, че.
| |
|
|
|
1.22, Аноним (22), 18:14, 19/11/2021 [ответить] [﹢﹢﹢] [ · · · ]
| +4 +/– |
Т.е. если большинство делает какую-либо ошибку, которая приводит к дырым, эта вундервафля заставит и остальных так поступать? Это вы хитро придумали.
| |
|
2.31, Аноним (31), 19:11, 19/11/2021 [^] [^^] [^^^] [ответить]
| +3 +/– |
Она не отыскивает ошибки, а она определяет аномалии.
И если все делают одну и ту же ошибку, то какая же это аномалия? Это уже диалект.
Поэтому надо быть готовым к ситуации, когда свободолюбивые западные программисты сочтут сообщения компилятора дискриминацией по ошибочному признаку и потребуют от производителей систем и/или железа исключить возникновение ряда распространённых ошибок (запись в NULL-поинтер, например).
Для работы в таких условиях искать надо не ошибки, а именно аномалии.
| |
|
3.132, Аноним (134), 16:51, 20/11/2021 [^] [^^] [^^^] [ответить]
| +/– |
Хватит приплетать. Сходите к врачу, не перекладывайте с больной головы на здоровые.
| |
|
|
1.23, ыы (?), 18:14, 19/11/2021 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
>В качестве примера возможностей ControlFlag разработчиками был проведён анализ исходных текстов проектов OpenSSH и cURL:
Гора родила мышь
| |
1.26, Аноним (31), 18:58, 19/11/2021 [ответить] [﹢﹢﹢] [ · · · ]
| +3 +/– |
Чтобы научить ИИ отыскивать ошибки, нужен бы большой массив кода с уже кем-то найденными ошибками, помеченными и описанными, но ещё не исправленными, разве не?
| |
|
2.169, Аноним (169), 16:41, 21/11/2021 [^] [^^] [^^^] [ответить]
| +1 +/– |
А оно ищет не ошибки, а аномалии. То есть всё, что выглядит необычно.
| |
|
1.64, Sw00p aka Jerom (?), 21:26, 19/11/2021 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
>>В cURL выявлена незамеченная статическими анализаторами ошибка при использовании элемента структуры "s->keepon", который имел числовой тип, но сравнивался с булевым значением TRUE.
это где то я уже видел :)
| |
1.68, Аноним (31), 22:54, 19/11/2021 [ответить] [﹢﹢﹢] [ · · · ]
| +2 +/– |
> В cURL выявлена незамеченная статическими анализаторами ошибка при использовании элемента структуры "s->keepon", который имел числовой тип, но сравнивался с булевым значением TRUE.
это чистой воды бюрократия.
потому что cURL написан на сях, в которых тип _Bool появился только в C99 (bool есть его define), поэтому в stdbool.h и в lib/curl_setup_once.h, значение true во всех определениях сводится к 1, а false -- к 0;
TRUE определён как define от true.
поэтому ошибкой будет только ситуация, когда смысл в поле вкладывается не булевый.
в текущей версии (7.80) данное поле определено как enum, поэтому теперь такая ситуация исключена.
| |
|
2.83, Ordu (ok), 04:31, 20/11/2021 [^] [^^] [^^^] [ответить] | –1 +/– | Почему бы алгоритму этот смысл не вычислить Ему ж это ещё проще будет, чем чело... большой текст свёрнут, показать | |
|
|
4.91, Ordu (ok), 10:51, 20/11/2021 [^] [^^] [^^^] [ответить] | –1 +/– | И что Глянь struct MyStruct int my_flag 1 int main struct My... большой текст свёрнут, показать | |
|
5.92, n00by (ok), 11:12, 20/11/2021 [^] [^^] [^^^] [ответить]
| +1 +/– |
>> по стандарту ложное значение 0, истинное не 0.
> И что?
Он забыл процитировать стандарт.
> В C bool должна быть 0 для false, и 1 для true.
Так и есть. Из N1570:
6.2.5 Types
2 An object declared as type _Bool is large enough to store the values 0 and 1.
6.3.1.2 Boolean type
1 When any scalar value is converted to _Bool, the result is 0 if the value compares equal to 0; otherwise, the result is 1.
| |
|
6.93, Sw00p aka Jerom (?), 11:42, 20/11/2021 [^] [^^] [^^^] [ответить]
| +1 +/– |
>Так и есть. Из N1570:
строгое значение, и что по вашему должен делать компилятор когда bool сравнивается с 2-ой?
зачем анализатор должен об этом говорить если компилятор должен выдавать ошибку о несоответсвии типов? Делает он это?
| |
|
7.110, n00by (ok), 14:16, 20/11/2021 [^] [^^] [^^^] [ответить]
| +/– |
>>Так и есть. Из N1570:
> строгое значение, и что по вашему должен делать компилятор когда bool сравнивается
> с 2-ой?
По-моему, меня пытаются убедить, что я должен за кого-то прочитать integer promotion rules.
> зачем анализатор должен об этом говорить если компилятор должен выдавать ошибку о
> несоответсвии типов? Делает он это?
Это он ведущему программисту Rosa Tresh должен, у которого типизация в Си строгая.
| |
|
|
9.119, n00by (ok), 14:58, 20/11/2021 [^] [^^] [^^^] [ответить] | +/– | Да мне пофик на анализатор, кто-то наврал про стандарт, это недоразумение я и ис... текст свёрнут, показать | |
|
|
|
|
|
|
|
|
|
|
|
27.225, n00by (ok), 07:14, 24/11/2021 [^] [^^] [^^^] [ответить] | +/– | Вернул выкинутое при цитировании, что бы подмена была видна Ищите в стандарте о... большой текст свёрнут, показать | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5.96, Аноним (31), 13:00, 20/11/2021 [^] [^^] [^^^] [ответить] | +/– | если ты проверяешь значение как if x , значит ты проверяешь его на не но... большой текст свёрнут, показать | |
|
6.98, Аноньимъ (ok), 13:12, 20/11/2021 [^] [^^] [^^^] [ответить]
| +1 +/– |
>сишный стандарт -- он для людей, занимающихся разработкой системного или компактного ПО.
Да вы издеваетесь?
Вы сами только что простыню накатали о такой простой и одназначной вещи как булева переменная.
Каким образом ЭТО для людей?
Отсутствие системы типов как таковой это не для людей.
И да, код с такими чудесами ниразу не переносимый и не кроссплатформенный.
| |
|
7.105, Аноним (-), 14:02, 20/11/2021 [^] [^^] [^^^] [ответить]
| +/– |
Анон все правильно говорит, ну всмысле про сравнение на неноль. дальше читать лень. Кто не понимает сей - начинает толкать ахинею про стандарты и бульёны
| |
7.127, Аноним (31), 15:46, 20/11/2021 [^] [^^] [^^^] [ответить]
| –1 +/– |
Простыня имеет отношение не к "компактным программам на C",
а к непонятливости некоторых комментаторов.
Путающих к тому же предмет рассуждения дважды в пяти строках человечьего текста.
Компилятор бы вас не понял.
> Каким образом ЭТО для людей?
Поинтересуйтесь на kernel.org.
> И да, код с такими чудесами ниразу не переносимый и не кроссплатформенный.
Не поверите, но только одной из задач C была переносимость кода первых UNIX на разные платформы, с совместимостью которых в 70-ых были большие проблемы.
Также можете поинтерсоваться у любителей играть с ардуиной или писать для андройдов.
| |
|
6.118, Sw00p aka Jerom (?), 14:57, 20/11/2021 [^] [^^] [^^^] [ответить]
| +/– |
>если же ты присваиваешь значению 2, значит ты не считаешь значение булевым.
значимость (значение) всегда предшествует истинности, машина ничего не знает об истинности, она работает со значениями. Истинность (какое из значений считать истиной) подразумевает человек,
2 - истина, 3 - инверсия (отрицание) истины (пример из марсианского языка).
| |
6.145, Прохожий (??), 00:19, 21/11/2021 [^] [^^] [^^^] [ответить]
| –1 +/– |
Думаю, это все-таки тебе надо поразмыслить вот над чем. Программирование чего-либо - это не процесс ради процесса. Программированием обычно какую-то конечную цель пытаются достичь. И если на языке А это делается с головой болью, бессонными ночами и нервотрепкой в попытке разобраться, где произошло некорректное приведение типов или обращение к не той области памяти, а на языке Б такие ошибки сведены к минимуму, то разумный рациональный человек выберет язык Б.
А вот неосилятор языка Б будет орать на каждом углу о своей исключительности и гениальности: ведь он может на языке А написать за неделю то, что на языке Б делается спокойно за день. Только вопли его вряд ли кому-то будут интересны.
| |
|
5.172, Урри (ok), 18:43, 21/11/2021 [^] [^^] [^^^] [ответить]
| +/– |
Харош троллить детей.
Ты пишешь в однобитовое поле двойку, теряя все биты переполнения. Ясное дело в сравнение уйдет ноль. Об этом, кстати, компилятор прямо говорит:
warning: overflow in conversion from ‘int’ to ‘signed char:1’ changes value from ‘2’ to ‘0’
--
> если ты из указателя сделаешь bool, то ты рискуешь нарваться на ровно ту же самую проблему.
А ты не делай bool, потому что это не правильно. И компилятор тебе об этом тоже совершенно недвусмысленно скажет. То, что С позволяет тебе по желанию стрелять в ногу не значит что ты обязан это делать. Просто пиши if (my_pointer) и не будет никаких проблем.
_Bool x = (_Bool) &var;
warning: the address of ‘var’ will always evaluate as ‘true’
| |
|
6.186, Ordu (ok), 23:46, 21/11/2021 [^] [^^] [^^^] [ответить] | +/– | Ты про principle of the least surprise слышал Так вот, этот принцип _требует_, ... большой текст свёрнут, показать | |
|
7.188, n00by (ok), 09:07, 22/11/2021 [^] [^^] [^^^] [ответить]
| +/– |
> Ты про principle of the least surprise слышал? Так вот, этот принцип
> _требует_, чтобы когда я выполнял бы в коде что-нибудь типа:
> my_struc.field = does_sun_shines_now();
> в этой самом my_struc.field оказывалось бы булевское значение.
Упомянутый принцип в данном случае запрещает сохранять результат функции _now. Си язык императивный, значит команды выполняются последовательно. К моменту проверки my_struc.field тот момент "сейчас" уже в прошлом, Солнце могло зайти.
Корректна следующая конструкция, где результат 2 вполне допустим
if ( does_sun_shines_now() ) {
}
| |
|
8.192, Ordu (ok), 09:53, 22/11/2021 [^] [^^] [^^^] [ответить] | +/– | Во-первых, тебя сейчас понесло в сторону Даже если ты прав, то ты описываешь _е... большой текст свёрнут, показать | |
|
9.193, n00by (ok), 10:25, 22/11/2021 [^] [^^] [^^^] [ответить] | +/– | Ну да, когда состояние где-то сохраняется - это потенциальный источник ошибок Н... большой текст свёрнут, показать | |
|
10.195, Ordu (ok), 12:33, 22/11/2021 [^] [^^] [^^^] [ответить] | +1 +/– | Принцип наименьшего удивления, если присмотреться, субъективный в своей основе, ... большой текст свёрнут, показать | |
|
11.198, n00by (ok), 14:28, 22/11/2021 [^] [^^] [^^^] [ответить] | +/– | Вот это хороший пример Это можно очень похоже написать на языке OCaml, который ... большой текст свёрнут, показать | |
|
|
|
|
7.199, Урри (ok), 15:33, 22/11/2021 [^] [^^] [^^^] [ответить]
| +/– |
Не смешивай буль и бит. Это разные сущности.
А второе элементарно решается с помощью #define bool _Bool или даже typedef _Bool bool;
| |
|
|
|
4.95, ng (ok), 12:42, 20/11/2021 [^] [^^] [^^^] [ответить] | +2 +/– | Почему-то многие это обстоятельство упускают из вида Основные философские положе... большой текст свёрнут, показать | |
|
5.102, Аноним (102), 13:58, 20/11/2021 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Ну, и классический пример - безопасное копирование одной строки в другую
только в хеловорлде оно безопасно
| |
|
6.111, ng (ok), 14:17, 20/11/2021 [^] [^^] [^^^] [ответить]
| +/– |
> только в хеловорлде оно безопасно
Эмоциональное замечание - читаем бездоказательное замечание.
:-)
| |
|
7.117, n00by (ok), 14:51, 20/11/2021 [^] [^^] [^^^] [ответить]
| +/– |
Ну вообще там два копирования, следующий вариант скомпилируется в ряде случаев 1 в 1 с исходным
int main()
{
char pSrc[] = "Hello world!";
char pDst[] = "Hello world!";
puts( pDst );
return 0;
}
| |
|
8.131, ng (ok), 16:51, 20/11/2021 [^] [^^] [^^^] [ответить] | –1 +/– | В исходном примере Одно копирование и Одна инициализация Пожалуйста, слегка моди... текст свёрнут, показать | |
|
|
10.160, ng (ok), 12:06, 21/11/2021 [^] [^^] [^^^] [ответить] | +/– | Общее частное Физика изучает идеальный газ , представляемый бесконечно малы... большой текст свёрнут, показать | |
|
|
12.162, ng (ok), 12:33, 21/11/2021 [^] [^^] [^^^] [ответить] | +/– | Просто хочется избежать деструктивного перехода на личности, что отвлекает сути ... текст свёрнут, показать | |
|
|
|
|
|
|
|
5.106, Аноним (-), 14:03, 20/11/2021 [^] [^^] [^^^] [ответить]
| +/– |
> позволяет писать лаконичный и безопасный код:
"Халва, халва, халва, ... хм, чей-то во рту все еще не сладко - наверное недостаточно усердно повторял".
> Ну, и классический пример - безопасное копирование одной строки в другую без
> затрат на проверку указателей и размерностей массивов.
> #include <stdio.h>
ЧСХ - "безопасТно" оно только в таком вот хелловроте,
а в реальности, отсутсвие размерности не позволит компилятору ускорить копирование в несколько раз векторизацией. Зато сэкономили "на спичках"^W проверку - да, это классический пример.
| |
|
6.112, Аноним (-), 14:22, 20/11/2021 [^] [^^] [^^^] [ответить]
| –1 +/– |
> а в реальности, отсутсвие размерности не позволит компилятору ускорить копирование в несколько раз векториза
Что ты такое несешь ?! O_O
| |
|
7.121, Аноним (-), 15:06, 20/11/2021 [^] [^^] [^^^] [ответить]
| +1 +/– |
>> а в реальности, отсутствие размерности не позволит компилятору ускорить копирование в несколько раз векториза
> Что ты такое несешь ?! O_O
Зачем ты лезешь в обсуждение, не зная основ?
movaps xmm0, xmmword ptr [rip + .L__const.main.pSrc+16]
movaps xmmword ptr [rbp - 32], xmm0
movaps xmm0, xmmword ptr [rip + .L__const.main.pSrc]
movaps xmmword ptr [rbp - 48], xmm0
vs.
.L2:
movzx edx, BYTE PTR [rsi+rax]
mov BYTE PTR [rcx+rax], dl
add rax, 1
test dl, dl
jne .L2
| |
|
6.154, ng (ok), 10:18, 21/11/2021 [^] [^^] [^^^] [ответить] | –1 +/– | Иногда лучше реально жевать, чем об этом говорить, когда нечего сказать Вероятн... большой текст свёрнут, показать | |
|
7.164, Аноним (-), 12:57, 21/11/2021 [^] [^^] [^^^] [ответить]
| +/– |
> Иногда лучше реально жевать, чем
чем сначала приводить "пример - безопасТное копирование строки", а затем придумывать отмазки ...
> Джуниоры выбирают сладкий смузи
> виски со льдом в ущерб приторной содовой.
> В реальности будет по-взрослому на быстрых функциях memcpy, strcpy и т.п.
> Прошу заметить, что понятия "лаконичность" и "безопасность" относятся к стилю кодирования
> программ, исключая отдельные операторы или функции.
> Наивно полагаясь на оптимизацию компилятора, джуниор просто перекладывает свою ответственность
> на других программистов, создавших компилятор.
То, что ты очередной опеннетный теоретик-балабол, стало понятно еще из предыдущего примера, не нужно подтверждать это почетное звание еще раз ...
| |
|
|
5.114, n00by (ok), 14:37, 20/11/2021 [^] [^^] [^^^] [ответить] | –1 +/– | Потому что такого обстоятельства нет На уровне АЛУ процессора есть флаги нул... большой текст свёрнут, показать | |
|
6.137, ng (ok), 18:12, 20/11/2021 [^] [^^] [^^^] [ответить]
| +/– |
> А в "классическом Си" никакого TRUE не было.
Согласен, ибо "всё есть int", включая указатели. :-)
| |
|
5.135, Ordu (ok), 17:22, 20/11/2021 [^] [^^] [^^^] [ответить]
| –1 +/– |
> if ( pStr && *pStr )
За венгерскую нотацию полагается стерилизация, чтобы избежать распространения вредоносных мутаций ДНК.
| |
|
6.139, Аноним (31), 18:47, 20/11/2021 [^] [^^] [^^^] [ответить]
| +1 +/– |
> За венгерскую нотацию полагается стерилизация, чтобы избежать распространения вредоносных мутаций ДНК.
как, по-вашему, правильнее:
if (the_pointer_to_the_string_with_our_QR_code_data && *the_pointer_to_the_string_with_our_QR_code_data) ...
или
// тут мы проверяем указатель на строку, в которой хранятся данные QR-кода
if (p && *p)
?
и чем вам не угодил лаконичный pStr?
мешают вашим алгоритмам вычислять смысл содержимого?
| |
|
7.151, Ordu (ok), 03:34, 21/11/2021 [^] [^^] [^^^] [ответить]
| –1 +/– |
>> За венгерскую нотацию полагается стерилизация, чтобы избежать распространения вредоносных мутаций ДНК.
> как, по-вашему, правильнее:
> if (the_pointer_to_the_string_with_our_QR_code_data && *the_pointer_to_the_string_with_our_QR_code_data)
> ...
Что ты бред несёшь? В C не бывает "string", только "pointer to string". Зачем вообще это писать сокращённо или развёрнуто, если это и так ясно? Назови переменную qr, и этого за глаза и за уши хватит.
> и чем вам не угодил лаконичный pStr?
Попробуй чтоль заглянуть в википедию и почитать что там написано про венгерскую нотацию. Мне кажется, там была описана история, и почему майкрософтовское использование этой, исходно неплохой идеи, вылилось в полный бред.
| |
|
|
9.182, Ordu (ok), 22:44, 21/11/2021 [^] [^^] [^^^] [ответить] | +/– | Почему Короткое и описательное имя переменной Вот если у тебя в коде полсотни ... текст свёрнут, показать | |
|
|
7.157, n00by (ok), 11:22, 21/11/2021 [^] [^^] [^^^] [ответить]
| +/– |
> и чем вам не угодил лаконичный pStr?
Префикс p в Венгерке означает указатель, а не массив.
| |
|
6.140, ng (ok), 18:58, 20/11/2021 [^] [^^] [^^^] [ответить]
| +/– |
>> if ( pStr && *pStr )
> За венгерскую нотацию полагается стерилизация, чтобы избежать распространения вредоносных
> мутаций ДНК.
О трудах агронома Трофима Лысенко слышал, но не изучал. Селекция видов - не мой бизнес.
Допуская, что разведение верблюдов - ответственное дело, буду признателен за демонстрацию влияния способа именования переменных на семантику условного оператора из примера.
:-)
| |
|
|
|
3.94, Аноним (31), 12:25, 20/11/2021 [^] [^^] [^^^] [ответить] | +3 +/– | У вас нет опыта разработки Если разработчик может допустить _любое_ значение ... большой текст свёрнут, показать | |
|
4.99, Аноньимъ (ok), 13:20, 20/11/2021 [^] [^^] [^^^] [ответить]
| +1 +/– |
>Поэтому любой нормальный программист пишет код так, чтобы при малейшей ошибке, возникающей по вине внутренних переменных, программа упала сразу и со сброшенным на диск дампом.
>Потому что источником неверных и некорректных значений может быть только внешняя среда -- пользователь, некорректные настройки, etc. -- "_любое_" значение может прийти только отсюда. Именно эти значения проверяются и исправляются, когда возможно.
>Если "_любые_" значения появляются в других местах, значит программа генерирует неверные значения и работать корректно не может в принципе.
Так, а как ТАК пишут код чтобы программа СРАЗУ упала при ошибке во внутренних переменных без проверок этих внутренних значений на корректность?
| |
|
5.120, Аноним (31), 15:05, 20/11/2021 [^] [^^] [^^^] [ответить] | –1 +/– | Ну, например, если передать NULL в dest в strcpy , то будет ошибка сегментации ... большой текст свёрнут, показать | |
|
6.122, Аноним (31), 15:08, 20/11/2021 [^] [^^] [^^^] [ответить]
| +/– |
Пример с NULL в strcpy(), ессно, слишком толстый.
Но он примерно показывает суть, когда надо падать, а когда -- проверять, корректировать или штатно завершать работу с кодом ошибки.
| |
6.124, Аноньимъ (ok), 15:15, 20/11/2021 [^] [^^] [^^^] [ответить]
| +1 +/– |
>Поэтому программа при _внутренних_ ошибках -- зависящих _только_ (подчёркиваю подчёркиваниями) от устройства программы и ни от чего больше -- должна упасть сразу.
А она знает что она должна упасть?
| |
|
|
4.100, Ordu (ok), 13:42, 20/11/2021 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Если разработчик может допустить "_любое_" значение в переменных, имеющих конкретный смысл
> и конкретный спектр принимаемых значений, то он немедленно признаётся профнепригодным
> и увольняется.
Хахахаха. Это ты так троллить пытаешься?
| |
4.107, _kp (ok), 14:06, 20/11/2021 [^] [^^] [^^^] [ответить] | +2 +/– | Да ну Оглянитесь Вне поделок на десктопе такое не допустимо Автомобили, пр... большой текст свёрнут, показать | |
|
5.113, Аноним (31), 14:33, 20/11/2021 [^] [^^] [^^^] [ответить] | +/– | Вы путаете падения релизов с падениями некорректных сборок и падениями дебажных ... большой текст свёрнут, показать | |
|
6.136, _kp (ok), 17:58, 20/11/2021 [^] [^^] [^^^] [ответить] | +2 +/– | В идеале, но это не значит, что сбои не возникнут, не смотря на все старания и т... большой текст свёрнут, показать | |
|
7.138, Аноним (31), 18:38, 20/11/2021 [^] [^^] [^^^] [ответить]
| +/– |
ещё раз: у вас речь идёт о падениях релизов;
речь про core dumped идёт в отношении дебажных версий;
> Так ИНОГДА совсем нельзя. Последствия какие будут?
вот об этом была и речь:
>> Падения релизов не допустимы | |
|
6.174, Урри (ok), 19:11, 21/11/2021 [^] [^^] [^^^] [ответить]
| +/– |
> А падения дебажных версий очень полезны -- это процесс разработки.
Нет.
> Так вот тут речь идёт именно о дебажных версиях: если проект серьёзный
> и ошибку не заметят ни ваши тестеры, ни контрольная группа предзаказчиков,
Если проект серьезный, то программисты расставляют везде где надо assert. А где не надо - обработку неправильных значений с возвратом ошибки.
Программа НЕ ДОЛЖНА НИКОГДА падать. Это закон. Любое падение - ЧП и обязано быть рассмотрено в отдельном порядке.
Сходите на полгодика в автомотив поработать, наберетесь неоценимого опыта.
| |
|
|
4.146, Прохожий (??), 01:10, 21/11/2021 [^] [^^] [^^^] [ответить]
| +/– |
>Если разработчик может допустить "_любое_" значение в переменных, имеющих конкретный смысл и конкретный спектр принимаемых значений
Ох уж этот мне юношеский максимализм. Давно в профессии? Подозреваю, что год-два, не более, раз такую ахинею несёшь.
Возможность совершать ошибки заложено в нас природой. Мы - существа, живущие в вероятностном мире, и должны уметь выживать в этом мире, поэтому наше поведение тоже вероятностно. Когда человек ошибается - это нормально и точно не повод гнать из профессии.
Отцу русской демократии помогут языки со строгой типизацией. Открой для себя достижения прогресса. Си к таковым, увы, не относится. Это Г давно уже следует похоронить и забыть, как о страшном сне.
| |
|
5.185, _kp (ok), 23:28, 21/11/2021 [^] [^^] [^^^] [ответить]
| +/– |
> следует похоронить и забыть, как о страшном сне.
Есть такая поговорка, программист на Си может писать на Си на любом языке программирования.
Если всякий язык сводить к Си и низкоровому мышлению, там где это не неуместно, без представления работы в целом, на более высоких уровнях, то на выходе два основных варианта, или "противотанковый" стиль программирования, но медленно и с атавизмами, или тормоза, жор памяти, отладочные дампы, и немедленные падения.
Ну бывает, вроде бы и язык новый, а проблемы старые.
| |
|
|
|
|
1.73, Аноним (73), 23:51, 19/11/2021 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Если написать код на Vala, транслировать в С и скормить этому чуду - он прожует?
| |
|
|
|
4.147, Прохожий (??), 01:13, 21/11/2021 [^] [^^] [^^^] [ответить]
| –1 +/– |
Так сделал бы только человек с удручающе низкими когнитивными способностями.
| |
|
3.88, n00by (ok), 09:41, 20/11/2021 [^] [^^] [^^^] [ответить] | –1 +/– | Для начала на тривиальном примере посмотрим, что будет делать с аномалиями ведущ... большой текст свёрнут, показать | |
|
|
5.109, n00by (ok), 14:14, 20/11/2021 [^] [^^] [^^^] [ответить]
| –1 +/– |
Прикол в том, что код написал "ведущий программист", как заявляет его работодатель. Значит он сам может ответить на достаточно простой вопрос, надо немножко подождать. В крайнем случае кого-то спросит. Они же как бэ разрабатывают операционную систему, а не тупо пилят? ;)
| |
|
|
7.158, n00by (ok), 11:53, 21/11/2021 [^] [^^] [^^^] [ответить] | –3 +/– | А, ну да RPM-разработчики не отвечают за код под которым подписываются На сайт... большой текст свёрнут, показать | |
|
|
9.190, n00by (ok), 09:13, 22/11/2021 [^] [^^] [^^^] [ответить] | +/– | То есть найти ошибку в приведённом фрагменте из 7 строчек ты не смог Я не счита... текст свёрнут, показать | |
|
|
|
|
|
4.129, Аноним (31), 16:02, 20/11/2021 [^] [^^] [^^^] [ответить]
| +/– |
очевидно, что open_vpipe() используется только в этом C-файле -- это служебная внутренняя функция, её суть -- в подсчёте аргумента malloc'а из width и height, а также в понятном (разработчику) названии.
результат её выполнения освобождается силами простого free(vpipe);
никаких лишних аргументов для free() считать не надо, поэтому обёртка для него не нужна;
и что не так?
| |
|
5.130, Аноним (31), 16:32, 20/11/2021 [^] [^^] [^^^] [ответить] | +1 +/– | аа, увидел но сначала вопрос ёлки-палки, кто ж так код сокращает это ж непон... большой текст свёрнут, показать | |
|
6.159, n00by (ok), 11:53, 21/11/2021 [^] [^^] [^^^] [ответить]
| –1 +/– |
Про отсутствие free() я явно написал и лишнее не цитировал, поскольку вопрос касается только работы с памятью (и на мелочи вроде int для размера закрываем глаза). Программист операционных систем ответил в #126, что система за ним подчистит, а код вообще писал не он. :) То что Вы копали глубже и нашли close() лишь усугубляет ситуацию.
| |
6.191, n00by (ok), 09:20, 22/11/2021 [^] [^^] [^^^] [ответить]
| +/– |
В итоге "ведущий разработчик" публично признал в #178, что он не программист. Вопрос "зачем там вообще allocated storage" снят. :)
| |
|
|
|
|
|
|
2.104, Аноним (104), 14:01, 20/11/2021 [^] [^^] [^^^] [ответить]
| +/– |
Рабтает. База как и раньше скачивается отдельно, три вида: Small, Medium, Large.
| |
|
|
4.133, . (?), 17:09, 20/11/2021 [^] [^^] [^^^] [ответить]
| +/– |
попробовал medium. гиг в оперативке, на час - 10к строк кода/40 файлов. ничего не нашло. слабенький компьютер, маленький проект.
| |
|
|
|
1.152, Аноним (152), 05:37, 21/11/2021 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
А знаете, какой еще инструмент может определить аномалии и непохожести кода на чужой код? Любой антиплагиат. Если у меня свой интересный стиль написания кода, это не значит, что у меня там ошибки и аномалии. cppcheck, clang-analyzer и -fsanitize всякие, если научиться ими пользоваться, дадут хорошее определение ошибок. А если еще и вспомнить великое искусство использования отладчиком, так вообще красота.
| |
1.177, Урри (ok), 20:46, 21/11/2021 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Прогнал свой хелловорлд, 5600 строк страшноватого С (главная функция одна занимает 2000 строк, знаю-знаю...) и т.д., достаточно хаков ибо надо быстро, а не понятно даже ребенку.
Нашло чуть более 400 "Expression" вида "if (d < 0) {" и т.д., причем все "Expression is Okay".
Ничего не понял, все закрыл.
| |
|
2.196, Аноним (-), 13:21, 22/11/2021 [^] [^^] [^^^] [ответить]
| –1 +/– |
Ты Си плюс-плюсник, другого оттебя и не ожидаешь. Любой чистосишник знает, что при превышении количества строк выше ста, надо код выносить на новый файл. Тебя плюсовика этому видимо не учили.
И не позорь сишный стан.
| |
|
|
4.202, Урри (ok), 17:00, 22/11/2021 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Плюсплюсник не станет городить метод из 2000 строк.
Именно.
И метод такой большой ради скорости - это реализация виртуальной машины с большим свичом.
Разбиение на отдельные функции приводит к усложнению поддержки и меньшей читабельности.
Но это все офтопик. А топик в том, что этот инструмент в таком говнокоде (с точки зрения общепринятых практик) не нашел проблем.
| |
|
5.203, Аноним (-), 17:51, 22/11/2021 [^] [^^] [^^^] [ответить]
| +/– |
>Разбиение на отдельные функции приводит к усложнению поддержки и меньшей читабельности.
Ты сам понимаешь какую чушь ты несёшь?
| |
|
6.207, n00by (ok), 07:52, 23/11/2021 [^] [^^] [^^^] [ответить]
| +/– |
Посмотрите, к примеру, ВМ OCaml, что бы не задавать глупых вопросов.
| |
|
|
8.213, n00by (ok), 12:11, 23/11/2021 [^] [^^] [^^^] [ответить] | –1 +/– | Анон, а что сделал ты, что бы я прислушался к твоему мнению Задизайнил язык, ко... текст свёрнут, показать | |
|
|
|
|
|
|
|
1.184, burjui (ok), 23:28, 21/11/2021 [ответить] [﹢﹢﹢] [ · · · ]
| +2 +/– |
Бесполезный софт. Опеннетовские сишники пишут код без ошибок, надо просто их размножить. Это сложно, т.к. девушек здесь нет, но что поделать?
| |
|