Aki Iskandar wrote:
Hello -
I'm new on this email list. I'm very interested in AI / AGI - but do
not have any formal background at all. I do have a degree in Finance,
and have been a professional consultant / developer for the last 9
years (including having worked at Microsoft for almost 3 of those years).
I am extremely happy to see that there are people out there that
believe AGI will become a reality - I share the same belief. Most, to
all, of my colleagues see AI as never becoming a reality. Some that
do see intelligent machines becoming a reality - believe that it is
hardware, not software, that will make it so. I believe the opposite
... in that the key is in the software - the hardware we have today is
ample.
The reason I'm writing is that I am curious (after watching a couple
of the videos on google linked off of Ben's site) as to why you're
using C++ instead of other languages, such as C#, Java, or Python.
The later 2, and others, do the grunt work of cleaning up resources -
thus allowing for more time to work on the problem domain, as well as
saving time in compiling, linking, and debugging.
I'm not questioning your decision - I'm merely curious to learn about
your motivations for selecting C++ as your language of choice.
The Novamente AI system is designed to run efficiently on SMP
multiprocessor machines, using large amounts of RAM (as many gigabytes
as the machine will support), and requiring complex and customized
patterns of garbage collection. The automated GC supplied by languages
like Java or C# will not do the trick. C++ is the only language that
has been intensively battle-tested under this kind of scenario. (In
principle, C# could be used, with copious use of unsafe code blocks, but
it has not been intensively tested in this kind of scenario.)
C++ is a large language that can be used in many different ways. Early
Novamente code was somewhat C-ish and is gradually being replaced. New
Novamente code makes heavy use of STL, generic design patterns, and the
Boost library, which is a more elegant C++ dialect. STL and Boost do a
lot of the gruntwork for you too, although they're not as simple to use
as Java or Python, of course.
I personally love the Ruby language, and have prototyped some Novamente
stuff in Ruby prior to its incorporation in the main C++ codebase. But
Ruby is really slow and can't handle complex GC situations.
-- Ben G
Thanks,
~Aki
-----
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