On 3/24/07, David Clark <[EMAIL PROTECTED]> 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?
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
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".
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.
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?
Not as integral as you're wanting. Introspection is fairly easy. The
others require more work. But C++ is even worse from the perspective
of which language to use for implementing your language.
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
2. Let people choose from a number of languages instead of just one
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?
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.
There is an "edit and continue" feature in the IDE, but it does not impress.
You can probably get the IronPython prompt embedded in your .NET
program and get some real in-program coding going.
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).
What if you need to read in a text file because that's how someone has
delivered some information to you?
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.
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".
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!
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.
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).
-Chuck
-----
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