From OpenCog

See also Theory and the OpenCogPrime:FAQ.


Why C++

Why not <insert name of favorite programming language here>, which is obviously superior for the purpose?

Replicating the lengthy discussions of this issue that have occurred on various mailing lists might be amusing, but, the authors of this FAQ haven't found the energy/motivation for it.

Probably the most salient point is simply that AGI is an application that seems very likely to require a fairly large amount of computational firepower. If we need a large number of multiprocessor machines, networked together in a manner designed to support complex distributed processing, to run OpenCog ... well, the fact is that C++ is by far the most thoroughly battle-tested language for this sort of scenario. An awful lot of the programs running on supercomputers are C++ programs (though admittedly, Los Alamos's nuclear simulation software is largely FORTRAN...).

It is often said that development time is longer in C++ than in some other languages, but the literature is less clear regarding which sort of tasks this holds true for, when experienced C++ developers are involved.

In any case, many OpenCog MindAgents have been developed via first prototyping them in another language, and then recoding them in C++

Is the OCF useful for narrow-AI applications?

It's fairly straightforward to do; Novamente LLC has built custom applications for customers using the NCE, the antecedent to the OCF.

However, before embarking on such a path, a very careful evaluation needs to be made regarding whether it's really a good idea. Using a framework like OCF adds a fair bit of overhead and development time to an application; at least given the current stage of development of OC this is true.... And the real benefit of the OCF comes from the ability to use various different AI algorithms in adaptively cooperative ways, which is not always needed in narrow-AI applications.

An option in some applications is to just use the AtomTable and not bother with the OpenCog core system itself, Or, one can potentially use specific MindAgents together with the AtomTable, within a custom application framework.

On the other hand, if you have a narrow AI application that is going to make genuine use of synergy between different AI processes, it may well be that using OC as a platform is the best choice.

As an example, the first version of Biomind's AI-bioinformatics-data-analysis toolkit was implemented within the NCE, but later this was found to be an unnecessary and cumbersome approach and the toolkit was reimplemented mostly in Java, outside the context of any general AI framework! However, our near-future plans for Biomind involve integrating OCP-based PLN/MOSES functionality into the Biomind toolkit ... so that a later version of the Biomind toolkit will likely invoke OCP for some functions but rely on the simpler Java code for most functions. This example may help convey the subtlety of the issues involved.

Is the OCF useful for proto-AGI applications?

What is the viability of using the OCF to create something halfway between Narrow AI and AGI, a partly-general-AI, which would have practical applications, perhaps commercially lucrative or humanly beneficial ones?

This question is nearly impossible to answer in a general way, it really needs to be pursued a detailed case-by-case analysis...

However, so far every detailed discussion in this direction that I (Ben Goertzel) have seen has lead to an ambiguous or negative conclusion.

It has also been found, by many AGI researchers and teams, that pursuing ideas like this tends to be a huge distraction from working on an actual thinking machine....

One of the nice things about OC being a nonprofit OSS project, as opposed to a commercial project, is that in an OC context it's permissible to ignore the possibility of making $$ via incremental products created along the way, and to move straight toward the goal of a human level AGI.

Having said that, Novamente LLC (a startup firm that donated the initial OpenCog code and is actively involved in OpenCog/OCP development) is actively pursuing applications of OpenCog-based code to the control of agents in virtual worlds and games, an area that *may* be found to qualify as somewhere that "partly-general AI" has powerful applications. And this may not be the only such area. For instance, natural language based text search, or industrial robot control, might be other promising possibilities.


Can you really expect to create a human-level AGI without mountains of funding?


Mountains of funding would be nice, of course, and it is far from impossible for a successful open-source R&D project to attract significant funding. It seems fairly likely that once a sufficiently impressive level of learning is achieved via an OCP system, significant funding *will* come OCP's way.

However, one of the nice things about AI R&D is that it doesn't actually require big money. It would certainly *benefit* from big money -- we would progress faster and smoother with more funding -- but the bottom line is, if the general approach underlying OCP is correct, then AI R&D doesn't require expensive research labs, it just requires smart people with good ideas and commodity computers (or, at worst, commodity computational clouds). So, the non-AGI-ish research directions habitually chosen by the research funding establishment so far, while unfortunate, can't impair progress *that much* in this case as opposed to other areas like nanotech that require more hardware investment up-front.

In short: The open-source approach is one potential way of bypassing the non-AGI-ish research directions of the gov't research establishment, and the general lack of attention paid to AGI by the industry research establishment.