David, the short is answer is yes to ALL your points below. 

For those who are actually interested the details are below:

> David Clarke wrote: 
> 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?

All type are objects. So you can create whatever types you want. In early
version of C# there were some issues with performance when using common
types like int and long. A process called boxing was used to make this more
efficient. That has now been superceeded in more recent versions and is no
longer a problem.
 
> 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?

As I say above all types are objects. So you can do what you like with them
- i.e. subclass them to your hearts content.

> My language has almost no reserved words.  You can make variables called
> IF
> or WHILE if you wanted (doesn't read very well however).  

Ok I concede you can't use reserved words for variables names - but then why
the hell would you want to!

> Is
> introspection,
> code generation and execution an integral part of the design of C# even if
> it can be done?
Yes its built into the foundation of the language. It's not an obscure hack.
It's a mainstream class library that provide the functionality for this. 

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

That’s a neat trick. So on a four processor box you can take control of the
processors and the OS and run your own multitasking system on top of this?

I find this a little suspect. I could see how you could create your own
timeslicing mechanism within an application but this wouldn't give you
access to multiple CPU's and threads. It certainly wouldn't stop outside
programs multitasking (on windows or Linux)

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

First of all C# is not really a derivative of C. It has some common reserved
words but is a totally different language. And yes you can edit variables in
the IDE whilst the program is running. More impressive is the ability to
dynamically start and stop class libraries whilst the program is running.
This is of course a necessary requirement for 24/7 enterprise apps. You
can't afford down time to upgrade them. You just do it on the fly. This
enables you to update a class then dynamically change it with the older
version whilst the app is running.

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

That approach is still applicable in some circumstances but not in others.
The above example is a case in point.

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

Well that has been part of Windows for 20 years - DLL's! This is much more
efficient with .NET, and hence C#, than the original windows DLL framework.
But the basic functionality is similar, i.e. dyanically loaded/unloading
objects in/out of VM.

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

You presumption is incorrect, C# is a memory managed language and has no
pointers. Boundary overruns are not possible in C# (see caveat at end). This
was a design goal built in from the beginning.

> 
> 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.
> 
That is the approach that C# takes. There is no memory allocation! It is all
automatic. The garbage collector is a very sophisticated three level
algorithm, very similar in concept to the design of the Eiffel language if
you are familiar with that. 

There is one caveat I need to mention. In order to provide the maximum
flexibility for the developer C# provides something called unsafe mode. This
allows the programmer to use pointers and memory allocation if necessary. In
practice this is rarely used and needs to be explicitly declared.

> -- 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
> 
> --
> No virus found in this incoming message.
> Checked by AVG Free Edition.
> Version: 7.5.446 / Virus Database: 268.18.17/731 - Release Date:
> 23/03/2007 15:27
> 

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

Reply via email to