Paddy3118 wrote: > This month there was/is a 1000+ long thread called: > "merits of Lisp vs Python" > In comp.lang.lisp. > > If you followed even parts of the thread, AND previously > used only one of the languages AND (and this is the > crucial bit), were persuaded to have a more positive view > of the other language; (deep breath, this is a long, as > well as grammatically incorrect sentence), THEN WHY NOT > POST ON WHAT ARGUMENTS PERSUADED YOU. >
I fail two thirds of your requirements - at least now. However, several years ago, I knew Python and was only passingly familiar with Lisp. To me, at that time, Lisp was a language where the compiler/interpreter writers were too lazy to write a real parser. "I object to doing things that computers can do" [1]. I wasn't completely happy with Python though. It does threads poorly (no concurrency unless you release the GIL in a C extension). The buffer protocol has issues (particularly if you release the GIL) [2]. The Numpy stuff is bogged down with it's own backward compatible history. Tkinter leaks memory if you're not careful with it. Adding a C extension is non-trivial and takes your application from being a collection of scripts to a distutils driven thing. These are real issues that I still bump my head on (because I still use Python a lot of the time). For those reasons, I'm still searching for a better language for my needs. Anyway, at that time, I saw an article about adding Hygienic Macros to Python. The term caught my attention, and it was shot down in the Python world. Of course, malcontent that I am, I had to go find out what that was about. I had already seen how in Tcl you could create new constructs. [3] Turns out Scheme and Common Lisp take that idea to a new and higher place. I found out the reason Lispers [4] stuck with their lazily written parsers is that in exchange for infix operators, they can pretty much assimilate any other language. Here is an easily readable piece of Python: def doit(n): for i in xrange(n): print i With very little effort, here it is in Scheme: (def doit(n) (for i in (xrange n) (print i))) Don't any other Pythonistas find that interesting? Scheme could suck in all of Python's beloved semantics with an incredibly similar syntax in a couple days. [5] It was an interesting revelation to me. Then if you wanted to add new features (Python 2.5 "with" for example), you could do it yourself. Moreover, you could steal good features from other languages too. The point to all of this is that the cross pollination is arguably a good thing. [6] If the Schemer's had stuck in their camp, I would never had known that they had something worth looking at. This is the same way that I was happily using Perl in college, and some Perl/Python exchange got me to look at Python. > OTHERWISE LET THIS POST WITHER AND DIE ALONE. It will die on it's own. Add it to your killfile, ignore it in Google Groups whatever. More bandwidth was wasted by Paris Hilton and Britney Spears than in this winding thread... Cheers. [1] A quote from Olin Shivers, and apparently he likes Lisp. That struck me as ironic at first. [2] Interestingly, Jython handles threads and buffers much better because it's built on a virtual machine that considers those important. Of course with Jython, you have to embrace the rest of the Java environment... [3] I thought it was particularly cool how Tcl could bolt on a class based object oriented system as a library. The word "class" isn't built into the language, but that kind of evaluator lets you add it. [4] I don't consider myself a Lisper or Schemer. I'm just exploring the programming language space trying to learn new ideas. [5] Incidently, I haven't found the version of Scheme that gives me concurrent threads, efficient buffers, C FFI, and numeric arrays the way I want, but I'm still looking. [6] Kenny Tilton pointed that out several times in the other thread. There are many more lurkers looking and learning than posters posting. -- http://mail.python.org/mailman/listinfo/python-list