[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

Предисловие

Большая часть интегрированной среды GNU Emacs написана на языке программирования Emacs Lisp. Код написанный на этом языке программирования --- это программное обеспечение, набор инструкций, которые говорят компьютеру что делать, когда вы даете эти команды. Emacs сконструирован так, что вы можете писать новый код на Emacs Lisp и легко устанавливать его как расширение к редактору. Вот почему Emacs называют "расширяемым редактором".

(На самом деле, поскольку Emacs может делать много больше, чем просто редактировать текст, его по праву можно назвать "расширяемой средой редактирования", но эта фраза слишком труднопроизносима. Также, все, что вы делаете в Emacs: находите даты по календарю Майа и фазы луны, упрощаете полином, отлаживаете программы, управляете файлами, читаете электронную почту, пишете книги --- все эти действия являются редактированием в самом общем смысле слова).

Хотя о языке Emacs Lisp обычно вспоминают только в связи с текстовым редактором, это полноправный язык программирования. Вы можете использовать его так же как и любой другой язык программирования.

Возможно, вы хотите научиться программированию, или добавить какую-нибудь полезную функцию к Emacs; может быть, вы хотите стать программистом. Введение в Emacs Lisp написано, чтобы помочь вам в самом начале: оно станет вашим помощником в изучении основ программирования и, что более важно, покажет вам, как в дальнейшем вы сможете обучаться самостоятельно.

Как читать этот текст  
Для кого это написано  
Происхождение Emacs Lisp  Немного истории.
Замечание для новичков  
Благодарности  

Как читать этот текст

В этой книге вы увидите небольшие простенькие программы, которые можно опробовать не выходя из Emacs. Если вы читаете этот документ с помощью встроенной в Emacs справочной системы Info, то вы можете запускать программы по мере их появления. (Это очень легко сделать, и я научу вас этому, когда появятся примеры). Вместо этого вы можете читать эту книгу в печатном виде сидя рядом с компьютером, на котором запущен Emacs. (Именно так я обычно делаю; я очень люблю книги). Если у вас нет под боком Emacs, то вы все равно сможете с пользой читать эту книгу, но в таком случае, лучше относиться к ней как к художественному произведению или как к путеводителю в незнакомую страну: интересно, но лучше все-таки побывать там.

Большая часть этой книги посвящена изучению и объяснению программ, используемых в GNU Emacs. Такой способ выбран не случайно: во-первых, я хочу, чтобы вы познакомились с настоящим, работающим кодом (функциями которыми вы пользуетесь каждый день); и во-вторых, чтобы вы познакомились с тем, как устроен Emacs. Очень полезно понимать как работает ваш редактор. Также я надеюсь, что у вас появится желание исследовать исходный код, написанный на Emacs Lisp, входящий в состав GNU Emacs. Благодаря этому вы сможете многому научиться. GNU Emacs --- это сокровищница знаний, охраняемая драконом.

Кроме изучения Emacs как редактора и Emacs Lisp как языка программирования, примеры и исследование исходных кодов Emacs дадут вам возможность познакомиться с Emacs, как с интегрированной средой программирования. GNU Emacs очень помогает при разработке программного обеспечения, поскольку предоставляет инструменты, с которыми вам будет удобно работать, например, сочетание клавиш M-. (Это сочетание запускает команду find-tag). Вы также научитесь использовать буфера и другие объекты, которые являются частью среды редактирования. Обучение этим возможностям Emacs похоже на изучение новых маршрутов в вашем родном городе.

Кроме этого я написал несколько программ в качестве более сложных примеров. Хотя это только примеры, они являются самыми настоящими программами. Я сам использую их. Другие люди используют их. Вы тоже можете использовать их. Если не считать фрагментов программ, которые приведены здесь только в "учебных целях, то, что вы увидите в этой книге, используется в реальной жизни. В этом огромное преимущество Emacs Lisp --- его легко приспособить для повседневной работы.

Наконец, я надеюсь поделиться богатым опытом использования Emacs, чтобы вы могли понять аспекты программирования, которые вы еще не знаете. Вы часто сможете использовать Emacs для решения какой-нибудь задачи или для выяснения, как сделать что-то иным способом. Emacs придаст вам уверенность(1) в своих силах, а это не только приятно само по себе, но и является огромным преимуществом.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

Для кого это написано

Этот текст написан как элементарное введение в программирование для людей, которые сами не являются профессиональными программистами. Если вы профессиональный программист, то вас может не устроить эта книга. Может быть, вы уже стали специалистом в чтении справочных руководств, и вас будет раздражать организация этого текста.

Опытный программист, который просмотрел этот текст сказал мне:

Я предпочитаю учиться из справочников. Я "ныряю" в каждый параграф и "вдыхаю" в промежутке между ними.

Когда я заканчиваю параграф, то полагаю, что тема закрыта, и я знаю все, что нужно (есть исключения, когда следующий параграф начинает говорить об этом более детально). Я ожидаю, что хорошо написанное руководство не будет избыточным и будет иметь отлично организованный индекс и содержать ссылки на места, где я смогу найти всю необходимую мне информацию.

Это введение написано не для такого человека!

Во-первых, я пробую сказать все как минимум три раза: первый раз --- чтобы представить что-нибудь; второй раз --- чтобы показать это в контексте; и третий раз --- чтобы напомнить или показать информацию в другом ракурсе.

Во-вторых, я никогда не помещаю всю информацию о новом понятии в одном месте, тем более в одном параграфе. По моему мнению это возлагает слишком тяжелую ношу на читателя. Вместо этого я пробую объяснить только то, что вам надо знать к этому времени. (Иногда я включаю немного дополнительной информации, откладывая формальное объяснение до более позднего времени).

Когда вы будете читать этот текст, не ждите, что вы научитесь всему с первого раза. Часто вы только, так сказать, "поверхностно" познакомитесь с некоторыми представленными темами. Я надеюсь, что неплохо структурировал текст и дал вам достаточно подсказок, для того, чтобы вы смогли понять, что более важно, и сконцентрировались на этом.

Иногда вам все таки придется "углубляться" в некоторые параграфы --- нет другого способа усвоить их. Но я пытался уменьшить число таких мест в тексте. Эта книга более походит на пологий холм, чем на отвесную гору.

Это введение в Программирование на Emacs Lisp имеет вспомогательный документ, section `The GNU Emacs Lisp Reference Manual' in The GNU Emacs Lisp Reference Manual. Справочное руководство содержит намного больше деталей, чем данная книга. В справочнике вся информация об одной теме сконцентрирована в одном месте. Вы можете использовать это руководство, если вы похожи на программиста о котором я упоминал выше. И конечно, после того как вы прочтете это Введение, то вы поймете, что GNU Emacs Lisp Reference Manual весьма полезен, когда вы пишете свои собственные программы.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

Происхождение Emacs Lisp

Лисп был разработан в конце 1950-х годов в Массачусетском Технологическом Институте в результате проекта по исследованию искусственного интеллекта. Огромная мощь языка Лисп сделала его подходящим также и для других задач, например, для написания команд редактирования.

GNU Emacs Lisp в основном произошел от Maclisp, который был создан в МТИ в 1960-е годы. И кое-где основывается на Common Lisp, который стал стандартом в 1980-е годы. Однако Emacs Lisp намного проще чем Common Lisp. (В стандартном дистрибутиве Emacs есть файл расширения `cl.el', который добавляет к Emacs Lisp много возможностей Common Lisp).


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

Замечание для новичков

Если вы не используете GNU Emacs, то прочтение этого документа все равно принесет вам пользу. Однако я настоятельно рекомендую вам освоить Emacs. Вы сможете научиться использовать Emacs с помощью встроенной обучающей программы (Tutorial). Чтобы запустить ее нажмите C-h t. (Это значит что вы нажимаете и отпускаете клавишу CTRL и h одновременно, а потом нажимаете и отпускаете клавишу t).

Также я часто буду упоминать стандартные команды Emacs, перечисляя клавиши, которые вы должны нажать, чтобы запустить эту команду и потом даю имя команды в скобках, например: M-C-\ (indent-region). Это означает, что обычно команда indent-region запускается нажатием сочетания клавиш M-C-\. (Вы можете, если захотите, изменить сочетания клавиш, которые надо набрать, чтобы запустить команду; это называется привязка. See section Таблицы ключей.) Сокращение M-C-\ означает, что вы одновременно нажимаете клавиши META, CTRL и \. Иногда подобные комбинации называют клавиатурными аккордами, поскольку это похоже на аккорды при игре на пианино. Если на вашей клавиатуре нет ни клавиши META, ни ALT, то в качестве префикса можно использовать клавишу ESC. В этом случае M-C-\ означает, что вы нажимаете и отпускаете клавишу ESC, а потом одновременно нажимаете и отпускаете клавиши CTRL и \.

Если вы читаете этот документ в Info с помощью GNU Emacs, то вы можете пролистать весь этот документ, нажимая клавишу пробела SPC. (Чтобы изучить Info, нажмите C-h i и затем выберите пункт Info).

Замечание по терминологии: когда я использую слово Лисп, я обычно имею в виду все различные диалекты Лиспа, но, когда я говорю о Emacs Lisp, я имею в виду именно Emacs Lisp.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

Благодарности

Я искренне благодарен всем кто помог мне с этой книгой. Выражаю особую признательность Jim Blandy, Noah Friedman, Jim Kingdon, Roland McGrath, Frank Ritter, Randy Smith, Richard M. Stallman, и Melissa Weisshaus. Благодарю также Philip Johnson и David Stampe за их терпеливую поддержку. Все ошибки исключительно мои собственные.


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated on March, 10 2004 using texi2html