Emacs is a text editor whose most prominent feature is the ability of users to programmatically customize nearly all aspects of it. This is facilitated though a special dialect of the Lisp programming language, called Emacs Lisp, created specifically for use in the Emacs editor.
There are a multitude of extensions written in Emacs Lisp that add to Emacs functionality. These extensions include editing facilities for specific programming languages (similar to what an IDE might provide), e-mail and IRC clients, Git frontends, games such as Tetris and 2048, and much more.
Many aspects of the Emacs editor can be used with no programming knowledge. Users looking to programmatically customize Emacs, however, will find certain features of the Emacs Lisp language such as the (self-)documentation system incredibly helpful and accommodating.
Sacha chua’s site is a very good place to find more learning resources on Emacs.
a. For those who need a more visual appeal on the Emacs learning path
b. For those who would like to get the key bindings easily