• Re: C structure portability, naughty Python

    From John Levine@3:633/10 to All on Fri Jan 2 18:26:19 2026
    According to John Ames <commodorejohn@gmail.com>:
    No. You simply used *casting* .

    k=*(int *)(buffer +4) etc etc.

    You do have to be careful with this as it's not guaranteed that the
    compiler won't take liberties in arranging members of a struct for >optimization purposes, ...

    No, the C Standard says:

    Within a structure object, the non-bit-field members and the units in which bit-fields
    reside have addresses that increase in the order in which they are declared.

    There can be bits of padding to get fields aligned as needed, but no reordering.
    It is pretty common to use structure declarations with common fields at the front to do varriant records.

    --
    Regards,
    John Levine, johnl@taugh.com, Primary Perpetrator of "The Internet for Dummies",
    Please consider the environment before reading this e-mail. https://jl.ly

    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From c186282@3:633/10 to All on Fri Jan 2 15:08:47 2026
    On 1/2/26 13:26, John Levine wrote:
    According to John Ames <commodorejohn@gmail.com>:
    No. You simply used *casting* .

    k=*(int *)(buffer +4) etc etc.

    You do have to be careful with this as it's not guaranteed that the
    compiler won't take liberties in arranging members of a struct for
    optimization purposes, ...

    No, the C Standard says:

    Within a structure object, the non-bit-field members and the units in which bit-fields
    reside have addresses that increase in the order in which they are declared.

    There can be bits of padding to get fields aligned as needed, but no reordering.
    It is pretty common to use structure declarations with common fields at the front to do varriant records.

    Hmmm ... with arrays of simple types you can
    advance the pointer by 'x' and get the 'x'-th
    element. In theory you can manually peek 'x'
    (times type) bytes ahead in memory too.

    Is that not for-sure correct with variant records ?


    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From John Levine@3:633/10 to All on Fri Jan 2 20:32:53 2026
    It appears that c186282 <c186282@nnada.net> said:
    On 1/2/26 13:26, John Levine wrote:
    No, the C Standard says:

    Within a structure object, the non-bit-field members and the units in which bit-fields
    reside have addresses that increase in the order in which they are declared.

    There can be bits of padding to get fields aligned as needed, but no reordering.
    It is pretty common to use structure declarations with common fields at the >> front to do varriant records.

    Hmmm ... with arrays of simple types you can
    advance the pointer by 'x' and get the 'x'-th
    element. In theory you can manually peek 'x'
    (times type) bytes ahead in memory too.

    Is that not for-sure correct with variant records ?

    C doesn't have variant records, but you can fake them with structures with common initial fields. The different structures can be different sizes
    so the usual approach is to malloc() them one at a time and use a pointer to it.

    As bonus confusion, C allows the last field in a structure to be an array of unspecified size, e.g.

    struct countedstring {
    int length;
    char data[];
    };

    Then for a string of innitialized from srcstring you'd say something like:

    struct countedstring *p = malloc(sizeof(struct countedstring) + strlen(srcstring));
    length = nchars;
    memcpy((void *)p->data, (void *)srcstring, strlen(srcstring));




    --
    Regards,
    John Levine, johnl@taugh.com, Primary Perpetrator of "The Internet for Dummies",
    Please consider the environment before reading this e-mail. https://jl.ly

    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From John Levine@3:633/10 to All on Fri Jan 2 22:41:42 2026
    According to Lawrence D?Oliveiro <ldo@nz.invalid>:
    On Fri, 2 Jan 2026 08:49:25 -0800, John Ames wrote:

    ... it's not guaranteed that the compiler won't take liberties in
    arranging members of a struct for optimization purposes ...

    The C23 spec (section 6.2.5, ?Types?) does say the member objects of a
    struct type need to be ?sequentially allocated?.

    That language has been there a long time. It's in my copy of C11 and it
    wasn't new then. It's probably always been there since we wrote code
    that used the common struct prefix hack in K&R C.

    --
    Regards,
    John Levine, johnl@taugh.com, Primary Perpetrator of "The Internet for Dummies",
    Please consider the environment before reading this e-mail. https://jl.ly

    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From John Ames@3:633/10 to All on Fri Jan 2 15:44:23 2026
    On Fri, 2 Jan 2026 22:41:42 -0000 (UTC)
    John Levine <johnl@taugh.com> wrote:

    ... it's not guaranteed that the compiler won't take liberties in
    arranging members of a struct for optimization purposes ...

    The C23 spec (section 6.2.5, ?Types?) does say the membe
    r objects of
    a struct type need to be ?sequentially allocated?.

    That language has been there a long time. It's in my copy of C11 and
    it wasn't new then. It's probably always been there since we wrote
    code that used the common struct prefix hack in K&R C.

    I went to check and, lo, it's in the C89 spec as well; as was already
    indicated by Lawrence, I must've been thinking of compilers inserting
    padding for alignment purposes. Which does raise the same basic concern
    (the block of memory allocated to a struct is not *necessarily* a 1:1 concatenation of its members, and casting pointers between different
    data structures should be done with caution,) but my recollection was
    evidently in need of clarification.


    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From John Levine@3:633/10 to All on Sat Jan 3 02:47:23 2026
    According to rbowman <bowman@montana.com>:
    On Fri, 2 Jan 2026 20:32:53 -0000 (UTC), John Levine wrote:

    C doesn't have variant records, but you can fake them with structures
    with common initial fields. The different structures can be different
    sizes so the usual approach is to malloc() them one at a time and use a
    pointer to it.

    Another approach is to have a struct containing union of structs with a
    flag in the top level struct indicating which child struct to use in the >union. The structs in the union can also have unions so you can build a
    real octopus.

    That works but the union is the size of the largest struct so it can waste
    a lot of space compared to allocating each struct's actual size. I realize this doesn't work for arrays of structs or unions, but it works fine for
    arrays of pointers to them.

    --
    Regards,
    John Levine, johnl@taugh.com, Primary Perpetrator of "The Internet for Dummies",
    Please consider the environment before reading this e-mail. https://jl.ly

    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Chris Ahlstrom@3:633/10 to All on Sat Jan 3 07:03:38 2026
    John Levine wrote this post by blinking in Morse code:

    According to rbowman <bowman@montana.com>:
    On Fri, 2 Jan 2026 20:32:53 -0000 (UTC), John Levine wrote:

    C doesn't have variant records, but you can fake them with structures
    with common initial fields. The different structures can be different
    sizes so the usual approach is to malloc() them one at a time and use a
    pointer to it.

    Another approach is to have a struct containing union of structs with a >>flag in the top level struct indicating which child struct to use in the >>union. The structs in the union can also have unions so you can build a >>real octopus.

    That works but the union is the size of the largest struct so it can waste
    a lot of space compared to allocating each struct's actual size. I realize this doesn't work for arrays of structs or unions, but it works fine for arrays of pointers to them.

    I once created an audio playback app with class hierarchies in C, rather
    than C++. It was an interesting experiment, and it worked. But
    that's the last time I tried that.

    --
    Try not to have a good time ... This is supposed to be educational.
    -- Charles Schulz

    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Scott Lurndal@3:633/10 to All on Sat Jan 3 18:32:53 2026
    John Levine <johnl@taugh.com> writes:
    It appears that c186282 <c186282@nnada.net> said:
    On 1/2/26 13:26, John Levine wrote:
    No, the C Standard says:

    Within a structure object, the non-bit-field members and the units in which bit-fields
    reside have addresses that increase in the order in which they are declared.

    There can be bits of padding to get fields aligned as needed, but no reordering.
    It is pretty common to use structure declarations with common fields at the >>> front to do varriant records.

    Hmmm ... with arrays of simple types you can
    advance the pointer by 'x' and get the 'x'-th
    element. In theory you can manually peek 'x'
    (times type) bytes ahead in memory too.

    Is that not for-sure correct with variant records ?

    C doesn't have variant records, but you can fake them with structures with >common initial fields. The different structures can be different sizes
    so the usual approach is to malloc() them one at a time and use a pointer to it.

    As bonus confusion, C allows the last field in a structure to be an array of >unspecified size, e.g.

    struct countedstring {
    int length;
    char data[];
    };

    Then for a string of innitialized from srcstring you'd say something like:

    struct countedstring *p = malloc(sizeof(struct countedstring) + strlen(srcstring));
    length = nchars;
    memcpy((void *)p->data, (void *)srcstring, strlen(srcstring));

    A particularly useful paradigm with network-style packets, where you have
    one (or more) fixed headers followed by a variable amount of data.

    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Chris Ahlstrom@3:633/10 to All on Sun Jan 4 06:42:21 2026
    rbowman wrote this post by blinking in Morse code:

    On Sat, 3 Jan 2026 07:03:38 -0500, Chris Ahlstrom wrote:

    I once created an audio playback app with class hierarchies in C, rather
    than C++. It was an interesting experiment, and it worked. But that's
    the last time I tried that.

    A class is a glorified struct. I remember heated discussions at one of the Boston Computer Society's meeting before 'C++' became a name about 'C with Classes' and whether a new language was needed.

    C++ is wayyyyy beyond C w/classes now. Example: templates,
    promises, futures, and a greatly expanded Standard Library (e.g.
    the <random> functions)..

    'C with Classes' is now a derogatory term that describes the sort of C++ I write. Charles Petzhold has written a number of books on programming for Windows. He has an intense dislike for C++ so if you can track down some
    of the first editions of 'Programming Windows' they are all C. The 6th edition was C# which he said was what should have been all along.

    Does Petzhold still have the Windows tattoo? :-D

    I was on a project where I had to use C#. Not bad, but I got a
    good laugh at things like the "using" kludge to mimic the
    exception-safety of C++ and that classes are always passed by
    reference even though the function call looks like passing a
    value.

    The C approach was educational since it exposed some of the magic lke vtables, and the magical 'this' is only another parameter passed in the first location.

    Python's "self".

    --
    Violence stinks, no matter which end of it you're on. But now and then
    there's nothing left to do but hit the other person over the head with a
    frying pan. Sometimes people are just begging for that frypan, and if we weaken for a moment and honor their request, we should regard it as
    impulsive philanthropy, which we aren't in any position to afford, but shouldn't regret it too loudly lest we spoil the purity of the deed.
    -- Tom Robbins

    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Carlos E.R.@3:633/10 to All on Sun Jan 4 15:14:30 2026
    On 2026-01-03 20:43, rbowman wrote:
    On Sat, 3 Jan 2026 07:03:38 -0500, Chris Ahlstrom wrote:

    I once created an audio playback app with class hierarchies in C, rather
    than C++. It was an interesting experiment, and it worked. But that's
    the last time I tried that.

    A class is a glorified struct. I remember heated discussions at one of the Boston Computer Society's meeting before 'C++' became a name about 'C with Classes' and whether a new language was needed.

    'C with Classes' is now a derogatory term that describes the sort of C++ I write. Charles Petzhold has written a number of books on programming for Windows. He has an intense dislike for C++ so if you can track down some
    of the first editions of 'Programming Windows' they are all C. The 6th edition was C# which he said was what should have been all along.

    What's the difference between C++ and C#? (I don't know how to pronounce
    that one).


    --
    Cheers, Carlos.
    ES??, EU??;

    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Chris Ahlstrom@3:633/10 to All on Sun Jan 4 09:43:40 2026
    Carlos E.R. wrote this post by blinking in Morse code:

    On 2026-01-03 20:43, rbowman wrote:
    On Sat, 3 Jan 2026 07:03:38 -0500, Chris Ahlstrom wrote:

    I once created an audio playback app with class hierarchies in C, rather >>> than C++. It was an interesting experiment, and it worked. But that's
    the last time I tried that.

    A class is a glorified struct. I remember heated discussions at one of the >> Boston Computer Society's meeting before 'C++' became a name about 'C with >> Classes' and whether a new language was needed.

    'C with Classes' is now a derogatory term that describes the sort of C++ I >> write. Charles Petzhold has written a number of books on programming for
    Windows. He has an intense dislike for C++ so if you can track down some
    of the first editions of 'Programming Windows' they are all C. The 6th
    edition was C# which he said was what should have been all along.

    What's the difference between C++ and C#? (I don't know how to pronounce that one).

    C-sharp. (Get it? Get it?)

    AI Overview

    C++ and C# are both derived from the C language family but
    target different programming needs:

    C++ offers high performance and low-level hardware control,
    making it ideal for systems programming and game engines,
    while C# provides a managed, higher-level environment for
    easier and faster development of web, desktop, and mobile
    applications

    Kind of analogous to C++ versus Java.

    I don't really agree that C# is easier. You still have to develop
    a mental model of the language and master adjunct frameworks like
    .NET.

    --
    Q: How much does it cost to ride the Unibus?
    A: 2 bits.

    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Charlie Gibbs@3:633/10 to All on Sun Jan 4 19:41:11 2026
    On 2026-01-04, Chris Ahlstrom <OFeem1987@teleworm.us> wrote:

    I don't really agree that C# is easier. You still have to develop
    a mental model of the language and master adjunct frameworks like
    .NET.

    Does C# qualify as a Microsoft proprietary language?
    Or are there implementations on OSes other than Windows
    (and compilers, either open source or available from
    other vendors)?

    --
    /~\ Charlie Gibbs | Growth for the sake of
    \ / <cgibbs@kltpzyxm.invalid> | growth is the ideology
    X I'm really at ac.dekanfrus | of the cancer cell.
    / \ if you read it the right way. | -- Edward Abbey

    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Lawrence D?Oliveiro@3:633/10 to All on Sun Jan 4 21:17:05 2026
    On Sun, 4 Jan 2026 15:14:30 +0100, Carlos E.R. wrote:

    What's the difference between C++ and C#? (I don't know how to
    pronounce that one).

    It?s spelled ?C#?, but it?s pronounced ?C??.

    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Chris Ahlstrom@3:633/10 to All on Mon Jan 5 07:07:27 2026
    rbowman wrote this post by blinking in Morse code:

    On Sun, 4 Jan 2026 21:17:05 -0000 (UTC), Lawrence D?Oliveiro wrote:

    On Sun, 4 Jan 2026 15:14:30 +0100, Carlos E.R. wrote:

    What's the difference between C++ and C#? (I don't know how to
    pronounce that one).

    It?s spelled ?C#?, but it?s pronounced ?C??.

    For once sanity prevailed and they didn't use a character that would have been a pain in the ass evermore.

    Except in a shell script :-D

    --
    For the fashion of Minas Tirith was such that it was built on seven levels, each delved into a hill, and about each was set a wall, and in each wall
    was a gate.
    -- J.R.R. Tolkien, "The Return of the King"

    [Quoted in "VMS Internals and Data Structures", V4.4, when
    referring to system overview.]


    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Carlos E.R.@3:633/10 to All on Mon Jan 5 13:25:51 2026
    On 2026-01-04 15:43, Chris Ahlstrom wrote:
    Carlos E.R. wrote this post by blinking in Morse code:

    On 2026-01-03 20:43, rbowman wrote:
    On Sat, 3 Jan 2026 07:03:38 -0500, Chris Ahlstrom wrote:

    I once created an audio playback app with class hierarchies in C, rather >>>> than C++. It was an interesting experiment, and it worked. But that's
    the last time I tried that.

    A class is a glorified struct. I remember heated discussions at one of the >>> Boston Computer Society's meeting before 'C++' became a name about 'C with >>> Classes' and whether a new language was needed.

    'C with Classes' is now a derogatory term that describes the sort of C++ I >>> write. Charles Petzhold has written a number of books on programming for >>> Windows. He has an intense dislike for C++ so if you can track down some >>> of the first editions of 'Programming Windows' they are all C. The 6th
    edition was C# which he said was what should have been all along.

    What's the difference between C++ and C#? (I don't know how to pronounce
    that one).

    C-sharp. (Get it? Get it?)

    Mmm... no, I don't think I get it. Maybe something cultural in it.


    AI Overview

    C++ and C# are both derived from the C language family but
    target different programming needs:

    C++ offers high performance and low-level hardware control,
    making it ideal for systems programming and game engines,
    while C# provides a managed, higher-level environment for
    easier and faster development of web, desktop, and mobile
    applications

    Kind of analogous to C++ versus Java.

    I don't really agree that C# is easier. You still have to develop
    a mental model of the language and master adjunct frameworks like
    .NET.


    Ok :-)

    --
    Cheers, Carlos.
    ES??, EU??;

    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Carlos E.R.@3:633/10 to All on Mon Jan 5 13:31:17 2026
    On 2026-01-05 04:09, rbowman wrote:
    On Sun, 04 Jan 2026 19:41:11 GMT, Charlie Gibbs wrote:

    On 2026-01-04, Chris Ahlstrom <OFeem1987@teleworm.us> wrote:

    I don't really agree that C# is easier. You still have to develop a
    mental model of the language and master adjunct frameworks like .NET.

    Does C# qualify as a Microsoft proprietary language?
    Or are there implementations on OSes other than Windows (and compilers,
    either open source or available from other vendors)?

    https://www.mono-project.com/

    Sort of... Using the dotnet sdk on Windows or Linux is sort of like
    using venv in Python or the express generator with node/express.

    dotnet new console -n world

    creates a new console application in the 'world' directory with the
    director structure and a very minimalist Program.cs with

    Console.WriteLine("Hello, World!");

    dotnet build followed by

    $ dotnet run
    Hello, World!

    works. Packages are added with Nuget, which is like npm or pip.

    https://www.nuget.org/

    It's free and open source but the entire ecosystem uses the .NET
    terminology. I doubt anyone who has no experience developing on Windows
    is going to pick C#. It's not that different from Java except it was initially a Windows only language and not sold as cross platform, run anywhere, from the beginning.

    Then that is why I am not familiar with it.

    --
    Cheers, Carlos.
    ES??, EU??;

    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Carlos E.R.@3:633/10 to All on Mon Jan 5 13:37:11 2026
    On 2026-01-04 20:48, rbowman wrote:
    On Sun, 4 Jan 2026 15:14:30 +0100, Carlos E.R. wrote:

    On 2026-01-03 20:43, rbowman wrote:
    On Sat, 3 Jan 2026 07:03:38 -0500, Chris Ahlstrom wrote:

    I once created an audio playback app with class hierarchies in C,
    rather than C++. It was an interesting experiment, and it worked. But
    that's the last time I tried that.

    A class is a glorified struct. I remember heated discussions at one of
    the Boston Computer Society's meeting before 'C++' became a name about
    'C with Classes' and whether a new language was needed.

    'C with Classes' is now a derogatory term that describes the sort of
    C++ I write. Charles Petzhold has written a number of books on
    programming for Windows. He has an intense dislike for C++ so if you
    can track down some of the first editions of 'Programming Windows' they
    are all C. The 6th edition was C# which he said was what should have
    been all along.

    What's the difference between C++ and C#? (I don't know how to pronounce
    that one).

    C Sharp. In the late '90s Microsoft released Visual J++, their implementation of Java. I still have the media with an IDE similar to
    Visual Studio. It was quite nice but did not meet Sun's purity test so Sun sued Microsoft.

    C# was released in the early 2000s, with Hejlsberg as the principal
    designer.

    https://en.wikipedia.org/wiki/Anders_Hejlsberg

    He'd also developed J++ so C# incorporated the lessons learned from that
    as well as C++. I don't really like C++ and find C# a lot better for
    Windows programming. Mono was an early attempt to make it cross platform
    and is still around. The alternative is to install the .NET SDK.

    https://learn.microsoft.com/en-us/dotnet/core/install/linux

    That includes the csc compiler:

    $ csc
    Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc) Copyright (C) Microsoft Corporation. All rights reserved.

    On Linux the ability to build GUIs has been problematic. There i a Gtk# library but I've never used it.

    https://www.mono-project.com/docs/gui/gtksharp/

    You can do both console and ASP .NET backend apps. For kicks, I did a
    command line app to download information from the iTunes database in
    Python and C#. The syntax differs of course but the complexity is very similar compared to doing it in C or C++.

    Since csc emits an IL that depends on the framework runtime by passing
    flags you can build Linux packages on Windows and vice versa. You can also target ARM devices.

    https://learn.microsoft.com/en-us/dotnet/iot/deployment

    MS managed to create more confusion that normal. .NET Framework was the standard runtime on Windows boxes. The .NET Core project was aimed at
    cross platform solutions and had its own numbering so .NET Core 3.x was contemporaneous with .NET Framework 4.7x. At that point they decided Core was the future so .NET 5.0 was .NET Core with .NET Framework 4.8 being
    the last of what everone called .NET. .NET 10 is the current release.


    So mostly a M$ thing, at the time I was not involved with M$, so that's
    why I am not familiar with it. My profesional programming reached till
    W95, so Pascal, C, Basic, and a tiny bit of asm. Not necessarily in that order.

    --
    Cheers, Carlos.
    ES??, EU??;

    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Scott Lurndal@3:633/10 to All on Mon Jan 5 15:47:56 2026
    "Carlos E.R." <robin_listas@es.invalid> writes:
    On 2026-01-04 15:43, Chris Ahlstrom wrote:
    Carlos E.R. wrote this post by blinking in Morse code:


    What's the difference between C++ and C#? (I don't know how to pronounce >>> that one).

    C-sharp. (Get it? Get it?)

    Mmm... no, I don't think I get it. Maybe something cultural in it.

    In musical notation the '#' indicates a half-step up (sharp) and
    a 'b' indicates a half step down (flat).


    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From John Ames@3:633/10 to All on Mon Jan 5 09:20:34 2026
    On Sun, 4 Jan 2026 09:43:40 -0500
    Chris Ahlstrom <OFeem1987@teleworm.us> wrote:

    What's the difference between C++ and C#? (I don't know how to
    pronounce that one).

    C-sharp. (Get it? Get it?)

    The impish might prefer "C-hash" ;P


    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Niklas Karlsson@3:633/10 to All on Mon Jan 5 18:10:08 2026
    On 2026-01-05, John Ames <commodorejohn@gmail.com> wrote:
    On Sun, 4 Jan 2026 09:43:40 -0500
    Chris Ahlstrom <OFeem1987@teleworm.us> wrote:

    What's the difference between C++ and C#? (I don't know how to
    pronounce that one).

    C-sharp. (Get it? Get it?)

    The impish might prefer "C-hash" ;P

    C-pound, because of what it makes you want to do with your head against
    a wall?

    Niklas
    --
    Which brings up an important BOFHly question: How do you go about pissing on the
    grave of someone whose ashes were buried at sea? Taking a whiz off the end of the pier just isn't satisfying enough.
    -- Brian Kantor

    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Scott Lurndal@3:633/10 to All on Mon Jan 5 18:13:02 2026
    John Ames <commodorejohn@gmail.com> writes:
    On Sun, 4 Jan 2026 09:43:40 -0500
    Chris Ahlstrom <OFeem1987@teleworm.us> wrote:

    What's the difference between C++ and C#? (I don't know how to
    pronounce that one).

    C-sharp. (Get it? Get it?)

    The impish might prefer "C-hash" ;P


    Surely it would be "C-octothorpe"?

    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Charlie Gibbs@3:633/10 to All on Mon Jan 5 18:16:31 2026
    On 2026-01-05, John Ames <commodorejohn@gmail.com> wrote:

    On Sun, 4 Jan 2026 09:43:40 -0500
    Chris Ahlstrom <OFeem1987@teleworm.us> wrote:

    What's the difference between C++ and C#? (I don't know how to
    pronounce that one).

    C-sharp. (Get it? Get it?)

    The impish might prefer "C-hash" ;P

    C-pound, C-octothorpe...

    --
    /~\ Charlie Gibbs | Growth for the sake of
    \ / <cgibbs@kltpzyxm.invalid> | growth is the ideology
    X I'm really at ac.dekanfrus | of the cancer cell.
    / \ if you read it the right way. | -- Edward Abbey

    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From John Ames@3:633/10 to All on Mon Jan 5 11:05:12 2026
    On Sat, 3 Jan 2026 07:03:38 -0500
    Chris Ahlstrom <OFeem1987@teleworm.us> wrote:

    I once created an audio playback app with class hierarchies in C,
    rather than C++. It was an interesting experiment, and it worked. But
    that's the last time I tried that.

    Yeah, I've long thought something like that would be an interesting exercise...but then I have to ask myself whether it'd be worth the
    trouble in anything I'm actually *doing.*


    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Lawrence D?Oliveiro@3:633/10 to All on Mon Jan 5 21:45:25 2026
    On Mon, 5 Jan 2026 13:25:51 +0100, Carlos E.R. wrote:

    Carlos E.R. wrote this post by blinking in Morse code:

    What's the difference between C++ and C#? (I don't know how to
    pronounce that one).

    C-sharp. (Get it? Get it?)

    Mmm... no, I don't think I get it. Maybe something cultural in it.

    I keep reading it as ?C-hash? ... as in ?making a hash of C? ...

    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Lawrence D?Oliveiro@3:633/10 to All on Mon Jan 5 21:45:57 2026
    On 5 Jan 2026 18:10:08 GMT, Niklas Karlsson wrote:

    C-pound ...

    ?Cœ??

    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Niklas Karlsson@3:633/10 to All on Mon Jan 5 23:28:43 2026
    On 2026-01-05, Lawrence D?Oliveiro <ldo@nz.invalid> wrote:
    On 5 Jan 2026 18:10:08 GMT, Niklas Karlsson wrote:

    C-pound ...

    ?Cœ??

    # is often spoken as "pound" in the USA. Notably when instructing
    someone to enter things on a phone keypad.

    Niklas
    --
    This year's Corporate Technology Expo was no different than the ones for years previous. [...] The scene was a three-hour, seemingly unending procession of PowerPoint slides with enough laser pointers to take down an incoming ICBM.
    -- http://thedailywtf.com/Articles/MUMPS-Madness.aspx

    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Lawrence D?Oliveiro@3:633/10 to All on Tue Jan 6 00:14:49 2026
    On 5 Jan 2026 23:28:43 GMT, Niklas Karlsson wrote:

    On 2026-01-05, Lawrence D?Oliveiro <ldo@nz.invalid> wrote:

    On 5 Jan 2026 18:10:08 GMT, Niklas Karlsson wrote:

    C-pound ...

    ?Cœ??

    # is often spoken as "pound" in the USA. Notably when instructing
    someone to enter things on a phone keypad.

    I have no idea why.

    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Charlie Gibbs@3:633/10 to All on Tue Jan 6 00:23:56 2026
    On 2026-01-06, Lawrence D?Oliveiro <ldo@nz.invalid> wrote:

    On 5 Jan 2026 23:28:43 GMT, Niklas Karlsson wrote:

    On 2026-01-05, Lawrence D?Oliveiro <ldo@nz.invalid> wrote:

    On 5 Jan 2026 18:10:08 GMT, Niklas Karlsson wrote:

    C-pound ...

    ?Cœ??

    # is often spoken as "pound" in the USA. Notably when instructing
    someone to enter things on a phone keypad.

    I have no idea why.

    In days of yore, "#" was often used by dealers in bulk products
    as an abbreviation for pounds weight. For instance, a sack of
    chicken feed might consist of "50# laying mash".

    --
    /~\ Charlie Gibbs | Growth for the sake of
    \ / <cgibbs@kltpzyxm.invalid> | growth is the ideology
    X I'm really at ac.dekanfrus | of the cancer cell.
    / \ if you read it the right way. | -- Edward Abbey

    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Lawrence D?Oliveiro@3:633/10 to All on Tue Jan 6 00:57:38 2026
    On Tue, 06 Jan 2026 00:23:56 GMT, Charlie Gibbs wrote:

    On 2026-01-06, Lawrence D?Oliveiro <ldo@nz.invalid> wrote:

    On 5 Jan 2026 23:28:43 GMT, Niklas Karlsson wrote:

    On 2026-01-05, Lawrence D?Oliveiro <ldo@nz.invalid> wrote:

    On 5 Jan 2026 18:10:08 GMT, Niklas Karlsson wrote:

    C-pound ...

    ?Cœ??

    # is often spoken as "pound" in the USA. Notably when instructing
    someone to enter things on a phone keypad.

    I have no idea why.

    In days of yore, "#" was often used by dealers in bulk products as
    an abbreviation for pounds weight. For instance, a sack of chicken
    feed might consist of "50# laying mash".

    Most of us used ?lb?.

    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Chris Ahlstrom@3:633/10 to All on Tue Jan 6 06:21:36 2026
    Niklas Karlsson wrote this post by blinking in Morse code:

    On 2026-01-05, Lawrence D?Oliveiro <ldo@nz.invalid> wrote:
    On 5 Jan 2026 18:10:08 GMT, Niklas Karlsson wrote:

    C-pound ...

    ?Cœ??

    # is often spoken as "pound" in the USA. Notably when instructing
    someone to enter things on a phone keypad.

    Call Morgan & Morgan! #LAW!

    C-hashtag!

    --
    #OBBO

    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Scott Lurndal@3:633/10 to All on Tue Jan 6 15:29:57 2026
    Lawrence =?iso-8859-13?q?D=FFOliveiro?= <ldo@nz.invalid> writes:
    On 5 Jan 2026 23:28:43 GMT, Niklas Karlsson wrote:

    On 2026-01-05, Lawrence D?Oliveiro <ldo@nz.invalid> wrote:

    On 5 Jan 2026 18:10:08 GMT, Niklas Karlsson wrote:

    C-pound ...

    ?Cœ??

    # is often spoken as "pound" in the USA. Notably when instructing
    someone to enter things on a phone keypad.

    I have no idea why.

    That's not surprising.

    Give me 10# of potatoes, please.

    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From John Ames@3:633/10 to All on Tue Jan 6 08:14:14 2026
    On 6 Jan 2026 06:24:00 GMT
    rbowman <bowman@montana.com> wrote:

    In days of yore, "#" was often used by dealers in bulk products as
    an abbreviation for pounds weight. For instance, a sack of chicken
    feed might consist of "50# laying mash".

    Most of us used ?lb?.

    https://en.wikipedia.org/wiki/Number_sign#Usage

    "When ?#? is after a number, it is read as "pound" or "po
    unds",
    meaning the unit of weight.[54][55] The text "5# bag of flour" would
    mean "five- pound bag of flour". This is rare outside North America."

    Most of us don't live in New Zealand.

    That's been obscure even in the US for many a year, frankly - but the
    legacy pronunciation of # survives to this day.


    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Charlie Gibbs@3:633/10 to All on Tue Jan 6 18:57:03 2026
    On 2026-01-06, John Ames <commodorejohn@gmail.com> wrote:

    On 6 Jan 2026 06:24:00 GMT
    rbowman <bowman@montana.com> wrote:

    In days of yore, "#" was often used by dealers in bulk products as
    an abbreviation for pounds weight. For instance, a sack of chicken
    feed might consist of "50# laying mash".

    Most of us used ?lb?.

    https://en.wikipedia.org/wiki/Number_sign#Usage

    "When ?#? is after a number, it is read as "pound" or "pounds",
    meaning the unit of weight.[54][55] The text "5# bag of flour" would
    mean "five- pound bag of flour". This is rare outside North America."

    Most of us don't live in New Zealand.

    That's been obscure even in the US for many a year, frankly - but the
    legacy pronunciation of # survives to this day.

    I suspect that this is because "pound" is (at least somewhat)
    easier and faster to pronounce than the others. As we all know,
    convenience trumps just about everything else - remember the
    "baud" vs "bps" confusion.

    --
    /~\ Charlie Gibbs | Growth for the sake of
    \ / <cgibbs@kltpzyxm.invalid> | growth is the ideology
    X I'm really at ac.dekanfrus | of the cancer cell.
    / \ if you read it the right way. | -- Edward Abbey

    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From John Ames@3:633/10 to All on Tue Jan 6 11:03:04 2026
    On Tue, 06 Jan 2026 18:57:03 GMT
    Charlie Gibbs <cgibbs@kltpzyxm.invalid> wrote:

    That's been obscure even in the US for many a year, frankly - but
    the legacy pronunciation of # survives to this day.

    I suspect that this is because "pound" is (at least somewhat)
    easier and faster to pronounce than the others. As we all know,
    convenience trumps just about everything else - remember the
    "baud" vs "bps" confusion.

    Seems plausible - may also have to do with phone-tree systems and how intelligible "hash" is or isn't over a muffled line, vs. a word that
    begins and ends with hard consonants.


    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Charlie Gibbs@3:633/10 to All on Wed Jan 7 06:33:45 2026
    On 2026-01-06, John Ames <commodorejohn@gmail.com> wrote:

    On Tue, 06 Jan 2026 18:57:03 GMT
    Charlie Gibbs <cgibbs@kltpzyxm.invalid> wrote:

    That's been obscure even in the US for many a year, frankly - but
    the legacy pronunciation of # survives to this day.

    I suspect that this is because "pound" is (at least somewhat)
    easier and faster to pronounce than the others. As we all know,
    convenience trumps just about everything else - remember the
    "baud" vs "bps" confusion.

    Seems plausible - may also have to do with phone-tree systems and how intelligible "hash" is or isn't over a muffled line, vs. a word that
    begins and ends with hard consonants.

    I hadn't thought of that angle. Indeed, aeronautical radio
    phraseology has evolved to deal with just that sort of problem.

    --
    /~\ Charlie Gibbs | Growth for the sake of
    \ / <cgibbs@kltpzyxm.invalid> | growth is the ideology
    X I'm really at ac.dekanfrus | of the cancer cell.
    / \ if you read it the right way. | -- Edward Abbey

    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From The Natural Philosopher@3:633/10 to All on Wed Jan 7 09:48:29 2026
    On 06/01/2026 18:57, Charlie Gibbs wrote:
    remember the
    "baud" vs "bps" confusion.
    IIRC the are not , strictly, the same thing...

    --
    It is the folly of too many to mistake the echo of a London coffee-house
    for the voice of the kingdom.

    Jonathan Swift



    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From John Ames@3:633/10 to All on Wed Jan 7 09:00:57 2026
    On Wed, 07 Jan 2026 06:33:45 GMT
    Charlie Gibbs <cgibbs@kltpzyxm.invalid> wrote:

    Seems plausible - may also have to do with phone-tree systems and
    how intelligible "hash" is or isn't over a muffled line, vs. a word
    that begins and ends with hard consonants.

    I hadn't thought of that angle. Indeed, aeronautical radio
    phraseology has evolved to deal with just that sort of problem.

    Many's the time I've had to resort to the NATO phonetic alphabet when
    trying to get a customer to type something in over the phone.


    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Chris Ahlstrom@3:633/10 to All on Wed Jan 7 12:23:02 2026
    John Ames wrote this post by blinking in Morse code:

    On Wed, 07 Jan 2026 06:33:45 GMT
    Charlie Gibbs <cgibbs@kltpzyxm.invalid> wrote:

    Seems plausible - may also have to do with phone-tree systems and
    how intelligible "hash" is or isn't over a muffled line, vs. a word
    that begins and ends with hard consonants.

    I hadn't thought of that angle. Indeed, aeronautical radio
    phraseology has evolved to deal with just that sort of problem.

    Many's the time I've had to resort to the NATO phonetic alphabet when
    trying to get a customer to type something in over the phone.

    Like "It all went tango uniform"? A real "charlie foxtrot"?

    --
    Rincewind had generally been considered by his tutors to be a natural wizard
    in the same way that fish are natural mountaineers. He probably would have been thrown out of Unseen University anyway--he couldn't remember spells and smoking made him feel ill.
    -- Terry Pratchett, "The Light Fantastic"

    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Niklas Karlsson@3:633/10 to All on Wed Jan 7 20:55:50 2026
    On 2026-01-07, John Ames <commodorejohn@gmail.com> wrote:

    Many's the time I've had to resort to the NATO phonetic alphabet when
    trying to get a customer to type something in over the phone.

    I use it habitually, if I'm speaking English. But with a slight
    modification: "S for sugar". I found that no matter how much I
    emphasized siERRa, they nonetheless put Z for zero.

    Niklas
    --
    [It] contains "vegetable stabilizer" which sounds ominous. How unstable are vegetables?
    -- Jeff Zahn

    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Charlie Gibbs@3:633/10 to All on Thu Jan 8 04:57:24 2026
    On 2026-01-07, rbowman <bowman@montana.com> wrote:

    On Wed, 7 Jan 2026 09:48:29 +0000, The Natural Philosopher wrote:

    On 06/01/2026 18:57, Charlie Gibbs wrote:

    remember the "baud" vs "bps" confusion.

    IIRC the are not , strictly, the same thing...

    My point exactly.

    They usually were back in the 1200 baud days. Then things got
    complicated.

    Not even then. When I got my first 1200-bps modem, my .sig
    block said, "600 baud and proud of it!" When I moved up to
    a 2400-bps modem, that statement still applied.

    --
    /~\ Charlie Gibbs | Growth for the sake of
    \ / <cgibbs@kltpzyxm.invalid> | growth is the ideology
    X I'm really at ac.dekanfrus | of the cancer cell.
    / \ if you read it the right way. | -- Edward Abbey

    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Carlos E.R.@3:633/10 to All on Thu Jan 8 14:01:45 2026
    On 2026-01-07 18:23, Chris Ahlstrom wrote:
    John Ames wrote this post by blinking in Morse code:

    On Wed, 07 Jan 2026 06:33:45 GMT
    Charlie Gibbs <cgibbs@kltpzyxm.invalid> wrote:

    Seems plausible - may also have to do with phone-tree systems and
    how intelligible "hash" is or isn't over a muffled line, vs. a word
    that begins and ends with hard consonants.

    I hadn't thought of that angle. Indeed, aeronautical radio
    phraseology has evolved to deal with just that sort of problem.

    Many's the time I've had to resort to the NATO phonetic alphabet when
    trying to get a customer to type something in over the phone.

    Like "It all went tango uniform"? A real "charlie foxtrot"?


    I tried to use that over the years several times here, but nobody
    understands it, unless they are HAMs or aviators. I have to use a local variant based in the name of the provinces of Spain.

    --
    Cheers, Carlos.
    ES??, EU??;

    --- PyGate Linux v1.5.2
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)