I've also wanted to fix a bug myself in Gambit several times but found the code to be a bit too mysterious. I agree that if one subsystem's coding convention's could be fully explained, this might crack the whole thing open. I know writing good docs is hard, perhaps it would be easier to convince *someone* to get up and start speaking in front of a camera and then just put it online. I think most people who are interested in getting some work done on the gambit internals really just want to know 'the big picture', namely.. what are the subsystems, how do they fit together, and what are the common coding techniques that make this happen.
On Wed, Jan 14, 2009 at 10:41 AM, Bradley Lucier lucier@math.purdue.edu wrote:
On Jan 14, 2009, at 10:27 AM, Marc Feeley wrote:
I've studied the Gambit source code a bit, and even made some contributions over the years, but Marc's programming style is something I have not seen elsewhere---highly macroized and layered, there are patterns in the coding techniques but not ones that I've been able to unravel in general. Perhaps one way to help new developers get into Gambit would be fore Marc to take a subsystem and write down an explanation of how the macros and layers of code for types, exceptions, constructors, functions, ... of that subsystem work. (Christian Jaeger seems to have had some success in doing this, but it would be good to have an explanation of how Marc sees the construction of subsystems of the runtime.) Just to get an idea of Marc's programming style would allow others to divine more easily the structure of the code.
Marc:
Thank you for your reply.
I'm thinking something along the lines of Shriram's talk "The Swine before Perl", which goes through an example of how to program finite- state automata using define-syntax macros. To object to no documentation is not to demand full documentation---I've included one of my paragraphs above which explains that it would be nice to see how you think of programming. Pick a subsystem of the runtime or of the compiler (the register allocator, beta-reduction, lambda-lifting, one of them), explain what the layers are, how and why you do it. People would learn from it (I think I would be a better programmer if I understood it).
Brad _______________________________________________ Gambit-list mailing list Gambit-list@iro.umontreal.ca https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list