123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361 |
- \ch{Вступление}
- Прежде чем заскучать от кучи хлама до которого вам нет дела, давайте немного
- поговорим о математике?
- Есть всего три основных понятия, с которыми вы должны быть знакомы,
- чтобы делать что-либо интересное в математике. Это {\it множества}, {\it функции} и {\it доказательства}.
- К несчастью, чтобы понимать одно из них, вы должны быть знакомы с
- оставшимися.\footnote{Потом вы поймете, что когда математики используют такие понятия как
- {\it множество}, {\it функция}, {\it доказательство}, {\it группа}, {\it непрерывный} или
- {\it замкнутый}, они обычно имеют ввиду что-то, похожее по смыслу на общепринятое
- значение понятия, но с дополнениями. Это обычное дело для науки (например, \xti{теория},
- \xti{гипотеза}, \xti{эксперимент}).}
- % ENG
- % There are basically three notions with which you need to be familiar in order to
- % do anything interesting in math. Those three things are {\it sets}, {\it
- % functions}, and {\it proofs}. Unfortunately, to be familiar with one, you have
- % to be familiar with the other two.\footnote{You'll learn as we go along, when
- % math people use a common term like {\it set}, {\it function}, {\it proof},
- % {\it group}, {\it continuous} or {\it closed}, they usually mean something
- % similar in concept to the colloquial term, but there are some strings
- % attached. This is usually the case in the sciences too (e.g. \xti{theory},
- % \xti{hypothesis}, \xti{experiment}).}
- Итак, что означает каждое из этих понятий?
- % ENG
- % So, what are each of those things?
- \begin{itemize}
- \item \xti{Множество} – это неупорядоченая коллекция чего-либо. Кроме того без повторений.
- Например, $\mset{2, 5}$ – то же самое, что $\mset{5, 2}$ (потому что порядок не важен).
- $\mset{2, 5, 5}$ будет тем же самым множеством потому, что там нет понятия многочисленности.
- % ENG
- % \item A \xti{set} is an unordered collection of things. There is also no
- % repetition. For instance, $\mset{2, 5}$ is the same as $\mset{5, 2}$ (because
- % order doesn't matter). $\mset{2, 5, 5}$ would be the same set, because there's
- % no notion of multiplicity.
- \item \xti{Функция} – это математическая конструкция (что очевидно, раз мы говорим об этом).
- По сути, она принимает какие-то данные на вход, производит действия над ними и возвращает результат.
- Если вы даете функции одни и те же данные на вход несколько раз, каждый раз
- вы должны получать один и тот же результат на выходе. Это называется "чистотой" функции.
- Если функция не чистая, значит это не функция. Это что-то другое.
- % ENG
- % \item A \xti{function} is a mathematical construct (well, obviously, else I
- % wouldn't be talking about it). Basically, it takes some input, does something
- % to it, and spits out some output. If you give the function the same input a
- % bunch of times, you should get the same result each time. This concept is
- % called ``referential transparency.'' If the function is not referentially
- % transparent, then it's not a function. It's something else.
- \item \xti{Доказательство} – это когда вы берете кучу простых фактов,
- называемых \xti{аксиомами}, и связываете их вместе, чтобы вывести \xti{теоремы}.
- Что-то вроде пазла, который вы собираете из маленьких кусочков, чтобы сформировать картину.
- %ENG
- % \item A \xti{proof} is basically where you take a bunch of simple facts, called
- % \xti{axioms}, and chain them together to make \xti{theorem}s. It's sort of like
- % sticking puzzle pieces together to form a picture.
- Кусочки пазла (в данном случае аксиомы) не особо интересны сами по себе. Но картинка,
- которая из них получается (в данном случае теорема), может быть очень крутой и информативной.
- Можно сказать, что доказательство --- это набор инструкций, разъясняющих, как собрать кусочки вместе.
- % ENG
- % The puzzle pieces (in this case, the axioms) aren't usually very interesting
- % on their own. However, the picture they form (in this case, the theorem) can
- % be really cool and enlightening. The proof would be analogous to an explicit
- % set of instructions explaining how to put the pieces together.
- \end{itemize}
- Как только вы познакомитесь с каждым из этих понятий, мы сможем делать все, что
- заблагорассудится. В этой книге мы докажем следующее:
- % ENG
- % Once you are familiar with each of those concepts, we can do all sorts of cool
- % stuff. Throughout the book, we will prove all of the following:
- \begin{itemize}
- \item Если вы постучите пальцем по мосту с определенной частотой, мост рухнет.
- (Резонанс)
- % ENG
- % \item If you tap your finger against a bridge at exactly the right frequency,
- % the bridge will collapse. (Resonance)
- \item Формула для расчета процентной ставки по ипотеке – лишь частная форма
- коэффициентов углов треугольника. (Формула Эйлера)
- % ENG
- % \item The formula used to calculate the interest rate on your mortgage is
- % actually just a fancy form of the ratios of angles in a triangle. (Euler's
- % formula)
- \item Логикой не всегда можно доказать то, что как мы знаем заведомо является правдой.
- (Теорема Гёделя о неполноте)
- % ENG
- % \item Logic can't be used to prove everything we know to be true. (Gödel's
- % incompleteness theorem)
- \end{itemize}
- \s{Вступление (теперь взаправду)}
- % \s{Introduction (for real this time)}
- Это книга по математике. Хм, мда. Зачем я написал ее?
- % This is a math book. Well, duh. Why did I write it?
- Большая часть книг по математике (и другим наукам) сегодня акцентируется на
- академическом тоне, вместо заботы о том, что читатель понимает материал и --- что более важно
- --- наслаждается чтением книги.
- % ENG
- % Most math (and science) books nowadays seem to value keeping an academic tone
- % over ensuring that the reader understands the material, and --- more importantly
- % --- enjoys reading the book.
- Я решил поступить наоборот. Я хочу создать книгу, которую весело читать и легко понимать,
- вместо того, чтобы показать как я крут.
- % ENG
- % I take the opposite approach. I want to create a book that is fun to read and
- % easy to understand, while eschewing the practice of making myself look good.
- Вдохновением для этой книги послужила книга Миран Липовача
- \href{http://learnyouahaskell.com/}{\it Learn You a Haskell for Great Good!}
- Haskell – это язык программирования, и LYAH – отличная книга для изучения этого языка.
- Печатное издание LYAH можно заказать здесь: \cite{lyah}.
- % ENG
- % The inspiration for this book is \href{http://learnyouahaskell.com/}{{\it Learn
- % You a Haskell for Great Good!}, by Miran Lipovača}. Haskell is a programming
- % language, and LYAH is a great book for learning Haskell. If you are interested
- % in a print copy of LYAH, see \cite{lyah}.
- \s{Сообщество}
- %\s{The community}
- Опуская тот факт, что я использую ``Я'' в первой части книги, LYSA является
- проектом сообщества и довольно много людей участвуют в написании этой книги.
- % ENG
- % Despite the fact that I used ``I'' in the first part of the book, LYSA is
- % actually a community project, and many people participate in the writing of this
- % book.
- Если вы хотите пообщаться с нами или другими математиками, приходите к нам в чат
- {\tt \#lysa} на Freenode. Если вы не знаете, что такое IRC, или вы не знаете
- как настроить клиент – вы можете зайти в чат через
- \link{http://webchat.freenode.net/?channels=lysa}{вебчат Freenode}.
- % ENG
- % If you want to talk to us, or to other math people, come see us in {\tt \#lysa}
- % on Freenode. If you don't know what IRC is, or you don't have a client set up,
- % you can connect through
- % \link{http://webchat.freenode.net/?channels=lysa}{Freenode's webchat}.
- Если у вас возникли любые вопросы по LYSA (или математике), пожалуйста задавайте их в чате
- ({\tt \#lysa} на FreeNode, если вы забыли что-то из математики).
- % If you have any questions about LYSA (or math), feel free to ask in the IRC
- % channel ({\tt \#lysa} on FreeNode in case you forgot).
- Если вы хотите исправить что-либо, или заметили какую-либо проблему, или хотите
- добавить какой-то материал – что угодно, связаное с содержимым книги – вы можете зайти
- на \link{https://github.com/gazay/lysa}{нашу русскоязычную GitHub страницу} или на
- \link{https://gitlab.com/lysa/lysa}{оригинальную страницу книги}. У нас также есть
- \link{https://lysa.reddit.com/}{сообщество на Reddit}.
- % ENG
- % If you want to submit a correction, or have some issue, or want to add some
- % content, really anything having to do with the content of the book, you can
- % visit \link{https://gitlab.com/lysa/lysa}{our GitLab page}. We also have a
- % \link{https://lysa.reddit.com/}{community on Reddit}.
- \s{Idris}\label{intro-idris}
- В этой книге мы изучим кучу сложных вещей.\footnote{Это не совсем правда.
- Не математика сложная, а ты не вник.} Иногда очень полезно напрограммировать
- решение проблемы. Каждый программист скажет вам, что программирование учит
- думать иначе.
- % ENG
- % In this book, we cover a lot of hard stuff.\footnote{This isn't actually
- % true. Math isn't hard, stupid!} Sometimes, it's useful to program your way
- % through a problem. Every programmer will tell you that programming teaches a
- % manner of thinking.
- Многие программисты процитируют известные слова Стива Джобса\footnote{Для вас, молодняка, Стив Джобс –
- основатель Apple. Он умер.}, относящиеся к программированию в его работе,
- % ENG
- % Many programmers will cite Steve Jobs\footnote{For you youngsters, Steve Jobs is
- % the former CEO of Apple. He's dead now.} famous quote, regarding the use of
- % programming in his job,
- \begin{iquote}
- [sic] \ldots что намного важнее, нет ничего общего с использованием (программ, что мы пишем)
- на практике. С другой стороны, это как отражение мыслительного процесса; по-настоящему учиться думать.
- Я думаю, каждый в этой стране должен знать как программировать на компьютере --- должен
- изучать компьютерный язык --- потому что это учит нас думать.
- % ENG
- % [sic] \ldots much more importantly, it had nothing to do with using [the
- % programs we wrote] for anything practical. It had to do with using them to be
- % a mirror of your thought process; to actually learn how to think. I think
- % everybody in this country should learn how to program a computer --- should
- % learn a computer language --- because it teaches you how to think.
- \end{iquote}
- \nocite{jobs-programming}
- Первые пара предложений - на самом деле, отличное описание математики (и программирования).
- Обе сферы невероятно полезны и имеют бесконечный потенциал практического применения.
- Но это не самое важное. Самая полезная вещь – это побочный эффект. Учиться думать и
- иметь строгий язык для выражения своих мыслей. Кроме того, строгость языка
- помогает выдумывать все более крутые вещи.
- Вот о чем математика.
- % ENG
- % That first sentence or two is actually a pretty good description of mathematics
- % (and programming). Both are incredibly useful, and have endless practical
- % applications. That's not the point, though. The whole usefulness thing is a side
- % gig. It's about learning how to think, and having a rigorous language through
- % which to express your thoughts. Furthermore, the rigor of the language helps you
- % build upon your current thoughts to find out even cooler things. That's what
- % math is about.
- Программирование и математика идут рука об руку. Программисты и математики подтвердят это:
- я точно могу. Поэтому вы встретите в этой книге упражнения на языке Idris. Idris – это
- очень интересный язык программирования по многим причинам. Главная из которых заключается в том,
- что он позволяет доказывать вещи математически. Большинство языков программирования не
- могут этого. Idris может, поэтому он такой замечательный.\footnote{Кроме Idris
- доказывать вещи математически позволяют два других языка: Coq и Agda. Но, так как я наиболее
- знаком с Idris, и он, по-моему, наиболее пригоден лдя этого - будет Idris.
- Смиритесь.}
- % ENG
- % Programming and math go hand-in-hand. Programmers and mathematicians will attest
- % to this; I certainly can. For that reason, throughout this book, there will be
- % coding exercises in the programming language Idris. Idris is an interesting
- % programming language for many reasons. The chief of which is that it can be used
- % to prove things mathematically. Most programming languages can't do this. Idris
- % can, which is why it is special.\footnote{There are other programming languages
- % that can prove things, namely Coq and Agda. However, I'm most familiar with
- % Idris, and Idris is probably the most useful, so I'm using Idris. Deal with
- % it.}
- \ss{Установка Idris}
- % \ss{Installing Idris}
- Это довольно трудно описать, потому что процесс очень сильно зависит от
- операционной системы. Я размещу инструкции для операционных систем, которые использую сам.
- Если вы не найдете своей операционной системы ниже, пожалуйста, напишите об этом в
- \link{https://github.com/gazay/lysa/issues/new}{issue tracker}. Еще лучше, если вы сможете
- написать инструкции самостоятельно и попросить меня добавить это в саму книгу.
- % ENG
- % This is something that is actually rather difficult to summarize, because it
- % varies from operating system to operating system. I will put down the
- % instructions for the operating systems I use. If you come upon this and don't
- % see your operating system, please report this on
- % \link{https://gitlab.com/lysa/lysa/issues/new}{the issue tracker}. Better yet,
- % you could add the instructions yourself, and ask me to merge your changes.
- \sss{Mac}
- Если у вас установлен пакетный менеджер \link{http://brew.sh/}{Homebrew}, то,
- по идее, все должно быть очень просто:
- \begin{shellsession}
- # brew install idris
- \end{shellsession}
- После этого вы сможете запустить Idris командой \terminal{idris}.
- Если же у вас возникли какие-либо проблемы с установкой напрямую,
- попробуйте выполнить все шаги из
- \link{https://github.com/idris-lang/Idris-dev/wiki/Idris-on-OS-X-using-Homebrew}{официальной вики по установке}
- Idris на Mac.
- % \sss{Linux}
- % \pg{Gentoo}
- Вам потребуется платформа Haskell и библиотека GMP. На момент 5 января 2015 платформа доступна
- только в \code{\tilde x86} и \code{\tilde amd64} профилях. Если вы используете стабильный профиль,
- добавьте в \filepath{/etc/portage/package.keywords}
- % ENG
- % You will need the Haskell platform, along with the GNU Multiple Precision (GMP)
- % library. As of 5 January 2015, the Haskell platform is only available on
- % \code{\tilde ARCH}, where \code{ARCH} is your processor architecture
- % (e.g. \code{amd64}, \code{x86}). If you use \code{ARCH}, you can enable these by
- % adding the following to \filepath{/etc/portage/package.keywords}:\footnote{If
- % you already use \code{\tilde ARCH}, you can ignore this}
- \begin{plainfile}
- dev-lang/ghc
- dev-haskell/cabal-install
- \end{plainfile}
- Независимо от профиля надо задать флаг в \filepath{/etc/portage/package.use}:
- % ENG
- % Regardless of your \code{ACCEPT\_KEYWORDS} variable, you should add the
- % following to \filepath{/etc/portage/package.use}:
- \begin{plainfile}
- dev-lang/ghc binary
- \end{plainfile}
- Иначе GHC (компилятор Хаскеля) будет компилироваться. А это долго. Очень.
- % ENG
- % Otherwise, you have to compile GHC (the Haskell compiler) from scratch, and that
- % takes forever.
- Затем выполнить с правами суперпользователя:
- % ENG
- % Once you have that all out of the way, you'll want to run the following command as root:
- \begin{shellsession}
- # emerge -jav dev-lang/ghc dev-haskell/cabal-install
- \end{shellsession}
- \xtb{Внимание}: флаг \terminal{-j} сделает установку многопоточной, ну вы знаете :)
- % ENG
- % \xtb{Warning}: \terminal{-j} will make the installation a lot faster, but is
- % more resource-intensive. If your power usage is precious, omit it (i.e. use
- % \terminal{-av} instead).
- После установки выполните от своего пользователя:
- % ENG
- % Once GHC and cabal-install are installed, you'll want to run the following as a
- % normal user:
- \begin{shellsession}
- % cabal update
- % cabal install alex happy haddock hscolour
- % cabal install idris
- \end{shellsession}
- Теперь в терминале можно запустить \terminal{idris}.
- % ENG
- % You can then get at the Idris shell by running \terminal{idris}.
- \s{Лицензия}
- % \s{Licensing}
- Эта книга доступна всем без ограничений. Вы можете скопировать эту книгу и дать своему
- другу. Вы можете даже напечатать эту книгу и продать ее своим друзьям,\footnote{Правда,
- есть определенные ограничения, смотри \cref{gfdl}.}
- % ENG
- % This book is free, in the sense of freedom. You can copy this book and give it
- % ENG
- % to your friend. You can even print it out and sell it to your
- % ENG
- % friends.\footnote{There are some restrictions though, see \cref{gfdl}.}
- Если вы, например, школный учитель и хотите использовать ее для своих занятий,
- вы можете свободно изменять содержимое по своему усмотрению и раздавать копии своим
- студентам.
- % ENG
- % If, for instance, you are a schoolteacher and want to use this for your class,
- % you are free to edit it to your liking and give the modified copy to your
- % students.
- LYSA лецензирована по GNU Free Documentation License. \Cref{gfdl} содержит текст лицензии.
- Пожалуйста, прочтите лицензию; вообще, она довольно проста и понятна.
- % ENG
- % LYSA is licensed under the GNU Free Documentation License. \Cref{gfdl} contains
- % the license. Please read the license; it's actually pretty comprehensible.
- Исходный код этой книги может быть скачан \link{https://github.com/gazay/lysa/archive/master.zip}{отсюда}.
- Если вы хотите поучаствовать в написании книги – лучше, наверное, клонировать репозитарий.
- Вы можете сделать это, выполнив \terminal{git clone https://github.com/gazay/lysa.git} в терминале.
- % ENG
- % The source for this book can be downloaded at
- % \url{https://gitlab.com/lysa/lysa/repository/archive.tar.gz}. If you are looking
- % to contribute, it's probably best to clone the git repository. You can clone the
- % git repository by running \terminal{git clone https://gitlab.com/lysa/lysa.git}
- % in a terminal.
|