From mboxrd@z Thu Jan 1 00:00:00 1970 Path: main.gmane.org!not-for-mail From: Neil Jerram Newsgroups: gmane.lisp.guile.user Subject: Re: Newbie - desigining apps Date: Sat, 09 Oct 2004 22:47:45 +0100 Organization: Neil Jerram Sender: guile-user-bounces+guile-user=m.gmane.org@gnu.org Message-ID: <41685C81.2070507@ossau.uklinux.net> References: <4165E98D.3090304@triad.rr.com> Reply-To: neil@ossau.uklinux.net NNTP-Posting-Host: deer.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-Trace: sea.gmane.org 1097358577 5448 80.91.229.6 (9 Oct 2004 21:49:37 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Sat, 9 Oct 2004 21:49:37 +0000 (UTC) Cc: Guile User Mailing List Original-X-From: guile-user-bounces+guile-user=m.gmane.org@gnu.org Sat Oct 09 23:49:28 2004 Return-path: Original-Received: from lists.gnu.org ([199.232.76.165]) by deer.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 1CGP5j-0001xG-00 for ; Sat, 09 Oct 2004 23:49:28 +0200 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1CGPCa-0002no-V7 for guile-user@m.gmane.org; Sat, 09 Oct 2004 17:56:33 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1CGPCX-0002ni-Ew for guile-user@gnu.org; Sat, 09 Oct 2004 17:56:29 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1CGPCX-0002nW-0m for guile-user@gnu.org; Sat, 09 Oct 2004 17:56:29 -0400 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1CGPCW-0002nT-TO for guile-user@gnu.org; Sat, 09 Oct 2004 17:56:28 -0400 Original-Received: from [80.84.72.32] (helo=mail2.uklinux.net) by monty-python.gnu.org with esmtp (Exim 4.34) id 1CGP5D-0005Pd-Iu for guile-user@gnu.org; Sat, 09 Oct 2004 17:48:55 -0400 Original-Received: from laruns.ossau.uklinux.net (unknown [213.78.68.24]) by mail2.uklinux.net (Postfix) with ESMTP id 624AF409FA6; Sat, 9 Oct 2004 21:48:53 +0000 (UTC) Original-Received: from ossau.uklinux.net (localhost [127.0.0.1]) by laruns.ossau.uklinux.net (Postfix on SuSE Linux 7.2 (i386)) with ESMTP id 427E4DC4D4; Sat, 9 Oct 2004 22:47:46 +0100 (BST) User-Agent: Mozilla/5.0 (X11; U; Linux 2.4.4-4GB i686; en-US; 0.8.1) Gecko/20010515 X-Accept-Language: en Original-To: Max Polk X-BeenThere: guile-user@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: General Guile related discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-user-bounces+guile-user=m.gmane.org@gnu.org Xref: main.gmane.org gmane.lisp.guile.user:3538 X-Report-Spam: http://spam.gmane.org/gmane.lisp.guile.user:3538 Max Polk wrote: > I'm intending on moving forward with free software development and > understand Guile is the official extensibility language of GNU, and that > I ought to support it in my application. Makes sense, fine. > > Now for this to be useful at all, my application has to be designed from > the beginning to accommodate external control. That's a big thing, > writing an app that controls itself by traditional design, versus > writing an app that is controlled from the outside. > > Have others found that supporting Guile in an application means > rethinking how it runs at it's very core? For example, instead of > writing use cases and designing from that, now I have a use case like > "let the user call any higher-level function". > > Even worse, what about object orientation? Is it possible to let the > user create, then assemble together, use, then destroy various program > objects, all from Guile? And how is even that done, returning C++ > objects back to Guile -- I assume you would have to return a handle > representing the internal program object, then add some management layer > that maps these handles to internal objects. > > WOW! This is a radically new approach to software development! > > Can someone can start me off on the right foot? I'll have a go ... I'd say the main thing is to be clear on why you want to add Guile to your application. There is one good reason, for example, that may have nothing to do with extensibility, namely that you yourself simply prefer programming in Scheme to programming in C. In this case (and assuming that there is something that ties you to C, such as needing to interface to existing code), the trick is to create a C<->Scheme interface as close as possible to your existing code, and then use the Scheme side of this interface to write the rest of the application in Scheme. In this case the high level control design in Scheme may be essentially the same as it would be if you had written in C. (Modulo functional/imperative style differences and continuations, which can turn an event-driven program inside out if you choose to use them.) On the other hand, if it _is_ extensibility that you are after, by definition that means that you expect other people to code things that are not in the core application, but you presumably have some idea of the kind of extensions that you want to enable them to write? I could say more by offering some examples, but it probably makes most sense for you to say a bit more about your application first, so that the discussion can be more targeted. Regards, Neil _______________________________________________ Guile-user mailing list Guile-user@gnu.org http://lists.gnu.org/mailman/listinfo/guile-user