groff
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: GNUism in groff tests, was: pic anomalies


From: G. Branden Robinson
Subject: Re: GNUism in groff tests, was: pic anomalies
Date: Sat, 4 Jan 2020 09:01:38 +1100
User-agent: NeoMutt/20180716

At 2020-01-03T13:21:47-0500, Mike Bianchi wrote:
> On Fri, Jan 03, 2020 at 12:45:22PM -0500, Doug McIlroy wrote:
> > >  C is one of the worst possible foundation languages conceivable for
> > > automated formal verification
> > 
> > Yet the Mars rovers run on a wholly checked code base written
> > in C, ...
> 
> I sometimes think that C would be greatly improved if it just added:
>       Strings as first-class objects
>               (instead of a collection of array side effects)

Well, as I understand "first-class"[1], we (can) already have this.
Just use structs and functions instead of array operators.  Of course
people want other things too, which is why there are many competing
implementations.

Paul Hsieh has a partisan but reasonably thoughtful and comprehensive
overview[2] of the state of affairs.

The null-terminated string type with no guarantee of null termination
was a true devil's bargain--Howard Chu has a great article on this[3].
The willful introduction of unbounded behavior, which people then took
as a design pattern to be emulated, has caused us much misery and
expense.  If I could travel back in time to the 1970s and harangue
Dennis Ritchie about just one thing, this would be it.

Sure, he might crush me with his superior intellect, but I'm accustomed
to quixotic challenges.  :P

>       Hardened memory management
>       Hardened pointer management

I'm not sure you can have one of these without the other (or, if you
can, whether there would be any point), but yes--a desire to achieve
this drove the development of Cyclone[4] which in turn influenced Rust.

Regards,
Branden

[1] I won't lie: Stack Overflow has a better definition that I could
    come up with off the cuff; mainly I was thinking of function returns
    and possibly-anonymous inline literals.

    "A first class object is an entity that can be dynamically created,
    destroyed, passed to a function, returned as a value, and have all
    the rights as other variables in the programming language have.
    Depending on the language, this can imply: being expressible as an
    anonymous literal value."

    https://stackoverflow.com/questions/245192/what-are-first-class-objects

[2] https://mike.steinert.ca/bstring/doc/md_comparisons.html
[3] https://symas.com/the-sad-state-of-c-strings/
[4] https://en.wikipedia.org/wiki/Cyclone_(programming_language)

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]