I have been meaning to write this post for a while, now. Over the last few years, the idea and urgent discussion regarding a hypothetical library that would allow a new FARG project to be achieved in a few keystrokes has surfaced, repeatedly, and has not led anywhere thus far. The latest outcropping was last week, and this post is an attempt to delineate what I believe needs to be done.
These days, I am working on my dissertation. I thought about what I want to say here, and what part of this I can use in the dissertation. I think I can use some parts of this post there.
The Current Problem: Starting from Scratch
Several FARG projects have been created thus far, and are listed in the following table. (FARG Historians and Lore Masters! Your help in filling and correcting this table will be much appreciated.) Programs that have not been completed are marked with an asterisk.
Program
|
Author
|
Language
|
Year
|
Domain
|
Jumbo
|
Douglas Hofstadter
|
Scheme?
|
1983?
|
Anagrams
|
Seek-Whence
|
Marsha Meredith
|
?
|
1986
|
Integer pattern sequences
|
Numbo
|
Daniel Defays
|
?
|
1986
|
|
Copycat
|
Melanie Mitchell
|
Franz Lisp
|
1990
|
Letter analogy puzzles
|
Tabletop
|
Bob French
|
?
|
1992
|
|
Letter Spirit
|
Gary McGraw
|
Scheme?
|
1995
|
Grid fonts
|
Metacat
|
Jim Marshall
|
Chez Scheme
|
1999
|
Letter analogy puzzles
|
Letter Spirit II
|
John Rehling
|
Scheme?
|
2001
|
Grid fonts
|
Phaeaco
|
Harry Foundalis
|
C++
|
2006
|
Bongard Problems
|
*Seqsee
|
Abhijit Mahabal
|
Perl
|
2008+
|
Integer pattern sequences
|
*Musicat
|
Eric Nichols
|
C#
|
2008+
|
|
*?
|
Francisco Lara-Dammer
|
Java
|
2008+
|
Geometry
|
Capyblanca
|
Alexander Linhares
|
Delphi?
|
2007?
|
Chess
|
Column 3 (“language”) is very diverse. For implementing a complex program, using a powerful language that the lone programmer knows inside out makes sense. Especially if there is no code to reuse, anyway, as has been the case so far. Other reasons that influence language choice (such as availability of people to hire who are skilled in that language) are simply non-existent in a PhD. Most PhD projects are prototypes, proofs of concepts.
Each project has consequently started from scratch (except for the obvious exceptions of Metacat and Letter Spirit II, both of which extended prior projects). Each project takes years to complete, and it is natural to wonder how much effort, if any, could have been saved if it had been possible to reuse some of the code. Michael Roberts, Alexander Linhares, Harry Foundalis, Eric Nichols, and I have again been discussing these issues recently.
My next post will examine (my guess about) what kinds of things may be shared between projects. A subset of what can be shared is the core of FARG architectures, the crux without which the program ceases to be a FARG implementation. I will try to spell out what I think is in the core.
[Edited: In his comment, A. Joseph Hagar pointed out several more projects which were not done here at the CRCC. I have listed these in the table below.]
Program
|
Author
|
Language
|
Year
|
Domain
|
Fluid Analogies Engine
|
Scott Bolland
|
Java
|
2005
|
Potentially General
|
*
B-Cat
|
Payel Ghosh, Ralf Juengling, Lanfranco Muzi, Mick Thomure
|
?
|
2007+
|
Bongard Problems
|
Starcat
|
Joseph Lewis et al.
|
?
|
2004
|
Potentially General
|