GNU Emacs... Everything I would want to say about it, I say it on the EmacsWiki. See also: Emacs (the tag I use on this blog) and FreeSoftware.
A language that doesn’t affect the way you think about programming, is not worth knowing. – Alan J. Perlis
Emacs Lisp (elisp) really changed the way I think about programming. This tight integration between developping environment and code – where the code immediately changes your editor – is truly amazing. I only realized the benefits of functional programming in an interactive environment. Only here can I write functions without side-effects, and test them right away, without the dreaded edit - compile - debug cycle. Then add an integrated documentation system the interpreter being more than just a command line interface but a non-trivial editor, and dynamic binding. As Emacs is extensible, well supported by a dedicated community, and Emacs Lisp is relatively easy to learn, the library is enormous and growing. You can keep loading more and more code into the interpreter. As you do this, documentation, mechanisms designed to help users find existing documentation, and a helpful online community get more and more important.
This is where the wiki comes in: Somewhere between the newsgroups, the FAQ, the mailing lists, and IRC – the EmacsWiki keeps growing.