Tim Kerchmar


I, Tim Kerchmar, do solemnly offer these my responses to The Road to Lisp Survey:

When did you first try Lisp seriously, and which Lisp family member was it? In September 2005, I finally made the plunge into actual Lisp programming. I had been a longtime lurker on comp.lang.lisp and read Paul Graham's essays and Practical Common Lisp. I wanted an affordable version of Lisp that was suitable for an indie game developer. I purchased Corman Common Lisp and I have been pleased with his excellent support and speedy FFI.
Many of us had multiple run-ins with Lisp before it "stuck". The "stick" date is of most interest, but you can share earlier encounters if you like.

I used a product called CodeSmith that reworks the ASP.NET syntax to autogenerate code and integrates with the build process. I also created a pretty cool XML->CPP converter for one of my earlier game engines. Metaprogramming has always fascinated me, since it smells silver bulletish. Those metaprogramming techniques are inflexible and overly complicated compared to Lisp macros. When I finally "got it", I was stuck, even though it took me a few weeks to find a promising implementation of Lisp.

What led you to try Lisp?

Let me share one little idiom that I find annoying and difficult to work around in other languages. How many times have you had to iterate through a list, accumulating a second list of objects, and then iterating through that second list to delete items from the first list, because the list iterator becomes invalid if you try to remove its item from the list? In Lisp, I can hold a pointer to my current cons cell, whose cdr still points to the remainder of the list, even after calling (setf mylist (remove item mylist). The garbage collector has often allowed me to write elegant solutions for things that never should have been complicated.

What other languages have you been using most?

I work for a major middleware provider in the games industry, and we are strictly of the Church of C++. My coworkers are the best programmers that I've had a chance to work with in a commercial setting, and it pains me to see their "clever" use of templates + #defines... My 10 years of C/C++ did not produce a desire to overcome and master the pointer, but a hatred of the despicable things. Lisp has saved me, by somehow combining pointer and beauty, in a way that my intuition knew existed all along.

How far have you gotten in your study of Lisp? Far enough to have this pretty cool setup where I can start Visual Studio 2003, launch my C++ DLL project, which starts CormanLisp.exe as the parent process. Then I start my physics engine inside Corman Lisp, and it calls the DLL, which then passes callbacks back to Lisp. I can now debug simultaneously in both Lisp and C++ on the same project. One part does all the hairy DX9 stuff, the other part handles the elegant physics stuff, and if any failure occurs, I can know about it! Ok, ok! So I'm not one of those SICP kinds of people. I read those kinds of books about using Lisp to make a DSL in Lisp, and my mind starts wandering. I want to write games faster, maybe fast enough to finish them before I get bored of writing them. So far, Lisp is holding my interest, and I am slowly starting to write Lisp in Lisp instead of C++ in Lisp. Macros and functions as values have already proven very helpful. #define and the C function types always were so ugly.

What do you think of Lisp so far?

In a sense, Lisp is like quiet classical music. You don't even notice it because you are getting work done, but for some reason you are feeling productive and motivated. One funny thing is that I can more accurately estimate how much effort a task will take. The problem is that the barrier to adding new features is so little that I usually still spend too much time, but I did stuff that I didn't even think of when I started. :-) I was afraid that Lisp is slow, or not fast enough for real time applications. I now think that I was backwards. Corman Common Lisp's garbage collector is very speedy. It is so easy to make global modifications to a program, the kind of modifications that are particularly painful in C++, that my program runs 50x faster than the naive implementation of the same program in C++. Oh yes, this program is a 2D physics engine, the real deal with number crunching, and using lists (not vectors!) for everything. Interestingly enough, I also think that a compacting garbage collector may provide such good cache coherency compared to malloc/new that it pays for itself.

Switch Date 2005


RtL comp-lang-lisp | Seek and Ye Shall Find | RtL Greenspun's Tenth | RtL Paul Graham | RtL Language Curiosity | RtL Word of Mouth | RtL Emacs Elisp | RtL SICP | RtL Formal Education | RtL Kent Pitman | RtL comp-lang-python? | RtL Douglas Hofstadter | RtL AI | RtL Work | RtL Peter Norvig | RtL Erik Naggum | RtL AutoCad AutoLisp | RtL Richard Gabriel | RtL 3D Community | RtL Stephen Slade | RtL Bjarne Stroustrup | RtL TUNES | RtL Eric Raymond


Other pages sharing this page's categories:

"anonymous user's road to lisp" Abhijit Rao Albert Krewinkel's Road to Lisp Alejandro Guillen Road to LISP Alexander Lehmann's Road to Lisp AlexPeake AlexTibbles Andrew Jones-Gonzales's Road to Lisp Andrew Main's Road to Lisp Andrew Philpot's Road to Lisp Artie Gold's Road to LISP Arto Bendiken's Road to Lisp August Sigov's Road to Lisp Ben Holm's Road to Lisp Bill Birch's Road to Lisp Bob Bane's Road to Lisp Bob Bechtel BobHutchison Brad Beveridge - Road to Lisp Bradford W Miller BradMight Brandon Corfman Brendan Van Horn Brian Mastenbrook - Road to Lisp Brian T. Rice Bruce Durling's Road to Lisp Bruce Woodward's Road to Lisp Bulent Murtezaoglu C E C Artime Charlie McMackin Chris Laux's Road to Lisp Chris Smith's Road to Lisp Chris Sonnack's Road to Lisp Chris Van Dusen Chris-Perkins Christian Lynbechs Road to Lisp Christian Nybø Coby Beck Conrad Barski Constantine Vetoshev Damien Sullivan's Road to Lisp Dan Muller Daniel Barlow's Road to Lisp Daniel Pezely's Road to Lisp DARose Dave Fayram's Road to Lisp Dave Pearson Dave Roberts David Douthitt David Golden's Road to Lisp David Mercer David Rush David Thompson's Road to Lisp Denes Cselovszky's Road to Lisp Dirk Gerrits's Road to Lisp DJ Clark's Road to Lisp Donald Fisk's Road to Lisp Donnie Cameron's Road to Lisp Doug Tolton's Road to LIsp Drew Crampsie Drew McDermott Duane Rettig's Road To Lisp Edi Weitz' Road to Lisp Eduardo Muñoz Emre Sevinc Erann Gat's Road to Lisp Eric Hanchrow Erik Enge's Road to Lisp Erik Winkels's Road to Lisp Espen Vestre's Road to Lisp Gabor Melis's Road to Lisp Gareth McCaughan's Road to Lisp Gary King's Road to Lisp Gary Klimowicz's Road to Lisp Geoff Wozniak's Road to Lisp GeoffCant GeoffKnauth George Rogers Road to Lisp Glenn Ehrlich Glenn Ehrlich Road to Lisp Gordon Weakliem Heow's Road to Lisp Hoan Ton-That's Road to Lisp Ira Kalet's Road to Lisp Ivan Toshkov's Road To Lisp Jacek Generowicz James Fleming's Road to Lisp Jeff Shrager's Road to Lisp Jimmy Miller's Road to Lisp Jochen Schmidt's Road to Lisp Jock Cooper Joel Ray Holveck John Pallister's road to Lisp John Sturdy John Williams JP Massar Jurgen Defurne's Road to Lisp Justin Dubs Justin Heyes-Jones's Road To Lisp Kamen Tomov Karl K.'s Road to Lisp Kean Lau's Road to Lisp Kenny Tilton's Road to Lisp KevinZzz Kristian Sørensen - Road to Lisp Larry Clapp's Road to Lisp Lars Brinkhoff's Road to Lisp Lars Wirzenius Lasse Rasinen Lennart Staflin Louis Theran Mackram Raydan's Road to Lisp Marc Mertens's Road to Lisp Marco Baringer's Road to Lisp Mark Hurd Mark Triggs Mark Wilson MarkBrady Marko Kocic Martin Mikelsons Matthias Benkard's Road to Lisp MattKnox Michael J Forster Michael Naunton's Road to Lisp Mikael Jansson's Road to Lisp Mike Travers Mikel Evins' Road to Lisp Mostafa Razavi's Road to Lisp Myron Wu's Road to LISP Nathan Bloomfield's Road to Lisp Naveen Garg Nick Levine Nicolas Sceaux's Road to Lisp Nikodemus Siivola'a Road to Lisp Nonya B's Road to Lisp Ola Rinta-Koski Ora Lassila's Road to Lisp Pascal Costanza's Road To Lisp Patrick Logan Paul Clevett Paul Foleys Road To Lisp Paul Graham's Road to Lisp Paul Potts Paul Snively PaulKhuong's Road To Lisp Peder O Klingenberg's Road to Lisp Pekka P Pirinen Pete Kirkham Peter Housel's Road to Lisp Peter Lewerin's Road to Lisp Peter Santoro Peter Seibel's Road to Lisp Peter Van Eynde's Road to Lisp Pierre Thierry's Road to Lisp Rainer Joswig's Road to Lisp Ralph Richard Cook Randall Randall's Road to Lisp Reini Urban Robbie Sedgewick's Road to Lisp Robert Marlow Robin Felix's Road to Lisp Robin Kåveland Hansen's Road to Lisp RtL Brian Cully RtL Russell Snow RtLMartinGinkel Sanjay Pande Scott L Burson's Road to Lisp Scott McIntire Scott Michel's Road to Lisp Sean Champ Sebastian Stern's Road to Lisp SimonHeath Sivaram N Slobodan Stephane Belmon's Road To Lisp Steven Harris' Road to Lisp Tage Stabell-Kulø Tayssir John Gabbour's Road to Lisp The Road Jeff Caldwell Took The Road to Lisp Questions Thomas F Burdick's Road to Lisp Thomas M. Hermann's Road to Lisp Thomas Müller Thomas Munro's Road to Lisp Thomas Stenhaug's Road to Lisp TimHaynes Toby Davies' Road to Lisp Tomer Altman tony yelacic VikasGP Vladimir Sedach William Maddox Yuri Niyazov Zach Beane's Road to Lisp Zachery Bir