The Unix Heritage Society mailing list
 help / color / mirror / Atom feed
From: John Gilmore <gnu@toad.com>
To: Tyler Adams <coppero1237@gmail.com>
Cc: The Eunuchs Hysterical Society <tuhs@tuhs.org>, jnc@mercury.lcs.mit.edu
Subject: Re: [TUHS] History of popularity of C
Date: Fri, 22 May 2020 11:40:11 -0700	[thread overview]
Message-ID: <22671.1590172811@hop.toad.com> (raw)
In-Reply-To: <CAEuQd1BsqsJSjbA4zHs5HtpCSeEQ9SdJ6Yv=baOsJ8oYgLdVUg@mail.gmail.com>

Tyler Adams <coppero1237@gmail.com> wrote:
> Doesn't C++ also generate tight code and is fairly close to the metal?
> Today C++ is the high performant language for game developers and HFT shops.
> 
> But, I never found it on any of these embedded systems, it was straight C.

My take on this is that programmers who understand the underlying
hardware architecture can easily intuit the code that would result from
what they write in C.  There are only a few late features (e.g. struct
parameters, longjmp) that require complex code to be generated, or
function calls to occur where no function call was written by the
programmer.

Whereas in C++, Pascal, Python, APL, etc, a few characters can cause the
generated code to do immense amounts of unexpected work.  Think of
string compares, hash table types, object initializers, or arbitrary
amounts of jumping through tables of pointers to different kinds of
objects.  Automated memory allocation.  Garbage collection.

This is both a blessing and a curse.  In C it was quite predictable how
well or badly typical sections of your code would perform.  If the
performance was bad, it was YOUR fault!  But at least YOU could fix it,
without learning to hack a compiler instead of your own application.

(I once found Berkeley SPICE code doing string compares in a triply
nested loop, just to look up the names of the signals.  In C.  Making
changes to a large state machine going into a custom chip was taking the
Sun hardware engineers multiple hours per change.  I spent weeks finding
the source code (Sun's tools group was dysfunctional; I got it from
UCB).  In half a day of profiling it and fixing it to cache the
result of the first string lookup on each signal name, four hour
rebuilds went down to under a minute.  A second day of profiling
and cacheing, just for fun, took it down to 10 seconds.)

	John

  reply	other threads:[~2020-05-22 18:41 UTC|newest]

Thread overview: 106+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-21 18:28 Noel Chiappa
2020-05-21 18:44 ` Thomas Paulsen
2020-05-21 19:06   ` Paul Winalski
2020-05-21 20:27     ` Thomas Paulsen
2020-05-22  8:52 ` Tom Ivar Helbekkmo via TUHS
2020-05-22  9:51   ` Tyler Adams
2020-05-22 11:09     ` arnold
2020-05-22 11:15       ` Tyler Adams
2020-05-22 18:40         ` John Gilmore [this message]
2020-05-22 19:01           ` Toby Thain
2020-05-22 19:35             ` Larry McVoy
2020-05-22 19:31           ` Larry McVoy
2020-05-22 20:19           ` Michael Kjörling
2020-05-22 14:59       ` Toby Thain
2020-05-22 20:39       ` [TUHS] History of popularity of C (GCC/Cygnus) John Gilmore
2020-05-23  4:33         ` Thomas Paulsen
2020-05-22 11:58     ` [TUHS] History of popularity of C A. P. Garcia
  -- strict thread matches above, loose matches on Subject: below --
2020-06-06 21:49 Doug McIlroy
2020-06-06 21:55 ` Warner Losh
2020-06-08 13:56 ` Derek Fawcus
2020-06-08 15:20   ` Richard Salz
2020-06-08 15:30 ` Dan Cross
2020-06-08 16:32 ` Tony Finch
2020-05-21 15:27 Tyler Adams
2020-05-21 16:10 ` Toby Thain
2020-05-21 16:30   ` Larry McVoy
2020-05-21 17:22     ` John Foust
2020-05-21 20:17       ` Toby Thain
2020-05-21 16:43   ` Tony Finch
2020-05-21 17:35     ` arnold
2020-05-21 19:16       ` CHARLES KESTER
2020-05-21 20:33         ` Thomas Paulsen
2020-05-21 20:09       ` Toby Thain
2020-05-21 20:12       ` Tony Finch
2020-05-22  8:28       ` David Arnold
2020-05-21 20:07     ` Toby Thain
2020-05-21 20:56   ` Clem Cole
2020-05-21 23:45     ` Toby Thain
2020-05-21 23:57       ` Richard Salz
2020-05-22  0:17         ` Toby Thain
2020-05-22  4:10         ` John Gilmore
2020-05-22 14:11           ` Larry McVoy
2020-05-22 14:34             ` Richard Salz
2020-05-22 14:17           ` Larry McVoy
2020-05-22  7:42         ` arnold
2020-05-22 23:50   ` Greg A. Woods
2020-05-23  7:28     ` Andy Kosela
2020-05-23 17:08     ` Clem Cole
2020-05-23 17:22       ` Richard Salz
2020-05-23 18:42       ` Derek Fawcus
2020-05-23 19:28       ` Michael Kjörling
2020-05-26  4:21       ` Dave Horsfall
2020-05-26  4:32         ` Ed Carp
2020-05-26  8:21           ` Rob Pike
2020-05-26 14:44             ` Clem Cole
2020-05-26 14:32         ` Clem Cole
2020-05-26 19:50           ` Greg A. Woods
2020-05-26 21:48             ` Thomas Paulsen
2020-05-26 22:36               ` Greg A. Woods
2020-05-27 14:37                 ` Ronald Natalie
2020-05-27 15:09                   ` Clem Cole
2020-05-27 16:11                   ` Thomas Paulsen
2020-05-27 19:49                     ` Greg A. Woods
2020-05-27 20:13                       ` Larry McVoy
2020-05-27 20:23                         ` Richard Salz
2020-05-27 21:00                       ` Nevin Liber
2020-05-27 23:17                         ` Greg A. Woods
2020-06-05 20:57                           ` Dave Horsfall
2020-06-05 21:40                             ` Nemo Nusquam
2020-06-05 21:47                             ` Richard Salz
2020-06-05 22:01                               ` Bakul Shah
2020-06-06 20:49                   ` Ed Carp
2020-06-06 21:08                     ` Thomas Paulsen
2020-06-06 21:13                       ` Larry McVoy
2020-06-06 22:27                       ` Ed Carp
2020-06-06 23:14                         ` Tyler Adams
2020-06-07  5:57                         ` arnold
2020-06-07  9:22                           ` Andy Kosela
2020-06-07  9:39                             ` Ed Carp
2020-06-07 10:02                             ` Brantley Coile
2020-06-07 11:30                             ` Thomas Paulsen
2020-06-07 15:26                             ` Clem Cole
2020-06-07 15:52                               ` Larry McVoy
2020-06-08  1:02                                 ` Adam Thornton
2020-06-08  8:04                                   ` Thomas Paulsen
2020-06-07 17:26                               ` Bakul Shah
2020-06-07 17:35                               ` Bakul Shah
2020-06-07 18:50                               ` Nemo Nusquam
2020-06-07 21:15                                 ` Chris Torek
2020-06-07 22:16                                   ` Dan Cross
2020-06-07 22:56                                     ` Chris Torek
2020-06-08  0:24                                       ` Bram Wyllie
2020-06-08  5:48                                   ` Lars Brinkhoff
2020-06-06 23:31                     ` Bakul Shah
2020-06-07  0:12                       ` Greg A. Woods
2020-06-07 11:04                     ` emanuel stiebler
2020-06-07 11:33                       ` Thomas Paulsen
2020-05-26 15:19         ` Toby Thain
2020-05-26 16:00         ` Thomas Paulsen
2020-05-26 16:21           ` Christopher Browne
2020-05-26 19:29             ` Thomas Paulsen
2020-05-26 19:55             ` Dan Cross
2020-05-26 20:00               ` Jon Steinhart
2020-05-21 16:18 ` Jim Capp
2020-05-21 18:58 ` A. P. Garcia
2020-05-21 19:02 ` Clem Cole

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=22671.1590172811@hop.toad.com \
    --to=gnu@toad.com \
    --cc=coppero1237@gmail.com \
    --cc=jnc@mercury.lcs.mit.edu \
    --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).