I appreciate your detailed response but I don't have time to respond to all
your points right now.  You can be assured that I will investigate your
points in the coming days.

I am not familiar with C# directly but have programmed extensively in C++
for many years.  C itself is not OO and nor is C++ so if C# is C at all is
isn't OO enough for me.  Can you create a LONG integer that can be used as a
LONG integer anywhere but have additional fields attached at the same time?
If I want a number that contains currency information like country,
conversion rate etc but I still want the system to recognize this whole
object as if it was just a DOUBLE float, is that part of C#?  (I mean a LONG
that contains 14 bytes but is treated at the compiler level and is
interchangeable with, a 4 byte LONG) This is a very small example of a huge
list of such things.  C by it's very nature says that things like LONG,
DOUBLE are elementary parts of the language and can't be modified or
extended.  This is not OO or the way my language was made.  Can you override
the assignment of a DOUBLE with your own routine without creating an object?
My language has almost no reserved words.  You can make variables called IF
or WHILE if you wanted (doesn't read very well however).  Is introspection,
code generation and execution an integral part of the design of C# even if
it can be done?

Have you ever tried to run many threads and synchronize them with mutex's?
My internal multi-threading is many times more efficient than any operating
systems could ever be because I don't allow outside programs to multi-task.
Samantha Atkins says there are "hacks" that you can perform that can
alleviate some of this overhead but I'm not much interested in "hacks".

You say a number of IDE's are available but even if you could sit in your
running program as you compile and edit it (I would be very shocked if C#
could do such a thing), C or any of it's derivatives were never designed for
this kind of thing.  C has a paradigm view that says humans make programs,
then compile, then run.  Stop running, edit program and start again.  Has C#
changed this paradigm?

My system provides for virtual disk reading and writing.  Objects just float
in and out of memory as they are needed.  In fact, you can't
open/close/read/write an operating system file even if you wanted to.  I
have made all disk accesses/writing automatic and invisible.  This true of
compiling as well (automatic and invisible).

The fact that C, C++ and I would presume C# has pointers, precludes any of
these from my list up front.  There can be no boundary checks at either
compile or execution time so this feature alone is incompatible with a
higher level language IMO. (The Java developers thought this as well so they
removed pointers from their version of C!)  If I wanted a language that is
as low a level (everything to everyone) language like C, I would just have
used C in the first place.

My point 6 about "simple as possible" means that some flexibility is lost so
that the programmer can spend their time on the project instead of the
language/programming.  Memory and disk garbage collection are built-in to my
system and no garbage collector could be programmed in any case as
allocating memory isn't even part of my language.  Allocating memory is just
not the programmers business in my language.

-- David Clark

----- Original Message ----- 
From: "Tony Lofthouse" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Saturday, March 24, 2007 7:54 AM
Subject: RE: [agi] My proposal for an AGI agenda



> David Clarke wrote:
> I have 18 points at www.rccconsulting.com/aihal.htm and an explanation for
> each one.  Prove to me that this list of features can all be accommodated
> by
> any existing computer language and I will stop my development right now
> and
> switch.
>

David, your full list of requirements is completely provided by C# and .NET.
See below for point by point matching:

1. Object Oriented
As a modern OO language C# supports encapsulation, data hiding,
polymorphism, etc, blah, blah, blah

2. All Classes, Methods, Properties, Objects can be created and changed
easily by the program itself.
.NET provides in depth reflection capabilities that provide this capability.
You can also construct code at run time using various approaches from high
level code to MSIL.

3. Efficiently run many programs at the same time.
There is in depth support for multi tasking at the process and thread level.
This includes multithreaded debugging. This is in part dependent on the OS
but that’s not an issue with Windows or Linux.

4. Fully extensible.
.NET is fully extensible through the addition of class libraries.

5. Built-in IDE (Interactive Development Environment) that allows programs
to be running concurrently with program edit, compile and run.
A number of IDEs are available. The Microsoft IDE supports real time update
of variables during debug sessions. As well as the language being fully
extensible the IDE is also fully extensible.

6. As simple as possible.
This is of course an unknown. That said C# has been designed to be as clean
a language as possible. It is type safe, has very good garbage collection,
and a minimal syntax that is very familiar to C/C++ and Java programmers.

7. Quick programming turnaround time.
If you mean compile time then C# compiles in a JIT environment so is very
quick, especially incremental builds.

8. Fast where most of the processing is done.
C# is almost as efficient as C++. Where speed critical components are needed
you can drop into unmanaged mode for high performance.

9. Simple hierarchy of Classes and of Objects.
What is a simple hierarchy? If you mean the library classes then it is as
simple as you want to make it. There is a rich set of class libraries that
you can utilise but you don't have to.

10. Simple Class inheritance.
C# uses single inheritance rather than multiple inheritance. This greatly
simplifies class design. Interfaces are provided to support those cases
where multiple inheritance would have been used. IMO this is much better
approach.

11. Simple external file architecture.
This is dependent on the OS but at the simplest you have text files. At the
other extreme you have RDBMS.

12. Finest possible edit and compile without any linking of object modules.
There are no object modules as such in .NET. Classes are grouped into
namespaces and then libraries. Each library is a .DLL which is directly
callable from the code.

13. Scalable to relatively large size.
C# is industrial strength. There are no limitations on current hardware. You
can develop fully distributed apps across multiple domains if you can afford
the hardware :-)

14. Built in SQL, indexes, tables, lists, stacks and queues.
Microsoft's version of C# ships with SQLSERVER RDBMS (single user, 3
conections), all common data structures are available as class libraries.
SQL syntax is now built right into the language with C# 3.0 (currently in
beta). You can use SQL to access all data containers not just SQL RDBMS.

15. Efficient vector handling of all data types.
Again this is handled via class libraries.

16. Internet interface.
Yes, it’s a standard class library.

17. Runs on Windows PC machines.
Yes. It also runs on Linux as Mono. There is a good IDE available for Gnome.

18. Can run as multiple separate systems on the same computer or in the
background
You can run multiple instances of the IDE on the same computer. You can
build applications that are services that will run as a service background
task.

I hope this will save you a lot of effort :-)

-- 
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.5.446 / Virus Database: 268.18.17/731 - Release Date: 23/03/2007
15:27


-----
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


-----
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