I’ve written a few series of posts intended to introduce some of the features of Lisp that make it look and feel different from C++. I’ve talked about macros, object-oriented programming, and exception handling, because the way these work in Lisp differs qualitatively from their C++ counterparts.
Differences in function names or minor differences in syntax are fairly trivial distinctions for the average C++ programmer, who might find him/herself exposed to such things frequently, writing Perl scripts, designing yacc/bison grammars, and so on. But some of the differences between Lisp and C++ are quite fundamental, and experience with both might sometimes help the programmer to design their code, in whatever language they are using. For some programmers, thinking in Lisp can clarify the problem, and some have argued that adding Lisp to one’s set of languages makes one a better programmer in all languages. Whether or not that is true, Lisp can, at least, be entertaining for programmers who write code for the enjoyment of it.
As I’ve said before, I’m not trying to convince people to become Lisp programmers here. This isn’t a “my language is better than your language” set of posts. Even if it were, my most familiar programming language is still C++, Lisp for me is mostly for fun and for prototyping. But perhaps you’ve been reading about Lisp, maybe here, maybe elsewhere, and have started to think you might want to play around with it a bit, just for fun. But then some objections come to mind, and you’re not sure it’s worth the trouble to set up for Lisp programming. I’m going to try to address some of these possible objections in another series of posts.
- Well, I know this “Christopher” fellow, he writes computational engines. Non-interactive programs that read in a gigabyte of data, churn for hours, and then write out a half gigabyte of results. But I like to program with graphics, interaction, external libraries. Where would I even begin writing an X11 Lisp program or a video game?
- OK, so there are places where Lisp linkages into my favourite libraries are available. But I’ve written my own libraries for the problems I work on, and I don’t want to rewrite all that code in Lisp. What can I do?
- Yeah, fine, but how do I even set up a development environment?
- Can Lisp even compete with compiler-generated output from C++ code?
- What about building projects? Is there something like GNU-make?
- So, I might be interested, but I’m not about to shell out $100 on books to learn the language.
- What if I need help, is there anywhere I can get answers to my questions?
I’ll be addressing these objections over the next series of posts.