2009/12/10 Michael Turner <[log in to unmask]>:
> Linas wrote:
>
>> URL? [For coordination in WG]
Thanks!
>> [Erlang is] a good choice. We are debating re-writing the
>> guts of opencog in erlang to get concurrency.
>
> Can you point me to the best place to pick up the thread of that
> discussion? I'd really like to get the perspective of experienced
> cognitive modelers on Erlang.
Err ... some background, then--
-- erlang is occasionally discussed on lambdatheultimate and seems to
get an almost entirely positive response (the negative being its
obscurity)
-- I recently skimmed a combined interview of the main erlang & haskell
dvelopers, where they compared, contrasted, threw barbs at each other
and also nodded in agreement Google for this, it might help provide
some warm fuzzies.
-- as to opencog, I dont' recall if we talked about it in emails, we
did via IRC. But let me be very clear: the interest has nothing at
all to do with cognitive-anything in erlang -- rather, its having to
do with parallel programming for multi-core cpus, and distributed
programming across many cpus on the net. (and erlang's
'fault-tolerance' -- dealing with machines that go offline, networks
that flake out, etc). That is far and away the #1 reason to be
interested in erlang.
On the cognitive side, opencog is (almost) completely detached from
the underlying programming language. That's because opencog
represents all of its data as (hyper-)graphs, and these hypergraphs
form networks -- are used to represent is-a, has-a, 'semantic'
relations, or syntactic relations like subj, obj, etc. or first-order
logical assertions, or set membership, or implications of various
sorts, deduction rules, etc. All of this is represented independent of
the programming language -- and you can get to, and manipulate these
structures, in C++ or scheme, or python, (and maybe erlang, someday,
or potentially other langauges)
The critical point for newcomers is "don't think in terms of C++,
that's not where the action is. Think in terms of the hypergraphs,
and the transformations on the hypergraphs. The transformations that
are applied to hypergraphs are hypergraphs themselves. (and are not
C++/scheme/python code)". once you understand this, you realize that
the programming language is secondary -- the "important" stuff is in
the hypergraphs. The C++/erlang/etc code just provides the compute
substrate --- important but secondary to the general idea.
--linas
|