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

Reply via email to