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 thats 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, its 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
