Ignore:
Timestamp:
Feb 24, 2021, 6:32:42 PM (4 years ago)
Author:
Mikhail Kirillov <w96k@…>
Branches:
master
Children:
9b7e401
Parents:
0ebefc8
git-author:
Mikhail Kirillov <w96k@…> (02/24/21 18:32:12)
git-committer:
Mikhail Kirillov <w96k@…> (02/24/21 18:32:42)
Message:

Update copyright year

Location:
content/presentations/emacs
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • content/presentations/emacs/emacs-polyglot.tex

    r0ebefc8 re66c095  
    1 % Created 2020-06-30 Вт 14:10
     1% Created 2021-01-31 Вс 22:05
    22% Intended LaTeX compiler: pdflatex
    33\documentclass[article,12pt,notitlepage,notitle,oneside,twocolumn]{beamer}
     
    2727 pdfkeywords={},
    2828 pdfsubject={},
    29  pdfcreator={Emacs 26.3 (Org mode 9.1.9)},
     29 pdfcreator={Emacs 28.0.50 (Org mode 9.4)},
    3030 pdflang={Russian}}
    3131\begin{document}
     
    3434
    3535\section*{Вступление}
    36 \label{sec:org42b6a8a}
    37 \begin{frame}[label={sec:org279b7ec}]{Текстовый редактор}
     36\label{sec:org270706b}
     37\begin{frame}[label={sec:orgef42780}]{Текстовый редактор}
    3838Текстовый редактор необходим тем, кто хочет набирать и сохранять
    3939текст в памяти компьютера. Это может понадобиться программистам и
    4040тем, кто хочет писать заметки и документы.
    4141\end{frame}
    42 \begin{frame}[label={sec:orgdecb924}]{Свобода}
     42\begin{frame}[label={sec:orgf7e3213}]{Свобода}
    4343\begin{itemize}
    4444\item Пользователь хочет понимать работу одного из базовых инструментов
     
    5151\end{frame}
    5252
    53 \begin{frame}[label={sec:org40c2ead}]{О чём доклад}
     53\begin{frame}[label={sec:orgd35f2b3}]{О чём доклад}
    5454Мы рассмотрим использование редактора GNU Emacs для выполнения
    5555следующих задач:
     
    6262
    6363\section*{GNU}
    64 \label{sec:org2a3d776}
    65 \begin{frame}[label={sec:org9efb61d}]{GNU/Emacs}
     64\label{sec:orgbd38074}
     65\begin{frame}[label={sec:org8ddd1a2}]{GNU/Emacs}
    6666\begin{center}
    6767\includegraphics[width=100]{./emacs.png}
     
    7272\end{frame}
    7373
    74 \begin{frame}[label={sec:org0769163}]{Кто пользуется}
     74\begin{frame}[label={sec:org9c9de1b}]{Кто пользуется}
    7575Имаксом в той или иной степени пользовались следующие люди:
    7676\begin{itemize}
    77 \item Линуса Торвальдс
     77\item Линус Торвальдс
    7878\item Дональд Кнут
    7979\item Юкихиро Матсумото
     
    8282\item Джо Армстронг
    8383\item Эрик Реймонд
    84 \item Марк Цукерберг
    85 \item Джонатан Блоу
     84\item Андрей Александреску
    8685\end{itemize}
    8786
     
    8988\end{frame}
    9089
    91 \begin{frame}[label={sec:org2f76c4c}]{Главный экран}
     90\begin{frame}[label={sec:org4a88c37}]{Главный экран}
    9291Если открыть Имакс, то нас встретит следующая надпись:\\
    9392
     
    9998\end{frame}
    10099
    101 \begin{frame}[label={sec:org76a25a8}]{GNU is not Unix}
     100\begin{frame}[label={sec:org4366064}]{GNU is not Unix}
    102101\begin{center}
    103102\includegraphics[height=60]{./gnu.png}
     
    108107\end{frame}
    109108
    110 \begin{frame}[shrink=10,label={sec:orgbcd49e6}]{Свободы GNU}
     109\begin{frame}[label={sec:orgcd64982},shrink=10]{Свободы GNU}
    111110\begin{block}{Свобода 0}
    112111Свобода выполнять программу как вам угодно в любых целях.
     
    130129\end{frame}
    131130
    132 \begin{frame}[label={sec:orgd64f482}]{Больше о GNU}
     131\begin{frame}[label={sec:org4dc5338}]{Больше о GNU}
    133132Деятельность данного фонда подробно описана в книге "\href{https://en.wikipedia.org/wiki/Free\_as\_in\_Freedom}{Free as in
    134133Freedom}", которая доступна на русском языке.
     
    139138\end{frame}
    140139\section*{Редакторы}
    141 \label{sec:orgb69dbe8}
    142 \begin{frame}[label={sec:org44b2ca8}]{Другие редакторы}
     140\label{sec:orgb174c3f}
     141\begin{frame}[label={sec:org7e38ffa}]{Другие редакторы}
    143142Рассмотрим следующие текстовые редакторы, которые возможно
    144143используют ваши друзья и коллеги:
     
    157156\end{frame}
    158157
    159 \begin{frame}[label={sec:orgdcc7add}]{Недостатки популярных редакторов}
     158\begin{frame}[label={sec:org653b877}]{Недостатки популярных редакторов}
    160159\begin{block}{IDE от JetBrains}
    161160\begin{itemize}
     
    173172\end{block}
    174173\end{frame}
    175 \begin{frame}[label={sec:org6e419d0}]{Недостатки популярных редакторов}
     174\begin{frame}[label={sec:orgd03f730}]{Недостатки популярных редакторов}
    176175\begin{block}{VS Code}
    177176\begin{itemize}
     
    190189
    191190\section*{Vim и Emacs}
    192 \label{sec:org6a3ba7c}
    193 \begin{frame}[label={sec:orgea1c784}]{Почему Emacs и Vim непопулярны}
     191\label{sec:org053b5d5}
     192\begin{frame}[label={sec:orgbee7fa3}]{Почему Emacs и Vim непопулярны}
    194193\begin{center}
    195194\includegraphics[height=120]{./learning-curve.jpg}
     
    199198\end{frame}
    200199
    201 \begin{frame}[label={sec:org2689717}]{Миф: Emacs не настолько сложен}
     200\begin{frame}[label={sec:org00c7d22}]{Миф: Emacs не настолько сложен}
    202201Мы видим, что вход в вим высокий. С другой стороны у Emacs кривая
    203202обучения начинается с самого низа, но потом закручивается. Что это
     
    205204\end{frame}
    206205
    207 \begin{frame}[label={sec:orgac94f93}]{Миф: Emacs не настолько сложен}
     206\begin{frame}[label={sec:orgee95859}]{Миф: Emacs не настолько сложен}
    208207В отличии от Vim GNU/Emacs имеет рядовые инструменты для работы с
    209208текстом: поддержка мыши (выделение, скролл), стрелки, улучшенная
     
    213212позволяют превратить его в многофункциональное IDE-подобное нечто.
    214213\end{frame}
    215 \begin{frame}[label={sec:orge876f67}]{M-x butterfly}
     214\begin{frame}[label={sec:orgb31e22c}]{M-x butterfly}
    216215\begin{center}
    217216\includegraphics[height=140]{./real_programmers.png}
     
    220219Шуточная функция поставляется в GNU/Emacs после появления комикса.
    221220\end{frame}
    222 \begin{frame}[label={sec:org0333693}]{Схожести и отличия Emacs / Vim}
     221\begin{frame}[label={sec:orgcdd19b9}]{Схожести и отличия Emacs / Vim}
    223222\begin{center}
    224223\includegraphics[height=120]{./emacs-vim.png}
     
    228227может показаться.
    229228\end{frame}
    230 \begin{frame}[label={sec:org9d3b9d0}]{Схожести}
     229\begin{frame}[label={sec:org4c73dd4}]{Схожести}
    231230\begin{center}
    232231\begin{tabular}{lll}
     
    244243\end{frame}
    245244
    246 \begin{frame}[label={sec:orgcf0c87a}]{Отличия}
     245\begin{frame}[label={sec:orgf488e14}]{Отличия}
    247246\begin{center}
    248247\begin{tabular}{lll}
     
    261260\end{frame}
    262261
    263 \begin{frame}[label={sec:org35714da}]{Что даёт графический клиент}
     262\begin{frame}[label={sec:orgd25dd7c}]{Что даёт графический клиент}
    264263\begin{itemize}
    265264\item Правильно работающие бинды (например в консоли не сработает C-.)
     
    270269\end{itemize}
    271270\end{frame}
    272 \begin{frame}[label={sec:org46682c0}]{(equal :Emacs :Vim) ;; => t}
     271\begin{frame}[label={sec:orgbbc7dcd}]{(equal :Emacs :Vim) ;; => t}
    273272Субъективно Emacs Lisp предоставляет больше возможностей по
    274273расширению редактора, чем VimScript. Хотя Emacs Lisp и далёк от
     
    276275соображениям Emacs популярен в частности среди пользователей Vim.
    277276\end{frame}
    278 \begin{frame}[label={sec:org08c1c32}]{Evil}
     277\begin{frame}[label={sec:orga94e58c}]{Evil}
    279278  \begin{center}
    280279\includegraphics[height=25]{./evil.png}
     
    286285\end{frame}
    287286\section*{Возможности}
    288 \label{sec:orge8adc42}
    289 \begin{frame}[label={sec:org607c99e}]{Что есть в GNU/Emacs}
     287\label{sec:org43bed73}
     288\begin{frame}[label={sec:org4074e04}]{Что есть в GNU/Emacs}
    290289\begin{itemize}
    291290\item Рантайм Emacs Lisp
     
    302301\end{itemize}
    303302\end{frame}
    304 \begin{frame}[label={sec:org06cbd25}]{Что есть в GNU/Emacs}
     303\begin{frame}[label={sec:org033d49c}]{Что есть в GNU/Emacs}
    305304\begin{itemize}
    306305\item Интерактивные элементы (кнопки, формы и т.д.)
     
    317316\end{itemize}
    318317\end{frame}
    319 \begin{frame}[fragile,label={sec:orgc49ebaf}]{Биндинги Emacs}
     318\begin{frame}[label={sec:orgd8e0830},fragile]{Биндинги Emacs}
    320319 Биндинги в Emacs мнемонические. Это значит, что их легко запомнить,
    321320так как буква биндинга практически всегда что-то обозначает.
     
    333332\url{http://xahlee.info/kbd/keyboard\_hardware\_and\_key\_choices.html}
    334333\end{frame}
    335 \begin{frame}[fragile,label={sec:orgba383c8}]{Биндинги Emacs}
     334\begin{frame}[label={sec:orgf4d7b18},fragile]{Биндинги Emacs}
    336335 Важным отличием биндингов в редакторе GNU/Emacs является то, что
    337336они еще и аккордовыми. Это значит, что несколько комбинаций
     
    344343существует биндинг \alert{C-g}.
    345344\end{frame}
    346 \begin{frame}[fragile,label={sec:org6f7184e}]{Emacs Lisp}
     345\begin{frame}[label={sec:org432244b},fragile]{Emacs Lisp}
    347346 Ядро редактора написано на языке C, остальное -- язык расширений
    348347Emacs Lisp (25\% C + 75\% Elisp). Лисп -- один из старейших
     
    360359\end{verbatim}
    361360\end{frame}
    362 \begin{frame}[label={sec:org8d71279}]{Всё есть функция}
     361\begin{frame}[label={sec:org68d629b}]{Всё есть функция}
    363362Любое действие в редакторе представляет из себя функцию.
    364363\begin{itemize}
     
    371370\end{frame}
    372371
    373 \begin{frame}[fragile,label={sec:org772929b}]{Система помощи}
     372\begin{frame}[label={sec:org80d3a73},fragile]{Система помощи}
    374373 В GNU/Emacs встроен туториал и очень удобная система помощи.
    375374\begin{itemize}
     
    383382\end{itemize}
    384383\end{frame}
    385 \begin{frame}[label={sec:orgfb2fcb1}]{Моды}
     384\begin{frame}[label={sec:orgb48bc10}]{Моды}
    386385\alert{Мод} -- это модификация GNU/Emacs, которая включается при
    387386 определенном условии.
     
    395394\end{itemize}
    396395\end{frame}
    397 \begin{frame}[label={sec:orgbeeb4b2}]{Мод-лайн}
     396\begin{frame}[label={sec:org48a211b}]{Мод-лайн}
    398397\alert{Мод-лайн} отображает информацию об используемых модах и состоянии
    399398 файла (название, сохранён или нет, позиция курсора, система
     
    403402 запрашивать ввод.
    404403\end{frame}
    405 \begin{frame}[fragile,label={sec:org413f915}]{Буфер}
     404\begin{frame}[label={sec:orgda81d3d},fragile]{Буфер}
    406405 \alert{Буфер} -- это обособленная память с текстом, которой манипулирует
    407406имакс прежде чем писать на диск. Экран Emacs отображает буфера,
     
    418417\end{itemize}
    419418\end{frame}
    420 \begin{frame}[label={sec:orgfbfd15b}]{Программирование}
     419\begin{frame}[label={sec:org8aa2948}]{Программирование}
    421420Поддерживаются языки:
    422421\begin{itemize}
     
    434433Разумеется список можно расширить сторонними пакетами
    435434\end{frame}
    436 \begin{frame}[label={sec:org8bebf57}]{Программирование}
     435\begin{frame}[label={sec:orga8993b2}]{Программирование}
    437436Также для задач программирования доступны:
    438437\begin{itemize}
     
    445444\end{itemize}
    446445\end{frame}
    447 \begin{frame}[label={sec:org57ba423}]{Система контроля версий}
     446\begin{frame}[label={sec:org92dc968}]{Система контроля версий}
    448447При программировании полезно использовать систему контроля
    449448версий. Самая распространненая система -- git. Про другие системы
     
    460459\end{frame}
    461460
    462 \begin{frame}[label={sec:org18084c2}]{Org-mode}
     461\begin{frame}[label={sec:orgeefec33}]{Org-mode}
    463462\alert{Org-mode} -- Markdown на колёсах, декларативный формат описания
    464463 всего и вся, основанный на списке из уровней (Outline). С помощью
     
    473472\url{https://orgmode.org/worg/org-tutorials/}
    474473\end{frame}
    475 \begin{frame}[label={sec:org615ce56}]{Tramp}
     474\begin{frame}[label={sec:org2e74b07}]{Tramp}
    476475\begin{quote}
    477476Вимеры могут привести в аргумент то, что их редактор уже доступен
     
    484483только при условии отсутствия конфигурации, в Emacs
    485484\end{frame}
    486 \begin{frame}[fragile,label={sec:org6750b1c}]{Кастомизация}
     485\begin{frame}[label={sec:orgecf8204},fragile]{Кастомизация}
    487486 \begin{center}
    488487\includegraphics[width=.9\linewidth]{./customize.png}
     
    492491\end{frame}
    493492\section*{Конфиг}
    494 \label{sec:orgc92b502}
    495 \begin{frame}[label={sec:orgbd1ab76}]{.emacs / init.el}
     493\label{sec:org3aeab6a}
     494\begin{frame}[label={sec:orgc052578}]{.emacs / init.el}
    496495В качестве конфигурации Emacs использует один из следующих файлов в домашней директории:
    497496\begin{itemize}
     
    504503вовсе необязательно в идеале владеть Emacs Lisp.
    505504\end{frame}
    506 \begin{frame}[fragile,label={sec:org1121d83}]{Пакетный менеджер package.el}
     505\begin{frame}[label={sec:org3639e75},fragile]{Пакетный менеджер package.el}
    507506 Для расширения предусмотрен пакетный менеджер, который уже встроен
    508507в редактор. По-умолчанию доступен только один официальный
     
    515514Моя конфигурация доступна по адресу \url{https://w96k.ru/emacs.html}
    516515\end{frame}
    517 \begin{frame}[fragile,label={sec:orgc32e4e0}]{use-package}
     516\begin{frame}[label={sec:orge0a0f41},fragile]{use-package}
    518517 \alert{use-package} -- это декларативная обёртка от сообщества для
    519518 package.el. Рекомендую использовать use-package, чтобы ваш конфиг
     
    529528
    530529\section*{Демо}
    531 \label{sec:orgd193173}
    532 \begin{frame}[label={sec:orgd978a23}]{Создание базового конфига}
     530\label{sec:org2b9d6a2}
     531\begin{frame}[label={sec:orgdfb9a4c}]{Создание базового конфига}
    533532Наглядное создание базового конфига с нуля.
    534533\end{frame}
    535 \begin{frame}[label={sec:org7055220}]{Редактирование кода}
     534\begin{frame}[label={sec:org95874c7}]{Редактирование кода}
    536535\begin{itemize}
    537536\item Projectile
     
    541540\end{itemize}
    542541\end{frame}
    543 \begin{frame}[label={sec:orgcbe9531}]{Организация жизни при помощи org-mode}
    544 \end{frame}
    545 \begin{frame}[label={sec:orgcc6cf72}]{Ведение документов}
     542\begin{frame}[label={sec:orgeda97a3}]{Организация жизни при помощи org-mode}
     543\end{frame}
     544\begin{frame}[label={sec:org33afbfd}]{Ведение документов}
    546545\end{frame}
    547546\section*{Дистрибутивы}
    548 \label{sec:orge561de9}
    549 \begin{frame}[label={sec:orgbcdd901}]{Vanilla}
    550 \end{frame}
    551 \begin{frame}[label={sec:orgfefc99a}]{Spacemacs}
    552 \end{frame}
    553 \begin{frame}[label={sec:org87aa05d}]{Doom Emacs}
    554 \end{frame}
    555 \begin{frame}[label={sec:org1b10d10}]{Prelude}
     547\label{sec:org6231087}
     548\begin{frame}[label={sec:orgc525be5}]{Vanilla}
     549\end{frame}
     550\begin{frame}[label={sec:orgfa07411}]{Spacemacs}
     551\end{frame}
     552\begin{frame}[label={sec:orga5c7f90}]{Doom Emacs}
     553\end{frame}
     554\begin{frame}[label={sec:org55417a0}]{Prelude}
    556555\end{frame}
    557556\section*{Изучение}
    558 \label{sec:org2076727}
    559 \begin{frame}[label={sec:org6016d4b}]{Tutorial}
    560 \end{frame}
    561 \begin{frame}[label={sec:orgd2eba74}]{Info emacs}
    562 \end{frame}
    563 \begin{frame}[label={sec:org79044c3}]{Книги}
     557\label{sec:org75135f3}
     558\begin{frame}[label={sec:org6849798}]{Tutorial}
     559\end{frame}
     560\begin{frame}[label={sec:org894c77d}]{Info emacs}
     561\end{frame}
     562\begin{frame}[label={sec:orgddbb791}]{Книги}
    564563\begin{block}{Mastering Emacs}
    565564\end{block}
Note: See TracChangeset for help on using the changeset viewer.