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

Reply via email to