Friday, April 21, 2017

Digest for comp.lang.c++@googlegroups.com - 6 updates in 3 topics

rami17 <rami17@rami17.net>: Apr 21 12:01AM -0400

Hello...
 
 
I am actually finishing a project that is a GUI archiver that looks like
7Zip GUI archiver, it is an archiver that uses my Parallel archiver and
that supports Parallel Zstandard and Parallel LZ4 and Parallel LZMA, and
that supports windows processor groups and that works on Win32 and Win64.
 
My other projects that i have finished are actually more stable and
really fast, you can be more confident with them, please feel free to
download them from:
 
https://sites.google.com/site/aminer68/
 
 
Hope you will be happy with my Delphi and FreePascal projects !
 
 
Thank you,
Amine Moulay Ramdane.
"Alf P. Steinbach" <alf.p.steinbach+usenet@gmail.com>: Apr 21 06:28AM +0200

On 21-Apr-17 6:01 AM, rami17 wrote:
> 7Zip GUI archiver, it is an archiver that uses my Parallel archiver and
> that supports Parallel Zstandard and Parallel LZ4 and Parallel LZMA, and
> that supports windows processor groups and that works on Win32 and Win64.
 
Apparently it's this one:
 
<url: https://sites.google.com/site/aminer68/parallel-archiver>
 
Consider emphasizing the main advantages up front:
 
• Fault tolerance.
• Speed, with summary of comparative measurements.
 
I use the free 7Zip. I have (or had) a WinZip license but I just stopped
using it. Probably it became too bloated: I don't think I've had WinZip
installed on the last three laptops.
 
 
> download them from:
 
> https://sites.google.com/site/aminer68/
 
> Hope you will be happy with my Delphi and FreePascal projects !
 
Heh. It's clear you enjoy exploring parallelism issues. But I think it's
also clear that you've proved to yourself, and to clc++ denizens, again
and again, that exploration and learning is what you're doing. That
you're not producing stuff for others to use. So I think you may get
better feedback, at least in the clc++ newsgroup, if you present these
things as your exploration of issues, not as your gifts to other
programmers, and ask for feedback as a student.
 
 
Cheers!,
 
- Alf
Mark Storkamp <mstorkamp@yahoo.com>: Apr 21 12:23PM -0500

In article <odc018$e6b$4@dont-email.me>, rami17 <rami17@rami17.net>
wrote:
 
 
> My other projects that i have finished are actually more stable and
> really fast, you can be more confident with them, please feel free to
> download them from:
 
MORE stable? MORE confident with them??? If it's an archiver, then isn't
100% confidence the absolute minimum standard? (Do the twice daily
updates ever break compatibility?)
Bonita Montero <Bonita.Montero@gmail.com>: Apr 21 08:50PM +0200

> MORE stable? MORE confident with them??? If it's an archiver, then
> isn't 100% confidence the absolute minimum standard? (Do the twice
> daily updates ever break compatibility?)
 
That's Aminer. He provides bug-fixes in hourly intervals.
He seems a bit confused. Nothing someone should have to
write reliable code.
rami17 <rami17@rami17.net>: Apr 21 05:02PM -0400

Hello..
 
 
My Scalable Parallel C++ Conjugate Gradient Linear System Solver
Library for Windows and Linux was updated to version 1.64
 
I have thoroughly tested it and it is more stable and really fast.
 
You can download it from:
 
https://sites.google.com/site/aminer68/scalable-parallel-c-conjugate-gradient-linear-system-solver-library
 
 
Thank you,
Amine Moulay Ramdane.
"Alf P. Steinbach" <alf.p.steinbach+usenet@gmail.com>: Apr 21 05:02AM +0200

On 20-Apr-17 6:38 PM, Stefan Ram wrote:
 
> . For another example,
 
> auto string =( "abc"s += "def" );
> ::std::cout << string << '\n';
 
Readers might justifiably think that this can't have any practical
utility – there's always a more natural way to express whatever…
 
However, I've used it for string building in function calls, by simply
overloading `operator<<`, e.g. instead of the awkward and inefficient
 
foo( string() + "6*7 = " + to_string( 6*7 ) + "..." ); // :(
 
… or the even more awkward and more inefficient
 
ostringstream stream; // :(
stream << "6*7 = " << 6*7 << "..."; // :(
foo( stream.str() ); // :(
 
… writing just
 
foo( "6*7 = "s << 6*7 << "..." ); // Yay! :)
 
In C++03 there were no user defined literals so one had to write e.g.
`typedef String_builder S; foo( S() << "6*7 = "` ... );`. Which was ugly
& messy, though not as ugly & messy as using the standard library
directly. And now with C++11 user defined literals it's clean.
 
• • •
 
In the overloads of `<<` one needs a uniform notation for converting a
value of arbitrary type to string. In C++03 the only support from the
standard library was `std::ostringstream`, which was horribly
inefficient, relatively speaking. So in those times I defined my own
uniform notation, with `std::ostringstream` just as a generic fallback.
 
C++11 added `std::to_string`, but it lacks overloads for `std::string`
and `char const*`, and for both of these there is a show-stopper, that
one is not allowed to specialize a standard library function on a
non-user-defined type.
 
C++14 §17.6.4.2.1/2:
"A program may explicitly instantiate a template defined in the
standard library only if the declaration depends on the name of a
user-defined type and the instantiation meets the standard library
requirements for the original template."
 
… where "user defined" IMO refers to the user of the library, not
including the standard library code authors as users of C++. In order to
avoid possible clashes between different specializations. I.e. that
`std::string` is not regarded as a user defined type, in this context.
 
So even with C++11 and later one practically has to define one's own
uniform notation for conversion to string, unless one is happy with the
inefficiency of `std::ostringstream`, which is sort of absurd.
 
C++17 adds `std::to_chars`, which addresses the dynamic allocation
inefficiency, but it still does not define a uniform notation. :(
 
• • •
 
I've implemented this so many times, in slightly different ways, that
I've lost count, but it would be too much work for me (for this posting)
to find some earlier published version, e.g. posted here in clc++. The
most recent manifestation of the beast is a bit unclean in that it has a
library dependency. It's available here:
 
<ur:
https://github.com/alf-p-steinbach/Expressive-Cpp/blob/master/library_extension/string_builders.hpp>
 
It's part of my Expressive C++ experimental library, and the
dependencies of the implementation code are only on that library. Still
I think that dependency means that most readers will benefit mostly from
this as an example, a source of ideas, not as code to just copy.
 
 
Cheers!,
 
- Alf
You received this digest because you're subscribed to updates for this group. You can change your settings on the group membership page.
To unsubscribe from this group and stop receiving emails from it send an email to comp.lang.c+++unsubscribe@googlegroups.com.

No comments: