Also when you learn some Lisp, you start to realize how often people are greenspuning[0] things in their projects.
One thing I __really__ miss from working in lisp is the idea that I can reload things in the repl. In Python, once I've imported something, I can't really redefine it without pasting in the definition, which makes iterating on a class definition much harder. In Lisp, I can hit a key in my editor and the running REPL gets the new definition, and I can start working with it (or rewriting tests, etc).
The power of the REPL in lisp is __amazing__. I love me some IPython (it's awesome), but there just isn't the same tight integration between that and a running system. The "default" Python likely has all the tools you need to do that, but it just isn't presented as the Way you Do It.
Django's auto-reload when code changes is an example of this. The trouble is, I can't get to a REPL easily within that, without invoking ipdb. I don't know how to integrate my editor with the Python process in a similar way, etc.
All that said, I still love coding in Python. Hy makes me excited, but then I just started writing python-with-parens and wasn't sure what I had gained. :)
0: I'm sure there is someone who can give a counterexample, but I cannot thnk of any.
The sage version, and maybe this is backported to ipython by now, I don't know, you can do an %attach on a file and it gets reloaded into the workspace every time it changes.
In [1]: %load_ext autoreload
In [2]: %autoreload 2
In [3]: from foo import some_function
In [4]: some_function()
Out[4]: 42
In [5]: # open foo.py in an editor and change some_function to return 43
In [6]: some_function()
Out[6]: 43
It's nothing like a proper lisp repl, but you can sorta do this in vanilla python too, if you don't mind some annoyances. `reload` reloads a module:
>>> import mymodule
>>> print mymodule.myfunction()
3
>>> reload(mymodule)
>>> print mymodule.myfunction()
5
Downside is you have to use the module, `from mymodule import function` won't reload.
Lisp(s) are certainly better than Python in every way, except when it comes to successful projects completed.
Math: Maxima and Axiom
Blackboards: GBB
Robots: ROS
Music: OpenMusic
Bioinformatics: Biobike
Theorem Provers: ACL2, PVS
AI / Logic: Racer, KM
etc etc...
Emacs Lisp also has extensive communication facilities with Common Lisp. See SLIME/Swank.
> but I do find it interesting that the Lisp designed to be the widely-applicable industry standard hasn't seen something on the same level.
There are also Clozure CL IDE, the LispWorks IDE or the Allegro CL IDE. All three are written in Common Lisp.
So what's stopped these from getting to Emacs' level of popularity?
Emacs is not an editor. Emacs is a family of editors. You are probably talking about GNU Emacs.
They never tried and it would not make sense. GNU Emacs exists already and supports Lisp development very well. The other tools have concentrated on other things: GUI-based IDEs for Lisp.
You tell me, you brought it up!
> They never tried and it would not make sense. GNU Emacs exists already and supports Lisp development very well. The other tools have concentrated on other things: GUI-based IDEs for Lisp.
Emacs is for more than Lisp development, though. It's not popular because you can do Lisp in it, it's popular because you can do everything in it. So we're back to my earlier question, which is why we haven't seen major, broad-based wins for Common Lisp, on the scale that we have for other languages.
I talked about GNU Emacs.
> Emacs is for more than Lisp development, though.
Not Emacs, GNU Emacs. That's what I wrote.
> we haven't seen major, broad-based wins for Common Lisp, on the scale that we have for other languages.
Common Lisp tends to be used in very specialized areas. It's a complex language.
Though sometimes it has been used where you don't see it, but you may be affected. American Express runs a Lisp based system checking credit card transactions. Should be running for two decades or longer. Amazon was using Lisp to compute some stuff on their shopping pages. CIA and NSA use it to spy on us. Lots of aircrafts (Airbus & Boeing) and cars (Jaguar, Ford, ...) were designed with Lisp-based CAD systems. NASA uses it for checking software correctness. Chip makers like AMD have used it to check processor designs for correct operations. There are many of those applications. Google's flight search engine has its core written in Lisp. Dwave wrote the software for their quantum processor in Lisp. There is a broadband internet of satellite company running Lisp on their antennas. Parts of the precursor software of Apple's Siri were written in Lisp. That's the stuff what it was originally was designed for...
Note that you can program the CL system by expressing yourself in Python:
https://common-lisp.net/project/clpython/
Common Lisp is not only a language, but also a platform (analogous to Mono or JVMs). It has a model of computation: programs expand fully down to a set of special forms, which then compile. You can build languages on top of this.
(defmacro unless (test &body body)
`(if (not ,test) ,@body))There are many more examples of macros that solve real world problems, such as writing a compiler for an embedded DSL that is tuned to solving your real problem that allows expressivity and brevity that you would never see without the use of macros.