Wednesday, June 20, 2018

Digest for comp.lang.c++@googlegroups.com - 25 updates in 4 topics

"Chris M. Thomasson" <invalid_chris_thomasson@invalid.invalid>: Jun 19 06:48PM -0700

On 6/19/2018 9:42 AM, Rick C. Hodgin wrote:
 
> If you have any desire to communicate with me, and I with you, then
> remove profanity from your posts.
 
> I'm fine with your decision either way, Lew.
 
How exactly do the letters Gaak! = profanity?
"Rick C. Hodgin" <rick.c.hodgin@gmail.com>: Jun 19 09:54PM -0400

On 6/19/2018 9:48 PM, Chris M. Thomasson wrote:
> How exactly do the letters Gaak! = profanity?
 
 
How do you come into a mature thread and not read to the end before
posting a response?
 
--
Rick C. Hodgin
Joe Pfeiffer <pfeiffer@cs.nmsu.edu>: Jun 19 08:37PM -0600

> finished:
 
> While lnPass should only ever be valid, what do you think about
> a need to test the unexpected condition with the "default:" ?
 
That's how you find bugs in your code. Do it.
jameskuyper@alumni.caltech.edu: Jun 19 08:53PM -0700

On Tuesday, June 19, 2018 at 2:16:51 PM UTC-4, Rick C. Hodgin wrote:
> > to the rules of usenet etiquette about using appropriate forums to
> > discuss your religious beliefs.
 
> The things I teach people are not religion.
 
It hardly matters whether or not you acknowledge the religious nature of the beliefs you're teaching. Either way, what you are teaching is off-topic here. Even if the things you believe were true, it would still be the case that there would need to be appropriate places to discuss things other than the truth of those beliefs; places where it would, in fact, be inappropriate, and in fact, downright rude, to discuss those matters - and this is one of those places. In the real world where the truth of your beliefs is strongly disputed by many others, there definitely needs to be a place (more accurately, MANY places) where it's inappropriate to argue over the validity of such beliefs, just for the sake of the general peace.
Christian Gollwitzer <auriocus@gmx.de>: Jun 20 07:15AM +0200

Am 20.06.18 um 03:48 schrieb Chris M. Thomasson:
>> remove profanity from your posts.
 
>> I'm fine with your decision either way, Lew.
 
> How exactly do the letters Gaak! = profanity?
 
It's not the Gaak, it's the "WTF" that he has omitted from the quote
(indicated by an ellipsis). Still doesn't make sense to me to plonk
anyone because of this.
 
Strangely, he has responded to Flibble's posts afterwards, so it seems
he hasn't fulfilled has promise to plonk everybody who posts WTF.
 
WTF WTF WTF! Holy smoke! ;)
Christian
gazelle@shell.xmission.com (Kenny McCormack): Jun 20 06:16AM

In article <pgcnu6$fkp$1@dont-email.me>,
>he hasn't fulfilled has promise to plonk everybody who posts WTF.
 
>WTF WTF WTF! Holy smoke! ;)
> Christian
 
To be plonked by RCH is indeed an honor.
 
--
Nov 4, 2008 - the day when everything went
from being Clinton's fault to being Obama's fault.
gazelle@shell.xmission.com (Kenny McCormack): Jun 20 07:03AM

In article <43333e22-9a71-42d5-90f5-d7095f188753@googlegroups.com>,
>any more respect than you give to other people, and you pay no respect
>to the rules of usenet etiquette about using appropriate forums to
>discuss your religious beliefs.
 
RCH is entirely within his rights to state that unless you send him $1000,
he won't talk to you. He can make whatever conditions he likes.
 
As can you.
 
As can I.
 
Incidentally, lots of people on TV do exactly this - and people fall for
it. These people are often called "televangelists".
 
--
Atheism:
It's like being the only sober person in the car, and nobody will let you drive.
"Rick C. Hodgin" <rick.c.hodgin@gmail.com>: Jun 20 07:06AM -0400

On 6/20/2018 1:15 AM, Christian Gollwitzer wrote:
> [snip]
 
You separate yourself, Christian (and others) because you choose by
your own choices to make yourself an enemy of God by disparaging
another human being. You disrespect the one pointing you to the One
who can save your soul. You choose to reject His guidance for your
life to love one another and help one another.
 
All people were created in the image and likeness of God. But not
all people will be saved. Those who reject Him will be damned (and
to attack His creation, your fellow human beings, is to reject Him).
Those who humble themselves, repent, ask forgiveness for their sin,
they are the ones who will be saved. They are the ones who seek to
serve Him in this world, to point others to Him, to teach of His ways
so that others may hear and be saved.
 
This world is being divided into two camps: saved, unsaved. It is
becoming so very clear which side everyone is on by their actions
and choices.
 
You may think you simply "get rid of Rick" in a case like this, but
what you have really done is rid yourself of eternity. By making
the choice to disparage me, you are disparaging God (see below), and
in so doing you maintain your enemy-of-God status, unrepentant, and
literally on your way to judgment and Hellfire after you leave this
world.
 
BTW, this is not just about disparaging me, but rather doing so to
any person world-wide, for we were all created in His image:
 
https://www.biblegateway.com/passage/?search=Matthew+25%3A32-40&version=KJV
 
These things I teach ... they are not my own. I repeat His words,
and even more importantly, I point you to His words to STUDY THEM
FOR YOURSELF! I do not want or ask you to take my word for it. I
ask you to examine for yourself if what I say is true. You will
not only find it is, but you will find the source of all truth, and
the wellspring of life eternal.
 
-----
*plonk*
 
If you want to be restored, you know how to email me. I will require
no more than an apology, and the promise to not treat me with such
disrespect in the future.
 
--
Rick C. Hodgin
"Rick C. Hodgin" <rick.c.hodgin@gmail.com>: Jun 20 07:25AM -0400

> ... Either way, what you are teaching is off-topic here.
 
There's a hierarchy of authority, James. Jesus said in Matthew 28:18
that all authority in Heaven and Earth has been given Him. He then
commands us to go forth and teach all nations.
 
https://www.biblegateway.com/passage/?search=Matthew+28%3A18&version=KJV
 
18 And Jesus came and spake unto them, saying, All power is
given unto me in heaven and in earth.
19 Go ye therefore, and teach all nations, baptizing them in
the name of the Father, and of the Son, and of the Holy Ghost:
 
To bring this into our terms:
 
If you were an employee, and your co-worker or boss told you to do X,
but the president of the company told you to do Y ... what would you
do?
 
> Even if the things you believe were true, it would still be the
> case that there would need to be appropriate places to discuss
> things other than the truth of those beliefs;
 
I'm trying to teach you, James. Nobody knows when they will die.
The message is, therefore, an imperative to all people. Nobody
will enter into eternal life alive (in Heaven with God) unless they
are forgiven for their sin and born again. Only Jesus can do this,
which manes there are no inappropriate public forums to teach it.
 
I hope someday you understand this. If you do, you'll understand
why our best efforts to teach often fall on not only deaf ears,
but rebellious ears. It's because of what John 6:44 teaches below:
 
> be a place (more accurately, MANY places) where it's inappropriate
> to argue over the validity of such beliefs, just for the sake of
> the general peace.
 
I don't argue with people, James. I teach. It's up to the person
to receive it, for nobody can come to Christ unless God the Father
first draw them. It requires a movement of the spirit to bring that
new life into existence, for it is not a work of the flesh:
 
https://www.biblegateway.com/passage/?search=John+6%3A44&version=KJV
 
44 No man can come to me, except the Father which hath sent me
draw him: and I will raise him up at the last day.
 
Please consider these words. I don't write them just to espouse.
I'm trying to teach you the truth ... that you have need to be
forgiven or your entire eternal future will be horrendous for you.
 
--
Rick C. Hodgin
"Rick C. Hodgin" <rick.c.hodgin@gmail.com>: Jun 20 08:23AM -0400

On 6/19/2018 10:37 PM, Joe Pfeiffer wrote:
 
>> While lnPass should only ever be valid, what do you think about
>> a need to test the unexpected condition with the "default:" ?
 
> That's how you find bugs in your code. Do it.
 
 
That's the answer. Thank you.
 
--
Rick C. Hodgin
"Rick C. Hodgin" <rick.c.hodgin@gmail.com>: Jun 20 08:27AM -0400

On 6/20/2018 3:03 AM, Kenny McCormack wrote:
> Incidentally, lots of people on TV do exactly this - and people fall for
> it. These people are often called "televangelists".
 
God guide us to be discerning, Kenny. Those who are disciples of Christ
teach others to be the same way.
 
Not everyone who calls upon the name of the Lord will be saved, but he
who does the will of the Father, meaning they take up their cross and
follow Him daily.
 
We are servants, ambassadors, royal priests, and our mission is to go
out and teach others that they too can become servants, ambassadors,
and royal priests of Him here in this world.
 
It's a true change that's being described, Kenny. It's not religion.
It's a fundamental re-wiring from the inside out. It is literally what
Jesus calls, "Being born again."
 
You were born once into your flesh. When Jesus saves you, you are born
into spirit. You can't see the spirit, but the change is manifested in
your life by the way your insides work. You then hate the things you
used to love, and love the things you used to hate. It's a full change
of polarity. A true reversal, because the spirit seeks the things of
God, and the flesh seeks the things of this world, all of which are in
sin, and all of which lead to our soul's destruction in Hell.
 
Read John 3. You must be born again of the spirit to be saved.
 
https://www.biblegateway.com/passage/?search=John+3&version=KJV
 
If the KJV translation is too difficult to read, use a more modern
translation, but then come back to the KJV for a better translation.
 
--
Rick C. Hodgin
scott@slp53.sl.home (Scott Lurndal): Jun 20 01:01PM


>All people were created in the image and likeness of a god.
 
Actually, all people evolved from collections of amino acids. So
the rest of your thesis is null and void. Take it somewhere else.
David Brown <david.brown@hesbynett.no>: Jun 20 04:12PM +0200

On 20/06/18 14:23, Rick C. Hodgin wrote:
>>> a need to test the unexpected condition with the "default:" ?
 
>> That's how you find bugs in your code. Do it.
 
> That's the answer. Thank you.
 
It is /an/ answer - but not /the/ answer. And it is not a good answer.
 
(If my post here seems critical, it is critical of Joe's post - not yours.)
 
The best way to avoid bugs in the code is to program in a way that
reduces the likelihood of them occurring in the first place. This kind
of switch-in-a-loop is generally a poor structure to use, because it is
easy to get mixed up and write incorrect code.
 
If you can clearly see that "pass" is always valid then there is no need
for code to handle invalid values. And if you can't clearly see that
"pass" is always valid, then re-write the code until you can.
 
What you are doing here is writing code that should never be called,
which can never be tested, and /if/ something has gone wrong in the
program to give you an invalid "pass", it will cover up the problem so
you can't find it. It is /not/ "how you find bugs in your code" - it is
how you hide bugs and cause yourself bigger problems in the future.
Ben Bacarisse <ben.usenet@bsb.me.uk>: Jun 20 03:39PM +0100

>>>> a need to test the unexpected condition with the "default:" ?
 
>>> That's how you find bugs in your code. Do it.
 
>> That's the answer. Thank you.
<snip>
> program to give you an invalid "pass", it will cover up the problem so
> you can't find it. It is /not/ "how you find bugs in your code" - it is
> how you hide bugs and cause yourself bigger problems in the future.
 
I agree. The default case only exists because the structure permits the
cases to become synchronised from the loop.
 
Writing
 
// code unique to pass 1
code_common_to_all_passes(...);
// code unique to pass 2
code_common_to_all_passes(...);
// code unique to pass 3
code_common_to_all_passes(...);
 
is shorter and more explicit. If the number of passes needs to be
easily changed, I'd write
 
for (size_t n = 0; n < sizeof pass_fn/sizeof *pass_fn; n++) {
pass_fn[n](...);
// Code common to all passes goes here
// maybe still wrapped in a function.
}
 
As general rule for people starting out in programming, I'd say that
whenever you are pondering the merits of some code structure that you
are not sure about, ask yourself first if more functions would help.
 
--
Ben.
"Rick C. Hodgin" <rick.c.hodgin@gmail.com>: Jun 20 10:48AM -0400

On 6/20/2018 10:12 AM, David Brown wrote:
>>> That's how you find bugs in your code. Do it.
 
>> That's the answer. Thank you.
 
> It is /an/ answer - but not /the/ answer. And it is not a good answer.
 
I disagree. To not have that code in there introduces the possibility of
there being an unexpected error at runtime which causes a crash, and the
cause of the crash may then be unknown as it may propagate to some other
point which calls something which crashes there and you don't know the
true source or root of the issue.
 
To have the default: code in there would do very little (mildly pollute
the instruction cache with typically unused opcodes, but those could be
minimized by simply having a call instruction in there), and it would
give root diagnostic information when something goes awry.
 
I am totally on board with Joe's concept here. I think it's brilliant.
It's a correct philosophy in my judgment, and I intend to incorporate it
at all points in my development in moving forward.
 
I may even add a compiler switch to CAlive to enable this kind of auto-
identifying of unspecified code without having to type them in when some-
thing like my example (without a default:) is given, or a way to at least
catch all passes that are un-tested, such as:
 
if (a == 1) {
// code here
} else if (a == 5) {
// code here
}
 
In this case there's no else {..} block there. The switch would auto-
inject an else {..} block in there and have it call a function with
line information allowing that location to be trapped and observed.
 
It's all useful information, and it's another tool in the toolbox.
 
-----
I know you disagree. I won't debate you. It won't affect you anyway
because it's going to be in CAlive, and you'll never use CAlive ... so
don't let it bother you.
 
--
Rick C. Hodgin
Joe Pfeiffer <pfeiffer@cs.nmsu.edu>: Jun 20 09:04AM -0600

> cause of the crash may then be unknown as it may propagate to some other
> point which calls something which crashes there and you don't know the
> true source or root of the issue.
 
Note that my response was only to the question as asked, and other
people pointed out that the switch-in-a-loop is a bad idea in the first
place.
 
My response also wasn't clear enough, as it wasn't explicit enough about
what to do in the default: case. Just to make sure there's no
confusion, when I said it was a way to find bugs in your code I meant
that what should happen in that case is an error exit. It should *not*
be used (as others suggested I meant it to be used) to cover up errors.
David Brown <david.brown@hesbynett.no>: Jun 20 08:06AM +0200

On 19/06/18 22:28, Chris Vine wrote:
> Somewhat like a template function in C++ but with more boilerplate.
 
> The macros themselves would still be unhygienic but that wouldn't
> matter here.
 
By "unhygienic", do you mean they don't act like functions in the way
they handle parameters with side effects, or have multiple statements to
cause trouble in conditionals or loops without braces? No, the "max"
macro is not "unhygienic" - it is perfectly safe. It is fine to worry
about function-like macros that have risks, like the traditional C "max"
(or "MAX") macro. But labelling safe macros as "unhygienic" sounds like
prejudice.
 
(The "make_max" is a utility macro to reduce typing and the risk of
copy-and-paste errors - it is not a function-like macro.)
Chris Vine <chris@cvine--nospam--.freeserve.co.uk>: Jun 20 12:07PM +0100

On Wed, 20 Jun 2018 08:06:27 +0200
> prejudice.
 
> (The "make_max" is a utility macro to reduce typing and the risk of
> copy-and-paste errors - it is not a function-like macro.)
 
By "unhygienic" I mean that C89/90 macros (and as I understand it
from your example, also C11 macros) are "cut and paste" pre-processor
macros. Such macros systems are by definition unhygienic macro
systems. A macro system is generally called unhygienic when it does
not bind identifiers in the way that functions do: in particular when
it binds identifiers at the call site and not the definition site and
when it injects its own identifier names into the call site; in short,
when it does something at macro expansion time which could cause
identifier names to be accidentally captured or shadowed.
 
It is wrong to say that the problem arising from invoking:
 
#define max(a,b) (((a) >= (b)) ? (a) : (b))
 
with (++a,++b) arguments is due to lack of hygiene in that sense.
Instead, the lack of hygience in C macros makes it more difficult to
resolve the problem in the traditional way, by initializing local
variables at the beginning of the macro definition to simulate eager
evaluation of the arguments. The vagaries of C syntax with respect to
statement blocks also contributes to that.
 
However, not all code that unhygienic macro systems emit is unsafe.
Where they are used to construct inline functions ('make_max' in your
example), and to hand off directly to such an inline function ('max' in
your example), that usage is safe. It is safe because inline functions
are hygienic. 'max' is just the textual substitution of a function
call, so unwanted identifier capture is irrelevant. That particular use
of the macro is hygienic.
 
The only criticism of your macro that one could make is that the
the binding of the '>' operator is taken at the point at which the
'make_max' macro is called and not at the point where that macro is
defined. That is not something that would bother me. (It might bother
some who are especially firm advocates of hygienic macro systsms.)
 
In summary, all your code seems to do is to act like a template
function. That's fine.
Chris Vine <chris@cvine--nospam--.freeserve.co.uk>: Jun 20 12:17PM +0100

On Wed, 20 Jun 2018 12:07:53 +0100
Chris Vine <chris@cvine--nospam--.freeserve.co.uk> wrote:
[snip]
> 'make_max' macro is called and not at the point where that macro is
> defined. That is not something that would bother me. (It might bother
> some who are especially firm advocates of hygienic macro systsms.)
 
And of course in C, as opposed to C++, you cannot (I believe, I don't
know C as well as you) rebind operator > anyway, so it's not a problem.
David Brown <david.brown@hesbynett.no>: Jun 20 02:13PM +0200

On 20/06/18 13:07, Chris Vine wrote:
> from your example, also C11 macros) are "cut and paste" pre-processor
> macros. Such macros systems are by definition unhygienic macro
> systems.
 
All C and C++ macros are based on text substitution - "cut and paste"
macros.
 
No, that does not make them "by definition unhygienic" - at best, you
are defining "unhygienic" as "what C macros are", which is not at all
helpful.
 
> when it injects its own identifier names into the call site; in short,
> when it does something at macro expansion time which could cause
> identifier names to be accidentally captured or shadowed.
 
To me, "unhygienic" would mean there is a potential problem or hazard
with a particular macro - /not/ that all macros are "unhygienic" because
/some/ macros could have problems.
 
> are hygienic. 'max' is just the textual substitution of a function
> call, so unwanted identifier capture is irrelevant. That particular use
> of the macro is hygienic.
 
The macro "max" as I gave it is hygienic - it is safe to use in most
practical ways, similar to a function.
 
> 'make_max' macro is called and not at the point where that macro is
> defined. That is not something that would bother me. (It might bother
> some who are especially firm advocates of hygienic macro systsms.)
 
We are talking about /C/ here. Operators are "bound" when the
post-processed source is compiled.
 
I don't know what languages you have in mind with "hygienic macros", but
I think what you are talking about is "functions" or perhaps
"templates", not macros.
 
In C, there are many sorts of macros for many kinds of usage. For
function-like macros, you can divide them into two groups - "safe" ones
that treat parameters with side-effects in a similar manner to
functions, and "unsafe" ones that can cause trouble. (There is also the
issue of multi-statement macros having trouble with conditionals and
loops without braces - usually that can be avoided by the "do {} while
(0)" idiom.) If you want to call these two types of function-like
macros "hygienic" and "unhygienic", that's okay.
 
David Brown <david.brown@hesbynett.no>: Jun 20 03:57PM +0200

On 20/06/18 13:17, Chris Vine wrote:
>> some who are especially firm advocates of hygienic macro systsms.)
 
> And of course in C, as opposed to C++, you cannot (I believe, I don't
> know C as well as you) rebind operator > anyway, so it's not a problem.
 
You can't "rebind" it in C++ either - unless perhaps you mean having a
virtual operator> member for a class.
boltar@cylonHQ.com: Jun 20 08:39AM

On Tue, 19 Jun 2018 15:52:39 -0400
 
>> So fill us in on what it is you do as a job then? My guess is you don't have
>> one, you're a student.
 
>you'd be wrong and this is not about me.
 
Not willing to tell us? Unemployed maybe?
 
 
>as for win8, it flopped for a few reasons, which you don't appear to
>understand at all, ultimately forcing steve ballmer to 'retire' (aka
>fired).
 
No, it flopped for 1 reason only and that was the metro interface which was
absolutely and truly hopeless on a desktop. And while balmer ultimately
carried the can, it was that arrogant idiot sinofsky who was actually
responsible for it. At least he had the grace to resign before he was fired
too.
"Mayayana" <mayayana@invalid.nospam>: Jun 20 09:28AM -0400

<boltar@cylonHQ.com> wrote
 
| >you'd be wrong and this is not about me.
|
| Not willing to tell us? Unemployed maybe?
|
 
You don't seem to know about nospam. He's a
compulsive arguer who frequents many groups.
As long as you answer him he'll come back with
some kind of correction or disagreement.
 
Say the sky is blue and he'll say, "Not always".
Say peanut butter is high in fat and he'll say, "Idiot.
It's one of the most nutritious foods." His rebuttals
are always frivolous and combative, but usually have
enough truth in them (in some context or other)
that it appears he could possibly be a coherent
thinker.
 
There's been speculation that nospam may actually
be a bot being run by some sadistic research
psychologists studying conversation patterns, because
the rebuttals are always the same, always pointless,
usually peppered with misinformation, often just
answering back with your own statement, twisted in
some way. Yet it bears an uncanny resemblance to
reason.
 
So proceed at your own risk. And only if you have no
other plans until long after the cows come home. :)
boltar@cylonHQ.com: Jun 20 01:49PM

On Wed, 20 Jun 2018 09:28:09 -0400
> So proceed at your own risk. And only if you have no
>other plans until long after the cows come home. :)
 
Its ok, I consider winding up trolls a cybersport :)
Cholo Lennon <chololennon@hotmail.com>: Jun 20 03:00AM -0300

On 06/19/2018 03:17 PM, Lynn McGuire wrote:
> plans for his C++"
>    https://www.theregister.co.uk/2018/06/18/bjarne_stroustrup_c_plus_plus/
 
> "Language creator calls proposals 'insanity'"
 
Nice article from The Reg about BS's letter. I love C++, I've using it
since 1991, but IMHO BS comes too late with his warning... C++ is
already a monster, an unmanageable monster (really powerful and getting
better, but too big, too difficult to learn, too many gotchas, bad
tools...) :-(
 
 
--
Cholo Lennon
Bs.As.
ARG
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: