For anyone who might be interested, all program, classes, objects etc reside
in a single operating system file.  Only a simple config file resides
outside this one file and it is used at startup only.  The overhead of
1000's of classes and 10,000's of objects made me decide to make access to
any of these objects at least an order of magnitude faster than using many
files in an arbitrarily complex operating system directory tree.  There are
disadvantages to this scheme but the benefits made this my decision.

----- Original Message ----- 
From: "Chuck Esterbrook" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Saturday, March 24, 2007 9:32 AM
Subject: Re: [agi] My proposal for an AGI agenda


> For that particular example, yes I believe you can. You do so by
> creating a class (or struct; your preference) and giving it an
> "implicit cast to long".

Can you use the resultant LONG anywhere, with the same syntax and efficiency
as if it was just 4 bytes?  In my language, you can inherit *any* class as
the "base class" on an object and it's that "base class" that determines
even the built in methods at execution and compile time.  These kind of
objects are stored directly in other objects (some objects exist in the
object hierarchy) so the overhead is the same as if the object were just the
built in variable type.

> But another way to use C# would be in place of your C++. You may find
> it more productive and if your language features garbage collection,
> you get that for free (no future maintenance). With a little bit of
> rigging, you would also get access to all .NET libraries, both
> built-in and standard.

That might be something I consider doing in the future but definitely is
worth a look.

> Btw I just recalled that Second Life decided to switch their
> proprietary VM over to Novell Mono (they run on Linux so they run
> .NET's open source clone) for 2 benefits:
> 1. Huge increase in speed by leverage the fact that Mono/Novell
> generate machine code

Generating machine code decreases flexibility (in my design) and wouldn't
improve the speed much at all.

> 2. Let people choose from a number of languages instead of just one

I would like to spend most of my time working on an AGI instead of
programming in low level languages, so multi-languages are not an option for
me.  I tried to track down all the nested include files used by one of my
C++ modules and after at least 30 files, I gave up.  I will trade some
flexibility in what can be usefully programmed in my language for a little
bit more simplicity (or a lot more simplicity).  Some people enjoy more
complexity than others.

> Only mildly. There is a Property Inspector you can use at runtime to
> modify your objects. You have to provide the UI code that pops it up.

All meta and value data is accessible at execution time for *all*
objects/variables (even a LONG is an object) in my language.

> There is an "edit and continue" feature in the IDE, but it does not
impress.

My programming model is an event system so "program" has a slightly
different meaning that say in C++.  Programs can pop into execution space by
time, other program invocation or external stimulation like getting a
message from a web browser.  If a single program stopped because of an
error, my system couldn't just let it continue from the console, either.
This could be done with the built-in error catching mechanism, however.  A
normal program written in C++ would end up being many smaller programs
running serially or in parallel and each small program can be changed etc
while others execute.  Unlike a C++ system, not only is all data accessible
to running programs and ones triggered by Internet messages, but all their
methods are available while editing as well.

> You can probably get the IronPython prompt embedded in your .NET
> program and get some real in-program coding going.
>
> What if you need to read in a text file because that's how someone has
> delivered some information to you?

There is an import facility from a specific operating system directory that
can import things like text files, images, and comma delimited files
directly into tables. (Any arbitrary file can be imported, not just the 3
kinds mentioned)  This means that this language can never be used in direct
connection to normal operating system files etc.  No ODBC database hooks
etc.  It does mean that it can never be used to maliciously change any other
programs or systems on a persons' computer either.

> C# has pointers
> (http://www.softsteel.co.uk/tutorials/cSharp/lesson5.html) but hardly
> anyone uses them in day-to-day programming. The idea behind having
> them was to avoid the Java problem where people get pushed out to JNI
> when they want to integrate third party C libs. With C#'s pointers,
> structs and arrays, you can stay in the same language.
>
> Probably another point is to coax more speed out of the
> machine--again, without having to "step outside".

Stepping outside is not an option in my language.  This could be viewed as
either good or bad.

> Btw your last statement seems a bit reactionary. Just because C# has
> some things in common in C doesn't mean one would automatically use C
> in the first place. You'd give up garbage collection, exceptions and
> classes just for starters!

I didn't mean it to be reactionary (negative) at all.  I have used C since
1979 and C++ for over 7 years so I don't totally hate these languages at
all.  C#, I know nothing about at all so it is hard to reply to comparisons
about it.  I already have very good garbage collection, exceptions and
classes created by me.  I am not a big fan of multi-program integration.  My
commercial web site uses Linux, Apache, PHP3, and MySQL.  I have had many
problems with different versions of these programs not working with other
versions.  The list of problems I have with this set of 4 (many web sites
run this group) programs made by 4 different companies is huge.  The sooner
I can get my web site running in my language the better.

> Sounds good. Like someone else mentioned, I'm especially curious what
> role self modifying code plays in your ideas for AGI, and why the code
> that people write and that self modifies is the same. In other
> systems, such as genetic programming and Novamente, these are separate
> languages with different characteristics (that many of us believe are
> suited for the role: person programmer vs. automatic programmer).

Ben seems (I don't profess to know all the details) to have a C++ program
that contains an internal functional or other language to implement his
system.  The majority of his system seems to be in C++ and only some of his
implementation is in his internal language which sounds like it can be
programmed by the system itself.  If new algorithms are added etc to his
AGI, then it would seem those changes would occur in the C++ part of the
program rather than in the functional system.  I think that developing a
huge project in C++ is exceedingly difficult because of the low level of
that language.  In my C++ program, I have spent my time optimizing that
internal language so that my AGI and any functional languages I need to
create, can be created, compiled and executed at speeds approaching C++.
One example is my inclusion of the LISP macro facility.  No run-time
execution hit is paid for any number of complex macro code instructions
because any LISP function can create standard LISP source code and have it
compiled into the program at compile time.  The flexibility of the language
can be used to create this included source.  People who use LISP (I have
read on LISP sites) say that this feature is indispensable to them enhancing
the abstraction level of LISP.  With my integrated and total introspection,
I can envision using this macro facility to create native byte code for
higher level functional, special purpose languages (for example) instead of
simulating that functionality in the code directly.  I have other language
features that allow the editing of existing methods and the creation of new
methods/classes/objects etc at run time.  My language won't have to rely
just on inheritance to reuse code in new models, for instance.  Code from
multiple sources can be joined to create new methods automatically without
the overhead of another interpreter, on top of an interpreter etc

A direct comparison between my language and other languages like Python,
LISP, C, C++, C#, Java etc is very useful to me but I don't pretend that the
purpose of my language is as general as or can be used in as many normal
programming tasks, as these languages can.

-- David Clark


-----
This list is sponsored by AGIRI: http://www.agiri.org/email
To unsubscribe or change your options, please go to:
http://v2.listbox.com/member/?list_id=303

Reply via email to