The OpenNET Project / Index page

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



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

Оглавление

В языке системного программирования Hare реализована поддержка OpenBSD, opennews (??), 04-Дек-23, (0) [смотреть все]

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


30. "В языке системного программирования Hare реализована поддерж..."  +2 +/
Сообщение от _oleg_ (ok), 04-Дек-23, 15:25 
Речь не про парсеры, а про ЯП с точки зрения программирования на нём. И Си на самом деле простой насколько это возможно. Хрен знает куда проще-то без потери возможностей.
Ответить | Правка | Наверх | Cообщить модератору

31. "В языке системного программирования Hare реализована поддерж..."  +/
Сообщение от Аноним (12), 04-Дек-23, 15:32 
> Си на самом деле простой насколько это возможно

Судя по количеству UB и всяких там implementation-defined, это очень непростой язык, заставляющий учить приколы реализаций компиляторов (причем сразу всех), а не стандарт самого языка.

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

41. "В языке системного программирования Hare реализована поддерж..."  +/
Сообщение от Аноним (33), 04-Дек-23, 16:06 
Ты бы сразу написал, что фанат Rust, и дальше можешь не писать - все ваши комменты одинаковые и давно известны.
Ответить | Правка | Наверх | Cообщить модератору

49. "В языке системного программирования Hare реализована поддерж..."  –2 +/
Сообщение от _oleg_ (ok), 04-Дек-23, 16:21 
Если не писать криво, то UB ещё надо постараться поймать. Насчёт implementation-defined - это всегда будет, к сожаленью, если implementation больше одной ;-).
Ответить | Правка | К родителю #31 | Наверх | Cообщить модератору

95. "В языке системного программирования Hare реализована поддерж..."  +1 +/
Сообщение от Аноньимъ (ok), 04-Дек-23, 18:51 
> Если не писать криво, то UB ещё надо постараться поймать.

Ну да.
Всего-то нужно ни в коем случае не писать что-то вроде:

int i;
i = x + 1;

Очень тяжело, просто невозможно.

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

97. "В языке системного программирования Hare реализована поддерж..."  +/
Сообщение от _oleg_ (ok), 04-Дек-23, 19:18 
Где здесь UB?
Ответить | Правка | Наверх | Cообщить модератору

100. "В языке системного программирования Hare реализована поддерж..."  +1 +/
Сообщение от Аноньимъ (ok), 04-Дек-23, 19:44 
> Где здесь UB?

Здрасте досвидания! Я блин думал вы в сишке что-то смыслите.

# Signed integer overflow

Это ещё не самое неприятное. Это мелочь.

Потому как вот это вот тоже UB
int i = 65535;

И вообще в целом всё буквально что использует int как тип.


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

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

104. "В языке системного программирования Hare реализована поддерж..."  +/
Сообщение от _oleg_ (ok), 04-Дек-23, 20:08 
О боже...

integer overflow это не UB. Это прямое следствие лежащего под софтом железа и того, что Си не заявляет каких-то немыслимых абстракций. По такой логике, ошибки округления чисел с плавающей запятой в любом ЯП это UB.

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

118. "В языке системного программирования Hare реализована поддерж..."  +/
Сообщение от Аноним (115), 04-Дек-23, 23:05 
>"An example of undefined behavior is the behavior on integer overflow."

Не UB! Твердо и чотко!

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

150. "В языке системного программирования Hare реализована поддерж..."  –1 +/
Сообщение от _oleg_ (ok), 05-Дек-23, 12:09 
Да откуда ты это взял? Хватит всякую чушь в инете читать. UB чего? Компилятора? Мы, вроде, про компилятор речь ведём. Если это и UB, то железной архитектуры. И то только для тех, кто не шарит в теме от слова совсем. UB это UB. А это не UB никакое. Это чётко описанная вещь работы любого современного процессора. Но если ты пришёл в программирование после кулинарных курсов, на волне скилфактори-хайпа, то ясен ты не в курсе как устроено железо и что если к 8 битному регистру с 255 в значении прибавить ещё 1, то регистр не может увеличиться по твоей прихоти, как твой вялый стручок при виде тян.
Ответить | Правка | Наверх | Cообщить модератору

152. "В языке системного программирования Hare реализована поддерж..."  +1 +/
Сообщение от User (??), 05-Дек-23, 12:52 
Ну, тащем-та из ISO/IEC 9899:2011 раздел 3.4.3, например. Можешь сходить до комитету, рассказать пацанчикам, что ничего они в сишечке не понимают, расталдыкать на пальчиках как надо.
Ответить | Правка | Наверх | Cообщить модератору

184. "В языке системного программирования Hare реализована поддерж..."  +/
Сообщение от _oleg_ (ok), 06-Дек-23, 11:47 
> Ну, тащем-та из ISO/IEC 9899:2011 раздел 3.4.3, например. Можешь сходить до комитету,
> рассказать пацанчикам, что ничего они в сишечке не понимают, расталдыкать на
> пальчиках как надо.

Спасибо за источник. Он украл у меня 40 минут жизни.

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

186. "В языке системного программирования Hare реализована поддерж..."  +/
Сообщение от User (??), 06-Дек-23, 12:13 
>> Ну, тащем-та из ISO/IEC 9899:2011 раздел 3.4.3, например. Можешь сходить до комитету,
>> рассказать пацанчикам, что ничего они в сишечке не понимают, расталдыкать на
>> пальчиках как надо.
> Спасибо за источник. Он украл у меня 40 минут жизни.

Легко отделался - у индустрии потери на миллионы человеколет, думаю ).

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

187. "В языке системного программирования Hare реализована поддерж..."  +/
Сообщение от _oleg_ (ok), 06-Дек-23, 12:21 
>>> Ну, тащем-та из ISO/IEC 9899:2011 раздел 3.4.3, например. Можешь сходить до комитету,
>>> рассказать пацанчикам, что ничего они в сишечке не понимают, расталдыкать на
>>> пальчиках как надо.
>> Спасибо за источник. Он украл у меня 40 минут жизни.
> Легко отделался - у индустрии потери на миллионы человеколет, думаю ).

Дык это потому, что не надо подобные стандарты читать. Одни пишут компиляторы, а те, кто не умеют, пишут стандарты. Только бумагу портят.

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

192. "В языке системного программирования Hare реализована поддерж..."  +/
Сообщение от Аноним (115), 06-Дек-23, 14:15 
Ассемблер хоть знаешь? Просвещайся:

https://godbolt.org/z/796ferssh

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

194. "В языке системного программирования Hare реализована поддерж..."  +/
Сообщение от _oleg_ (ok), 06-Дек-23, 14:53 
> Ассемблер хоть знаешь? Просвещайся:
> https://godbolt.org/z/796ferssh

Давай без загадок. Времени нет. Что тебя в этом ассемблерном коде удивляет?

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

199. "В языке системного программирования Hare реализована поддерж..."  +/
Сообщение от Аноним (115), 06-Дек-23, 16:28 
Меня - ничего.

Компилятор выбрасывает сравнение y < x, потому, что int y = x + 1; переполнение UB и такого не может быть никогда.

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

201. "В языке системного программирования Hare реализована поддерж..."  +/
Сообщение от _oleg_ (ok), 06-Дек-23, 16:37 
> Меня - ничего.
> Компилятор выбрасывает сравнение y < x, потому, что int y = x
> + 1; переполнение UB и такого не может быть никогда.

Ну ты же -O3 ему вкорячил. Чего удивляться-то? При -O3 и не такое может быть.

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

202. "В языке системного программирования Hare реализована поддерж..."  +/
Сообщение от Аноним (115), 06-Дек-23, 18:11 
Ну все, пошел сишный копиум, флаги не те, компилятор не той системы...
C -O2 то же самое, тоже некошерно, слишком хорошо оптимизирует?
Ответить | Правка | К родителю #201 | Наверх | Cообщить модератору

203. "В языке системного программирования Hare реализована поддерж..."  +/
Сообщение от _oleg_ (ok), 06-Дек-23, 18:17 
> Ну все, пошел сишный копиум, флаги не те, компилятор не той системы...
> C -O2 то же самое, тоже некошерно, слишком хорошо оптимизирует?

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

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

208. "В языке системного программирования Hare реализована поддерж..."  +/
Сообщение от Аноним (115), 06-Дек-23, 21:37 
Выкидывает в точном соответствии с "бесполезным" стандартом.
Ответить | Правка | К родителю #203 | Наверх | Cообщить модератору

151. "В языке системного программирования Hare реализована поддерж..."  +/
Сообщение от _oleg_ (ok), 05-Дек-23, 12:11 
Ты, блин, посмотри как расшифровывается UB хотя бы... UB это то, что undefined. Если оно описано и чётко, то это не UB. Целочисленные переполнения это крайне чётко описанная вещь и является UB только для непробиваемых гуманитариев, глубже скриптов ничего не видевшее в жизни.
Ответить | Правка | К родителю #118 | Наверх | Cообщить модератору

157. "В языке системного программирования Hare реализована поддерж..."  +/
Сообщение от Аноньимъ (ok), 05-Дек-23, 15:40 
Вы путаете переполнение целого без знака. И переполнение целого со знаком. Видимо.
Ответить | Правка | Наверх | Cообщить модератору

173. "В языке системного программирования Hare реализована поддерж..."  +1 +/
Сообщение от freehckemail (ok), 06-Дек-23, 00:23 
Олег, боюсь, что это ты путаешь. UB это вполне определённый термин, глубоко завязанный на процесс стандартизации языка: под "неопределённое поведение" попадает всё, что явно не определено в стандарте. Так, например, переполнение беззнакового целого стандартом действительно определено (таким образом, все компиляторы обязаны делать "wrap around", чтобы TYPE_max_size + 1 = TYPE_min_size), а вот переполнение знакового целого -- в стандарте явно не описано, и потому это UB. И то, что некоторые компиляторы делают "wrap around" для знакового целого -- это не гарантия того, что нет копилятора, который обрабатывает эту ситуацию как-то иначе. UB это больше о формализации, ну или бюрократии, если тебе так будет легче.
Ответить | Правка | К родителю #151 | Наверх | Cообщить модератору

179. "В языке системного программирования Hare реализована поддерж..."  +/
Сообщение от Аноним (115), 06-Дек-23, 07:36 
>это не гарантия того, что нет копилятора, который обрабатывает эту ситуацию как-то иначе

Например gcc или clang.

https://godbolt.org/z/796ferssh

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

183. "В языке системного программирования Hare реализована поддерж..."  +/
Сообщение от _oleg_ (ok), 06-Дек-23, 11:43 
Да точно. Пролистал стандарт. В этом смысле согласен. Это бюрократический момент, где они этим термином прикрыли себя - типа, это уже не наша вотчина за пределами нашей области ответственности, как будет, так и будет. Но, с этой фразой:

Судя по количеству UB и всяких там implementation-defined, это очень непростой язык, заставляющий учить приколы реализаций компиляторов (причем сразу всех), а не стандарт самого языка.

на которую я отвечал, я не согласен. Т.к. тупо вменять Си в минусы подобные UB в терминах стандарта, если, грубо говоря, Си это кроссплатформенный (насколько это возможно) ассемблер. И в нём нет лишних доп.обработок кучи особенностей нижележащего железа. Собственно, в этом его и прелесть. Т.о. нужно иметь мозги и понимать что ты делаешь (т.е. понимать что-то за пределами знаний чисто ЯП, а ещё и как устроено железо, что для некоторых современных ньюфагов, выросших на js и им подобных, может быть удивительно). И тогда у тебя в руках наибольшая гибкость и производительность по отношению к простоте, удобству и синтаксическим вкусностям.

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

198. "В языке системного программирования Hare реализована поддерж..."  +/
Сообщение от Аноним (-), 06-Дек-23, 16:12 
> О боже...
> integer overflow это не UB. Это прямое следствие лежащего под софтом железа

Вообще-то для именно signed int - таки UB. Хотя-бы потому что ... формат хранения signed int не специфицирован жестко и возможно несколько разных вариантов.

Что случится при wrap - "implementation defined" и зависит от формата хранения int. Полагаться на это нельзя. Хотя в C23, чтоли и где-то рядом в C++ оставили только один вариант, там еще есть какие-то шансы на defined.

Unsigned в этом лучше: там wrap явно прописан и это, таки, defined behavior.

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

> и того, что Си не заявляет каких-то немыслимых абстракций. По такой
> логике, ошибки округления чисел с плавающей запятой в любом ЯП это UB.

У плавучки свои грабли. А в сях таки более чем достаточно UB - вплоть до того что если вы в 16-бит "int" загнали 65535 - то вообще ктулху его знает чему это будет на самом деле равно, с учетом сочетания факторов "формат хранения int" и "16 битное int".

...одна из причин по которым в C99 таки сделали более нормальные типы. К сожалению ума завершить что начали у комитета импотентов не хватило. Так что препроцессор оперирует чем-то другим, более близким к обычным типам. А считать он таки - может. Или например enum - да вообще удачи угадать какой у него эффективный тип. Он так специфицирован, что...

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

Мораль сей басни такова: если ты юзаешь си - изволь почитать стандарты а также гайдлайны по antibug приемам. Иначе код у тебя будет, как бы это сказать...

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

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

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




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

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