• Re: "Trip report: June 2025 ISO C++ standards meeting (Sofia, Bulgaria)

    From [email protected]@21:1/5 to All on Wed Jun 25 08:47:23 2025
    On Sun, 22 Jun 2025 19:37:39 -0500
    Lynn McGuire <[email protected]> gabbled:
    "Trip report: June 2025 ISO C++ standards meeting (Sofia, Bulgaria)" by
    Herb Sutter

    https://herbsutter.com/2025/06/21/trip-report-june-2025-iso-c-standards-meeting
    -sofia-bulgaria/

    "Today marks a turning point in C++: A few minutes ago, the C++
    committee voted the first seven (7) papers for compile-time reflection

    What for? What exactly does it bring to the table except more complexity in
    an already overcomplex language?

    into draft C++26 to several sustained rounds of applause in the room. I

    From people who really have no life.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Michael S@21:1/5 to [email protected] on Wed Jun 25 16:48:39 2025
    On Wed, 25 Jun 2025 08:47:23 -0000 (UTC)
    [email protected] wrote:

    On Sun, 22 Jun 2025 19:37:39 -0500
    Lynn McGuire <[email protected]> gabbled:
    "Trip report: June 2025 ISO C++ standards meeting (Sofia, Bulgaria)"
    by Herb Sutter

    https://herbsutter.com/2025/06/21/trip-report-june-2025-iso-c-standards-meeting
    -sofia-bulgaria/

    "Today marks a turning point in C++: A few minutes ago, the C++
    committee voted the first seven (7) papers for compile-time
    reflection

    What for? What exactly does it bring to the table except more
    complexity in an already overcomplex language?


    Ability to serialize structures (for example, to JASON or XML) in generic way.

    I didn't read the proposals, so not totally sure about it, but from
    what Herb Sutter wrote it seems that ability to de-serialize into
    arbitrary structures in generic way is not there yet, at least not
    directly, but they are laying a foundation.

    into draft C++26 to several sustained rounds of applause in the
    room. I

    From people who really have no life.


    Or may be, just may be, they found that proposals are really good?

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From [email protected]@21:1/5 to All on Wed Jun 25 14:59:27 2025
    On Wed, 25 Jun 2025 16:48:39 +0300
    Michael S <[email protected]> gabbled:
    On Wed, 25 Jun 2025 08:47:23 -0000 (UTC)
    [email protected] wrote:

    On Sun, 22 Jun 2025 19:37:39 -0500
    Lynn McGuire <[email protected]> gabbled:
    "Trip report: June 2025 ISO C++ standards meeting (Sofia, Bulgaria)"
    by Herb Sutter

    https://herbsutter.com/2025/06/21/trip-report-june-2025-iso-c-standards-meetin
    g
    -sofia-bulgaria/

    "Today marks a turning point in C++: A few minutes ago, the C++
    committee voted the first seven (7) papers for compile-time
    reflection

    What for? What exactly does it bring to the table except more
    complexity in an already overcomplex language?


    Ability to serialize structures (for example, to JASON or XML) in generic way.

    I read something about that but it made no sense to me. Seemed to be a case complex constexpr functions to do it with the fields and values hard coded (obviously or no constexpr), but like most constexpressions IME, you can just work out the result beforehand and hard code *that* instead.

    Still, if the standards committee want to make the C++ learning curve for beginners even steeper then they're going to succeed beyond their wildest dreams. No wonder a lot of CS courses ditched C++ (and to be fair Java) a long time a go and focused on Python.

    From people who really have no life.


    Or may be, just may be, they found that proposals are really good?

    And? Its no difference to accountants going to a tax conference and giving
    the latest deductable percentage reforms a standing ovation. It just says that the people doing it really have a shrunken inner life.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From [email protected]@21:1/5 to All on Wed Jun 25 15:52:36 2025
    On Wed, 25 Jun 2025 15:37:29 GMT
    [email protected] (Scott Lurndal) gabbled:
    [email protected] writes:
    On Wed, 25 Jun 2025 16:48:39 +0300
    Michael S <[email protected]> gabbled:
    On Wed, 25 Jun 2025 08:47:23 -0000 (UTC)
    [email protected] wrote:

    On Sun, 22 Jun 2025 19:37:39 -0500
    Lynn McGuire <[email protected]> gabbled:
    "Trip report: June 2025 ISO C++ standards meeting (Sofia, Bulgaria)"
    by Herb Sutter

    https://herbsutter.com/2025/06/21/trip-report-june-2025-iso-c-standards-meet
    in
    g
    -sofia-bulgaria/

    "Today marks a turning point in C++: A few minutes ago, the C++
    committee voted the first seven (7) papers for compile-time
    reflection

    What for? What exactly does it bring to the table except more
    complexity in an already overcomplex language?


    Ability to serialize structures (for example, to JASON or XML) in generic >way.

    I read something about that but it made no sense to me. Seemed to be a case >>complex constexpr functions to do it with the fields and values hard coded >>(obviously or no constexpr), but like most constexpressions IME, you can just >>work out the result beforehand and hard code *that* instead.

    Still, if the standards committee want to make the C++ learning curve for >>beginners even steeper then they're going to succeed beyond their wildest >>dreams. No wonder a lot of CS courses ditched C++ (and to be fair Java) a long

    time a go and focused on Python.

    Reflection was a useful feature in Java, I suspect that at least part
    of the rationale for the addition to C++ is to match the corresponding
    Java feature.


    https://www.oracle.com/technical-resources/articles/java/javareflection.html

    IIRC correctly the java version is runtime reflection, the C++ version will
    be compile time which is utterly pointless. If the compiler knows whats there at compile them then so do you and you can write your code accordingly.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Lurndal@21:1/5 to [email protected] on Wed Jun 25 15:37:29 2025
    [email protected] writes:
    On Wed, 25 Jun 2025 16:48:39 +0300
    Michael S <[email protected]> gabbled:
    On Wed, 25 Jun 2025 08:47:23 -0000 (UTC)
    [email protected] wrote:

    On Sun, 22 Jun 2025 19:37:39 -0500
    Lynn McGuire <[email protected]> gabbled:
    "Trip report: June 2025 ISO C++ standards meeting (Sofia, Bulgaria)"
    by Herb Sutter

    https://herbsutter.com/2025/06/21/trip-report-june-2025-iso-c-standards-meetin
    g
    -sofia-bulgaria/

    "Today marks a turning point in C++: A few minutes ago, the C++
    committee voted the first seven (7) papers for compile-time
    reflection

    What for? What exactly does it bring to the table except more
    complexity in an already overcomplex language?


    Ability to serialize structures (for example, to JASON or XML) in generic way.

    I read something about that but it made no sense to me. Seemed to be a case >complex constexpr functions to do it with the fields and values hard coded >(obviously or no constexpr), but like most constexpressions IME, you can just >work out the result beforehand and hard code *that* instead.

    Still, if the standards committee want to make the C++ learning curve for >beginners even steeper then they're going to succeed beyond their wildest >dreams. No wonder a lot of CS courses ditched C++ (and to be fair Java) a long >time a go and focused on Python.

    Reflection was a useful feature in Java, I suspect that at least part
    of the rationale for the addition to C++ is to match the corresponding
    Java feature.


    https://www.oracle.com/technical-resources/articles/java/javareflection.html

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to [email protected] on Wed Jun 25 21:03:15 2025
    On 25/06/2025 17:52, [email protected] wrote:
    On Wed, 25 Jun 2025 15:37:29 GMT
    [email protected] (Scott Lurndal) gabbled:
    [email protected] writes:
    On Wed, 25 Jun 2025 16:48:39 +0300
    Michael S <[email protected]> gabbled:
    On Wed, 25 Jun 2025 08:47:23 -0000 (UTC)
    [email protected] wrote:

    On Sun, 22 Jun 2025 19:37:39 -0500
    Lynn McGuire <[email protected]> gabbled:
    "Trip report: June 2025 ISO C++ standards meeting (Sofia, Bulgaria)" >>>>>> by Herb Sutter


    https://herbsutter.com/2025/06/21/trip-report-june-2025-iso-c-standards-meet
    in
    g
    -sofia-bulgaria/

    "Today marks a turning point in C++: A few minutes ago, the C++
    committee voted the first seven (7) papers for compile-time
    reflection

    What for? What exactly does it bring to the table except more
    complexity in an already overcomplex language?


    Ability to serialize structures (for example, to JASON or XML) in generic >> way.

    I read something about that but it made no sense to me. Seemed to be a case >>> complex constexpr functions to do it with the fields and values hard coded >>> (obviously or no constexpr), but like most constexpressions IME, you can just
    work out the result beforehand and hard code *that* instead.

    Still, if the standards committee want to make the C++ learning curve for >>> beginners even steeper then they're going to succeed beyond their wildest >>> dreams. No wonder a lot of CS courses ditched C++ (and to be fair Java) a long

    time a go and focused on Python.

    Reflection was a useful feature in Java, I suspect that at least part
    of the rationale for the addition to C++ is to match the corresponding
    Java feature.


    https://www.oracle.com/technical-resources/articles/java/javareflection.html

    IIRC correctly the java version is runtime reflection, the C++ version will be compile time which is utterly pointless. If the compiler knows whats there at compile them then so do you and you can write your code accordingly.


    I am not sure what your biggest problem is - your depressive pessimism,
    your ignorance, or your lack of imagination. Have you ever actually
    written code in C++? It is /full/ of features where the compiler knows something, and the programmer does not want to type it out manually
    every time - "auto", templates, constexpr functions, type traits, etc.
    Even C idioms like "p = malloc(100 * sizeof *p);" are asking the
    compiler to fill in something the programmer already knows.

    You complain about C++ being complex - features like reflection make it
    /less/ complex in several ways. It makes it far easier to make your own classes like tuples or variants (the std:: versions don't fit everyone).
    There are all sorts of use-cases where reflection will let you write
    simpler C++ code, or write things only once but have the information
    available in different forms (enum->string and string->enum being the
    typical example).

    And yes, you want /compile-time/ reflection in C++. You can't do
    java-style runtime reflection without a common base class, which is an
    overhead C++ thankfully does not have. But if you want run-time
    reflection in a class hierarchy, I am pretty sure it could be done using
    a virtual function in the base class, and CRTP inheritance in each
    descendant with compile-time reflection and templates in the
    implementation of the CRTP-inherited base. That kind of thing will be
    fun to try out once C++26 is more complete.

    I am certainly looking forward to reflection and contracts in C++26 -
    features that I had hoped to see long ago.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Lurndal@21:1/5 to David Brown on Wed Jun 25 20:49:00 2025
    David Brown <[email protected]> writes:
    On 25/06/2025 17:52, [email protected] wrote:
    On Wed, 25 Jun 2025 15:37:29 GMT
    [email protected] (Scott Lurndal) gabbled:

    Reflection was a useful feature in Java, I suspect that at least part
    of the rationale for the addition to C++ is to match the corresponding
    Java feature.


    https://www.oracle.com/technical-resources/articles/java/javareflection.html

    IIRC correctly the java version is runtime reflection, the C++ version will >> be compile time which is utterly pointless. If the compiler knows whats there
    at compile them then so do you and you can write your code accordingly.



    And yes, you want /compile-time/ reflection in C++. You can't do
    java-style runtime reflection without a common base class, which is an >overhead C++ thankfully does not have.

    Indeed. Although I wouldn't be surprised if Herb
    introduced the common base class idea for C++YY
    some year :-)

    But if you want run-time
    reflection in a class hierarchy, I am pretty sure it could be done using
    a virtual function in the base class, and CRTP inheritance in each
    descendant with compile-time reflection and templates in the
    implementation of the CRTP-inherited base. That kind of thing will be
    fun to try out once C++26 is more complete.

    One might even find that dynamic_cast<> provides a rather
    limited form of run-time reflection.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From [email protected]@21:1/5 to All on Thu Jun 26 08:17:55 2025
    On Wed, 25 Jun 2025 21:03:15 +0200
    David Brown <[email protected]> wibbled:
    On 25/06/2025 17:52, [email protected] wrote:
    IIRC correctly the java version is runtime reflection, the C++ version will >> be compile time which is utterly pointless. If the compiler knows whats there

    at compile them then so do you and you can write your code accordingly.


    I am not sure what your biggest problem is - your depressive pessimism,
    your ignorance, or your lack of imagination. Have you ever actually

    Can always rely on you to come out with an insult in the first few lines.
    You must be a very insecure individual.

    written code in C++? It is /full/ of features where the compiler knows >something, and the programmer does not want to type it out manually
    every time - "auto", templates, constexpr functions, type traits, etc.

    Templates save a huge amount of cut and paste and often manual code mods. constexpr's usualy return a single value that could easily be precomputed either beforehand or just put in a macro. Meanwhile "if constexpr" seems to just be a reinvention of the wheel in that the exact same can be achieved
    with template specialisation. You won't be surprised to hear I've never yet used a constexpr in any code I've written.

    Even C idioms like "p = malloc(100 * sizeof *p);" are asking the
    compiler to fill in something the programmer already knows.

    The size of p could vary on different architectures so no, thats not always
    the case.

    You complain about C++ being complex - features like reflection make it >/less/ complex in several ways. It makes it far easier to make your own

    Oh please, we hear this cretinous refrain every time they chuck in yet more semantics. I've yet to notice C++ becoming less complicated. The last genuinely useful features was shared_mutex which frankly should have been in from the start of adding threads. 3 level locking is a basic part of threading functionality.

    There are all sorts of use-cases where reflection will let you write
    simpler C++ code, or write things only once but have the information >available in different forms (enum->string and string->enum being the
    typical example).

    Feel free to provide some before and after examples of code simplified
    using it.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to [email protected] on Thu Jun 26 15:41:39 2025
    On 26/06/2025 10:17, [email protected] wrote:
    On Wed, 25 Jun 2025 21:03:15 +0200
    David Brown <[email protected]> wibbled:
    On 25/06/2025 17:52, [email protected] wrote:
    IIRC correctly the java version is runtime reflection, the C++ version will >>> be compile time which is utterly pointless. If the compiler knows whats there

    at compile them then so do you and you can write your code accordingly.


    I am not sure what your biggest problem is - your depressive pessimism,
    your ignorance, or your lack of imagination. Have you ever actually

    Can always rely on you to come out with an insult in the first few lines.
    You must be a very insecure individual.

    You made the first reply in this post with grumping, moaning and
    insulting everyone involved in the development of C++.

    It's okay for you not to like particular new features, or not to like
    C++ at all. Most C++ users only use a fraction of the language features.

    However, the C++ standards committee, and the thousands of people who contribute to proposing new features, discussing proposals, implementing
    them in compilers and libraries, and otherwise working on the language
    do so because they think the features will make the language better for
    a non-negligible proportion of users. They don't deserve your
    dismissive condemnation.

    I wonder, did you even look at the linked blog post before you decided
    it was just for "people who really have no life" ? It goes without
    saying that you didn't look at details of C++26 reflection before
    rejecting it.


    written code in C++? It is /full/ of features where the compiler knows
    something, and the programmer does not want to type it out manually
    every time - "auto", templates, constexpr functions, type traits, etc.

    Templates save a huge amount of cut and paste and often manual code mods.

    Yes.

    constexpr's usualy return a single value that could easily be precomputed either beforehand or just put in a macro.

    Constexpr data (and constexpr functions run at compile-time) return
    values that /are/ pre-computed. That's the whole point.

    How easily that is, and whether it is just one value, is another matter.
    I have certainly used them with arrays in my own code, saving
    significant effort on my part. Of course it could always have been pre-computed externally - such as a separate program that generated a
    C++ header or source file with the same information.

    Meanwhile "if constexpr" seems to
    just be a reinvention of the wheel in that the exact same can be achieved with template specialisation.

    I believe that anything that can be achieved with "if constexpr" could
    also be written using template specialisation, yes. But in more
    complicated generic code, it is much simpler and clearer to use "if
    constexpr". So it is "reinventing the wheel" in the same way that
    for-loops are reinventing the wheel in a language that has while-loops.

    You won't be surprised to hear I've never yet
    used a constexpr in any code I've written.


    I am not surprised, no. I get the impression that you stopped learning
    or thinking about anything new a couple of decades ago.

    In my work, it is always better to make the compiler work harder if it
    saves run-time effort, so I use it regularly.

    Even C idioms like "p = malloc(100 * sizeof *p);" are asking the
    compiler to fill in something the programmer already knows.

    The size of p could vary on different architectures so no, thats not always the case.

    Baring macro complications, you /always/ know the type of "p" because it
    is in code you wrote. You always know the type of "*p", and you almost
    always know the size of "*p" - code portable across different sizes of
    the most common types is rare. So why does the idiom use "sizeof *p"
    rather than, say, "sizeof(int)" when you have "int * p;" ? People use
    it because it means that there is no risk of inconsistencies, either
    when writing the code or during later maintenance. The same applies to
    using reflection - it means you don't need to re-write things yourself,
    and you won't make mistakes if there are later changes.


    You complain about C++ being complex - features like reflection make it
    /less/ complex in several ways. It makes it far easier to make your own

    Oh please, we hear this cretinous refrain every time they chuck in yet more semantics. I've yet to notice C++ becoming less complicated. The last genuinely
    useful features was shared_mutex which frankly should have been in from the start of adding threads. 3 level locking is a basic part of threading functionality.


    The C++ /language/ becomes more complicated with each revision, because backwards compatibility means existing features are left even when
    better alternatives come along. The point is to make the /code/ less complicated.

    So when concepts were added, the language became more complex. But code
    that previously used complicated "enable_if" clauses could be written in
    a clearer manner. Adding "explicit" conversion operators made the
    language more complex - but it meant people could write safe boolean conversions without ridiculous complicated code. Reflection complicates
    the language - I know without doubt that I can use it at times to
    simplify some of my code.

    There are all sorts of use-cases where reflection will let you write
    simpler C++ code, or write things only once but have the information
    available in different forms (enum->string and string->enum being the
    typical example).

    Feel free to provide some before and after examples of code simplified
    using it.


    You could start by looking at the proposal paper.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From [email protected]@21:1/5 to All on Thu Jun 26 16:05:47 2025
    On Thu, 26 Jun 2025 15:41:39 +0200
    David Brown <[email protected]> wibbled:
    On 26/06/2025 10:17, [email protected] wrote:
    Can always rely on you to come out with an insult in the first few lines.
    You must be a very insecure individual.

    You made the first reply in this post with grumping, moaning and
    insulting everyone involved in the development of C++.

    Where did I "insult everyone"? And normal people know there's a big difference between criticising an organisation and doing it to a specific individual. Apart from you that is Mr Aspie.

    However, the C++ standards committee, and the thousands of people who >contribute to proposing new features, discussing proposals, implementing
    them in compilers and libraries, and otherwise working on the language
    do so because they think the features will make the language better for
    a non-negligible proportion of users. They don't deserve your
    dismissive condemnation.

    Wheres my violin when I need it...

    I wonder, did you even look at the linked blog post before you decided
    it was just for "people who really have no life" ? It goes without
    saying that you didn't look at details of C++26 reflection before
    rejecting it.

    Its no different to the gormless idiots who applaud like demented seals at corporate promo gigs when the CEO comes out holding the latest gizmo thats slightly different to the last one but twice the price.

    constexpr's usualy return a single value that could easily be precomputed
    either beforehand or just put in a macro.

    Constexpr data (and constexpr functions run at compile-time) return
    values that /are/ pre-computed. That's the whole point.

    The "whole point" is its a lot simpler code and less complicated if you
    just hard code the damn value. Or would you suggest that instead of just writing 3.14159... a constexpr should go work it out first?

    complicated generic code, it is much simpler and clearer to use "if >constexpr". So it is "reinventing the wheel" in the same way that

    Not if you're already using templates anyway it isn't.

    for-loops are reinventing the wheel in a language that has while-loops.

    Where are the init and loop sections in a while construct?

    I am not surprised, no. I get the impression that you stopped learning
    or thinking about anything new a couple of decades ago.

    A wrong impression, but no surprise really.

    In my work, it is always better to make the compiler work harder if it
    saves run-time effort, so I use it regularly.

    At the expense of a more complicated codebase which no doubt maintenance
    coders down the line will thank you for. They'll realise how important the
    5 mins of your life you saved working out value manually and just plugging it in was for you.

    The size of p could vary on different architectures so no, thats not always >> the case.

    Baring macro complications, you /always/ know the type of "p" because it
    is in code you wrote. You always know the type of "*p", and you almost

    So what size is "int" then?

    The C++ /language/ becomes more complicated with each revision, because >backwards compatibility means existing features are left even when
    better alternatives come along. The point is to make the /code/ less >complicated.

    If only one day they might succeed. We can hope.

    Feel free to provide some before and after examples of code simplified
    using it.


    You could start by looking at the proposal paper.

    I've looked at a number of tentative examples of the new feature. The code looked an utter mess.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From candycanearter07@21:1/5 to David Brown on Thu Jun 26 16:00:07 2025
    David Brown <[email protected]> wrote at 19:03 this Wednesday (GMT): [snip]
    You complain about C++ being complex - features like reflection make it /less/ complex in several ways. It makes it far easier to make your own classes like tuples or variants (the std:: versions don't fit everyone).
    There are all sorts of use-cases where reflection will let you write simpler C++ code, or write things only once but have the information available in different forms (enum->string and string->enum being the
    typical example).

    Templates? I really like those.

    [snip]
    --
    user <candycane> is generated from /dev/urandom

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to wij on Fri Jun 27 10:53:19 2025
    On 27/06/2025 06:56, wij wrote:

    The problem of 'new' C++ is that rare real innovation but lots about specific kinds of functions that are already covered by various kinds of libraries.... C++ seems mostly interested in making existing technique convenient and 'only'
    dealing with 'small' (or part of) problems (e.g. avoiding to deal with graphics
    or provide basic facilities).
    But, nothing in all is actually wrong with the above, if C++ is 'in developing'.


    I think it is a good thing that the language is making existing
    techniques and code more convenient - that's better for the developer
    writing source code and/or more efficient for the run-time code.

    But C++ has also evolved to allow very different kinds of techniques.
    From C++11 onwards, it has changed from being "safer C with classes"
    into a language with increasing support for functional programming
    styles (lambdas, ranges), more generic programming (auto, more
    templates), compile-time programming (constexpr, consteval),
    requirements specifications (concepts, static assertions),
    multi-threading (threads, locks), asynchronous programming (coroutines),
    etc.

    C++26 continues that trend - improving a number of existing techniques,
    and adding significant new ones (reflection and contracts).

    You are right that it does not tackle the "big" things like graphics
    libraries. Attempts to add networking have stalled AFAIUI. In
    comparison to, say, Python, the standard library is much smaller.

    I think this is, for the most part, fine. I don't believe C++ should
    have these things in its standard library. Python can have these,
    because Python is already huge and works on only a small number of
    platforms - basically, *nix and Win32/Win64. C++ needs to be useable on
    a very much wider range of platforms now and in the future. How can you
    have a truly portable networking standard library in C++ when there are
    dozens of networking stacks in use? How can you have a standard
    graphics library for C++ when there are hundreds of graphics libraries
    used by C++ programmers, some of which are orders of magnitude bigger development projects than current standard C++?

    From the users' viewpoint, having more "big" features in a standard
    library for a language can often be a good thing. I think there could
    be a lot of benefits from a repository project for quality
    cross-platform libraries for C++. Boost is the nearest we have, but it
    is under-funded, inconsistent, poorly maintained, has jumbled
    dependencies, and poor quality control. A real solution here would take considerable financial backing, because it would be a huge amount of work.



    Duplicates are no good to portability, reusability....


    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From [email protected]@21:1/5 to All on Fri Jun 27 12:21:07 2025
    On Fri, 27 Jun 2025 12:56:17 +0800
    wij <[email protected]> wibbled:
    On Thu, 2025-06-26 at 15:41 +0200, David Brown wrote:
    dealing with 'small' (or part of) problems (e.g. avoiding to deal with grap= >hics=20
    or provide basic facilities).

    A multi platform language has no business having something like graphics built in. There are too many variations on different systems and some don't have graphics at all. Also unless you release a new version of C++ everytime eg NVidia updates the Cuda functionality then you'll have to use libraries anyway.

    IMO C++ should never have included threads because the original model was
    a half arsed implementation probably skewed towards Windows rather than unix and now there's the inconsistency of C++ natively supporting multithreading
    but not multiprocess.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to wij on Sat Jun 28 17:09:34 2025
    On 28/06/2025 09:16, wij wrote:
    On Fri, 2025-06-27 at 10:53 +0200, David Brown wrote:
    On 27/06/2025 06:56, wij wrote:

    The problem of 'new' C++ is that rare real innovation but lots about specific
    kinds of functions that are already covered by various kinds of libraries....
    C++ seems mostly interested in making existing technique convenient and 'only'
    dealing with 'small' (or part of) problems (e.g. avoiding to deal with graphics
    or provide basic facilities).
    But, nothing in all is actually wrong with the above, if C++ is 'in developing'.


    I think it is a good thing that the language is making existing
    techniques and code more convenient - that's better for the developer
    writing source code and/or more efficient for the run-time code.

    But C++ has also evolved to allow very different kinds of techniques.
     From C++11 onwards, it has changed from being "safer C with classes"
    into a language with increasing support for functional programming
    styles (lambdas, ranges), more generic programming (auto, more
    templates), compile-time programming (constexpr, consteval),
    requirements specifications (concepts, static assertions),
    multi-threading (threads, locks), asynchronous programming (coroutines),
    etc.

    C++26 continues that trend - improving a number of existing techniques,
    and adding significant new ones (reflection and contracts).

    What about if I say those many (not all) are 'programming style', ie. C++ invents 'standard' programming style while its propaganda says C++ is a "multi-lingual" language?

    I'm sorry, I don't understand what you are trying to say here. I think
    the term commonly used is "programming paradigm" - where "imperative", "generic", "functional", "object oriented", etc., are "paradigms". And sometimes within a single language, these are referred to as
    "programming styles". Often the use of these terms, and the
    distinctions between them, are somewhat artificial.

    My point is just that C++ has evolved to let you write code in
    significantly different ways. If those other ways work better for the
    problem you are trying to solve, then that's a good thing. If they
    don't, then feel free to ignore them in your code.


    You are right that it does not tackle the "big" things like graphics
    libraries.  Attempts to add networking have stalled AFAIUI.  In
    comparison to, say, Python, the standard library is much smaller.

    I think this is, for the most part, fine.  I don't believe C++ should
    have these things in its standard library.  Python can have these,
    because Python is already huge and works on only a small number of
    platforms - basically, *nix and Win32/Win64.  C++ needs to be useable on
    a very much wider range of platforms now and in the future.  How can you
    have a truly portable networking standard library in C++ when there are
    dozens of networking stacks in use?  How can you have a standard
    graphics library for C++ when there are hundreds of graphics libraries
    used by C++ programmers, some of which are orders of magnitude bigger
    development projects than current standard C++?

     From the users' viewpoint, having more "big" features in a standard
    library for a language can often be a good thing.  I think there could
    be a lot of benefits from a repository project for quality
    cross-platform libraries for C++.  Boost is the nearest we have, but it
    is under-funded, inconsistent, poorly maintained, has jumbled
    dependencies, and poor quality control.  A real solution here would take
    considerable financial backing, because it would be a huge amount of work.

    There could be 'standard way' of programming for some well defined applications
    (but, why not inventing it earlier?).
    C++ seems developing toward supporting specific applications directly, and steering away from system programming (it is not easy for C++ to write
    system programs like 'cp', merely copying files correctly and safer on a platform). I just don't know what the C++ std-lib aims for.


    I disagree. C++ can be, and is, used for a wide variety of different
    kinds of programming. Not all aspects of the language and standard
    library and suitable for all kinds of programming, naturally.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From [email protected]@21:1/5 to All on Sat Jun 28 15:37:17 2025
    On Sat, 28 Jun 2025 14:58:26 +0800
    wij <[email protected]> gabbled:
    On Fri, 2025-06-27 at 12:21 +0000, [email protected] wrote:
    A multi platform language has no business having something like graphics = >built
    in. There are too many variations on different systems and some don't hav= >e
    graphics at all. Also unless you release a new version of C++ everytime e= >g
    NVidia updates the Cuda functionality then you'll have to use libraries a= >nyway.

    There are various level of 'graphics'.
    The point is a 'C++ graphics' so that a C++ program can draw Shape (as C++ = >demo
    its OO capability). It would be just like cout, you don't need to worry abo= >ut
    what the low level stuff is.

    "Just draw" the shape where? In the console using text characters? In the desktop background? In a window? What creates the window for you and what properties will it have?

    I'm guessing you've never done graphics programming. You might as well
    suggest C++ has built in sound.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to wij on Sat Jun 28 21:11:58 2025
    On 28/06/2025 19:24, wij wrote:
    On Sat, 2025-06-28 at 17:09 +0200, David Brown wrote:
    On 28/06/2025 09:16, wij wrote:
    On Fri, 2025-06-27 at 10:53 +0200, David Brown wrote:
    On 27/06/2025 06:56, wij wrote:

    The problem of 'new' C++ is that rare real innovation but lots about specific
    kinds of functions that are already covered by various kinds of libraries....
    C++ seems mostly interested in making existing technique convenient and 'only'
    dealing with 'small' (or part of) problems (e.g. avoiding to deal with graphics
    or provide basic facilities).
    But, nothing in all is actually wrong with the above, if C++ is 'in developing'.


    I think it is a good thing that the language is making existing
    techniques and code more convenient - that's better for the developer
    writing source code and/or more efficient for the run-time code.

    But C++ has also evolved to allow very different kinds of techniques.
      From C++11 onwards, it has changed from being "safer C with classes" >>>> into a language with increasing support for functional programming
    styles (lambdas, ranges), more generic programming (auto, more
    templates), compile-time programming (constexpr, consteval),
    requirements specifications (concepts, static assertions),
    multi-threading (threads, locks), asynchronous programming (coroutines), >>>> etc.

    C++26 continues that trend - improving a number of existing techniques, >>>> and adding significant new ones (reflection and contracts).

    What about if I say those many (not all) are 'programming style', ie. C++ >>> invents 'standard' programming style while its propaganda says C++ is a
    "multi-lingual" language?

    I'm sorry, I don't understand what you are trying to say here.  I think
    the term commonly used is "programming paradigm" - where "imperative",
    "generic", "functional", "object oriented", etc., are "paradigms".  And
    sometimes within a single language, these are referred to as
    "programming styles".  Often the use of these terms, and the
    distinctions between them, are somewhat artificial.

    My point is just that C++ has evolved to let you write code in
    significantly different ways.  If those other ways work better for the
    problem you are trying to solve, then that's a good thing.  If they
    don't, then feel free to ignore them in your code.


    But I think "one language suits all" (multi-paradigm) is a problematic ideal. It is like the idea of 'universal compiler'.


    "One language suits all" and "multi-paradigm" are /completely/ different concepts. Saying C++ is "one language that suits all" is like saying
    everyone should drive a Toyota Corolla - that one car will suit
    everyone. Saying C++ is "multi-paradigm" is like saying a Toyota RAV4
    is good for town driving, long distance car vacations, and pulling a
    horse box.

    No one, AFAIK, has ever suggested that C++ is suitable for all tasks,
    much less a language that suits all people. It covers a wider range of
    tasks than most languages, but very far from all.

    But there is no doubt that it is a multi-paradigm language. And there
    is no doubt that some people choose to write C++ code that is imperative
    (like C with stronger types and namespaces), most use object oriented programming to some extent (though many have very simple hierarchies),
    many will do a bit of generic programming. Some people like functional
    style with lambdas and ranges, but many do not.

    There are limitations to supporting all this. The syntax for some
    features can be awkward, and the implementations can be less efficient
    or less flexible than a more dedicated language of that paradigm. If
    you want to do serious function programming, you are better off with a functional programming language - but if you think that part of your C++
    code could be better expressed in a functional style, then use that.
    (People do the same with Python.)

    I would measure 'multi-paradigm' this way:
    Easier to program: Yes or no (increasing complexity)
    Easier to understand: ditto (probably yes for documentation)
    Less error prone: ditto
    Less codes: yes (the lean side is more 'abstract')
    maintenance: ???
    debug: should be harder
    ...

    Most design decisions in most languages are tradeoffs, with their pros
    and cons. You only need to look at the size of the C++ standard to see
    the major downside - it is a big, complex language, and there are many
    gotchas. If you don't think it is worth it, use a different language
    (and that includes earlier C++ standards as an option - most toolchains continue to support older versions of C++).

    Conclusion: What all the efforts are for? Seems only good for experenced user.

    Certainly some parts of C++ are primarily used in code by very
    experienced users. But that's okay. Let the more dedicated "C++
    wizards" write the code for implementing std::vector<> and the rest.
    Let /them/ worry about how move semantics work, and when different type
    traits are needed. The rest of us can reap the benefits when we /use/
    these classes, without having to understand the details.


    But yes, you are right, I only use those parts that suit 'my standard'.
    The conseqences are other people's codes are less useful for me (vise versa). Then this is a point: Program communication, 23n share,..


    When people write modular code, it's okay that different people use
    different language features to get the best implementation of their
    part. With a big program, you don't expect to understand all of it.
    This is normal for programming - even if you stick to a relatively small language like C.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From [email protected]@21:1/5 to All on Sun Jun 29 07:46:43 2025
    On Sat, 28 Jun 2025 19:10:19 -0700
    "Chris M. Thomasson" <[email protected]> wibbled:
    On 6/28/2025 10:06 AM, wij wrote:
    Nope, because "..There are too many variations on different systems and some >don't have..."?



    Made me think of printf("Hello"), can show rendered glyph's on a
    console? Them be Graphics.... lol. ;^)

    Except all desktop OSs have a default text console output. Perhaps the OP would like to suggest where his supposed shape would be drawn on an X windows
    system. Which server, desktop and window and if its a remote X server what
    IP address. Clearly he has zero clue about graphics but just wanted to sound smart. Sadly for him it had the opposite effect.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From [email protected]@21:1/5 to All on Sun Jun 29 07:42:29 2025
    On Sun, 29 Jun 2025 01:06:48 +0800
    wij <[email protected]> wibbled:
    On Sat, 2025-06-28 at 15:37 +0000, [email protected] wrote:
    properties will it have?=20
    I'm guessing you've never done graphics programming. You might as well=
    =20
    suggest C++ has built in sound.

    Why not, if a C++ book demonstrated an example:

    int main() {
    utter << "Hellow, world";
    };

    Oh, so not just sound but speech synthesis! Obviously trivial to implement,
    why don't you go and do it?

    Nope, because "..There are too many variations on different systems and som= >e don't have..."?

    Linux doesn't have a standard built in speech synthesiser. What would you suggest speaks the words? Or is that a load of having wavey stuff that is Someone Elses Problem, you just want the praise for coming up with the incredibly original idea, right?

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From [email protected]@21:1/5 to All on Sun Jun 29 16:05:07 2025
    On Sun, 29 Jun 2025 19:40:16 +0800
    wij <[email protected]> gabbled:
    On Sun, 2025-06-29 at 07:42 +0000, [email protected] wrote:
    Oh, so not just sound but speech synthesis! Obviously trivial to implemen= >t,
    why don't you go and do it?

    I had designed and built a sound car. I have all the ability to implement w= >hat
    I want. But all are not trivial to me.

    Huh?

    Linux doesn't have a standard built in speech synthesiser. What would you
    suggest speaks the words? Or is that a load of having wavey stuff that is
    Someone Elses Problem, you just want the praise for coming up with the=
    =20
    incredibly original idea, right?

    Speech synthesizer already existed 35 years ago on PC-XT+DOS which only=C2= >=A0
    equipped with a buzzer (can only produce '1/0' sound).
    There are many know-how there. Yes, your doubt is confirmed that you are id= >iot.

    Speech synthesisers existed in the 70s in the Speak and Spell toy, whats
    your point? Its quite clear you don't even understand the problem.

    A clue for you. The two-state buzzer can be programmed to simulate analog s= >ound
    (bad quality) You know C/C++ does not mean you can really do programming.

    "Duh, I can make sound, duh, C++ should just make sound, duh"

    Its not 1985 any more idiot with you writing 16 bit real mode assembler
    sending I/O to a PC speaker from DOS. You can't just talk to the sound
    hardware direct with Windows, Mac and Linux, it has to do through the OS and that requires configuration and setup in the program requiring access, something you're apparently completely unaware of. The same applies to graphics. Now why don't you go find a time machine, come forward 40 years to 2025 then get yourself a clue.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From [email protected]@21:1/5 to All on Mon Jun 30 07:34:54 2025
    On Mon, 30 Jun 2025 01:59:58 +0800
    wij <[email protected]> wibbled:
    On Sun, 2025-06-29 at 16:05 +0000, [email protected] wrote:
    something you're apparently completely unaware of. The same applies to=
    =20
    graphics. Now why don't you go find a time machine, come forward 40 years=
    to
    2025 then get yourself a clue.

    I can write a speech synthesizer 'utter', like bellow, to say "Hellow, worl= >d".
    (Honest, this one would take time for now)

    int main() {
    utter << "Hellow, world";
    };

    So "I could write a library to do speech synthesis" becomes "it should be
    built into the language". Right, ok. How would the setup work then, give some examples?

    I can write a program like below that paint an image and draw a cross.
    Most importantly, no graphics library is compiled and needed in the source= >=C2=A0
    (all source is pretty much what the several lines shown).

    int main() {
    Image imgfile(..);
    Display disp(..);

    Oh right, the magic "...", lets not worry about the details yeah? So will your version of the compiler come with Xlib built in then? Or maybe Wayland API?
    Do let us know. Also how will your "..." cope with all the different parameters required for different OS's but yet keep the code portable?

    disp << imgfile;
    disp << "line(100,200,200,300),line(100,300,200,100),..";

    A string? Are you sure you actually know any C++?

    What you can do? just mouth -> Oh, not in OS1, OS2,...OS100. Or C/C++,Pytho= >n,C#,
    Java,Go,Dust,... have no such thing, non-standard ABC,... Or that need OS/ >hardware/BIOS... support,..too complicated... (pretending very knowledgeabl=

    Dust?

    Re Java , you do realise its an abstracted language and the JVM does all
    the interfacing with the OS?

    e).=20
    Finally, 'we' don't need graphics/sound library in C++ !!!

    You said built into the language, not a library.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From [email protected]@21:1/5 to All on Mon Jun 30 15:42:47 2025
    On Mon, 30 Jun 2025 21:56:41 +0800
    wij <[email protected]> wibbled:
    On Mon, 2025-06-30 at 07:34 +0000, [email protected] wrote:
    So "I could write a library to do speech synthesis" becomes "it should be
    built into the language". Right, ok. How would the setup work then, give = >some
    examples?

    It looks? I saved too many typing of keyboard.

    So you can't. Thanks for playing.

    I read the post twice to figure out your post is loser's trolling.
    Those who know C++ programming should already get the idea.
    I am not wasting my time with idiot. Go home and learn more.

    Must be Hypocrite Day again.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)