Sunday, August 30, 2020

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

boltar@nuttyella.co.uk: Aug 30 04:04PM

On Sat, 29 Aug 2020 18:48:53 +0000 (UTC)
 
>Suppose you only show every 24th frame of the movie at 1-second intervals.
>Which means the movie is now 1 Hz. Rather obviously you will see huge
>jumps every second, when the camera pans horizontally.
 
Thats not the kind of jerkiness I was talking about which if you had half
a working braincell you'd have understood. When an HD video codec can't keep up
with movement, particularly panning, you often see very noticable jerking that
is unconnected to and much lower than the framerate. Presumably its playing
catchup everytime a full frame is sent in the stream rather than a difference
frame.
Stephen Fuld <sfuld@alumni.cmu.edu.invalid>: Aug 30 09:56AM -0700

On 8/29/2020 10:31 AM, David Brown wrote:
 
> I have only heard of this in America, where large bundles of cash
> apparently don't cause the same concern to the authorities as they would
> in many places in Europe.
 
I did a little searching research. No, the authorities in America do
care, but there is apparently a loop hole.
 
https://money.usnews.com/banking/articles/if-you-deposit-a-lot-of-cash-does-your-bank-report-it-to-the-government
 
If an individual deposits $10,000 or more, or even makes a series of
deposits totaling that much during a reasonable amount of time, the bank
does report it to the IRS (part of the US Treasury Department). This
even applies to things like money orders, etc.
 
But the "loop hole" is that this isn't done for business. The reason
for that is to not cause problems for those small businesses such as
food trucks, small restaurants, barber shops, hair and nail salons, etc.
that routinely accept cash for small retail services, and might easily
want to deposit that much cash over a modest amount of time. In those
cases, the business itself is required by law to report the deposits.
The problem occurs, of course, if the business breaks the law and
doesn't report it. And a "business", whose real purpose is breaking the
law anyway, wouldn't care about breaking another one. :-(
 
I suppose there are ways to fix this, but apparently none have been
tried, or if tried haven't worked. :-(
 
 
 
> the USA - who are legally entitled to pay by cash if they want. When
> the shop buys cables from the manufacturer in Mexico, it can use normal
> international bank transfers, because all the money is now "clean".
 
 
Yes, I get all that. I'm sorry if I messed up the terminology in
previous posts and caused confusion.
 
 
 
--
- Stephen Fuld
(e-mail address disguised to prevent spam)
Juha Nieminen <nospam@thanks.invalid>: Aug 30 05:11PM

> Thats not the kind of jerkiness I was talking about which if you had half
> a working braincell you'd have understood.
 
Notice how you are the only one here throwing insults at people.
 
I wonder why that is.
"Öö Tiib" <ootiib@hot.ee>: Aug 30 11:01AM -0700

On Sunday, 30 August 2020 20:11:21 UTC+3, Juha Nieminen wrote:
> > a working braincell you'd have understood.
 
> Notice how you are the only one here throwing insults at people.
 
> I wonder why that is.
 
People who try to pointlessly insult or belittle others do it usually
because of inferiority complex and a lack of self-respect.
David Brown <david.brown@hesbynett.no>: Aug 30 10:03PM +0200

On 30/08/2020 18:56, Stephen Fuld wrote:
> law anyway, wouldn't care about breaking another one.  :-(
 
> I suppose there are ways to fix this, but apparently none have been
> tried, or if tried haven't worked.  :-(
 
Generally with loopholes there is always someone interested in having
the loopholes remain. (Although I suppose the old maxim about "never
attribute to malice that which can equally well be explained by
incompetence" might also apply.)
 
>> international bank transfers, because all the money is now "clean".
 
> Yes, I get all that.  I'm sorry if I messed up the terminology in
> previous posts and caused confusion.
 
No problem. I think it's fair to say (or at least hope) that this is
not a topic many of us here (me included) know much about, or need to
know much about.
Stefan Monnier <monnier@iro.umontreal.ca>: Aug 30 05:44PM -0400

> Given the human eye generally only notices flicker below about 30hz any
> greater refresh rate is simply game developer willy waving.
 
That reminds me of the "vision boosters": that's how we used to call some
popular hazelnut cookies (https://produits.migros.ch/batons-aux-noisettes)
back in my undergrad computer lab, because they made you "see faster".
 
More specifically, being pretty hard cookies, when you ate them while
staring at the (CRT) screen of our beloved DEC Alpha workstations you'd
notice the "tearing" of the 60Hz (or was it 70Hz?) redraw.
 
 
Stefan
olcott <NoOne@NoWhere.com>: Aug 30 01:55PM -0500

The end goal of this sequence of posts is to show that the basic "C"
programming language (without the "C" libraries) can be fully mapped to
an abstract model of computation that is equivalent to a Turing machine
in such a way that any Turing complete computation can be written in the
"C" programming language.
 
When "C" is mapped to an abstract model of computation that can provide
an arbitrary number of arbitrary length linked lists, then "C" acquires
Turing complete memory access. This is computationally the same as
providing "C" with an unlimited number of Turing machine tapes.
 
When we define this abstract memory access such that it can be
concretely implemented on machines with finite memory and this concrete
implementation automatically scales to any increase in physical memory
then the memory access aspect of the concrete implementation is
computationally identical to the abstract Turing complete machine.
 
Such a virtual machine would provide Turing complete memory access to
"C" because the memory access aspect would behave exactly the same
across the Turing complete abstract machine and the concrete machine for
all computations not requiring more memory than the concrete machine has.
 
The virtual machine code that the "C" programs would be translated into
would be a Turing equivalent language. Thus the machine description
language would have identical execution on the concrete physical machine
as it would on the abstract Turing equivalent machine.
 
The input, output, state changes, and moves of the Tape head would be
identical between the two machines for any computation not requiring
more memory that the physical machine actually has.
 
 
--
Copyright 2020 Pete Olcott
Kaz Kylheku <793-849-0957@kylheku.com>: Aug 30 07:19PM

> an abstract model of computation that is equivalent to a Turing machine
> in such a way that any Turing complete computation can be written in the
> "C" programming language.
 
Turing's infinite tape can be mapped to the <stdio.h> facility.
The possible symbols on that tape can be mapped to characters,
and the operations and positioning can be mapped to the available
library operations.
 
> When "C" is mapped to an abstract model of computation that can provide
> an arbitrary number of arbitrary length linked lists, then "C" acquires
 
In the absence of I/O, the C storage model is finite, and therefore not
Turing complete. However, perhaps not quite.
 
I had a discussion with this with someone who convinced me of the
following: in C we can allocate automatic storage (informally,
"local variables on the stack") via recursion. If we do this without
taking the address of anything, then pointers do not appear in
the program, and thus, in the abstract sense, we don't run into the
issue of pointers being of finite width. With that restriction, we have
no random access (the program cannot access material in existing
activation frames without returning to them). Therefore what we have is
a push-down automaton (PDA). A PDA is strictly less powerful than a
Turing machine. It contains an infinity in that it can push down as far
as it needs to, but there are some computations that can't be carried
out with a universal push down machine.
 
> implementation automatically scales to any increase in physical memory
> then the memory access aspect of the concrete implementation is
> computationally identical to the abstract Turing complete machine.
 
This scaling is impossible in general because:
 
- an expression like sizeof (void *) is a compile-time constant.
 
- pointers are embedded in data structures where not only is there
no room to grow them wider, programs are not prepared to have
the offsets of members change at run-time to accomodate.
 
> "C" because the memory access aspect would behave exactly the same
> across the Turing complete abstract machine and the concrete machine for
> all computations not requiring more memory than the concrete machine has.
 
The problem is that the amount of memory has to be known in advance. So
that is to say, for a given C program and its input case, we have to
know how much memory it will need. Then choose an instance of the
abstract machine which will fit. Then instantiate the machine,
translate the program, and execute it on the intended input.
 
Why that is a problem is that that knowing how much capacity to
provision for a given instance is equivalent to the halting problem.
 
You're much better off chasing Turing completeness via the stdio
stream route.
 
--
TXR Programming Lanuage: http://nongnu.org/txr
Music DIY Mailing List: http://www.kylheku.com/diy
ADA MP-1 Mailing List: http://www.kylheku.com/mp1
olcott <NoOne@NoWhere.com>: Aug 30 02:57PM -0500

On 8/30/2020 2:19 PM, Kaz Kylheku wrote:
> taking the address of anything, then pointers do not appear in
> the program, and thus, in the abstract sense, we don't run into the
> issue of pointers being of finite width. With that restriction, we have
 
Good point that I had not considered.
 
> no random access (the program cannot access material in existing
> activation frames without returning to them). Therefore what we have is
> a push-down automaton (PDA). A PDA is strictly less powerful than a
 
This immediately occurred to me.
 
> provision for a given instance is equivalent to the halting problem.
 
> You're much better off chasing Turing completeness via the stdio
> stream route.
 
The only thing that we need is the capability to create an unlimited
number of unlimited length linked-lists.
 
There is no need to know the memory requirements in advance. We could
give it a subset of the std::list interface.
 
Unlimited length integers could be space delimited numeric digits,
ASCII, Hex, or some other base. This can be leveraged to provide a
pointer to the top of an unlimited heap.
 
--
Copyright 2020 Pete Olcott
olcott <NoOne@NoWhere.com>: Aug 30 03:02PM -0500

On 8/30/2020 2:41 PM, Kaz Kylheku wrote:
 
> Our "meta implementation" which scales itself lazily when the program
> hits a limit looks like could be a UTM.
 
> But, so what?
 
This is all focused on leveraging my credibility for my halt decider
written in "C" and implemented as x86 machine code.
 
I want to make totally sure in advance that my correct halt decider is
not dismissed as inapplicable to Turing machines.
 
--
Copyright 2020 Pete Olcott
olcott <NoOne@NoWhere.com>: Aug 30 04:19PM -0500

On 8/30/2020 3:36 PM, Ben Bacarisse wrote:
 
> Hmm... Modern C has threads and therefore more than one stack. A PDA
> with two stacks is Turing complete so there may be a way after all.
> Nice one!
 
There you go teamwork. Between you and Kaz.
 
Now the key of how do you make an unlimited depth stack?
is directly addressed by the other key implementation detail:
 
How do you provide a linked-list of unlimited depth that automatically
scales to whatever memory is available.
 
This problem has just been simplified by you and Kaz in that we now only
need two of these. Also with the piece added by Kaz we have a much
simpler interface: push and pop().
 
A two stack based machine might be a cleaner implementation because it
would never have to do garbage collection. It may provide a more
cumbersome model of computation than a RAM machine though. If this is
the case then it is much more difficult to map "C" to the two-stack
machine.
 
 
--
Copyright 2020 Pete Olcott
olcott <NoOne@NoWhere.com>: Aug 30 03:19PM -0500

On 8/30/2020 3:10 PM, David Kleinecke wrote:
 
>> Equivalent inputs deriving equivalent outputs for all computations
>> define equivalent machines (Turing or otherwise).
 
> You might call this "black box equivalence".
 
Bingo, you got it !!!
 
 
> Note the implication that the machine always halts.
 
> We cannot say that two boxes that both never halt for some input
> have the same output for that input.
 
Or we could construe not halting as an empty set of output. As long as
the two machines produced equivalent output when they halted or failed
to halt on equivalent input the two machines are black box equivalent.
 
--
Copyright 2020 Pete Olcott
boltar@nuttyella.co.uk: Aug 30 03:59PM

On Sat, 29 Aug 2020 19:24:16 +0200
>devices for less than half a dollar - there are rarely good reasons for
>starting new projects with brain-dead 8-bit CISC microcontrollers. The
 
Power consumption in battery powered devices is a very good reason.
David Brown <david.brown@hesbynett.no>: Aug 30 09:59PM +0200

>> devices for less than half a dollar - there are rarely good reasons for
>> starting new projects with brain-dead 8-bit CISC microcontrollers. The
 
> Power consumption in battery powered devices is a very good reason.
 
No, it is not. These kind of badly outdated cpu architectures are
nowhere close to state of the art of low power consumption. A
Cortex-M0+ device (32-bit) will use much less power than a PIC or an
8051 for the same task.
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: