Path: ...!news.nobody.at!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Kaz Kylheku <643-408-1753@kylheku.com> Newsgroups: comp.lang.c Subject: Re: technology discussion =?UTF-8?Q?=E2=86=92?= does the world need a "new" C ? Date: Mon, 8 Jul 2024 00:02:39 -0000 (UTC) Organization: A noiseless patient Spider Lines: 51 Message-ID: <20240707164747.258@kylheku.com> References: <871q48w98e.fsf@nosuchdomain.example.com> <87wmlzvfqp.fsf@nosuchdomain.example.com> <87h6d2uox5.fsf@nosuchdomain.example.com> Injection-Date: Mon, 08 Jul 2024 02:02:39 +0200 (CEST) Injection-Info: dont-email.me; posting-host="b7334c131cc9301bf72bc5f685feb065"; logging-data="580226"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+kDOdunJtlmmaf/Z/qDEuNtarcVfvuWAc=" User-Agent: slrn/pre1.0.4-9 (Linux) Cancel-Lock: sha1:xo5wvfJMf4XRBflmuTuWcUmehuA= Bytes: 3598 On 2024-07-07, James Kuyper wrote: > On 7/7/24 16:10, BGB wrote: >> On 7/7/2024 9:03 AM, James Kuyper wrote: >>> On 7/7/24 00:55, BGB wrote: >>>> On 7/6/2024 5:38 PM, Keith Thompson wrote: >>> ... >>>>> No, there is no implicitly defined pointer. >>> ... >>>> This implicit pointer need not exist at a location in memory... >>> >>> Which is why C doesn't give you access to it's location in memory - >>> something you complained about earlier. >> >> I don't think I was claiming that one should have direct access to its >> location or value within the language, rather that their existence and >> behaviors could be acknowledged in the language design (for a "not >> quite C" language). > > I think that the existence of an implicit pointer would be a bad thing > to acknowledge, given that the language doesn't require that it exist, > and typical implementations don't use them. From what I understand, the > fact that your implementation does have implicit pointers makes it a rarity. Ritchie's B language had arrays which contained a pointer to their first element. Via a hack, it was possible to relocate an array. In C, such a thing is not simply not required; it is ruled out by the detailed semantic description of arrays. The entire representation of an array of size N elements of type T is contained in the memory block that is sizeo(T)*N bytes wide. If you copy that block, you have a fully functional copy of the array. No extra pointer needs to be set up with the correct value. Furthermore, to dynamically allocate an array, you need only provide sizeof(T)*N bytes of storage, and not a bit more. There is simply nowhere in the representation of an array where a pointer could hide that is part of the representation. Code that manipulates arrays can be translated into something that calculates a pointer. So a pointer can exist at run time, in a transient way, perhaps in a register. That register can even be spilled into memory. However, that's just part of the state of an evolving calculation, not part of the representation of the array. -- TXR Programming Language: http://nongnu.org/txr Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal Mastodon: @Kazinator@mstdn.ca