Hi Russell, Although I've already chosen an implementation language for my Texai project - Java, I believe that my experience may interest you. As many here already know, Cycorp's implementation language was a lisp subset during the the time I worked there. At Cycorp, I explored creating an agent control language that could be persisted in the Cyc KB. In the current OpenCyc download, the terms in that otherwise unused vocabulary are still present with a CBL... prefix. Cyc Behavior Language was lisp-like and relied upon the Cyc deductive inference engine to the maximum possible extent; e.g. to evaluate conditional expressions. My experiments with CBL led to the conclusion that the majority of the hand-coding, both program code and knowledge entry, pertained not to the target language, but rather to the abstract algorithms and domain knowledge required for the target program composition domain.
Another way to understand my hypothesis is to consider an intelligent code-generating system that knows how to write code for a reasonably complex task and to think about the perhaps small amount of that system that is implementation language specific. I hope to perform experiments in 2009 to prove or disprove this notion, using the Texai bootstrap English dialog system, under development, to create and edit Java source code. When deciding upon my own project's implementation language a couple of years ago, I shared your desire to have the system eventually program itself. For me, the numerous advantages of using Java outweighed the elegance of Lisp, the latter having source code as program mutable objects. I moved up one level of procedural abstraction to view program composition as the key intelligent activity. Supporting this abstraction level is the capability to perform source code editing for the desired target language - in my case Java. In my paradigm, its not the program syntax tree that gets persisted in the knowledge base but rather the nested composition framework that bottoms out in primitives that generate Java program elements. The nested composition framework is my attempt to model the conceptual aspects of program composition. For example a procedure may have an initialization section, a main body, and a finalization section. I desire Texai to be able to figure out for itself where to insert a new required variable in the source code so that it has the appropriate scope, and so forth. Cheers. -Steve Stephen L. Reed Artificial Intelligence Researcher http://texai.org/blog http://texai.org 3008 Oak Crest Ave. Austin, Texas, USA 78704 512.791.7860 ----- Original Message ---- From: Russell Wallace <[EMAIL PROTECTED]> To: agi@v2.listbox.com Sent: Friday, October 24, 2008 2:03:11 AM Subject: [agi] On programming languages I understand that some here have already started a project in a given language, and aren't going to change at this late date; this is addressed to those for whom it's still an open question. The choice of language is said to not matter very much, and there are projects for which this is true. AGI is not among them, so I wrote up my thoughts on the matter in case they be of use to anyone. There turns out to be a website collecting perspectives like mine, so I posted it there: http://wiki.alu.org/Russell_Wallace%27s_Road_to_Lisp And copy below: I'm doing research in AI on the problem of procedural knowledge, which means dealing with (creating, debugging, reasoning about) program code. This entails dealing with code in parse tree form (other ways to specify computation turn out to be object code, so one way or another you end up coming back to the parse tree whatever the desired end product). This necessarily entails using Lisp if we define it in the broadest sense as the high-level language family that exposes the parse tree; the decision to make, then, is whether to use an existing dialect or invent one's own. So naturally, as hackers are wont to do, I chose the second option. And I was happy as a lark for a while, putting a lot of work into creating my own language, until in late summer 2008, compelled by repetitive strain injury to take a break, I thought a bit more about what I was doing. Okay, I thought to myself, instead of using an existing language that has a dozen mature, efficient implementations, thousands of users and extensive documentation, you're spending time you haven't got to spare on creating one that will have a single inefficient prototype implementation, one user and no documentation. And for what? A nicer syntax and ditching some historical baggage that isn't really doing any harm in the first place? Sharpen your wits, Russell. This is going to be a hard enough job even if you're smart about it. Making mistakes like this, you haven't a prayer. After that, the decision to use Common Lisp over Scheme was dictated by the fact that Common Lisp has the more comprehensive language standard, which makes it easy to port code (at least code that primarily performs computation rather than I/O) between implementations. The ability to defer the choice of implementation is a significant strategic advantage. ------------------------------------------- agi Archives: https://www.listbox.com/member/archive/303/=now RSS Feed: https://www.listbox.com/member/archive/rss/303/ Modify Your Subscription: https://www.listbox.com/member/?& Powered by Listbox: http://www.listbox.com ------------------------------------------- agi Archives: https://www.listbox.com/member/archive/303/=now RSS Feed: https://www.listbox.com/member/archive/rss/303/ Modify Your Subscription: https://www.listbox.com/member/?member_id=8660244&id_secret=117534816-b15a34 Powered by Listbox: http://www.listbox.com