From: Shark8 on
On Jan 12, 3:39 pm, nobody <nob...(a)nowhere.com> wrote:
> Shark8 wrote:
> > The problem about having no I/O is that there are some file-formats
> > which ARE sequential-in-nature as opposed to Random-access/Record-in-
> > nature: Midi and Huffman encoding (actually MOST compression would
> > fall here) are to examples off the top of my head. Or am I
> > misunderstanding what you mean?
>
> That is just implementation details that should(can) be hidden from the
> application code. Stick to the objects. Don't forget associations.

Aren't associations rather trivial if we derive all files from some
base tagged-type and use the tag as the type-identifier?
From: Shark8 on
On Jan 12, 2:52 pm, Maciej Sobczak <see.my.homep...(a)gmail.com> wrote:
> On 12 Sty, 20:56, "Dmitry A. Kazakov" <mail...(a)dmitry-kazakov.de>
> wrote:
>
> > There should be no file system at all. If you have objects, I mean if you
> > do have them consistently all the way, then you do not need files. Make
> > objects persistent in the corresponding device, that gives you all
> > functionality of any file. No I/O is ever needed. Map the object into the
> > memory, call its operations, what else any program would have to do?
>
> Interact with other systems? You know, you might want to sometimes
> move your "persistent objects" to another machine.
>
> Did I mention that you might want to move you whole hard drive to
> another machine as well? :-)

True, systems may be fairly static: like my old desktop. Or they may
be fairly dynamic, being updated/improved regularly. It would be
pretty dumb to force someone's data to be bound to a certain system,
like certain DRM-pilious companies. While we can be fairly certain
that many things will be the same, such as the CPU's family, to
completely disregard such exceptional (or regular in the case of some
distributed systems) circumstances is valid only in academia or some
project where you are GUARANTEED to have only a single configuration [-
set] to deal with.

Gaming platforms come to mind there, as well as Macs where the company
controls hardware.

> There is a reason why none of the pure-OO-OS-let's-do-it-correctly
> ever really took off.

I think you're getting a valid point there. It makes more sense to me
to have file-objects derived from some stream-type and then having
that stream directed [and possibly transformed, as need be] by the
filesystem-object to the drive. {A FS may be of the opposite endianess
than the system which is accessing the data, this is a non-issue if it
is ALWAYS read & written the same way BUT if you were to port the
drive to a system with the same endianness the reading and writing
would be mixed-up.}

IE - in the high-level world Write(Integer) and Read(Integer) are
completely safe... but if another system were to read/write the data
in the opposite endianess bad things happen.

> > The problem is that we followed the wrong path for too long.
>
> There is nothing wrong with that path, as it happens to be very
> pragmatic.

The main problem is, I think, the API-standard of keying, to borrow
from databases, on the (Location, Name) Tuple. If we consider the name
of a file as a mutable attribute then we must use some other criteria
for identifying files. (ie it makes little sense to have a file become
invalid because you used the standard 'rename' command.) For a local
system we could use the GUID of a 64-bit word, however this system
would not work well for distributed/remote/networked systems because,
in the absence of proper communication some other Index may be added
by two different systems trying to ID a certain file. I would suggest
using a vector of hashes to key [UUID] File-ID across a network, say:
(MD5, SHA1, XOR-32). This would have the drawback of generating a new
ID every time the file is updated... though that could be overcome by
allowing the OS to track such changes with versioning or redirects or
somesuch.

GUID : Globally Unique IDentifier. (Longitude, Latitude) is a GUID.
UUID : Universally Unique IDentifier. (Longitude, Latitude) is NOT a
UUID because different planets have the same (Long., Lat.) tuple, in
order to be a UUID we would have to indicate which planet we are
talking about, like this: (Name, Long., Lat.).
From: Leslie on
Shark8 wrote:

> On Jan 12, 2:41 am, "Dmitry A. Kazakov"
> <mail...(a)dmitry-kazakov.de> wrote:
>> On Mon, 11 Jan 2010 17:13:55 -0800 (PST), Shark8 wrote:
>> > Anyway, I was wondering if anybody here would be interested
>> > in such a project.
>>
>> If that will be a really new OS (not a UNIX clone), OO,
>> portable, distributed etc, for interesting platforms like
>> this:
>>
>>
http://blog.makezine.com/archive/2009/08/scalable_open_source_computi...
>>
>> why not?
>>
>> --
>> Regards,
>> Dmitry A. Kazakovhttp://www.dmitry-kazakov.de
>
> You know that was a frustrating / discouraging thing to hear
> almost everybody I talked to about wanting to write an OS say
> something along the lines of "Why don't you just download the
> sourcecode for Linux?"... I'm sorry folks, but I don't want to
> be the OS equivalent of a 'script-kiddie'.
>
> One thing I find very annoying about the Unix/Linux mentality
> is the "everything is a file" philosophy... coupled with the
> C/C++-ism of simply assuming that a file read/write went well
> and you're asking for trouble. {Yes, I know that you CAN check
> to see if writing is successful or not in C/C++, but it goes
> against most C/C++ programmer's sense of terseness/'beauty'...
> the same one that makes no check on array-bounds.} </Rant>

If possible, also, it would be nice to get away from the "root
can do anything" paradigm, and its associated inherited
privileges (crash a root-capable process and steal its
privileges). It would be nice to see something more like the
explicit privilege design used by CP in IBM's VM operating
systems.
As a side note, does anyone here remember the Intel iAPX432
processor, designed to execute Ada programs (almost) directly?

Leslie
From: Georg Bauhaus on
Dmitry A. Kazakov schrieb:

> The problem is that we followed the wrong path for too long. All these
> standards (XML to name one) are based on these flawed untyped file - "don't
> care about the contents" model. There could be no return, maybe.

The name "Don't care about the operations" model of file systems seems
adequate because virtually all contemporary file systems and
archive formats offer file type indication (via extended
attributes). Only the C and Ada libraries typically do not make
programmers aware of this fact.
From: Dmitry A. Kazakov on
On Tue, 12 Jan 2010 13:52:40 -0800 (PST), Maciej Sobczak wrote:

> On 12 Sty, 20:56, "Dmitry A. Kazakov" <mail...(a)dmitry-kazakov.de>
> wrote:
>
>> There should be no file system at all. If you have objects, I mean if you
>> do have them consistently all the way, then you do not need files. Make
>> objects persistent in the corresponding device, that gives you all
>> functionality of any file. No I/O is ever needed. Map the object into the
>> memory, call its operations, what else any program would have to do?
>
> Interact with other systems? You know, you might want to sometimes
> move your "persistent objects" to another machine.

Marshaling? In terms of ADT it is assignment. Create a local object of the
type. Assign the remote object to it. Done.

Provided you have the assignment defined.

> Did I mention that you might want to move you whole hard drive to
> another machine as well? :-)

Did you try? What happens with a NTFS drive in a Linux system? Can you
mount it as an ext4?

This is not a question of objects or raw blocks. If the OS recognizes the
pluggable component, there is no problem, if it does not there is a
problem. Nothing prevents a portable design of persistent storage.

Note that the file system itself is built on a layer of blocks and sectors.
So if your argument worked, there would be no need for a file system. We
would still read sectors and count drive heads...

> There is a reason why none of the pure-OO-OS-let's-do-it-correctly
> ever really took off.

Yes. There are many reasons. For all there is no consistently designed
OOPL, Ada included. Without MI, MD, tagged tasks, there is no chance to get
it right. But the major problem is lack of any interest, since the market
of operating system was burnt down to the ground.

>> The problem is that we followed the wrong path for too long.
>
> There is nothing wrong with that path, as it happens to be very
> pragmatic.

Maybe. If we compared the computing power we had in i386 days with the
power of a modern machine (that includes not only the CPUs but also all
processors and micro controllers on board). Is this increase of power
matched by what the software provides? I don't think it is. The
"pragmatism" was, if you have a software problem, buy a new computer. That
might be economically OK, but it still is bad for the software. In long
term perspective we sooner or later will be forced to use computing
resources more efficiently.

--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de