Rocksolid Light

Welcome to novaBBS (click a section below)

mail  files  register  nodelist  faq  login

TRANSACTION CANCELLED - FARECARD RETURNED


programming / alt.lang.asm / Re: Skybuck's Universal Data Structure

SubjectAuthor
* Skybuck's Universal Data Structureskybuck2000
`* Re: Skybuck's Universal Data StructureMelzzzzz
 `* Re: Skybuck's Universal Data Structureskybuck2000
  `* Re: Skybuck's Universal Data StructureMelzzzzz
   `- Re: Skybuck's Universal Data Structureskybuck2000

1
Subject: Skybuck's Universal Data Structure
From: skybuck2000
Newsgroups: alt.lang.asm
Date: Sat, 3 Apr 2021 13:09 UTC
X-Received: by 2002:ae9:eb8a:: with SMTP id b132mr16629928qkg.296.1617455384296;
Sat, 03 Apr 2021 06:09:44 -0700 (PDT)
X-Received: by 2002:aca:1a07:: with SMTP id a7mr12391012oia.85.1617455384096;
Sat, 03 Apr 2021 06:09:44 -0700 (PDT)
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!news.uzoreto.com!fdc2.netnews.com!news-out.netnews.com!news.alt.net!fdc3.netnews.com!2.eu.feeder.erje.net!feeder.erje.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: alt.lang.asm
Date: Sat, 3 Apr 2021 06:09:43 -0700 (PDT)
Injection-Info: google-groups.googlegroups.com; posting-host=217.62.209.66; posting-account=np6u_wkAAADxbE7UBGUIOm-csir6aX02
NNTP-Posting-Host: 217.62.209.66
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <52ae5018-fc99-4749-88ee-673c98f9d8bbn@googlegroups.com>
Subject: Skybuck's Universal Data Structure
From: skybuck2...@hotmail.com (skybuck2000)
Injection-Date: Sat, 03 Apr 2021 13:09:44 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
View all headers
Today I present to the world "Skybuck's Universal Data Structure".

This new invention describes how to use "Skybuck's Universal Code".

This new invention is ment to describe high level data structures which offers the same kind of flexiblity as Skybuck's Universal Code but at a high level.

Take note that this document is only a "draft" and might need further work, but it does describe the general idea.

The general idea for Skybuck's Universal Data Structure is to describe again the data in terms of "interleaving". However this time the meta data is not a terminator, but  a type field. Humans like describing data in terms of types. This is crucial and essential to give data meaning. A terminator for example is already a type. Basically an escape code.

However it is undesireable to introduce escape codes into a universal data structure or encoding. Thus instead of terminating and scanning, interleaving is used. Scanning for a terminator or encoding terminators will become problematic as it requires raw binary data to be transformed to prevent wrong interpretation or missing interpretation, such as a missing terminator.

Also the meta bit of 1 in Skybuck's Univeral Code can be considered a switch statement, it indicates to the machine/reader that it is now switching to a different field.

This combined insight is what led to the discovery/determination that a type field should be introduced which performs functionalities:

1. Switch between "meta data" and "raw data".

2. Terminate data structures

3. Describe the contents of data structures.

Basically this leads to the following design:

<type><data><type><data><type><data>

To see why this could be a superior data structure we could take a look at "Unicode".

In Unicode (not to be confused with Skybuck's Universal Code which is ment for raw data description) all alphabets of the world are thrown together to create one big mess of alphabet soup.

Why was this done ? To facilitate communication between computers ?

But could it not have been done different ? The russians complain the unicode is twice as big for them because of inefficiency of encodement of their part of
the alphabet and that is a valid objection against unicode.

In the past there were codepages which described the alphabet soup in a more efficient way.

Perhaps the problem back then was the lack of software to universally describe these code pages and to embed them into a universal data structure.

Now with this new invention and insight in hind sight the unicode could have been designed as follows:

<code page><alphabet string soup><code page><alpabet string soup>

and so forth. However the necessary software and hardware to facilitate this switching between types was not present.

Now back to Skybuck's Universal Data structure, one of the immediate desires is to create a list of available free memory for further segmentation and allocation and use for data structures and data fields and such.

Immediately the design of Windows Operating System comes to mind where lists of pages are describes to segment and describe the available memory pages and such.

So for operating system design it is essential to be able to describe a list of some sort.

Here is where it does become a bit fuzzy and it might require further work.

One possible idea is to describe a "Universal Type" like "Unicode".

Where data structures are described by a number.

Type 0 would be raw binary data, basically unknown data.
Type 1 would be the start of a list of universal data structures
Type 2 would be the end of a list of universal data structures.
Type 3 would be the start of a list of same type data. "efficient list"
Type 4 would be the end of a list of same type data. "efficient list"

Example of a generic list:

<generic list begin><data type><data content><data type><data content><generic list end>

Example of a efficient list:

<efficient list begin><data><data><data><data><efficient list end>

These types could be collected and described in "Universal Types" like unicode.

Bye for now,
  Skybuck.


Subject: Re: Skybuck's Universal Data Structure
From: Melzzzzz
Newsgroups: alt.lang.asm
Organization: usenet-news.net
Date: Sat, 3 Apr 2021 14:43 UTC
References: 1
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!news.uzoreto.com!newsfeed.xs4all.nl!newsfeed9.news.xs4all.nl!peer02.ams4!peer.am4.highwinds-media.com!news.highwinds-media.com!fx30.ams4.POSTED!not-for-mail
Newsgroups: alt.lang.asm
From: Melzz...@zzzzz.com (Melzzzzz)
Subject: Re: Skybuck's Universal Data Structure
References: <52ae5018-fc99-4749-88ee-673c98f9d8bbn@googlegroups.com>
User-Agent: slrn/1.0.3 (Linux)
Lines: 118
Message-ID: <Ia%9I.72358$6kGe.44819@fx30.ams4>
X-Complaints-To: abuse@usenet-news.net
NNTP-Posting-Date: Sat, 03 Apr 2021 14:43:52 UTC
Organization: usenet-news.net
Date: Sat, 03 Apr 2021 14:43:52 GMT
X-Received-Bytes: 5142
View all headers
On 2021-04-03, skybuck2000 <skybuck2000@hotmail.com> wrote:
Today I present to the world "Skybuck's Universal Data Structure".

This new invention describes how to use "Skybuck's Universal Code".

This new invention is ment to describe high level data structures
which offers the same kind of flexiblity as Skybuck's Universal Code
but at a high level.

Take note that this document is only a "draft" and might need further
work, but it does describe the general idea.

The general idea for Skybuck's Universal Data Structure is to describe
again the data in terms of "interleaving". However this time the meta
data is not a terminator, but  a type field. Humans like describing
data in terms of types. This is crucial and essential to give data
meaning. A terminator for example is already a type. Basically an
escape code.

However it is undesireable to introduce escape codes into a universal
data structure or encoding. Thus instead of terminating and scanning,
interleaving is used. Scanning for a terminator or encoding
terminators will become problematic as it requires raw binary data to
be transformed to prevent wrong interpretation or missing
interpretation, such as a missing terminator.

Also the meta bit of 1 in Skybuck's Univeral Code can be considered a
switch statement, it indicates to the machine/reader that it is now
switching to a different field.

This combined insight is what led to the discovery/determination that
a type field should be introduced which performs functionalities:

1. Switch between "meta data" and "raw data".

2. Terminate data structures

3. Describe the contents of data structures.

Basically this leads to the following design:

<type><data><type><data><type><data>

To see why this could be a superior data structure we could take a
look at "Unicode".

In Unicode (not to be confused with Skybuck's Universal Code which is
ment for raw data description) all alphabets of the world are thrown
together to create one big mess of alphabet soup.

Why was this done ? To facilitate communication between computers ?

But could it not have been done different ? The russians complain the
unicode is twice as big for them because of inefficiency of encodement
of their part of the alphabet and that is a valid objection against
unicode.

In the past there were codepages which described the alphabet soup in
a more efficient way.

Perhaps the problem back then was the lack of software to universally
describe these code pages and to embed them into a universal data
structure.

Now with this new invention and insight in hind sight the unicode
could have been designed as follows:

<code page><alphabet string soup><code page><alpabet string soup>

and so forth. However the necessary software and hardware to
facilitate this switching between types was not present.

Now back to Skybuck's Universal Data structure, one of the immediate
desires is to create a list of available free memory for further
segmentation and allocation and use for data structures and data
fields and such.

Immediately the design of Windows Operating System comes to mind where
lists of pages are describes to segment and describe the available
memory pages and such.

So for operating system design it is essential to be able to describe
a list of some sort.

Here is where it does become a bit fuzzy and it might require further
work.

One possible idea is to describe a "Universal Type" like "Unicode".

Where data structures are described by a number.

Type 0 would be raw binary data, basically unknown data.  Type 1 would
be the start of a list of universal data structures Type 2 would be
the end of a list of universal data structures.  Type 3 would be the
start of a list of same type data. "efficient list" Type 4 would be
the end of a list of same type data. "efficient list"

Example of a generic list:

<generic list begin><data type><data content><data type><data
content><generic list end>

Example of a efficient list:

<efficient list begin><data><data><data><data><efficient list end>

These types could be collected and described in "Universal Types" like
unicode.

Bye for now, Skybuck.
What's that different then tagged union, already present in some
languages?

--
current job title: senior software engineer
skills: x86 aasembler,c++,c,rust,go,nim,haskell...

press any key to continue or any other to quit...


Subject: Re: Skybuck's Universal Data Structure
From: skybuck2000
Newsgroups: alt.lang.asm
Date: Tue, 6 Apr 2021 02:12 UTC
References: 1 2
X-Received: by 2002:a37:a408:: with SMTP id n8mr26780066qke.6.1617675180008;
Mon, 05 Apr 2021 19:13:00 -0700 (PDT)
X-Received: by 2002:a9d:74d4:: with SMTP id a20mr24075366otl.301.1617675179740;
Mon, 05 Apr 2021 19:12:59 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!news.uzoreto.com!feeder1.cambriumusenet.nl!feed.tweak.nl!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: alt.lang.asm
Date: Mon, 5 Apr 2021 19:12:59 -0700 (PDT)
In-Reply-To: <Ia%9I.72358$6kGe.44819@fx30.ams4>
Injection-Info: google-groups.googlegroups.com; posting-host=217.62.209.66; posting-account=np6u_wkAAADxbE7UBGUIOm-csir6aX02
NNTP-Posting-Host: 217.62.209.66
References: <52ae5018-fc99-4749-88ee-673c98f9d8bbn@googlegroups.com> <Ia%9I.72358$6kGe.44819@fx30.ams4>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <625d24b3-bb3c-4540-90cc-07cfc55b2614n@googlegroups.com>
Subject: Re: Skybuck's Universal Data Structure
From: skybuck2...@hotmail.com (skybuck2000)
Injection-Date: Tue, 06 Apr 2021 02:13:00 +0000
Content-Type: text/plain; charset="UTF-8"
View all headers
On Saturday, April 3, 2021 at 4:43:55 PM UTC+2, Melzzzzz wrote:
On 2021-04-03, skybuck2000 <skybu...@hotmail.com> wrote:
Today I present to the world "Skybuck's Universal Data Structure".

This new invention describes how to use "Skybuck's Universal Code".

This new invention is ment to describe high level data structures
which offers the same kind of flexiblity as Skybuck's Universal Code
but at a high level.

Take note that this document is only a "draft" and might need further
work, but it does describe the general idea.

The general idea for Skybuck's Universal Data Structure is to describe
again the data in terms of "interleaving". However this time the meta
data is not a terminator, but a type field. Humans like describing
data in terms of types. This is crucial and essential to give data
meaning. A terminator for example is already a type. Basically an
escape code.

However it is undesireable to introduce escape codes into a universal
data structure or encoding. Thus instead of terminating and scanning,
interleaving is used. Scanning for a terminator or encoding
terminators will become problematic as it requires raw binary data to
be transformed to prevent wrong interpretation or missing
interpretation, such as a missing terminator.

Also the meta bit of 1 in Skybuck's Univeral Code can be considered a
switch statement, it indicates to the machine/reader that it is now
switching to a different field.

This combined insight is what led to the discovery/determination that
a type field should be introduced which performs functionalities:

1. Switch between "meta data" and "raw data".

2. Terminate data structures

3. Describe the contents of data structures.

Basically this leads to the following design:

<type><data><type><data><type><data>

To see why this could be a superior data structure we could take a
look at "Unicode".

In Unicode (not to be confused with Skybuck's Universal Code which is
ment for raw data description) all alphabets of the world are thrown
together to create one big mess of alphabet soup.

Why was this done ? To facilitate communication between computers ?

But could it not have been done different ? The russians complain the
unicode is twice as big for them because of inefficiency of encodement
of their part of the alphabet and that is a valid objection against
unicode.

In the past there were codepages which described the alphabet soup in
a more efficient way.

Perhaps the problem back then was the lack of software to universally
describe these code pages and to embed them into a universal data
structure.

Now with this new invention and insight in hind sight the unicode
could have been designed as follows:

<code page><alphabet string soup><code page><alpabet string soup>

and so forth. However the necessary software and hardware to
facilitate this switching between types was not present.

Now back to Skybuck's Universal Data structure, one of the immediate
desires is to create a list of available free memory for further
segmentation and allocation and use for data structures and data
fields and such.

Immediately the design of Windows Operating System comes to mind where
lists of pages are describes to segment and describe the available
memory pages and such.

So for operating system design it is essential to be able to describe
a list of some sort.

Here is where it does become a bit fuzzy and it might require further
work.

One possible idea is to describe a "Universal Type" like "Unicode".

Where data structures are described by a number.

Type 0 would be raw binary data, basically unknown data. Type 1 would
be the start of a list of universal data structures Type 2 would be
the end of a list of universal data structures. Type 3 would be the
start of a list of same type data. "efficient list" Type 4 would be
the end of a list of same type data. "efficient list"

Example of a generic list:

<generic list begin><data type><data content><data type><data
content><generic list end>

Example of a efficient list:

<efficient list begin><data><data><data><data><efficient list end>

These types could be collected and described in "Universal Types" like
unicode.

Bye for now, Skybuck.
What's that different then tagged union, already present in some
languages?

You are getting warm.

From the document I wrote you could indeed infer that it is programming language related.

However there is some difference.

This document is about storing data in binary form. Not in source code form.

The document is a bit misleading because it uses <> which mind remind some of XML, JSON, HTML and such.

Perhaps I should have used comma's like so (as was the case in Skybuck's Universal Code):

type, data, type, data, type, data

The sad part about programming languagues is that it throws away all it's information/source code and produces instructions and addresses, the rest is basically lost. (Because memory/RAM was expensive and CPUs were relatively slow)

This new idea out of necessity and flexibility requirements aims to store information in binary form so it's not lost and becomes part of the data.

Perhaps this document/idea should be expanded with "names" as well, which basically function as the address of the variable or data structure, then it may look like:

name, type, data, name, type, data, name, type, data

This is indeed basically how a pascal structure/record looks like in source code form:

type
  TSomeType = integer;

  TSomeRecord = record
   SomeField : TSomeType;
   SomeField2 : TSomeType;
end;

var
  SomeRecord : TSomeRecord;

Now this can be stored in binary form as follows:

TSomeType = 0
TSomeRecord = 1

SomeRecord = 1000;
SomeField = 1001;
SomeField2 = 1002;

Binary Storage using Skybuck's Universal Code:

Conceptually:

SomeRecord, TSomeRecord, SomeField, TSomeType, <SomeFieldData>, SomeField2, TSomeType, <SomeField2Data>

Digital (comma's added for clearity):

10 00 00 01, 11, 10 00 00 11, 01, X, etc

To decode it now is some code necessary to understand how to interpret it, some exceptions could be made if certain types are encountered and thus encoded with if statements:

ReadName
ReadType

if Type = Record then
   ReadName
   ReadType
   ReadData

^ it is clear to read more fields, a record terminator is required.

For now this is just a vague example of what might be possible, it's late and I am tired, but I hope you get the idea now a little bit better :)

It's about storing information in pure binary, with meta bits, and also interleaving of bits and fields to keep it somewhat efficient and especially flexible.

Better code would be:

TRecordBegin = 10
TRecordEnd = 11

if Type = TRecordBegin
  repeat
   ReadRecordField
  until Type = TRecordEnd
 
proc ReadRecordField
  ReadName
  ReadType
  ReadData

Bye for now,
  Skybuck.


Subject: Re: Skybuck's Universal Data Structure
From: Melzzzzz
Newsgroups: alt.lang.asm
Organization: usenet-news.net
Date: Tue, 6 Apr 2021 15:11 UTC
References: 1 2 3
Path: i2pn2.org!i2pn.org!aioe.org!news.uzoreto.com!newsfeed.xs4all.nl!newsfeed9.news.xs4all.nl!peer02.ams4!peer.am4.highwinds-media.com!news.highwinds-media.com!fx28.ams4.POSTED!not-for-mail
Newsgroups: alt.lang.asm
From: Melzz...@zzzzz.com (Melzzzzz)
Subject: Re: Skybuck's Universal Data Structure
References: <52ae5018-fc99-4749-88ee-673c98f9d8bbn@googlegroups.com>
<Ia%9I.72358$6kGe.44819@fx30.ams4>
<625d24b3-bb3c-4540-90cc-07cfc55b2614n@googlegroups.com>
User-Agent: slrn/1.0.3 (Linux)
Lines: 215
Message-ID: <xS_aI.88595$c2cf.85321@fx28.ams4>
X-Complaints-To: abuse@usenet-news.net
NNTP-Posting-Date: Tue, 06 Apr 2021 15:11:25 UTC
Organization: usenet-news.net
Date: Tue, 06 Apr 2021 15:11:25 GMT
X-Received-Bytes: 8672
View all headers
On 2021-04-06, skybuck2000 <skybuck2000@hotmail.com> wrote:
On Saturday, April 3, 2021 at 4:43:55 PM UTC+2, Melzzzzz wrote:
On 2021-04-03, skybuck2000 <skybu...@hotmail.com> wrote:
Today I present to the world "Skybuck's Universal Data Structure".

This new invention describes how to use "Skybuck's Universal Code".

This new invention is ment to describe high level data structures
which offers the same kind of flexiblity as Skybuck's Universal Code
but at a high level.

Take note that this document is only a "draft" and might need further
work, but it does describe the general idea.

The general idea for Skybuck's Universal Data Structure is to describe
again the data in terms of "interleaving". However this time the meta
data is not a terminator, but a type field. Humans like describing
data in terms of types. This is crucial and essential to give data
meaning. A terminator for example is already a type. Basically an
escape code.

However it is undesireable to introduce escape codes into a universal
data structure or encoding. Thus instead of terminating and scanning,
interleaving is used. Scanning for a terminator or encoding
terminators will become problematic as it requires raw binary data to
be transformed to prevent wrong interpretation or missing
interpretation, such as a missing terminator.

Also the meta bit of 1 in Skybuck's Univeral Code can be considered a
switch statement, it indicates to the machine/reader that it is now
switching to a different field.

This combined insight is what led to the discovery/determination that
a type field should be introduced which performs functionalities:

1. Switch between "meta data" and "raw data".

2. Terminate data structures

3. Describe the contents of data structures.

Basically this leads to the following design:

<type><data><type><data><type><data>

To see why this could be a superior data structure we could take a
look at "Unicode".

In Unicode (not to be confused with Skybuck's Universal Code which is
ment for raw data description) all alphabets of the world are thrown
together to create one big mess of alphabet soup.

Why was this done ? To facilitate communication between computers ?

But could it not have been done different ? The russians complain the
unicode is twice as big for them because of inefficiency of encodement
of their part of the alphabet and that is a valid objection against
unicode.

In the past there were codepages which described the alphabet soup in
a more efficient way.

Perhaps the problem back then was the lack of software to universally
describe these code pages and to embed them into a universal data
structure.

Now with this new invention and insight in hind sight the unicode
could have been designed as follows:

<code page><alphabet string soup><code page><alpabet string soup>

and so forth. However the necessary software and hardware to
facilitate this switching between types was not present.

Now back to Skybuck's Universal Data structure, one of the immediate
desires is to create a list of available free memory for further
segmentation and allocation and use for data structures and data
fields and such.

Immediately the design of Windows Operating System comes to mind where
lists of pages are describes to segment and describe the available
memory pages and such.

So for operating system design it is essential to be able to describe
a list of some sort.

Here is where it does become a bit fuzzy and it might require further
work.

One possible idea is to describe a "Universal Type" like "Unicode".

Where data structures are described by a number.

Type 0 would be raw binary data, basically unknown data. Type 1 would
be the start of a list of universal data structures Type 2 would be
the end of a list of universal data structures. Type 3 would be the
start of a list of same type data. "efficient list" Type 4 would be
the end of a list of same type data. "efficient list"

Example of a generic list:

<generic list begin><data type><data content><data type><data
content><generic list end>

Example of a efficient list:

<efficient list begin><data><data><data><data><efficient list end>

These types could be collected and described in "Universal Types" like
unicode.

Bye for now, Skybuck.
What's that different then tagged union, already present in some
languages?

You are getting warm.

From the document I wrote you could indeed infer that it is
programming language related.

However there is some difference.

This document is about storing data in binary form. Not in source code
form.

The document is a bit misleading because it uses <> which mind remind
some of XML, JSON, HTML and such.

Perhaps I should have used comma's like so (as was the case in
Skybuck's Universal Code):

type, data, type, data, type, data

The sad part about programming languagues is that it throws away all
it's information/source code and produces instructions and addresses,
the rest is basically lost. (Because memory/RAM was expensive and CPUs
were relatively slow)

This new idea out of necessity and flexibility requirements aims to
store information in binary form so it's not lost and becomes part of
the data.

Perhaps this document/idea should be expanded with "names" as well,
which basically function as the address of the variable or data
structure, then it may look like:

name, type, data, name, type, data, name, type, data

This is indeed basically how a pascal structure/record looks like in
source code form:

type TSomeType = integer;

  TSomeRecord = record SomeField : TSomeType; SomeField2 : TSomeType;
  end;

var SomeRecord : TSomeRecord;

Now this can be stored in binary form as follows:

TSomeType = 0 TSomeRecord = 1

SomeRecord = 1000; SomeField = 1001; SomeField2 = 1002;

Binary Storage using Skybuck's Universal Code:

Conceptually:

SomeRecord, TSomeRecord, SomeField, TSomeType, <SomeFieldData>,
SomeField2, TSomeType, <SomeField2Data>

Digital (comma's added for clearity):

10 00 00 01, 11, 10 00 00 11, 01, X, etc

To decode it now is some code necessary to understand how to interpret
it, some exceptions could be made if certain types are encountered and
thus encoded with if statements:

ReadName ReadType

if Type = Record then ReadName ReadType ReadData

^ it is clear to read more fields, a record terminator is required.

For now this is just a vague example of what might be possible, it's
late and I am tired, but I hope you get the idea now a little bit
better :)

It's about storing information in pure binary, with meta bits, and
also interleaving of bits and fields to keep it somewhat efficient and
especially flexible.

Better code would be:

TRecordBegin = 10 TRecordEnd = 11

if Type = TRecordBegin repeat ReadRecordField until Type = TRecordEnd
 
proc ReadRecordField ReadName ReadType ReadData

Bye for now, Skybuck.

You can do in Rust:
if let(TRecordBegin) = get_next_field() {
while true {
if let(TRecordEnd)) == get_next_field() {break}
}
}
So?
--
current job title: senior software engineer
skills: x86 aasembler,c++,c,rust,go,nim,haskell...

press any key to continue or any other to quit...


Subject: Re: Skybuck's Universal Data Structure
From: skybuck2000
Newsgroups: alt.lang.asm
Date: Wed, 7 Apr 2021 21:10 UTC
References: 1 2 3 4
X-Received: by 2002:a0c:d7d2:: with SMTP id g18mr5552631qvj.42.1617829829951;
Wed, 07 Apr 2021 14:10:29 -0700 (PDT)
X-Received: by 2002:a9d:3437:: with SMTP id v52mr4593115otb.55.1617829829650;
Wed, 07 Apr 2021 14:10:29 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: alt.lang.asm
Date: Wed, 7 Apr 2021 14:10:29 -0700 (PDT)
In-Reply-To: <xS_aI.88595$c2cf.85321@fx28.ams4>
Injection-Info: google-groups.googlegroups.com; posting-host=217.62.209.66; posting-account=np6u_wkAAADxbE7UBGUIOm-csir6aX02
NNTP-Posting-Host: 217.62.209.66
References: <52ae5018-fc99-4749-88ee-673c98f9d8bbn@googlegroups.com>
<Ia%9I.72358$6kGe.44819@fx30.ams4> <625d24b3-bb3c-4540-90cc-07cfc55b2614n@googlegroups.com>
<xS_aI.88595$c2cf.85321@fx28.ams4>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <c5db01fe-ef8b-4365-9eb6-8bf954c6e199n@googlegroups.com>
Subject: Re: Skybuck's Universal Data Structure
From: skybuck2...@hotmail.com (skybuck2000)
Injection-Date: Wed, 07 Apr 2021 21:10:29 +0000
Content-Type: text/plain; charset="UTF-8"
View all headers
On Tuesday, April 6, 2021 at 5:11:28 PM UTC+2, Melzzzzz wrote:
On 2021-04-06, skybuck2000 <skybu...@hotmail.com> wrote:
On Saturday, April 3, 2021 at 4:43:55 PM UTC+2, Melzzzzz wrote:
On 2021-04-03, skybuck2000 <skybu...@hotmail.com> wrote:
Today I present to the world "Skybuck's Universal Data Structure".

This new invention describes how to use "Skybuck's Universal Code".

This new invention is ment to describe high level data structures
which offers the same kind of flexiblity as Skybuck's Universal Code
but at a high level.

Take note that this document is only a "draft" and might need further
work, but it does describe the general idea.

The general idea for Skybuck's Universal Data Structure is to describe
again the data in terms of "interleaving". However this time the meta
data is not a terminator, but a type field. Humans like describing
data in terms of types. This is crucial and essential to give data
meaning. A terminator for example is already a type. Basically an
escape code.

However it is undesireable to introduce escape codes into a universal
data structure or encoding. Thus instead of terminating and scanning,
interleaving is used. Scanning for a terminator or encoding
terminators will become problematic as it requires raw binary data to
be transformed to prevent wrong interpretation or missing
interpretation, such as a missing terminator.

Also the meta bit of 1 in Skybuck's Univeral Code can be considered a
switch statement, it indicates to the machine/reader that it is now
switching to a different field.

This combined insight is what led to the discovery/determination that
a type field should be introduced which performs functionalities:

1. Switch between "meta data" and "raw data".

2. Terminate data structures

3. Describe the contents of data structures.

Basically this leads to the following design:

<type><data><type><data><type><data>

To see why this could be a superior data structure we could take a
look at "Unicode".

In Unicode (not to be confused with Skybuck's Universal Code which is
ment for raw data description) all alphabets of the world are thrown
together to create one big mess of alphabet soup.

Why was this done ? To facilitate communication between computers ?

But could it not have been done different ? The russians complain the
unicode is twice as big for them because of inefficiency of encodement
of their part of the alphabet and that is a valid objection against
unicode.

In the past there were codepages which described the alphabet soup in
a more efficient way.

Perhaps the problem back then was the lack of software to universally
describe these code pages and to embed them into a universal data
structure.

Now with this new invention and insight in hind sight the unicode
could have been designed as follows:

<code page><alphabet string soup><code page><alpabet string soup>

and so forth. However the necessary software and hardware to
facilitate this switching between types was not present.

Now back to Skybuck's Universal Data structure, one of the immediate
desires is to create a list of available free memory for further
segmentation and allocation and use for data structures and data
fields and such.

Immediately the design of Windows Operating System comes to mind where
lists of pages are describes to segment and describe the available
memory pages and such.

So for operating system design it is essential to be able to describe
a list of some sort.

Here is where it does become a bit fuzzy and it might require further
work.

One possible idea is to describe a "Universal Type" like "Unicode".

Where data structures are described by a number.

Type 0 would be raw binary data, basically unknown data. Type 1 would
be the start of a list of universal data structures Type 2 would be
the end of a list of universal data structures. Type 3 would be the
start of a list of same type data. "efficient list" Type 4 would be
the end of a list of same type data. "efficient list"

Example of a generic list:

<generic list begin><data type><data content><data type><data
content><generic list end>

Example of a efficient list:

<efficient list begin><data><data><data><data><efficient list end>

These types could be collected and described in "Universal Types" like
unicode.

Bye for now, Skybuck.
What's that different then tagged union, already present in some
languages?

You are getting warm.

From the document I wrote you could indeed infer that it is
programming language related.

However there is some difference.

This document is about storing data in binary form. Not in source code
form.

The document is a bit misleading because it uses <> which mind remind
some of XML, JSON, HTML and such.

Perhaps I should have used comma's like so (as was the case in
Skybuck's Universal Code):

type, data, type, data, type, data

The sad part about programming languagues is that it throws away all
it's information/source code and produces instructions and addresses,
the rest is basically lost. (Because memory/RAM was expensive and CPUs
were relatively slow)

This new idea out of necessity and flexibility requirements aims to
store information in binary form so it's not lost and becomes part of
the data.

Perhaps this document/idea should be expanded with "names" as well,
which basically function as the address of the variable or data
structure, then it may look like:

name, type, data, name, type, data, name, type, data

This is indeed basically how a pascal structure/record looks like in
source code form:

type TSomeType = integer;

TSomeRecord = record SomeField : TSomeType; SomeField2 : TSomeType;
end;

var SomeRecord : TSomeRecord;

Now this can be stored in binary form as follows:

TSomeType = 0 TSomeRecord = 1

SomeRecord = 1000; SomeField = 1001; SomeField2 = 1002;

Binary Storage using Skybuck's Universal Code:

Conceptually:

SomeRecord, TSomeRecord, SomeField, TSomeType, <SomeFieldData>,
SomeField2, TSomeType, <SomeField2Data>

Digital (comma's added for clearity):

10 00 00 01, 11, 10 00 00 11, 01, X, etc

To decode it now is some code necessary to understand how to interpret
it, some exceptions could be made if certain types are encountered and
thus encoded with if statements:

ReadName ReadType

if Type = Record then ReadName ReadType ReadData

^ it is clear to read more fields, a record terminator is required.

For now this is just a vague example of what might be possible, it's
late and I am tired, but I hope you get the idea now a little bit
better :)

It's about storing information in pure binary, with meta bits, and
also interleaving of bits and fields to keep it somewhat efficient and
especially flexible.

Better code would be:

TRecordBegin = 10 TRecordEnd = 11

if Type = TRecordBegin repeat ReadRecordField until Type = TRecordEnd

proc ReadRecordField ReadName ReadType ReadData

Bye for now, Skybuck.
You can do in Rust:
if let(TRecordBegin) = get_next_field() {
while true {
if let(TRecordEnd)) == get_next_field() {break}
}
}
So?

Ok, so now encode that in an efficient binary way that is flexible too ! =D

Bye,
  Skybuck =D


1
rocksolid light 0.7.2
clearneti2ptor