1-introduction.ltx 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361
  1. \ch{Вступление}
  2. Прежде чем заскучать от кучи хлама до которого вам нет дела, давайте немного
  3. поговорим о математике?
  4. Есть всего три основных понятия, с которыми вы должны быть знакомы,
  5. чтобы делать что-либо интересное в математике. Это {\it множества}, {\it функции} и {\it доказательства}.
  6. К несчастью, чтобы понимать одно из них, вы должны быть знакомы с
  7. оставшимися.\footnote{Потом вы поймете, что когда математики используют такие понятия как
  8. {\it множество}, {\it функция}, {\it доказательство}, {\it группа}, {\it непрерывный} или
  9. {\it замкнутый}, они обычно имеют ввиду что-то, похожее по смыслу на общепринятое
  10. значение понятия, но с дополнениями. Это обычное дело для науки (например, \xti{теория},
  11. \xti{гипотеза}, \xti{эксперимент}).}
  12. % ENG
  13. % There are basically three notions with which you need to be familiar in order to
  14. % do anything interesting in math. Those three things are {\it sets}, {\it
  15. % functions}, and {\it proofs}. Unfortunately, to be familiar with one, you have
  16. % to be familiar with the other two.\footnote{You'll learn as we go along, when
  17. % math people use a common term like {\it set}, {\it function}, {\it proof},
  18. % {\it group}, {\it continuous} or {\it closed}, they usually mean something
  19. % similar in concept to the colloquial term, but there are some strings
  20. % attached. This is usually the case in the sciences too (e.g. \xti{theory},
  21. % \xti{hypothesis}, \xti{experiment}).}
  22. Итак, что означает каждое из этих понятий?
  23. % ENG
  24. % So, what are each of those things?
  25. \begin{itemize}
  26. \item \xti{Множество} – это неупорядоченая коллекция чего-либо. Кроме того без повторений.
  27. Например, $\mset{2, 5}$ – то же самое, что $\mset{5, 2}$ (потому что порядок не важен).
  28. $\mset{2, 5, 5}$ будет тем же самым множеством потому, что там нет понятия многочисленности.
  29. % ENG
  30. % \item A \xti{set} is an unordered collection of things. There is also no
  31. % repetition. For instance, $\mset{2, 5}$ is the same as $\mset{5, 2}$ (because
  32. % order doesn't matter). $\mset{2, 5, 5}$ would be the same set, because there's
  33. % no notion of multiplicity.
  34. \item \xti{Функция} – это математическая конструкция (что очевидно, раз мы говорим об этом).
  35. По сути, она принимает какие-то данные на вход, производит действия над ними и возвращает результат.
  36. Если вы даете функции одни и те же данные на вход несколько раз, каждый раз
  37. вы должны получать один и тот же результат на выходе. Это называется "чистотой" функции.
  38. Если функция не чистая, значит это не функция. Это что-то другое.
  39. % ENG
  40. % \item A \xti{function} is a mathematical construct (well, obviously, else I
  41. % wouldn't be talking about it). Basically, it takes some input, does something
  42. % to it, and spits out some output. If you give the function the same input a
  43. % bunch of times, you should get the same result each time. This concept is
  44. % called ``referential transparency.'' If the function is not referentially
  45. % transparent, then it's not a function. It's something else.
  46. \item \xti{Доказательство} – это когда вы берете кучу простых фактов,
  47. называемых \xti{аксиомами}, и связываете их вместе, чтобы вывести \xti{теоремы}.
  48. Что-то вроде пазла, который вы собираете из маленьких кусочков, чтобы сформировать картину.
  49. %ENG
  50. % \item A \xti{proof} is basically where you take a bunch of simple facts, called
  51. % \xti{axioms}, and chain them together to make \xti{theorem}s. It's sort of like
  52. % sticking puzzle pieces together to form a picture.
  53. Кусочки пазла (в данном случае аксиомы) не особо интересны сами по себе. Но картинка,
  54. которая из них получается (в данном случае теорема), может быть очень крутой и информативной.
  55. Можно сказать, что доказательство --- это набор инструкций, разъясняющих, как собрать кусочки вместе.
  56. % ENG
  57. % The puzzle pieces (in this case, the axioms) aren't usually very interesting
  58. % on their own. However, the picture they form (in this case, the theorem) can
  59. % be really cool and enlightening. The proof would be analogous to an explicit
  60. % set of instructions explaining how to put the pieces together.
  61. \end{itemize}
  62. Как только вы познакомитесь с каждым из этих понятий, мы сможем делать все, что
  63. заблагорассудится. В этой книге мы докажем следующее:
  64. % ENG
  65. % Once you are familiar with each of those concepts, we can do all sorts of cool
  66. % stuff. Throughout the book, we will prove all of the following:
  67. \begin{itemize}
  68. \item Если вы постучите пальцем по мосту с определенной частотой, мост рухнет.
  69. (Резонанс)
  70. % ENG
  71. % \item If you tap your finger against a bridge at exactly the right frequency,
  72. % the bridge will collapse. (Resonance)
  73. \item Формула для расчета процентной ставки по ипотеке – лишь частная форма
  74. коэффициентов углов треугольника. (Формула Эйлера)
  75. % ENG
  76. % \item The formula used to calculate the interest rate on your mortgage is
  77. % actually just a fancy form of the ratios of angles in a triangle. (Euler's
  78. % formula)
  79. \item Логикой не всегда можно доказать то, что как мы знаем заведомо является правдой.
  80. (Теорема Гёделя о неполноте)
  81. % ENG
  82. % \item Logic can't be used to prove everything we know to be true. (Gödel's
  83. % incompleteness theorem)
  84. \end{itemize}
  85. \s{Вступление (теперь взаправду)}
  86. % \s{Introduction (for real this time)}
  87. Это книга по математике. Хм, мда. Зачем я написал ее?
  88. % This is a math book. Well, duh. Why did I write it?
  89. Большая часть книг по математике (и другим наукам) сегодня акцентируется на
  90. академическом тоне, вместо заботы о том, что читатель понимает материал и --- что более важно
  91. --- наслаждается чтением книги.
  92. % ENG
  93. % Most math (and science) books nowadays seem to value keeping an academic tone
  94. % over ensuring that the reader understands the material, and --- more importantly
  95. % --- enjoys reading the book.
  96. Я решил поступить наоборот. Я хочу создать книгу, которую весело читать и легко понимать,
  97. вместо того, чтобы показать как я крут.
  98. % ENG
  99. % I take the opposite approach. I want to create a book that is fun to read and
  100. % easy to understand, while eschewing the practice of making myself look good.
  101. Вдохновением для этой книги послужила книга Миран Липовача
  102. \href{http://learnyouahaskell.com/}{\it Learn You a Haskell for Great Good!}
  103. Haskell – это язык программирования, и LYAH – отличная книга для изучения этого языка.
  104. Печатное издание LYAH можно заказать здесь: \cite{lyah}.
  105. % ENG
  106. % The inspiration for this book is \href{http://learnyouahaskell.com/}{{\it Learn
  107. % You a Haskell for Great Good!}, by Miran Lipovača}. Haskell is a programming
  108. % language, and LYAH is a great book for learning Haskell. If you are interested
  109. % in a print copy of LYAH, see \cite{lyah}.
  110. \s{Сообщество}
  111. %\s{The community}
  112. Опуская тот факт, что я использую ``Я'' в первой части книги, LYSA является
  113. проектом сообщества и довольно много людей участвуют в написании этой книги.
  114. % ENG
  115. % Despite the fact that I used ``I'' in the first part of the book, LYSA is
  116. % actually a community project, and many people participate in the writing of this
  117. % book.
  118. Если вы хотите пообщаться с нами или другими математиками, приходите к нам в чат
  119. {\tt \#lysa} на Freenode. Если вы не знаете, что такое IRC, или вы не знаете
  120. как настроить клиент – вы можете зайти в чат через
  121. \link{http://webchat.freenode.net/?channels=lysa}{вебчат Freenode}.
  122. % ENG
  123. % If you want to talk to us, or to other math people, come see us in {\tt \#lysa}
  124. % on Freenode. If you don't know what IRC is, or you don't have a client set up,
  125. % you can connect through
  126. % \link{http://webchat.freenode.net/?channels=lysa}{Freenode's webchat}.
  127. Если у вас возникли любые вопросы по LYSA (или математике), пожалуйста задавайте их в чате
  128. ({\tt \#lysa} на FreeNode, если вы забыли что-то из математики).
  129. % If you have any questions about LYSA (or math), feel free to ask in the IRC
  130. % channel ({\tt \#lysa} on FreeNode in case you forgot).
  131. Если вы хотите исправить что-либо, или заметили какую-либо проблему, или хотите
  132. добавить какой-то материал – что угодно, связаное с содержимым книги – вы можете зайти
  133. на \link{https://github.com/gazay/lysa}{нашу русскоязычную GitHub страницу} или на
  134. \link{https://gitlab.com/lysa/lysa}{оригинальную страницу книги}. У нас также есть
  135. \link{https://lysa.reddit.com/}{сообщество на Reddit}.
  136. % ENG
  137. % If you want to submit a correction, or have some issue, or want to add some
  138. % content, really anything having to do with the content of the book, you can
  139. % visit \link{https://gitlab.com/lysa/lysa}{our GitLab page}. We also have a
  140. % \link{https://lysa.reddit.com/}{community on Reddit}.
  141. \s{Idris}\label{intro-idris}
  142. В этой книге мы изучим кучу сложных вещей.\footnote{Это не совсем правда.
  143. Не математика сложная, а ты не вник.} Иногда очень полезно напрограммировать
  144. решение проблемы. Каждый программист скажет вам, что программирование учит
  145. думать иначе.
  146. % ENG
  147. % In this book, we cover a lot of hard stuff.\footnote{This isn't actually
  148. % true. Math isn't hard, stupid!} Sometimes, it's useful to program your way
  149. % through a problem. Every programmer will tell you that programming teaches a
  150. % manner of thinking.
  151. Многие программисты процитируют известные слова Стива Джобса\footnote{Для вас, молодняка, Стив Джобс –
  152. основатель Apple. Он умер.}, относящиеся к программированию в его работе,
  153. % ENG
  154. % Many programmers will cite Steve Jobs\footnote{For you youngsters, Steve Jobs is
  155. % the former CEO of Apple. He's dead now.} famous quote, regarding the use of
  156. % programming in his job,
  157. \begin{iquote}
  158. [sic] \ldots что намного важнее, нет ничего общего с использованием (программ, что мы пишем)
  159. на практике. С другой стороны, это как отражение мыслительного процесса; по-настоящему учиться думать.
  160. Я думаю, каждый в этой стране должен знать как программировать на компьютере --- должен
  161. изучать компьютерный язык --- потому что это учит нас думать.
  162. % ENG
  163. % [sic] \ldots much more importantly, it had nothing to do with using [the
  164. % programs we wrote] for anything practical. It had to do with using them to be
  165. % a mirror of your thought process; to actually learn how to think. I think
  166. % everybody in this country should learn how to program a computer --- should
  167. % learn a computer language --- because it teaches you how to think.
  168. \end{iquote}
  169. \nocite{jobs-programming}
  170. Первые пара предложений - на самом деле, отличное описание математики (и программирования).
  171. Обе сферы невероятно полезны и имеют бесконечный потенциал практического применения.
  172. Но это не самое важное. Самая полезная вещь – это побочный эффект. Учиться думать и
  173. иметь строгий язык для выражения своих мыслей. Кроме того, строгость языка
  174. помогает выдумывать все более крутые вещи.
  175. Вот о чем математика.
  176. % ENG
  177. % That first sentence or two is actually a pretty good description of mathematics
  178. % (and programming). Both are incredibly useful, and have endless practical
  179. % applications. That's not the point, though. The whole usefulness thing is a side
  180. % gig. It's about learning how to think, and having a rigorous language through
  181. % which to express your thoughts. Furthermore, the rigor of the language helps you
  182. % build upon your current thoughts to find out even cooler things. That's what
  183. % math is about.
  184. Программирование и математика идут рука об руку. Программисты и математики подтвердят это:
  185. я точно могу. Поэтому вы встретите в этой книге упражнения на языке Idris. Idris – это
  186. очень интересный язык программирования по многим причинам. Главная из которых заключается в том,
  187. что он позволяет доказывать вещи математически. Большинство языков программирования не
  188. могут этого. Idris может, поэтому он такой замечательный.\footnote{Кроме Idris
  189. доказывать вещи математически позволяют два других языка: Coq и Agda. Но, так как я наиболее
  190. знаком с Idris, и он, по-моему, наиболее пригоден лдя этого - будет Idris.
  191. Смиритесь.}
  192. % ENG
  193. % Programming and math go hand-in-hand. Programmers and mathematicians will attest
  194. % to this; I certainly can. For that reason, throughout this book, there will be
  195. % coding exercises in the programming language Idris. Idris is an interesting
  196. % programming language for many reasons. The chief of which is that it can be used
  197. % to prove things mathematically. Most programming languages can't do this. Idris
  198. % can, which is why it is special.\footnote{There are other programming languages
  199. % that can prove things, namely Coq and Agda. However, I'm most familiar with
  200. % Idris, and Idris is probably the most useful, so I'm using Idris. Deal with
  201. % it.}
  202. \ss{Установка Idris}
  203. % \ss{Installing Idris}
  204. Это довольно трудно описать, потому что процесс очень сильно зависит от
  205. операционной системы. Я размещу инструкции для операционных систем, которые использую сам.
  206. Если вы не найдете своей операционной системы ниже, пожалуйста, напишите об этом в
  207. \link{https://github.com/gazay/lysa/issues/new}{issue tracker}. Еще лучше, если вы сможете
  208. написать инструкции самостоятельно и попросить меня добавить это в саму книгу.
  209. % ENG
  210. % This is something that is actually rather difficult to summarize, because it
  211. % varies from operating system to operating system. I will put down the
  212. % instructions for the operating systems I use. If you come upon this and don't
  213. % see your operating system, please report this on
  214. % \link{https://gitlab.com/lysa/lysa/issues/new}{the issue tracker}. Better yet,
  215. % you could add the instructions yourself, and ask me to merge your changes.
  216. \sss{Mac}
  217. Если у вас установлен пакетный менеджер \link{http://brew.sh/}{Homebrew}, то,
  218. по идее, все должно быть очень просто:
  219. \begin{shellsession}
  220. # brew install idris
  221. \end{shellsession}
  222. После этого вы сможете запустить Idris командой \terminal{idris}.
  223. Если же у вас возникли какие-либо проблемы с установкой напрямую,
  224. попробуйте выполнить все шаги из
  225. \link{https://github.com/idris-lang/Idris-dev/wiki/Idris-on-OS-X-using-Homebrew}{официальной вики по установке}
  226. Idris на Mac.
  227. % \sss{Linux}
  228. % \pg{Gentoo}
  229. Вам потребуется платформа Haskell и библиотека GMP. На момент 5 января 2015 платформа доступна
  230. только в \code{\tilde x86} и \code{\tilde amd64} профилях. Если вы используете стабильный профиль,
  231. добавьте в \filepath{/etc/portage/package.keywords}
  232. % ENG
  233. % You will need the Haskell platform, along with the GNU Multiple Precision (GMP)
  234. % library. As of 5 January 2015, the Haskell platform is only available on
  235. % \code{\tilde ARCH}, where \code{ARCH} is your processor architecture
  236. % (e.g. \code{amd64}, \code{x86}). If you use \code{ARCH}, you can enable these by
  237. % adding the following to \filepath{/etc/portage/package.keywords}:\footnote{If
  238. % you already use \code{\tilde ARCH}, you can ignore this}
  239. \begin{plainfile}
  240. dev-lang/ghc
  241. dev-haskell/cabal-install
  242. \end{plainfile}
  243. Независимо от профиля надо задать флаг в \filepath{/etc/portage/package.use}:
  244. % ENG
  245. % Regardless of your \code{ACCEPT\_KEYWORDS} variable, you should add the
  246. % following to \filepath{/etc/portage/package.use}:
  247. \begin{plainfile}
  248. dev-lang/ghc binary
  249. \end{plainfile}
  250. Иначе GHC (компилятор Хаскеля) будет компилироваться. А это долго. Очень.
  251. % ENG
  252. % Otherwise, you have to compile GHC (the Haskell compiler) from scratch, and that
  253. % takes forever.
  254. Затем выполнить с правами суперпользователя:
  255. % ENG
  256. % Once you have that all out of the way, you'll want to run the following command as root:
  257. \begin{shellsession}
  258. # emerge -jav dev-lang/ghc dev-haskell/cabal-install
  259. \end{shellsession}
  260. \xtb{Внимание}: флаг \terminal{-j} сделает установку многопоточной, ну вы знаете :)
  261. % ENG
  262. % \xtb{Warning}: \terminal{-j} will make the installation a lot faster, but is
  263. % more resource-intensive. If your power usage is precious, omit it (i.e. use
  264. % \terminal{-av} instead).
  265. После установки выполните от своего пользователя:
  266. % ENG
  267. % Once GHC and cabal-install are installed, you'll want to run the following as a
  268. % normal user:
  269. \begin{shellsession}
  270. % cabal update
  271. % cabal install alex happy haddock hscolour
  272. % cabal install idris
  273. \end{shellsession}
  274. Теперь в терминале можно запустить \terminal{idris}.
  275. % ENG
  276. % You can then get at the Idris shell by running \terminal{idris}.
  277. \s{Лицензия}
  278. % \s{Licensing}
  279. Эта книга доступна всем без ограничений. Вы можете скопировать эту книгу и дать своему
  280. другу. Вы можете даже напечатать эту книгу и продать ее своим друзьям,\footnote{Правда,
  281. есть определенные ограничения, смотри \cref{gfdl}.}
  282. % ENG
  283. % This book is free, in the sense of freedom. You can copy this book and give it
  284. % ENG
  285. % to your friend. You can even print it out and sell it to your
  286. % ENG
  287. % friends.\footnote{There are some restrictions though, see \cref{gfdl}.}
  288. Если вы, например, школный учитель и хотите использовать ее для своих занятий,
  289. вы можете свободно изменять содержимое по своему усмотрению и раздавать копии своим
  290. студентам.
  291. % ENG
  292. % If, for instance, you are a schoolteacher and want to use this for your class,
  293. % you are free to edit it to your liking and give the modified copy to your
  294. % students.
  295. LYSA лецензирована по GNU Free Documentation License. \Cref{gfdl} содержит текст лицензии.
  296. Пожалуйста, прочтите лицензию; вообще, она довольно проста и понятна.
  297. % ENG
  298. % LYSA is licensed under the GNU Free Documentation License. \Cref{gfdl} contains
  299. % the license. Please read the license; it's actually pretty comprehensible.
  300. Исходный код этой книги может быть скачан \link{https://github.com/gazay/lysa/archive/master.zip}{отсюда}.
  301. Если вы хотите поучаствовать в написании книги – лучше, наверное, клонировать репозитарий.
  302. Вы можете сделать это, выполнив \terminal{git clone https://github.com/gazay/lysa.git} в терминале.
  303. % ENG
  304. % The source for this book can be downloaded at
  305. % \url{https://gitlab.com/lysa/lysa/repository/archive.tar.gz}. If you are looking
  306. % to contribute, it's probably best to clone the git repository. You can clone the
  307. % git repository by running \terminal{git clone https://gitlab.com/lysa/lysa.git}
  308. % in a terminal.