![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Reading this book: https://www.oreilly.com/library/view/programming-rust/9781491927274/ch01.html
It says:
Consider the following C program:
According to C99, because this program accesses an element off the end of the array a
, its behavior is undefined, meaning that it can do anything whatsoever. When we ran this program on Jim’s laptop, it produced the following output:
Then it crashed. Jim’s laptop doesn’t even have a .netrc file. If you try it yourself, it will probably do something entirely different.
no subject
Date: 2019-09-16 06:46 pm (UTC)no subject
Date: 2019-09-16 06:47 pm (UTC)no subject
Date: 2019-09-16 07:02 pm (UTC)no subject
Date: 2019-09-16 07:29 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2019-09-17 06:50 am (UTC)no subject
Date: 2019-09-16 07:32 pm (UTC)И шо?
Date: 2019-09-17 04:54 am (UTC)Re: И шо?
From:Re: И шо?
From:Re: И шо?
From:Re: И шо?
From:Re: И шо?
From:no subject
Date: 2019-09-16 08:00 pm (UTC)no subject
Date: 2019-09-16 08:09 pm (UTC)Используйте rust. Он лучше
А лучше, используйте java
no subject
Date: 2019-09-16 09:47 pm (UTC)Единственный известный мне язык, одновременно дающий какие-то гарантии в этой области, и пригодный для системного программирования - это Rust. Но молод он еще, и многие вещи в нем делаются совсем не так, как мы привыкли (например, хрен сделаешь на нем двусвязный список в стиле list-а из линуксового ядра). Наверняка в расте для этого есть другие пути - но в том-то и дело, что этим другим путям учиться еще надо книжки писать, три поколения студентов хотя бы выучить этим новым ужимкам, и только потом оно станет мэйнстримом. А Си есть уже сейчас, и некоторая аккуратность вполне достаточна для написания надежного софта.
no subject
Date: 2019-09-16 09:52 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:А шо
From:Re: А шо
From:Re: А шо
From:Re: А шо
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2019-09-16 10:46 pm (UTC)no subject
Date: 2019-09-16 10:53 pm (UTC)(no subject)
From:(no subject)
From:no subject
Date: 2019-09-17 12:44 am (UTC)(no subject)
From:no subject
Date: 2019-09-17 08:02 am (UTC)Конкретно я это слышал не про UB-конструкции а про чрезмерное увлечение инлайнами. Если в одном файле кол-во инлайнов больше заданного - то пользователь идиот, и инлайнить ненадо вообще ничего.
На практике, думаю, что UB скорей всего сломает оптимизации. А такое, чтобы оно там что-то делало осмысленно-нехорошое - в это не верю.
(no subject)
From:(no subject)
From:no subject
Date: 2019-09-17 12:32 am (UTC)no subject
Date: 2019-09-17 03:40 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2019-09-17 01:16 pm (UTC)(no subject)
From:no subject
Date: 2019-09-17 12:39 am (UTC)no subject
Date: 2019-09-17 12:41 am (UTC)no subject
Date: 2019-09-17 05:20 am (UTC)"Hardly a week goes by at BUGSENG without having to explain to someone that almost any piece of C text, considered in isolation, means absolutely nothing. The belief that C text has meaning in itself is so common, also among seasoned C practitioners, that I thought writing a short paper on the subject was a good time investment. The problem is due to the fact that the semantics of the C programming language is not fully defined: non-definite behavior, predefined macros, different library implementations, peculiarities of the translation process, . . . : all these contribute to the fact that no meaning can be assigned to source code unless full details about the build are available. The paper starts with an exercise that admits a solution. The existence of this solution will hopefully convince anyone that, in general, unless the toolchain and the build procedure are fully known, no meaning can be assigned to any nontrivial piece of C code."
no subject
Date: 2019-09-17 05:30 am (UTC)And of course unsigned/signed chars are involved. It was the reason why people at Borland really wanted to hire me, since I knew those dirty tricks with "signed chars".
no subject
Date: 2019-09-17 06:29 am (UTC)no subject
Date: 2019-09-17 10:05 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2019-09-17 09:40 am (UTC)https://godbolt.org/z/R4pac2