| Deutsch English Français Italiano |
|
<0ff7adc1bf3dcedb11194712f0e33059789c8690.camel@gmail.com> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail
From: wij <wyniijj5@gmail.com>
Newsgroups: comp.lang.c
Subject: New computation model and perspective of C/C++
Date: Thu, 20 Feb 2025 03:29:21 +0800
Organization: A noiseless patient Spider
Lines: 132
Message-ID: <0ff7adc1bf3dcedb11194712f0e33059789c8690.camel@gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Injection-Date: Wed, 19 Feb 2025 20:29:23 +0100 (CET)
Injection-Info: dont-email.me; posting-host="4cfa1410c56edf6929d1c56bc80b08dd";
logging-data="2535221"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/WEs+0/HumXmv4/8th3ww5"
User-Agent: Evolution 3.54.3 (3.54.3-1.fc41)
Cancel-Lock: sha1:V1ZXdmYnJITo07oNONQA3HOtjmU=
Bytes: 5620
libwy-0.69.6 is released https://sourceforge.net/projects/cscall/
The manpage document (description) for Spu is modifed a bit.
-----------------------
Wy.Sct.Spu(3wy) Wy.Sct.Spu(=
3wy)
NAME
Spu - Class of general purpose Soft-CPU
SYNOPSIS
Except POD types, C structures, all types are declared in namespace =
Wy.
#include <CSCall/Sct.h>
Spu (Soft CPU) is a revised model of Turing Machine and a class =
that
acts like a general purpose CPU-based computing machine to provide =
se=E2=80=90
mantics for computing language and for remote program communication.
The main differences of Spu and general purpose CPU (or TM) is that=
Spu
has no =C2=B4register=C2=B4 nor =C2=B4flag=C2=B4, Spu has only a tap=
e. The tape is initially
empty. Every object (referred to as tape variable) in the tape is a=
llo=E2=80=90
cated via instruction Alloc and identified by a continuous index num=
ber.
Tape variable can be any C++ type, including Spu.
The instruction of Spu is application definable. Except necessary =
few,
about >30 instructions are defined for convenience, see man=
page
Wy.Sct(3wy).
Documentation following omits the scope name Wy::Sct for each occurr=
ence
of Spu for clearity.
PUBLIC MEMBERS
class Reply
typedef ssize_t IndexType
Spu()
~Spu()
InstrIdx next_instr
Array<InstrIdx> istack
Array<unsign char> tape
PtrArray<InstrBase> program
template<T> T& get_data(IndexType) const
void set_instr_base()
Errno run(InstrIdx)
Errno step()
void add_instr(InstrBase*)
----[cut]
This post is to emphasize the theoretical function and capability of C/C++
language, which is equally important to their practical usage.
Many might be surprised what the hell C/C++ has anything to do with the
theoretical Turing Machine (altho many discussion/program of C/C++ are/were
actually abstract, therefore theoretical) and might think they don't need s=
uch a
'trivial' thing. Probably, but likely naive: Turing Machine is the the mode=
l of
all general purpose computers. ALL things, including C++, are merely differ=
ent
aspects of TM. The real thing is actually even more, all deterministic form=
al
logic and mathemathics (if presented in a formal way) are less powerful tha=
n TM.
C++'s application needs not to be database, html, png...,etc.
Ex1: "Object Oriented": Every function call can be viewed as a method of th=
e
object involved in the tape... (programing style involves the decompos=
tion
of the problem, important, but not changing the essence)
Ex2: "Sequence point": The concept of 'sequence pint' is unnecessary in Spu
program. In C/C++, 'sequence point' has to be invented. Even so, it mi=
ght
still not be the final term.
Ex3: if((ch>=3D'a')&&(ch<=3D'z')) { /* ... */ };
In Spu program, the C/C++ expression above would be like:
Jb(ch,'a',lab1); // if ch<'a', goto lab1 (exact expression may be a =
bit
// different)
Ja(ch,'z',lab1); // if ch>'z', goto lab1
/* ... */
lab1: ...
No need to explain what the logical compound statement really mean (
tradition logic has the similar prboem, just more subtler).
Ex4: The Peano axiom:
1. 1=E2=88=88=E2=84=95
2. n=E2=88=88=E2=84=95 -> S(n)=E2=88=88=E2=84=95
A problem of Peano axiom is: Is infinity a natural number?
The basic answer is that, formal logic is inadequate for procedual fac=
t.
Basically, Peano axiom did not solve what the 'natural number' is, it =
just
goes in circle changing termonology like C++ does (useful, though, if =
you
do not dig deeper, and no deeper usage as well).
Ex5: Multi-tasking in Spu is basically just multiple instances of class Spu=
..
Or, you can make tape variables whose type is Spu...
Ex6: Traditional TM is a simplest case of Spu. It is no sense to restrict
operations to comparing symbols and only moving r/w head left or right=
to
be orthodoxical. And, the idea of Non-Deterministic TM (an obscure,
obstructive now) can be dropped.
---------
Beside the theoretical part. Class Spu is also useful as the back-end of al=
l
interpreting languages (sufificitate ones may be highly optimized).
Also because the implement of Spu is short, the range of application is hug=
e and
foundamental. Clib may consider adding one such thing.