For me this is a tough call. I am an “old Lisper” (I wrote two Springer Verlag Lisp books a long time ago) and while I have been coding for a new product today using LispWorks Common Lisp, I have to say that when it comes to algorithm development and new coding, nothing comes close to Lisp for programming productivity. I have also been working through Mark Pilgrim’s fine ‘Dive Into Python’ book (*), and I certainly consider Python to be another high productivity language.
That said, for so many of my work tasks, the breadth of Java platfom tools “nukes” the productivity advantages of Python and Lisp. As I have mentioned recently, I am finding XML-RPC to be an excellent bridge for tying together Lisp, Python, and Java code. But, there is a definite performance overhead for XML-RPC calls. Anyway, I keep finding myself making the following decisions over, and over again:
- If my job task requires any J2EE functionality, then code in Java
- Else: is it a small job and runtime performance is not much of an issue: then use Python
- Otherwise: use Commn Lisp for programmer productivity and superb runtime performance
Sorry if this seems like a stupid blog post, but: choosing language/platform is an issue that I face all the time. In the best of worlds, I would have the entire J2EE stack (and other Java goodies) available as Common Lisp libraries and tools.
I can imagine a year or two from now when the Python tools and available software stacks “catch up” with Java – then I might just switch over to Python as my primary development language (and ignore performance problems).
(*) I have started once again seriously studying Common Lisp (mostly with Paul Graham’s books)