Sophie

Sophie

distrib > Fedora > 18 > i386 > by-pkgid > 971a3706a7676677c8b7bbdffc0c4b9b > files > 220

sagemath-doc-ru-5.9-9.fc18.noarch.rpm

***********
Послесловие
***********

Почему Python?
==============

Преимущества Python
-------------------

Основной язык реализации Sage — это Python (см. [Py]_), однако код, который 
должен обрабатываться быстро, написан на компилируемом языке. У Python есть 
ряд преимуществ:


-  **Сохранение объектов** широко используется в Python. В Python присутствует 
   поддержка сохранения (почти) любых объектов на диск или в базу данных.

-  Замечательная поддержка **документации** функций и пакетов в исходном коде, 
   включая автоматический доступ к документации и автоматическое тестирование 
   всех примеров. Примеры проверяются автоматически на регулярной основе и их 
   правильная работоспособность гарантирована.

-  **Управление памятью**: Python имеет продуманный и стабильный менеджер 
   памяти и сборщик мусора, которые исправно работают с циклическими ссылками 
   и позволяют использовать локальные переменные в файлах.

-  Python имеет **множество пакетов**, доступных уже сейчас, которые могут 
   быть интересны пользователям Sage: численный анализ и линейная алгебра, 
   2D и 3D визуализация, сеть (для распределенных вычислений и серверов, 
   например с помощью twisted), поддержка баз данных и т.д.

-  **Портируемость:** Python с легкостью компилируется на большинстве платформ 
   в считанные минуты.

-  **Работа с исключениями:** Python содержит сложный и продуманный механизм 
   работы с исключениями, благодаря чему программы продолжают работать даже 
   при возникновении ошибок в вызываемом ими коде.

-  **Отладчик:** Python включает в себя отладчик, так что когда программа не 
   работает по какой-то причине, пользователь может получить доступ к истории 
   стека, проверить состояние необходимых переменных, перемещаться по стеку.

-  **Профилировщик:** существует профилировщик Python, который запускает код и 
   создает отчет по количеству вызовов и времени работы каждой функции.

-  **Язык:** Вместо того, чтобы писать **новый язык** для математики, как это 
   было сделано для Magma, Maple, Mathematica, Matlab, GP/PARI, GAP, Macaulay 2, 
   Simath, и т.д., мы используем язык Python, который является популярным языком 
   программирования; он активно развивается и оптимизируется сотнями опытных 
   специалистов по программному обеспечению (см. [PyDev]_).


.. _section-mathannoy:

Пре-парсер: Различия между Sage и Python
----------------------------------------

В некоторых математических аспектах Python может ввести в заблуждение, поэтому 
Sage ведет себя немного другим образом.


-  **Обозначение возведения в степень:** ``**`` вместо ``^``. В Python, 
   ``^`` означает "исключительно или (xor)", а не возведение в степень, так 
   в Python:

   ::

       >>> 2^8
       10
       >>> 3^2
       1
       >>> 3**2
       9

   Использование ``^`` может показаться странным; это не так важно для 
   математических исследований, потому как "исключительно или" используется 
   довольно редко. Для удобства, Sage использует пре-парсер для проверки кода 
   перед тем, как он передается в Python, и символ ``^`` (если он не находится 
   в строке) заменяет на ``**``:

   ::

       sage: 2^8
       256
       sage: 3^2
       9
       sage: "3^2"
       '3^2'

-  **Деление целых чисел:** Выражение ``2/3`` в Python означает не то, чего 
   ожидает математик. В Python, если ``m`` и ``n`` - целые числа, то ``m/n`` 
   также целое число, если быть точнее, то целая часть от деления ``m`` на 
   ``n``. Следовательно ``2/3=0``. В сообществе Python обсуждается вариант 
   изменения оператора так, чтобы ``2/3`` возвращало число с плавающей точкой 
   ``0.6666...``, а ``2//3`` возвращало ``0``.

   В интерпретаторе Sage мы используем обозначение ``Integer( )`` и деление 
   используем как конструктор для рациональных чисел. Например:

   ::

       sage: 2/3
       2/3
       sage: (2/3).parent()
       Rational Field
       sage: 2//3
       0
       sage: int(2)/int(3)
       0

-  **Большие целые числа:** Python имеет встроенную поддержку целых чисел 
   произвольной точности в дополнение к C-int’ам. Они намного медленнее, чем то, 
   что предоставляет GMP, а также имеют свойство: символ ``L`` в конце, чтобы 
   отличать их от переменных типа int (и это не изменится в ближайшем будущем). 
   Sage использует целые числа произвольной точности с помощью GMP C-библиотеки, 
   и они выводятся на экран без L.


Вместо изменения интерпретатора Python (как поступили некоторые люди для 
внутренних проектов), мы используем Python как есть, и применяем пре-парсер 
для IPython так чтобы поведение командной строки IPython соответствовало 
ожиданиям математиков. Это означает, что любой существующий код на Python 
может быть использован в Sage. Однако, нужно придерживаться стандарта Python 
при написании пакетов, которые будут импортированы в Sage.

(Чтобы установить пакет Python, который, скажем, вы нашли в интернете, следуйте 
инструкции, но запускайте ``sage -python`` вместо ``python``. Очень часто это 
означает, что нужно ввести ``sage -python setup.py install``.)

Как принять участие в разработке Sage?
======================================

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

Поищите информацию для разработчиков на главной странице Sage; кроме всего 
прочего, вы можете найти список проектов, связанных с Sage, отсортированных по 
приоритету и категории. `Руководство разроботчика Sage 
<http://www.sagemath.org/doc/developer/>`_ содержит полезную информацию; вы 
также можете узнать больше в Google-группе ``sage-devel``.

Как правильно ссылаться на Sage?
================================

Если вы используете Sage для написания работы, пожалуйста, укажите, что 
вычисления были произведены с помощью Sage. Включите

::

    [Sage] William A. Stein et al., Sage Mathematics Software (Version 4.3).
           The Sage Development Team, 2009, http://www.sagemath.org.

в раздел библиографии (заменяя 4.3 версией Sage, которую вы используете). 
Кроме того, пожалуйста, постарайтесь отследить, какие компоненты Sage были 
использованы для вычислений, например PARI?, GAP?, Singular? Maxima?, и укажите 
эти системы. Если вы сомневаетесь о том, какое программное обеспечение 
используется для вычислений, задайте вопрос в Google-группе ``sage-devel``. 
См. :ref:`section-univariate` для дальнейшего обсуждения этой темы.

------------

Если вы прочитали это руководство от начала до конца, и у вас есть соображения 
по поводу времени, затраченного на него, пожалуйста, выскажите свое мнение в 
Google-группе ``sage-devel``.

Наслаждайтесь Sage!