Samantha Atknis wrote:
Ben Goertzel wrote:
Regarding languages, I personally am a big fan of both Ruby and
Haskell. But, for Novamente we use C++ for reasons of scalability.
I am curious as to how C++ helps scalability. What sorts of
"scalability"? Along what dimensions? There are ways that C++ does
not scale so well like across large project sizes or in terms of
maintainability. It also doesn't scale that well in terms of space
requirements if the class hierarchy gets too deep or uses much
multiple inheritance of non-mixin classes. It also doesn't scale
well in large team development. So I am curious what you mean.
I mean that Novamente needs to manage large amounts of data in heap
memory, which needs to be very frequently garbage collected according to
complex patterns.
We are doing probabilistic logical inference IN REAL TIME, for real time
embodied agent control. This is pretty intense. A generic GC like
exists in LISP or Java won't do.
Aside from C++, another option might have been to use LISP and write our
own custom garbage collector for LISP. Or, to go with C# and then use
unsafe code blocks for the stuff requiring intensive memory management.
Additionally, we need real-time, very fast coordinated usage of multiple
processors in an SMP environment. Java, for one example, is really slow
at context switching between different threads.
Finally, we need rapid distributed processing, meaning that we need to
rapidly get data out of complex data structures in memory and into
serialized bit streams (and then back into complex data structures at
the other end). This means we can't use languages in which object
serialization is a slow process with limited
customizability-for-efficiently.
When you start trying to do complex learning in real time in a
distributed multiprocessor context, you quickly realize that
C-derivative languages are the only viable option. Being mostly a
Linux shop we didn't really consider C# (plus back when we started, .Net
was a lot less far along, and Mono totally sucked).
C++ with heavy use of STL and Boost is a different language than the C++
we old-timers got used to back in the 90's. It's still a large and
cumbersome language but it's quite possible to use it elegantly and
intelligently. I am not such a whiz myself, but fortunately some of our
team members are.
-- Ben G
-----
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