Learn Lisp the easy way: Read the Introduction to Programming in Emacs Lisp, written by Robert J Chassel. Highly recommended for those without prior Lisp programming experience.
Until Emacs 21, the EmacsLisp introduction was distributed separately. The introduction comes in Texinfo format, which means that it can be converted to a variety of formats: info, html, and others. So, for example, in Debian, apt-get install emacs-lisp-intro would do the trick.
The way to read the intro is to type
‘C-h i’ to start Info, and then
`m Emacs Lisp Intro RET' or evaluate
(info "(eintr) Top"). See InfoMode for help on using Info
emacs-lisp-intro file from any GNU ftp mirror or from:
Solutions to the exercises on Emacs Lisp Intro: https://github.com/RenWenshan/emacs-lisp-intro-solutions