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
--~--~---------~--~----~------------~-------~--~----~
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