One of my major points that we've lost in all this is that *every* piece should have clean, well-specified interfaces and APIs such that the language of one piece really shouldn't have an effect on the language of another.

C++ runs just fine under .Net (albeit as "unmanaged code").

If I were to create a .Net fork, I would still have both C# and C++ versions and let developers use both and choose between them as necessary.

The best way to start a .Net fork would be to just get the current C++ to compile and run under .Net.

Then I'd start trying to help with the documentation . . . . then the C#.

----- Original Message ----- From: "Ben Goertzel" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Cc: <[email protected]>
Sent: Monday, May 26, 2008 10:10 AM
Subject: Re: Mark Waser arguing that OpenCog should be recoded in .Net ;-p



Mark,

If it were possible to make both C# and C+ versions of the core
(AtomTable and scheduler), and have both C# and C++  MindAgents run on
both, then we would have a favorable situation in terms of allowing
everyone to use their own fave languages and development environments.

-- Ben G

On Mon, May 26, 2008 at 7:18 AM, Mark Waser <[EMAIL PROTECTED]> wrote:
While all the language wars continue, I'd like to re-emphasize my original point (directly copied from the original e-mail) -- One of the things that I've been tempted to argue for a while is an entirely alternate underlying
software architecture for OpenCog -- people can then develop in the
architecture that is most convenient and then we could have people
cross-port between the two.

Seriously people, I'm not asking anyone to move away from what *you* are
familiar with if you don't want to.  I'm saying that maybe we should
deliberately attempt to open this up so that we get *more* contributions and
viewpoints -- at the admitted cost of needing better documentation and
control -- which is really necessary anyways.  My "belief" is that seeing
what happens will cause a migration -- but I'm not invested in that belief
and would be happy and see huge benefits either way.

    Mark

P.S.  Thank you for the forward Ben.

----- Original Message -----
From: Ben Goertzel
To: [EMAIL PROTECTED]
Sent: Sunday, May 25, 2008 8:29 PM
Subject: Mark Waser arguing that OpenCog should be recoded in .Net ;-p

This email thread on the AGI list really seems more appropriate for the
OpenCog list... so I'm forwarding it here...

-- Ben G


----------
From: Mark Waser <[EMAIL PROTECTED]>
Date: Sun, May 25, 2008 at 4:23 PM
To: [email protected]


Yeah, I'll certainly grant you that. The unfortunate problem is that people
coming in late don't see the prior arguments and then engage in behavior
that they believe is similar but entirely without the scientific rigor that
you normally follow but don't always visibly display.

Also, on the other hand, for certain classes of issues where you are less of
an expert -- like in large-scale systems architecture (both software and
conceptual), a number of your previously posted arguments are *I believe* at
best questionable if not outright wrong.  The fact that these assumptions
aren't open for inspection at a convenient location is problematical if many
other things are built on top of them and then they turn out to be wrong.

We need to start to gather the best of these assumptions and debates in one place (probably a wiki) because long-term e-mail looping is not efficient. I've had this as a low priority thought for the AGI-Network but I think that I'm going to escalate it's priority substantially and see if I can't come up
with a conceptual design for such a wiki (with scaled and isolated
privileges) over the next couple of weeks.

One of the things that I've been tempted to argue for a while is an entirely
alternate underlying software architecture for OpenCog -- people can then
develop in the architecture that is most convenient and then we could have
people cross-port between the two.  I strongly contend that the current
architecture does not take advantage of a large part of the newest advances
and infrastructures of the past half-decade.  I think that if people saw
what could be done with far less time and code utilizing already existing
functionality and better tools that C++ would be a dead issue.
----------
From: Ben Goertzel <[EMAIL PROTECTED]>
Date: Sun, May 25, 2008 at 4:26 PM
To: [email protected]


Somehow I doubt that this list will be the place where the endless
OS/language
wars plaguing the IT community are finally solved ;-p

Certainly there are plenty of folks with equal software engineering
experience
to you, advocating the Linux/C++ route (taken in the current OpenCog
version)
rather than the .Net/C# route that I believe you advocate...

-- Ben G
----------
From: Lukasz Stafiniak <[EMAIL PROTECTED]>
Date: Sun, May 25, 2008 at 5:24 PM
To: [email protected]


No, I believe he advocates OCaml vs. F#   ;-)
(sorry for leaving-out Haskell and others)
----------
From: Mark Waser <[EMAIL PROTECTED]>
Date: Sun, May 25, 2008 at 5:59 PM
To: [email protected]


Cool. An *argument from authority* without even having an authority. Show
me those "plenty of folks" and their reasons for advocating Linux/C++.
Times have changed. Other alternatives have advanced tremendously. You are
out of date and using and touting obsolete software and development
methods.  I *don't* believe that you can find an expert who has remained
current on technology who will back your point.

{NOTE: It's also always interesting to see someone say that the argument is OS/language vs. framework/language (don't you know enough to compare apples
to apples?)]

More importantly, I don't believe that I've ever explicitly endorsed C#.
What I've always pushed is the .NET framework because 1) it's got far more already built infrastructure than anything else and 2) you can mix and match
languages so that you can use the most appropriate language in any given
place and still use another language where it is more appropriate.

So, I'll take up your challenge . . . .

I've developed in multiple flavors of Basic, Pascal, Assembly Language,
LISP, Prolog, C, C++, TCl, etc.
For experimental development, C++ is probably the worst choice.  It's the
old first-attempt camel you use when you're trying to get speed and
object-oriented programming. The things that you *have* to worry about like memory management and the errors that you can *easily* make are only offset where speed is truly a concern. Except that development speed and iteration is more important to this effort than sheer system speed. Except that the maximum speed-up that you can get from C++ isn't that great -- and you only get that if you are *really* good. Why aren't you using C++ only in really core systems and something more appropriate for development elsewhere? Oh
yeah, because there is no really good way to easily integrate multiple
languages like when using .NET.

If you were serious about speed, you'd be using straight C.  If you were
serious about development time and ease of development, you'd be using a
better object-oriented language -- or better yet, in many places, a
functional language.

Face it, you're using what you know and what you've *been* developing in -- and it's obsolete technology . . . . Your systems people are not keeping up
as is REQUIRED to maintain your edge in the systems field.

The newest version of C# now has virtually all of the functional capacity of OCaml -- or, why not just use F# where appropriate? For web stuff, there's
far more infrastructure available under .NET than is available under any
*nix or Java and if you like the languages available on *nix, there's always
IronPython and Iron Ruby.

I claim as FACT that general development under .NET is at least twice as
fast as in any other environment due to the existing tools and
infrastructure.

Can you find anyone who is familiar with both .NET 3.5 and Linux/C++ who is
willing to claim otherwise?

What is your reason for using C++?  Other than the fact that porting your
application is going to be expensive, I'm not sure that you have a valid
one. And I'm reasonably sure that the advantages of porting will *rapidly*
provide a return on investment sufficient to offset the porting cost.

So, please, back up your claim.  Find some experts who are up-to-date to
explain why Linux/C++ is better.



-------------------------------------------
agi
Archives: http://www.listbox.com/member/archive/303/=now> Modify Your
Subscription: http://www.listbox.com/member/?&;
----------
From: Ben Goertzel <[EMAIL PROTECTED]>
Date: Sun, May 25, 2008 at 6:32 PM
To: [email protected]
Cc: Linas Vepstas <[EMAIL PROTECTED]>


Mark --

About C++ versus C# ...

This blog post and some of the more intelligent comments  (e.g. David
Brownell's) summarize many of the standard arguments back and forth.

http://blogs.msdn.com/ericgu/archive/2005/01/26/360879.aspx

Linas Vepstas is a very experienced software developer who can likely
argue the practical advantages of C++ in the Linux environment, more
adeptly than I can.  He is involved with OpenCog, as well.

For a typical Web-front-end, DB-back-end software system, or a Windows
app, I would obviously advocate C# over C++.  Although java, Ruby and
Python have a lot to be said for them for various applications as
well.  For a real-time control system that involves complex algorithms
using large amounts of memory in complex patterns, I still maintain
that C++ is the best choice.  The big advantages to C++ from an
OpenCog point of view seem to be the capability to do your own garbage
collection, the STL and Boost which are great libraries, and templates
in general including template metaprogramming.

I'm aware .Net has evolved a lot in recent years, but so has the C++
world, especially the Boost libraries which are extremely powerful.

Regarding Linux versus Windows, this seems to be more of an
individual-preference thing.  I have programmed in both, though in
neither case as a professional engineer (more as a research
programmer), and I found myself significantly more productive in Unix
environments.  I like the command-line environment and I like piping
stuff from one program to another using shell scripts, etc.  I won't
claim this is superior intrinsically to the Windows approach, but I
will claim that it's an extremely productive environment for those who
are accustomed to it.

http://www.paulgraham.com/gh.html (section: more than money)

Jonas Koekler's post here

http://www.linuxquestions.org/questions/programming-9/advantages-of-being-a-linux-programer-instead-of-programing-in-windows-455895/

is also insightful

Obviously these are not simple issues since there are smart,
experienced, insightful people arguing both sides of the dichotomy.
For OpenCog we had to make a definite choice and we made one.  Sorry
you don't agree w/ it.


-- Ben



----------
From: Mark Waser <[EMAIL PROTECTED]>
Date: Sun, May 25, 2008 at 7:15 PM
To: [email protected]
Cc: Linas Vepstas <[EMAIL PROTECTED]>


It is a good blog post. Now, how many of Dave Brownell's features are you actually using? How easy are they for other developers to use? How much of a problem is it and how long does it take to run problems down? So, get him
to argue.  Citing his name is merely an argument from authority. Does he
have actual experience in anything else? For a real-time contrl system that
involves complex algorithms using large amounts of memory in complex
patterns C should be used over C++ every time.
----------
From: Mark Waser <[EMAIL PROTECTED]>
Date: Sun, May 25, 2008 at 7:36 PM
To: [email protected]
Cc: Linas Vepstas <[EMAIL PROTECTED]>


Continuing on from a mistaken send . . . Boost is not particularly powerful.
 Using Boost involves a *lot* of work because the interfaces are not
particularly good. Of course, the real question is -- why are you arguing
any of this when you could be also using C++ and Boost from .Net? Not that
I would since previous e-mails on the OpenCog list haven't been hapy with
Boost . . . .

So . . . I'm glad you believe that you're aware .Net has evolved. How has
it evolved? Why do you keep bringing up this old dead horse?  I keep
deliberately removing it since it is as you say "an individual preference
thing" --  except in terms of what is available under it and all sorts of
market share arguments (which I actually deliberately removed from MY last
e-mail so as not to cloud the issue with random facts like you're doing).
There are people arguing both sides of the global warming issue as well.
Can't we argue this from REASONS instead of authority? I agree that you had to make a choice and made the one that seemed right to various reason. The above comment is rude and snarky however -- particularly since it seems to come *because* you can't justify your choice. I would expect better of you.

= = = = = = =

Let's try this again. Get your experts together and create a short list of
why C++ on Linux (and any infrastructure there that isn't immediately
available under .Net) is better than the combination of all the .Net
languages and all the infrastructure available there that isn't immediately available under Linux. No resorting to pseudo-democracies of experts, how
about real reasons that YOU will stand behind and be willing to defend.

I've seen a lot of speculation on the OpenCog list about using this or that
or the other thing and I've seen *a lot* of stuff dismissed and virtually
nothing embraced. I mainly mention this because I'm actually surprised at
how little seems to be reusable (i.e. less than I would have guessed).

So . . . . how about it?  Real reasons or more random sidetracks and
insults?
----------
From: Ben Goertzel <[EMAIL PROTECTED]>
Date: Sun, May 25, 2008 at 8:26 PM
To: [email protected]
Cc: Linas Vepstas <[EMAIL PROTECTED]>


Mark,
This would be a reasonable exercise, but I simply don't have time to
deal with it
right now.

I'm about to leave on a 2.5 weeks business / research-collaboration trip to Asia, and en route I hope to make some progress on mutating Novamente docs
into OpenCog docs.  No time to burn on these arguments at the moment.

However, it might be worthwhile to create a page on the OpenCog wiki
focused on this issue, if others are also interested in it.

There could be a section on the page arguing the potential advantages
of .Net for
OpenCog; a section on the page arguing the intended advantages of the
current
approach; and other sections written by folks advocating other approaches
(e.g. LISP-centric, whatever...).

Perhaps if you create this page and get it started w/ your own arguments,
others
will contribute theirs and we can advance the debate that way.

-- Ben




>




--
Ben Goertzel, PhD
CEO, Novamente LLC and Biomind LLC
Director of Research, SIAI
[EMAIL PROTECTED]

"If men cease to believe that they will one day become gods then they
will surely become worms."
-- Henry Miller

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "OpenCog.org (Open Cognition Project)" group.
To post to this group, send email to [EMAIL PROTECTED]
To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/opencog?hl=en
-~----------~----~----~----~------~----~------~--~---






-------------------------------------------
agi
Archives: http://www.listbox.com/member/archive/303/=now
RSS Feed: http://www.listbox.com/member/archive/rss/303/
Modify Your Subscription: 
http://www.listbox.com/member/?member_id=8660244&id_secret=103754539-40ed26
Powered by Listbox: http://www.listbox.com

Reply via email to