The Unix Heritage Society mailing list
 help / color / mirror / Atom feed
From: Steve Nickolas <usotsuki@buric.co>
To: tuhs@tuhs.org
Subject: [TUHS] Re: FD 2
Date: Mon, 30 Jan 2023 11:21:45 -0500 (EST)	[thread overview]
Message-ID: <alpine.DEB.2.21.2301301115080.5005@sd-119843.dedibox.fr> (raw)
In-Reply-To: <CAEoi9W60rwcUwOS4wZooZtnRg3cUPbQFR5vDjXnVO0vxRtSMhw@mail.gmail.com>

On Mon, 30 Jan 2023, Dan Cross wrote:

> I think C is a language that people _think_ is simple to understand,
> and perhaps _was_ simple to understand, but is actually remarkably
> subtle and a _lot_ of people don't actually have a great handle on how
> it really works anymore. Particularly now, when the compiler people
> seem to be prizing optimization above all else and so even obvious
> behavior that's technically "undefined" results in unexpected behavior
> (e.g., `if (a > 0 && b > 0 && a*b) < 0) overflow(); // signed integer
> overflow is UB`. Maybe sadly, C hasn't been a portable macro assembler
> for decades now.

I always assume compiler braindeath.  Always use parentheses; never assume 
any specific order of precedence.

I've actually been bitten by compilers doing unexpectedly stupid things, 
so I guard around them.  I'll never merge two chars into a short with

   c=(a<<8)|b;

I will ALWAYS do this:

   c=a;
   c<<=8;
   c|=b;

because 16-bit MS-DOS compilers will ALWAYS manage to blunder that, though 
32-bit compilers get it right (the sane thing to do would be to treat it 
as a word bitshift, but the compiler treats it as a byteshift because a is 
uint8_t).

I'll never do if (a==b&&c==d), always if ((a==b)&&(c==d)).

I always try to assume the compiler will wreck my code in hilariously 
braindamaged ways and code so precisely that it cannot do so.

<snip>

> Imitation is the most sincere form of flattery.

The actual saying continues "...that mediocrity can make to greatness", 
which changes the meaning a bit. ;p

-uso.

  parent reply	other threads:[~2023-01-30 16:22 UTC|newest]

Thread overview: 69+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-20 22:44 [TUHS] " ron minnich
2023-01-20 22:54 ` [TUHS] " G. Branden Robinson
2023-01-20 22:56 ` Rob Pike
2023-01-20 23:11   ` Larry McVoy
2023-01-20 23:14     ` Rob Pike
2023-01-20 23:22       ` Larry McVoy
2023-01-20 23:13 ` Douglas McIlroy
2023-01-21  3:37 ` Jon Steinhart
2023-01-21 15:42 ` Clem Cole
2023-01-21 17:34   ` Warner Losh
2023-01-21 17:50     ` Warner Losh
2023-01-21 18:26       ` Clem Cole
2023-01-21 18:37         ` Warner Losh
2023-01-22 11:05           ` Jonathan Gray
2023-01-22 21:23           ` Warner Losh
2023-01-22 22:10             ` ron minnich
2023-01-23  7:30             ` arnold
2023-01-23  8:32               ` James Johnston
2023-01-23  8:58                 ` G. Branden Robinson
2023-01-23 11:49                   ` Brantley Coile
2023-01-23 14:25                     ` Ronald Natalie
2023-01-23 17:43                       ` Brantley Coile
2023-01-23 16:59                 ` Douglas McIlroy
2023-01-24  7:21                   ` arnold
2023-01-29 18:51             ` Warner Losh
2023-01-29 19:20               ` Ron Natalie
2023-01-29 20:25                 ` Warner Losh
2023-01-30  7:50                   ` arnold
2023-01-30  8:09                     ` Rob Pike
2023-01-30 15:02                       ` Larry McVoy
2023-01-30 15:16                         ` Dan Cross
2023-01-30 15:27                           ` Larry McVoy
2023-01-30 15:35                             ` Dan Cross
2023-01-30 15:45                               ` Larry McVoy
2023-01-30 16:09                                 ` Dan Cross
2023-01-30 16:18                                   ` Larry McVoy
2023-01-30 19:03                                     ` Dan Cross
2023-01-30 19:12                                       ` Brantley Coile
2023-01-30 21:24                                       ` Larry McVoy
2023-01-30 22:15                                         ` Rob Pike
2023-01-30 22:50                                           ` ron minnich
2023-01-30 23:05                                           ` [TUHS] Child of plan9? (Re: " Bakul Shah
2023-01-31  3:19                                             ` [TUHS] " Andrew Warkentin
2023-01-30 16:21                                   ` Steve Nickolas [this message]
2023-01-30 16:27                                     ` [TUHS] " Larry McVoy
2023-01-30 16:32                                       ` ron minnich
2023-01-30 16:40                                       ` Clem Cole
2023-01-30 19:55                                       ` Lawrence Stewart
2023-01-31 21:27                                     ` Dave Horsfall
2023-01-30 16:48                                   ` Theodore Ts'o
2023-01-30 16:57                                   ` Andy Kosela
2023-01-30 17:04                                     ` Warner Losh
2023-01-30 20:38                                       ` Theodore Ts'o
2023-01-30 21:01                                         ` Warner Losh
2023-01-30 21:10                                         ` Clem Cole
2023-01-30 16:03                           ` Bakul Shah
2023-01-30 16:07                             ` Larry McVoy
2023-01-30 16:13                               ` Bakul Shah
2023-01-30 16:22                                 ` Steve Nickolas
2023-01-30 16:17                               ` Dan Cross
2023-01-30 16:18                             ` Ralph Corderoy
2023-01-30 16:41                               ` [TUHS] job control (Re: " Bakul Shah
2023-01-30 19:07                               ` [TUHS] " Dan Cross
2023-01-30 13:26                     ` John Cowan
2023-01-30 14:30                       ` arnold
2023-01-30  0:25                 ` Phil Budne
2023-01-30  2:08                   ` Warner Losh
2023-01-21 18:27     ` Clem Cole
2023-01-22 10:56       ` Jaap Akkerhuis via TUHS

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=alpine.DEB.2.21.2301301115080.5005@sd-119843.dedibox.fr \
    --to=usotsuki@buric.co \
    --cc=tuhs@tuhs.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).