|Posted by Paulo Pinto|
in reply to forkit
Posted in reply to forkit
On Friday, 19 November 2021 at 09:26:26 UTC, forkit wrote:
> On Friday, 19 November 2021 at 06:26:09 UTC, Paulo Pinto wrote:
>> On Friday, 19 November 2021 at 03:40:59 UTC, forkit wrote:
>>> On Friday, 19 November 2021 at 02:54:08 UTC, Adam D Ruppe wrote:
>>>> On Friday, 19 November 2021 at 02:36:31 UTC, forkit wrote:
>>>>> Each byte in memory has a unique address.
>>>> This is not true and has never been true, at least in the x86 world.
>>> you're conflating memory addressing in hardware, and memory addressing in software. I'm only interested in the software abstraction (and even a description of the hardware addressing is itself likely to be an abstraction).
>>> The software abstraction is the lowest level I want to go. Which is an array of addressable memory. I build on that. I don't need to go any lower.
>>> Ultimately, everything in the universe is an abstraction, at some level or another.
>> C represents the hardware, except when it does not, got it.
> C represents a workable (and portable) abstraction of hardware.
> Would you rather be programming in a language that requires you to send a command to trigger 5 volts along a specific wire, so you can read or store ... one bit? (and even that is an abstraction).
I would rather be programming in languages like Modula-2, Ada, or heck D, without the minefield that C brought into the world.
Sad historical facts, the set of languages created for system programing 10 years before C came to the world, starting with JOVIAL, do provide bounds checking by default and proper strings.
The DoD security assessent to Multics, which contrary to UNIX folkore went on and had a life, even with AT&T bailing out, was much higher than UNIX thanks to PL/I.
> Although the first edition of K&R described most of the rules that brought C's type structure to its present form, many programs written in the older, more relaxed style persisted, and so did compilers that tolerated it. To encourage people to pay more attention to the official language rules, to detect legal but suspicious constructions, and to help find interface mismatches undetectable with simple mechanisms for separate compilation, Steve Johnson adapted his pcc compiler to produce lint [Johnson 79b], which scanned a set of files and remarked on dubious constructions.
-- Dennis M. Ritchie on https://www.bell-labs.com/usr/dmr/www/chist.html
Dennis knew what he created, C advocates to this day apparently not.