Последние темы
» Вити больше нет!автор bug19 Пн Фев 20 2023, 19:54
» Собираем оригинальный Орион 128
автор bug19 Пн Фев 20 2023, 19:47
» Проблема плющеного экрана ОРИОНА
автор kanzler Пн Ноя 28 2022, 12:05
» Орион 128 и его клоны возрождение 2019-2022 год
автор kanzler Пн Ноя 28 2022, 12:03
» Электроника КР-04. Информация, документы, фото.
автор kanzler Пн Ноя 28 2022, 12:02
» Новости форума
автор kanzler Пн Ноя 28 2022, 11:52
» Орион-128 НГМД запуск 2021 года
автор matrixplus Сб Сен 10 2022, 17:36
» ПЗУ F800 для РК86
автор ведущий_специалист Сб Сен 10 2022, 10:37
» Микропроцессорная лаборатория "Микролаб К580ИК80", УМК-80, УМПК-80 и др.
автор Электротехник Вт Июл 26 2022, 19:33
» Орион-128 SD карта в Орионе
автор matrixplus Чт Июн 02 2022, 09:00
» 7 Мая. День Радио!
автор Viktor2312 Чт Май 12 2022, 10:58
» Серия: Массовая радио библиотека. МРБ
автор Viktor2312 Ср Май 11 2022, 12:17
» Полезные книги
автор Viktor2312 Пн Май 09 2022, 15:07
» Орион 128 Стандарты портов и системной шины Х2
автор matrixplus Вс Май 08 2022, 23:08
» Орион-128 и Орион ПРО еще раз про блоки питания
автор matrixplus Вс Май 08 2022, 19:09
» Орион-128 Программаторы
автор matrixplus Вс Май 08 2022, 19:02
» Орион ПРО история сборки 2021 до 2022
автор matrixplus Вс Май 08 2022, 18:47
» Анонсы монет (New coin).
автор Viktor2312 Сб Май 07 2022, 23:11
» Хочу свой усилок для квартиры собрать не спеша
автор Viktor2312 Сб Май 07 2022, 19:33
» Амфитон 25у-002С
автор Viktor2312 Сб Май 07 2022, 09:38
» Майнер: T-Rex
автор Viktor2312 Вс Май 01 2022, 09:12
» GoWin. Изучение документации. SUG100-2.6E_Gowin Software User Guide. Среда разработки EDA.
автор Viktor2312 Пн Апр 25 2022, 01:01
» GoWin. Изучение документации. UG286-1.9.1E Gowin Clock User Guide.
автор Viktor2312 Сб Апр 23 2022, 18:22
» GoWin. Documentation Database. Device. GW2A.
автор Viktor2312 Ср Апр 20 2022, 14:08
» GOWIN AEC IP
автор Viktor2312 Ср Апр 20 2022, 12:08
Самые активные пользователи за месяц
Нет пользователей |
Поиск
Начальное освоение Python, базовые принципы, синтаксис и т. д...
Страница 1 из 1 • Поделиться
Начальное освоение Python, базовые принципы, синтаксис и т. д...
1
.
____Python – один из тех редких языков программирования, которые одновременно претендуют на звание простых и мощных. Python является высокоуровневым («человекочитаемым») языком программирования, который для вывода результатов использует интерпретатор.
____Можно дать общее, кратное определение:
____Python – это простой в освоении и мощный язык программирования. Он предоставляет эффективные высокоуровневые структуры данных, а также простой, но эффективный подход к объектно-ориентированному программированию. Его элегантный синтаксис и динамическая типизация наряду с тем, что он является интерпретируемым, делают его идеальным языком для написания сценариев и быстрой разработки приложений в различных областях и на большинстве платформ.
____Python содержит обширную стандартную библиотеку модулей протестированного кода, которые легко могут быть включены в любые программы.
____Основные факторы, которые можно привести в пользу языка Python следующие:
Качество программного обеспечения.
____Для многих основное преимущество языка Python заключается в удобочитаемости, ясности и более высоком качестве, отличающими его от других инструментов в мире языков сценариев. Программный код на языке Python читается легче, а значит, многократное его использование и обслуживание выполняется гораздо проще, чем использование программного кода на других языках сценариев. Единообразие оформления программного кода на языке Python облегчает его понимание даже для тех, кто не участвовал в его создании. Кроме того, Python поддерживает самые современные механизмы многократного использования программного кода, каким является объектно-ориентированное программирование (ООП).
Высокая скорость разработки.
____По сравнению с компилирующими или строго типизированными языками, такими как C, C++ и Java, Python во много раз повышает производительность труда разработчика. Объём программного кода на языке Python обычно составляет треть или даже пятую часть эквивалентного программного кода на языке C++ или Java. Это означает меньший объём ввода с клавиатуры, меньшее количество времени на отладку и меньший объём трудозатрат на сопровождение. Кроме того, программы на языке Python запускаются сразу же, минуя длительные этапы компиляции и связывания, необходимые в некоторых других языках программирования, что еще больше увеличивает производительность труда программиста.
Переносимость программ.
____Большая часть программ на языке Python выполняется без изменений на всех основных платформах. Перенос программного кода из операционной системы Linux в Windows обычно заключается в простом копировании файлов программ с одной машины на другую. Более того, Python предоставляет массу возможностей по созданию переносимых графических интерфейсов, программ доступа к базам данных, веб-приложений и многих других типов программ. Даже интерфейсы операционных систем, включая способ запуска программ и обработку каталогов, в языке Python реализованы переносимым способом.
Библиотеки поддержки.
____В составе Python поставляется большое число собранных и переносимых функциональных возможностей, известных как стандартная библиотека. Эта библиотека предоставляет массу возможностей, востребованных в прикладных программах, начиная от поиска текста по шаблону и заканчивая сетевыми функциями. Кроме того, Python допускает расширение как за счёт ваших собственных библиотек, так и за счёт библиотек, созданных сторонними разработчиками. Из числа сторонних разработок можно назвать инструменты создания веб-сайтов, программирование математических вычислений, доступ к последовательному порту, разработку игровых программ и многое другое. Например, расширение NumPy позиционируется как свободный и более мощный эквивалент системы программирования математических вычислений Mathlab.
Интеграция компонентов.
____Сценарии Python легко могут взаимодействовать с другими частями приложения благодаря различным механизмам интеграции. Эта интеграция позволяет использовать Python для настройки и расширения функциональных возможностей программных продуктов. На сегодняшний день программный код на языке Python имеет возможность вызывать функции из библиотек на языке C/C++, сам вызываться из программ, написанных на языке C/C++, интегрироваться с программными компонентами на языке Java, взаимодействовать с такими платформами, как COM и .NET, и производить обмен данными через последовательный порт или по сети с помощью таких протоколов, как SOAP, XML-RPC и CORBA. Python – не обособленный инструмент.
Удовольствие.
____Благодаря непринужденности языка Python и наличию встроенных инструментальных средств процесс программирования может приносить удовольствие. На первый взгляд это трудно назвать преимуществом, тем не менее, удовольствие, получаемое от работы, напрямую влияет на производительность труда.
____Из всех перечисленных факторов наиболее существенными для большинства пользователей являются первые два (качество и производительность).
____Язык Python, разработанный Гвидо ван Россумом (Guido van Rossum) в конце восьмидесятых — начале девяностых годов в Национальном научно-исследовательском институте математики и компьютерных наук в Нидерландах, является производным от многих других языков, в том числе С, C ++, Java, Lisp и командной оболочки Unix. Сегодня Python поддерживается командой разработчиков ядра в институте, хотя Гвидо ван Россум по-прежнему играет важную роль в определении направления развития языка.
____Читаемость кода, делающая язык Python особенно подходящим для новичков в программировании, — один из принципов философии Python, которую можно обобщить следующим образом.
____Поскольку Python ориентирован на читаемость кода, в нём часто используются ключевые слова на английском языке там, где другие языки программирования обычно используют знаки препинания. Особое его отличие состоит в том, что для группировки инструкций в блоке кода Python использует отступы, а не ключевые слова или знаки препинания. В языке Pascal, например, начало блоков обозначается ключевым словом begin и заканчивается ключевым словом end, в то время как программисты на C используют фигурные скобки для обозначения блоков кода. Очень часто такой подход группировки блоков отступами критикуется программистами, знакомыми с другими языками, но, несомненно, использование отступов в Python позволяет программам выглядеть менее нагроможденными.
____Помимо перечисленных выше основных факторов в пользу языка Python, перечислим некоторые из важнейших отличительных особенностей этого языка, которые делают его привлекательным для начинающих программистов.
____Как и любое другое программное обеспечение, Python продолжает развиваться, его новые версии выпускаются с определенной периодичностью. Объявлено, что версия 2.7 будет окончательной в ветке 2.x. Но её поддержка будет продлена до 2020 года. Других больших релизов в данной ветке не ожидается.
____Ветка версии 3.x находится в активной разработке и уже имеет множество стабильных релизов. Это значит, что все последние улучшения стандартных библиотек, например, окажутся доступными только в версии Python 3.x.
Высокая скорость разработки.
____Язык Python это инструмент, позволяющий программистам получать большую отдачу при меньших усилиях. Он изначально оптимизирован для достижения высокой скорости разработки – простой синтаксис, динамическая типизация, отсутствие этапа компиляции и встроенные инструментальные средства позволяют программистам создавать программы за меньшее время, чем при использовании некоторых других инструментов. В результате Python увеличивает производительность труда разработчика во много раз по сравнению с традиционными языками программирования. Это значительное преимущество, которое с успехом может использоваться, во время любого этапа развития индустрии программного обеспечения.
Является ли Python «языком сценариев»?
____Python – это многоцелевой язык программирования, который зачастую используется для создания сценариев. Обычно он позиционируется как объектно-ориентированный язык сценариев – такое определение смешивает поддержку ООП с общей ориентацией на сценарии. Действительно, для обозначения файлов с программным кодом на языке Python программисты часто используют слово «сценарий» вместо слова «программа». Мы же будем термины «сценарий» и «программа» рассматривать как взаимозаменяемые с некоторым предпочтением термина «сценарий» для обозначения простейших программ, помещающихся в единственный файл, и термина «программа» для обозначения более сложных приложений, программный код которых размещается в нескольких файлах.
____Термин «язык сценариев» имеет множество различных толкований. Некоторые предпочитают вообще не применять его к языку Python. У большинства термин «язык сценариев» вызывает три разных ассоциации, из которых одни более применимы к языку Python, чем другие:
Командные оболочки.
____Иногда, когда кто-то слышит, что Python – это язык сценариев, то представляет себе Python как инструмент для создания системных сценариев. Такие программы часто запускаются из командной строки с консоли и решают такие задачи, как обработка текстовых файлов и запуск других программ. Программы на языке Python способны решать такие задачи, но это лишь одна из десятков прикладных областей, где может применяться Python. Это не только язык сценариев командной оболочки.
Управляющий язык.
____Другие пользователи под названием «язык сценариев» понимают «связующий» слой, который используется для управления другими прикладными компонентами (то есть для описания сценария работы). Программы на языке Python действительно нередко используются в составе крупных приложений. Например, при проверке аппаратных устройств программы на языке Python могут вызывать компоненты, осуществляющие низкоуровневый доступ к устройствам. Точно так же программы могут запускать программный код на языке Python для поддержки настройки программного продукта у конечного пользователя, что ликвидирует необходимость поставлять и пересобирать полный объём исходных текстов.
____Простота языка Python делает его весьма гибким инструментом управления. Тем не менее технически – это лишь одна из многих ролей, которые может играть Python. Многие программисты пишут на языке Python автономные сценарии, которые не используют какие-либо интегрированные компоненты. Это не только язык управления.
Удобство в использовании.
____Пожалуй, лучше всего представлять себе термин «язык сценариев» как обозначение простого языка, используемого для быстрого решения задач. Это особенно верно, когда термин применяется к языку Python, который позволяет вести разработку гораздо быстрее, чем компилирующие языки программирования, такие как C++. Ускоренный цикл разработки способствует применению зондирующего, поэтапного стиля программирования, который следует попробовать, чтобы оценить по достоинству.
____Не надо заблуждаться, Python предназначен не только для решения простых задач. Скорее, он упрощает решение задач благодаря своей простоте и гибкости. Язык Python имеет небольшой набор возможностей, но он позволяет создавать программы неограниченной сложности. По этой причине Python обычно используется как для быстрого решения тактических, так и для решения долговременных, стратегических задач.
____Итак, является ли Python языком сценариев? Ответ зависит от того, к кому обращён вопрос. Вообще термин «создание сценариев», вероятно, лучше использовать для описания быстрого и гибкого способа разработки, который поддерживается языком Python, а не для описания прикладной области программирования.
Что можно делать с помощью Python?
____Будучи удачно спроектированным языком программирования Python прекрасно подходит для решения реальных задач из разряда тех, которые разработчикам приходится решать ежедневно. Он используется в самом широком спектре применений – и как инструмент управления другими программными компонентами, и для реализации самостоятельных программ. Фактически круг ролей, которые может играть Python как многоцелевой язык программирования, практически не ограничен: он может использоваться для реализации всего, что угодно, – от веб-сайтов и игровых программ до управления роботами и космическими кораблями.
____Однако сферу использования Python в настоящее время можно разбить на несколько широких категорий. Следующие несколько разделов описывают наиболее типичные области применения Python в наши дни, а также инструментальные средства, используемые в каждой из областей.
Системное программирование.
____Встроенные в Python интерфейсы доступа к службам операционных систем делают его идеальным инструментом для создания переносимых программ и утилит системного администрирования (иногда они называются инструментами командной оболочки). Программы на языке Python могут отыскивать файлы и каталоги, запускать другие программы, производить параллельные вычисления с использованием нескольких процессов и потоков и делать многое другое.
____Стандартная библиотека Python полностью отвечает требованиям стандартов POSIX и поддерживает все типичные инструменты операционных систем: переменные окружения, файлы, сокеты, каналы, процессы, многопоточную модель выполнения, поиск по шаблону с использованием регулярных выражений, аргументы командной строки, стандартные интерфейсы доступа к потокам данных, запуск команд оболочки, дополнение имен файлов и многое другое. Кроме того, системные интерфейсы в языке Python созданы переносимыми, например сценарий копирования дерева каталогов не требует внесения изменений, в какой бы операционной системе он ни использовался. Система Stackless Python, используемая компанией EVE Online, также предлагает улучшенные решения, применяемые для параллельной обработки данных.
Графический интерфейс.
____Простота Python и высокая скорость разработки делают его отличным средством разработки графического интерфейса. В состав Python входит стандартный объектно-ориентированный интерфейс к Tk GUI API, который называется tkinter (в Python 2.6 он называется Tkinter), позволяющий программам на языке Python реализовать переносимый графический интерфейс с внешним видом, присущим операционной системе. Графические интерфейсы на базе Python/tkinter без изменений могут использоваться в MS Windows, X Window (в операционных системах UNIX и Linux) и Mac OS (как в классической версии, так и в OS X). Свободно распространяемый пакет расширения PMW содержит дополнительные визуальные компоненты для набора tkinter. Кроме того, существует прикладной интерфейс wxPython GUI API, основанный на библиотеке C++, который предлагает альтернативный набор инструментальных средств построения переносимых графических интерфейсов на языке Python.
____Инструменты высокого уровня, такие как PythonCard и Dabo, построены на основе таких API, как wxPython и tkinter. При выборе соответствующей библиотеки вы также сможете использовать другие инструменты создания графического интерфейса, такие как Qt (с помощью PyQt), GTK (с помощью PyGtk), MFC (с помощью PyWin32), .NET (с помощью IronPython), Swing (с помощью Jython – реализации языка Python на Java, или JPype). Для разработки приложений с веб-интерфейсом или не предъявляющих высоких требований к интерфейсу можно использовать Jython, веб-фреймворки на языке Python и CGI-сценарии, обеспечивают дополнительные возможности по созданию пользовательского интерфейса.
Веб-сценарии.
____Интерпретатор Python поставляется вместе со стандартными интернет-модулями, которые позволяют программам выполнять разнообразные сетевые операции как в режиме клиента, так и в режиме сервера. Сценарии могут производить взаимодействия через сокеты, извлекать информацию из форм, отправленных серверным CGI-сценариям; передавать файлы по протоколу FTP; обрабатывать файлы XML; передавать, принимать, создавать и производить разбор писем электронной почты; загружать веб-страницы с указанных адресов URL; производить разбор разметки HTML и XML полученных веб-страниц; производить взаимодействия по протоколам XML-RPC, SOAP и Telnet и многое другое. Библиотеки, входящие в состав Python, делают реализацию подобных задач удивительно простым делом.
____Кроме того, существует огромная коллекция сторонних инструментов для создания сетевых программ на языке Python, которые можно найти в Интернете. Например, система HTMLGen позволяет создавать HTML-страницы на основе описаний классов Python. Пакет mod_python предназначен для запуска сценариев на языке Python под управлением веб-сервера Apache и поддерживает шаблоны механизма Python Server Pages. Система Jython обеспечивает бесшовную интеграцию Python/Java и поддерживает серверные апплеты, которые выполняются на стороне клиента.
____Помимо этого для Python существуют полноценные пакеты веб-разработки, такие как Django, TurboGears, web2py, Pylons, Zope и WebWare, поддерживающие возможность быстрого создания полнофункциональных высококачественных веб-сайтов на языке Python. Многие из них включают такие возможности, как объектно-реляционные отображения, архитектура Модель/Представление/Контроллер (Model/View/Controller), создание сценариев, выполняющихся на стороне сервера, поддержка шаблонов и технологии AJAX, предоставляя законченные и надёжные решения для разработки веб-приложений.
Интеграция компонентов.
____Возможность интеграции программных компонентов в единое приложение с помощью Python уже обсуждалась выше, когда мы говорили о Python как о языке управления. Возможность Python расширяться и встраиваться в системы на языке C и C++ делает его удобным и гибким языком для описания поведения других систем и компонентов. Например, интеграция с библиотекой на языке C позволяет Python проверять наличие и запускать библиотечные компоненты, а встраивание Python в программные продукты позволяет производить настройку программных продуктов без необходимости пересобирать эти продукты или поставлять их с исходными текстами.
____Такие инструменты, как Swing и SIP, автоматически генерирующие программный код, могут автоматизировать действия по связыванию скомпилированных компонентов в Python для последующего их использования в сценариях, а система Cython позволяет программистам смешивать программный код на Python и C. Такие огромные платформы на Python, как поддержка COM в MS Windows, Jython – реализация на языке Java, IronPython – реализация на базе .NET и разнообразные реализации CORBA, предоставляют альтернативные способы организации взаимодействий с программными компонентами. Например, в операционной системе Windows сценарии на языке Python могут использовать платформы управления такими приложениями, как MS Word и Excel.
Приложения баз данных.
____В языке Python имеются интерфейсы доступа ко всем основным реляционным базам данных – Sybase, Oracle, Informix, ODBC, MySQL, PostgreSQL, SQLite и многим другим. В мире Python существует также переносимый прикладной программный интерфейс баз данных, предназначенный для доступа к базам данных SQL из сценариев на языке Python, который унифицирует доступ к различным базам данных. Например, при использовании переносимого API сценарий, предназначенный для работы со свободной базой данных MySQL, практически без изменений сможет работать с другими системами баз данных (такими как Oracle). Всё, что потребуется сделать для этого, – заменить используемый низкоуровневый интерфейс.
____Стандартный модуль pickle реализует простую систему хранения объектов, что позволяет программам сохранять и восстанавливать объекты Python в файлах или в специализированных объектах. В Сети можно также найти систему, созданную сторонними разработчиками, которая называется ZODB. Она представляет собой полностью объектно-ориентированную базу данных для использования в сценариях на языке Python. Существуют также инструменты, такие как SQLObject и SQLAlchemy, которые отображают реляционные таблицы в модель классов языка Python. Начиная с версии Python 2.5, стандартной частью Python стала база данных SQLite.
Быстрое создание прототипов.
____В программах на языке Python компоненты, написанные на Python и на C, выглядят одинаково. Благодаря этому можно сначала создавать прототипы систем на языке Python, а затем переносить выбранные компоненты на компилирующие языки, такие как C и C++. В отличие от ряда других инструментов разработки прототипов, язык Python не требует, чтобы система была полностью переписана, как только прототип будет отлажен. Части системы, которые не требуют такой эффективности выполнения, какую обеспечивает C++, можно оставить на языке Python, что существенно упростит сопровождение и использование такой системы.
Программирование математических и научных вычислений.
____Расширение NumPy для математических вычислений, упоминавшееся выше, включает такие мощные элементы, как объекты массивов, интерфейсы к стандартным математическим библиотекам, и многое другое. Расширение NumPy – за счет интеграции с математическими библиотеками, написанными на компилирующих языках программирования – превращает Python в сложный, но удобный инструмент программирования математических вычислений, который зачастую может заменить существующий программный код, написанный на традиционных компилирующих языках, таких как FORTRAN и C++. Дополнительные инструменты математических вычислений для Python поддерживают возможность создания анимационных эффектов и трехмерных объектов, позволяют организовать параллельные вычисления и так далее. Например, популярные расширения SciPy и ScientificPython предоставляют дополнительные библиотеки для научных вычислений и используют возможности расширения NumPy.
Игры, изображения, искусственный интеллект, XML роботы и многое другое.
____Язык программирования Python можно использовать для решения более широкого круга задач, чем может быть упомянуто здесь. Например:
____Можно даже разложить пасьянс с помощью программы PySol. Поддержку многих других прикладных областей можно найти на веб-сайте PyPI.
____Вообще говоря, многие из этих областей применения Python – всего лишь разновидности одной и той же роли под названием «интеграция компонентов». Использование Python в качестве интерфейса к библиотекам компонентов, написанных на языке C, делает возможным создание сценариев на языке Python для решения задач в самых разных прикладных областях. Как универсальный, многоцелевой язык программирования, поддерживающий возможность интеграции, Python может применяться очень широко.
Введение в язык программирования Python.
«явное лучше неявного»
____Python – один из тех редких языков программирования, которые одновременно претендуют на звание простых и мощных. Python является высокоуровневым («человекочитаемым») языком программирования, который для вывода результатов использует интерпретатор.
____Можно дать общее, кратное определение:
____Python – это простой в освоении и мощный язык программирования. Он предоставляет эффективные высокоуровневые структуры данных, а также простой, но эффективный подход к объектно-ориентированному программированию. Его элегантный синтаксис и динамическая типизация наряду с тем, что он является интерпретируемым, делают его идеальным языком для написания сценариев и быстрой разработки приложений в различных областях и на большинстве платформ.
____Python содержит обширную стандартную библиотеку модулей протестированного кода, которые легко могут быть включены в любые программы.
На заметку.
Название языку Python было дано в честь популярного британского комедийного шоу «Летающий цирк Монти Пайтона» (Monty Python's Flying Circus) — вы можете найти упоминание об этом в документации по языку.
____Основные факторы, которые можно привести в пользу языка Python следующие:
Качество программного обеспечения.
____Для многих основное преимущество языка Python заключается в удобочитаемости, ясности и более высоком качестве, отличающими его от других инструментов в мире языков сценариев. Программный код на языке Python читается легче, а значит, многократное его использование и обслуживание выполняется гораздо проще, чем использование программного кода на других языках сценариев. Единообразие оформления программного кода на языке Python облегчает его понимание даже для тех, кто не участвовал в его создании. Кроме того, Python поддерживает самые современные механизмы многократного использования программного кода, каким является объектно-ориентированное программирование (ООП).
Высокая скорость разработки.
____По сравнению с компилирующими или строго типизированными языками, такими как C, C++ и Java, Python во много раз повышает производительность труда разработчика. Объём программного кода на языке Python обычно составляет треть или даже пятую часть эквивалентного программного кода на языке C++ или Java. Это означает меньший объём ввода с клавиатуры, меньшее количество времени на отладку и меньший объём трудозатрат на сопровождение. Кроме того, программы на языке Python запускаются сразу же, минуя длительные этапы компиляции и связывания, необходимые в некоторых других языках программирования, что еще больше увеличивает производительность труда программиста.
Переносимость программ.
____Большая часть программ на языке Python выполняется без изменений на всех основных платформах. Перенос программного кода из операционной системы Linux в Windows обычно заключается в простом копировании файлов программ с одной машины на другую. Более того, Python предоставляет массу возможностей по созданию переносимых графических интерфейсов, программ доступа к базам данных, веб-приложений и многих других типов программ. Даже интерфейсы операционных систем, включая способ запуска программ и обработку каталогов, в языке Python реализованы переносимым способом.
Библиотеки поддержки.
____В составе Python поставляется большое число собранных и переносимых функциональных возможностей, известных как стандартная библиотека. Эта библиотека предоставляет массу возможностей, востребованных в прикладных программах, начиная от поиска текста по шаблону и заканчивая сетевыми функциями. Кроме того, Python допускает расширение как за счёт ваших собственных библиотек, так и за счёт библиотек, созданных сторонними разработчиками. Из числа сторонних разработок можно назвать инструменты создания веб-сайтов, программирование математических вычислений, доступ к последовательному порту, разработку игровых программ и многое другое. Например, расширение NumPy позиционируется как свободный и более мощный эквивалент системы программирования математических вычислений Mathlab.
Интеграция компонентов.
____Сценарии Python легко могут взаимодействовать с другими частями приложения благодаря различным механизмам интеграции. Эта интеграция позволяет использовать Python для настройки и расширения функциональных возможностей программных продуктов. На сегодняшний день программный код на языке Python имеет возможность вызывать функции из библиотек на языке C/C++, сам вызываться из программ, написанных на языке C/C++, интегрироваться с программными компонентами на языке Java, взаимодействовать с такими платформами, как COM и .NET, и производить обмен данными через последовательный порт или по сети с помощью таких протоколов, как SOAP, XML-RPC и CORBA. Python – не обособленный инструмент.
Удовольствие.
____Благодаря непринужденности языка Python и наличию встроенных инструментальных средств процесс программирования может приносить удовольствие. На первый взгляд это трудно назвать преимуществом, тем не менее, удовольствие, получаемое от работы, напрямую влияет на производительность труда.
____Из всех перечисленных факторов наиболее существенными для большинства пользователей являются первые два (качество и производительность).
Внимание.
Python 3.x обратно несовместим с версией Python 2.7.
____Язык Python, разработанный Гвидо ван Россумом (Guido van Rossum) в конце восьмидесятых — начале девяностых годов в Национальном научно-исследовательском институте математики и компьютерных наук в Нидерландах, является производным от многих других языков, в том числе С, C ++, Java, Lisp и командной оболочки Unix. Сегодня Python поддерживается командой разработчиков ядра в институте, хотя Гвидо ван Россум по-прежнему играет важную роль в определении направления развития языка.
____Читаемость кода, делающая язык Python особенно подходящим для новичков в программировании, — один из принципов философии Python, которую можно обобщить следующим образом.
- Красивое лучше, чем уродливое.
- Явное лучше, чем неявное.
- Простое лучше, чем сложное.
- Сложное лучше, чем запутанное.
- Читаемость имеет значение.
____Поскольку Python ориентирован на читаемость кода, в нём часто используются ключевые слова на английском языке там, где другие языки программирования обычно используют знаки препинания. Особое его отличие состоит в том, что для группировки инструкций в блоке кода Python использует отступы, а не ключевые слова или знаки препинания. В языке Pascal, например, начало блоков обозначается ключевым словом begin и заканчивается ключевым словом end, в то время как программисты на C используют фигурные скобки для обозначения блоков кода. Очень часто такой подход группировки блоков отступами критикуется программистами, знакомыми с другими языками, но, несомненно, использование отступов в Python позволяет программам выглядеть менее нагроможденными.
____Помимо перечисленных выше основных факторов в пользу языка Python, перечислим некоторые из важнейших отличительных особенностей этого языка, которые делают его привлекательным для начинающих программистов.
- Python бесплатен — это свободно распространяемое программное обеспечение с открытым исходным кодом.
- Python лёгок в изучении — он имеет простой синтаксис.
- Python позволяет создавать легко читаемый код — он не перегружен знаками препинания.
- Python легок в обслуживании — имеет модульную структуру.
- Python располагает богатым «арсеналом» — он предлагает большую стандартную библиотеку, которая легко интегрируется в ваши программы.
- Python портируемый — его можно запустить на обширном множестве различных платформ, и везде он будет иметь один и тот же интерфейс.
- Python интерпретируемый — компиляция не требуется.
- Python является высокоуровневым языком — он имеет статическое распределение памяти.
- Python расширяемый — позволяет добавлять низкоуровневые модули.
- Python универсален — поддерживает как процедурный, так и объект но ориентированный методы программирования.
- Python гибок в использовании — с его помощью можно создавать консольные программы, приложения графического интерфейса, а также сценарии для взаимодействия внешних программ с веб-серверами.
____Как и любое другое программное обеспечение, Python продолжает развиваться, его новые версии выпускаются с определенной периодичностью. Объявлено, что версия 2.7 будет окончательной в ветке 2.x. Но её поддержка будет продлена до 2020 года. Других больших релизов в данной ветке не ожидается.
____Ветка версии 3.x находится в активной разработке и уже имеет множество стабильных релизов. Это значит, что все последние улучшения стандартных библиотек, например, окажутся доступными только в версии Python 3.x.
Высокая скорость разработки.
____Язык Python это инструмент, позволяющий программистам получать большую отдачу при меньших усилиях. Он изначально оптимизирован для достижения высокой скорости разработки – простой синтаксис, динамическая типизация, отсутствие этапа компиляции и встроенные инструментальные средства позволяют программистам создавать программы за меньшее время, чем при использовании некоторых других инструментов. В результате Python увеличивает производительность труда разработчика во много раз по сравнению с традиционными языками программирования. Это значительное преимущество, которое с успехом может использоваться, во время любого этапа развития индустрии программного обеспечения.
Является ли Python «языком сценариев»?
____Python – это многоцелевой язык программирования, который зачастую используется для создания сценариев. Обычно он позиционируется как объектно-ориентированный язык сценариев – такое определение смешивает поддержку ООП с общей ориентацией на сценарии. Действительно, для обозначения файлов с программным кодом на языке Python программисты часто используют слово «сценарий» вместо слова «программа». Мы же будем термины «сценарий» и «программа» рассматривать как взаимозаменяемые с некоторым предпочтением термина «сценарий» для обозначения простейших программ, помещающихся в единственный файл, и термина «программа» для обозначения более сложных приложений, программный код которых размещается в нескольких файлах.
____Термин «язык сценариев» имеет множество различных толкований. Некоторые предпочитают вообще не применять его к языку Python. У большинства термин «язык сценариев» вызывает три разных ассоциации, из которых одни более применимы к языку Python, чем другие:
Командные оболочки.
____Иногда, когда кто-то слышит, что Python – это язык сценариев, то представляет себе Python как инструмент для создания системных сценариев. Такие программы часто запускаются из командной строки с консоли и решают такие задачи, как обработка текстовых файлов и запуск других программ. Программы на языке Python способны решать такие задачи, но это лишь одна из десятков прикладных областей, где может применяться Python. Это не только язык сценариев командной оболочки.
Управляющий язык.
____Другие пользователи под названием «язык сценариев» понимают «связующий» слой, который используется для управления другими прикладными компонентами (то есть для описания сценария работы). Программы на языке Python действительно нередко используются в составе крупных приложений. Например, при проверке аппаратных устройств программы на языке Python могут вызывать компоненты, осуществляющие низкоуровневый доступ к устройствам. Точно так же программы могут запускать программный код на языке Python для поддержки настройки программного продукта у конечного пользователя, что ликвидирует необходимость поставлять и пересобирать полный объём исходных текстов.
____Простота языка Python делает его весьма гибким инструментом управления. Тем не менее технически – это лишь одна из многих ролей, которые может играть Python. Многие программисты пишут на языке Python автономные сценарии, которые не используют какие-либо интегрированные компоненты. Это не только язык управления.
Удобство в использовании.
____Пожалуй, лучше всего представлять себе термин «язык сценариев» как обозначение простого языка, используемого для быстрого решения задач. Это особенно верно, когда термин применяется к языку Python, который позволяет вести разработку гораздо быстрее, чем компилирующие языки программирования, такие как C++. Ускоренный цикл разработки способствует применению зондирующего, поэтапного стиля программирования, который следует попробовать, чтобы оценить по достоинству.
____Не надо заблуждаться, Python предназначен не только для решения простых задач. Скорее, он упрощает решение задач благодаря своей простоте и гибкости. Язык Python имеет небольшой набор возможностей, но он позволяет создавать программы неограниченной сложности. По этой причине Python обычно используется как для быстрого решения тактических, так и для решения долговременных, стратегических задач.
____Итак, является ли Python языком сценариев? Ответ зависит от того, к кому обращён вопрос. Вообще термин «создание сценариев», вероятно, лучше использовать для описания быстрого и гибкого способа разработки, который поддерживается языком Python, а не для описания прикладной области программирования.
Что можно делать с помощью Python?
____Будучи удачно спроектированным языком программирования Python прекрасно подходит для решения реальных задач из разряда тех, которые разработчикам приходится решать ежедневно. Он используется в самом широком спектре применений – и как инструмент управления другими программными компонентами, и для реализации самостоятельных программ. Фактически круг ролей, которые может играть Python как многоцелевой язык программирования, практически не ограничен: он может использоваться для реализации всего, что угодно, – от веб-сайтов и игровых программ до управления роботами и космическими кораблями.
____Однако сферу использования Python в настоящее время можно разбить на несколько широких категорий. Следующие несколько разделов описывают наиболее типичные области применения Python в наши дни, а также инструментальные средства, используемые в каждой из областей.
Системное программирование.
____Встроенные в Python интерфейсы доступа к службам операционных систем делают его идеальным инструментом для создания переносимых программ и утилит системного администрирования (иногда они называются инструментами командной оболочки). Программы на языке Python могут отыскивать файлы и каталоги, запускать другие программы, производить параллельные вычисления с использованием нескольких процессов и потоков и делать многое другое.
____Стандартная библиотека Python полностью отвечает требованиям стандартов POSIX и поддерживает все типичные инструменты операционных систем: переменные окружения, файлы, сокеты, каналы, процессы, многопоточную модель выполнения, поиск по шаблону с использованием регулярных выражений, аргументы командной строки, стандартные интерфейсы доступа к потокам данных, запуск команд оболочки, дополнение имен файлов и многое другое. Кроме того, системные интерфейсы в языке Python созданы переносимыми, например сценарий копирования дерева каталогов не требует внесения изменений, в какой бы операционной системе он ни использовался. Система Stackless Python, используемая компанией EVE Online, также предлагает улучшенные решения, применяемые для параллельной обработки данных.
Графический интерфейс.
____Простота Python и высокая скорость разработки делают его отличным средством разработки графического интерфейса. В состав Python входит стандартный объектно-ориентированный интерфейс к Tk GUI API, который называется tkinter (в Python 2.6 он называется Tkinter), позволяющий программам на языке Python реализовать переносимый графический интерфейс с внешним видом, присущим операционной системе. Графические интерфейсы на базе Python/tkinter без изменений могут использоваться в MS Windows, X Window (в операционных системах UNIX и Linux) и Mac OS (как в классической версии, так и в OS X). Свободно распространяемый пакет расширения PMW содержит дополнительные визуальные компоненты для набора tkinter. Кроме того, существует прикладной интерфейс wxPython GUI API, основанный на библиотеке C++, который предлагает альтернативный набор инструментальных средств построения переносимых графических интерфейсов на языке Python.
____Инструменты высокого уровня, такие как PythonCard и Dabo, построены на основе таких API, как wxPython и tkinter. При выборе соответствующей библиотеки вы также сможете использовать другие инструменты создания графического интерфейса, такие как Qt (с помощью PyQt), GTK (с помощью PyGtk), MFC (с помощью PyWin32), .NET (с помощью IronPython), Swing (с помощью Jython – реализации языка Python на Java, или JPype). Для разработки приложений с веб-интерфейсом или не предъявляющих высоких требований к интерфейсу можно использовать Jython, веб-фреймворки на языке Python и CGI-сценарии, обеспечивают дополнительные возможности по созданию пользовательского интерфейса.
Веб-сценарии.
____Интерпретатор Python поставляется вместе со стандартными интернет-модулями, которые позволяют программам выполнять разнообразные сетевые операции как в режиме клиента, так и в режиме сервера. Сценарии могут производить взаимодействия через сокеты, извлекать информацию из форм, отправленных серверным CGI-сценариям; передавать файлы по протоколу FTP; обрабатывать файлы XML; передавать, принимать, создавать и производить разбор писем электронной почты; загружать веб-страницы с указанных адресов URL; производить разбор разметки HTML и XML полученных веб-страниц; производить взаимодействия по протоколам XML-RPC, SOAP и Telnet и многое другое. Библиотеки, входящие в состав Python, делают реализацию подобных задач удивительно простым делом.
____Кроме того, существует огромная коллекция сторонних инструментов для создания сетевых программ на языке Python, которые можно найти в Интернете. Например, система HTMLGen позволяет создавать HTML-страницы на основе описаний классов Python. Пакет mod_python предназначен для запуска сценариев на языке Python под управлением веб-сервера Apache и поддерживает шаблоны механизма Python Server Pages. Система Jython обеспечивает бесшовную интеграцию Python/Java и поддерживает серверные апплеты, которые выполняются на стороне клиента.
____Помимо этого для Python существуют полноценные пакеты веб-разработки, такие как Django, TurboGears, web2py, Pylons, Zope и WebWare, поддерживающие возможность быстрого создания полнофункциональных высококачественных веб-сайтов на языке Python. Многие из них включают такие возможности, как объектно-реляционные отображения, архитектура Модель/Представление/Контроллер (Model/View/Controller), создание сценариев, выполняющихся на стороне сервера, поддержка шаблонов и технологии AJAX, предоставляя законченные и надёжные решения для разработки веб-приложений.
Интеграция компонентов.
____Возможность интеграции программных компонентов в единое приложение с помощью Python уже обсуждалась выше, когда мы говорили о Python как о языке управления. Возможность Python расширяться и встраиваться в системы на языке C и C++ делает его удобным и гибким языком для описания поведения других систем и компонентов. Например, интеграция с библиотекой на языке C позволяет Python проверять наличие и запускать библиотечные компоненты, а встраивание Python в программные продукты позволяет производить настройку программных продуктов без необходимости пересобирать эти продукты или поставлять их с исходными текстами.
____Такие инструменты, как Swing и SIP, автоматически генерирующие программный код, могут автоматизировать действия по связыванию скомпилированных компонентов в Python для последующего их использования в сценариях, а система Cython позволяет программистам смешивать программный код на Python и C. Такие огромные платформы на Python, как поддержка COM в MS Windows, Jython – реализация на языке Java, IronPython – реализация на базе .NET и разнообразные реализации CORBA, предоставляют альтернативные способы организации взаимодействий с программными компонентами. Например, в операционной системе Windows сценарии на языке Python могут использовать платформы управления такими приложениями, как MS Word и Excel.
Приложения баз данных.
____В языке Python имеются интерфейсы доступа ко всем основным реляционным базам данных – Sybase, Oracle, Informix, ODBC, MySQL, PostgreSQL, SQLite и многим другим. В мире Python существует также переносимый прикладной программный интерфейс баз данных, предназначенный для доступа к базам данных SQL из сценариев на языке Python, который унифицирует доступ к различным базам данных. Например, при использовании переносимого API сценарий, предназначенный для работы со свободной базой данных MySQL, практически без изменений сможет работать с другими системами баз данных (такими как Oracle). Всё, что потребуется сделать для этого, – заменить используемый низкоуровневый интерфейс.
____Стандартный модуль pickle реализует простую систему хранения объектов, что позволяет программам сохранять и восстанавливать объекты Python в файлах или в специализированных объектах. В Сети можно также найти систему, созданную сторонними разработчиками, которая называется ZODB. Она представляет собой полностью объектно-ориентированную базу данных для использования в сценариях на языке Python. Существуют также инструменты, такие как SQLObject и SQLAlchemy, которые отображают реляционные таблицы в модель классов языка Python. Начиная с версии Python 2.5, стандартной частью Python стала база данных SQLite.
Быстрое создание прототипов.
____В программах на языке Python компоненты, написанные на Python и на C, выглядят одинаково. Благодаря этому можно сначала создавать прототипы систем на языке Python, а затем переносить выбранные компоненты на компилирующие языки, такие как C и C++. В отличие от ряда других инструментов разработки прототипов, язык Python не требует, чтобы система была полностью переписана, как только прототип будет отлажен. Части системы, которые не требуют такой эффективности выполнения, какую обеспечивает C++, можно оставить на языке Python, что существенно упростит сопровождение и использование такой системы.
Программирование математических и научных вычислений.
____Расширение NumPy для математических вычислений, упоминавшееся выше, включает такие мощные элементы, как объекты массивов, интерфейсы к стандартным математическим библиотекам, и многое другое. Расширение NumPy – за счет интеграции с математическими библиотеками, написанными на компилирующих языках программирования – превращает Python в сложный, но удобный инструмент программирования математических вычислений, который зачастую может заменить существующий программный код, написанный на традиционных компилирующих языках, таких как FORTRAN и C++. Дополнительные инструменты математических вычислений для Python поддерживают возможность создания анимационных эффектов и трехмерных объектов, позволяют организовать параллельные вычисления и так далее. Например, популярные расширения SciPy и ScientificPython предоставляют дополнительные библиотеки для научных вычислений и используют возможности расширения NumPy.
Игры, изображения, искусственный интеллект, XML роботы и многое другое.
____Язык программирования Python можно использовать для решения более широкого круга задач, чем может быть упомянуто здесь. Например:
- Создавать игровые программы и анимационные ролики с помощью системы pygame;
- Обмениваться данными с другими компьютерами через последовательный порт с помощью расширения PySerial;
- Обрабатывать изображения с помощью расширений PIL, PyOpenGL, Blender, Maya и других;
- Управлять роботом с помощью инструмента PyRo;
- Производить разбор XML-документов с помощью пакета xml, модуля xmlrpclib и расширений сторонних разработчиков;
- Программировать искусственный интеллект с помощью эмулятора нейросетей и оболочек экспертных систем;
- Анализировать фразы на естественном языке с помощью пакета NLTK.
____Можно даже разложить пасьянс с помощью программы PySol. Поддержку многих других прикладных областей можно найти на веб-сайте PyPI.
____Вообще говоря, многие из этих областей применения Python – всего лишь разновидности одной и той же роли под названием «интеграция компонентов». Использование Python в качестве интерфейса к библиотекам компонентов, написанных на языке C, делает возможным создание сценариев на языке Python для решения задач в самых разных прикладных областях. Как универсальный, многоцелевой язык программирования, поддерживающий возможность интеграции, Python может применяться очень широко.
Viktor2312- RIP
- Сообщения : 15492
Дата регистрации : 2012-08-10
Возраст : 45
Откуда : Пятигорск
.
2
.
____Перед тем как начать программировать на языке Python, необходимо установить на компьютер интерпретатор Python, а также стандартную библиотеку модулей кода, поставляемую вместе с ним.
Всё это можно свободно загрузить на странице https://www.python.org/downloads/. Для пользователей операционной системы Windows существуют две версии инсталлятора: для 32-битных и 64-битных систем.
____Данное окошко называется Интерактивный режим.
Знакомство с интерпретатором, побалуемся...
____Что же первым делом всегда делают, ну естественно, пишут первую программу выдающую Hello world, что мы сейчас и сделаем. Напишем: print('Hello world') и нажмём Enter.
Работает !!!
____В интерактивном режиме интерпретатор можно использовать и как калькулятор. Набираем любое выражение с операцией сложения и нажимаем кнопку Enter. Интерпретатор в ответ выдаст нам сумму.
____Интерпретатор Python понимает любые арифметические выражения, поэтому можно использовать скобки для указания порядка вычисления — часть выражения, заключенная в скобки, будет вычисляться первой.
____И используем скобочки, чтобы уже окончательно наиграться.
____Кроме того, что интерактивный режим Python полезен в качестве простейшего калькулятора, его можно использовать для создания программ. Программа на языке Python — это обычный текстовый файл, созданный с помощью простого редактора, такого как Блокнот (Notepad), и сохраненный в файле с расширением .py.
____По традиции первая программа, которую создают при изучении языка программирования, просто выводит какое-либо сообщение с приветствием. На языке Python для этого используется функция print(), сообщение для вывода этой функции указывается в скобках. Это может быть строка символов, заключенная в кавычки. Кавычки могут быть как двойными (""), так и одинарными(''), но нельзя использовать одновременно и те, и другие.
____ Открываем блокнот, пишем, что нибудь, в рамках правил синтаксиса и сохраняем файл с расширением .py. По общепринятым соглашениям файлы с программами на языке Python должны иметь расширение .py – с технической точки зрения, это требование должно выполняться только для «импортируемых» файлов, но большинству файлов с программами на языке Python даются имена с расширением .py для единообразия.
Далее в командной строке (Пуск - Все программы - Стандартные - Командная строка) пишем путь до нашего файла и нажимаем Enter и видим, что файл запускается и исполняется:
____До сих пор мы говорил о Python в основном как о языке программирования. Но в текущей реализации это ещё и программный пакет , который называется интерпретатором. Интерпретатор – это такой модуль, который исполняет другие программы. Когда вы пишете код на языке Python, интерпретатор Python читает вашу программу и выполняет составляющие её инструкции. По сути дела интерпретатор – это слой программной логики между вашим программным кодом и аппаратурой вашего компьютера.
____В процессе установки пакета Python на компьютер создаётся ряд программных компонентов – как минимум, интерпретатор и библиотека поддержки. В зависимости от особенностей использования интерпретатор Python может иметь вид исполняемой программы или набора библиотек, связанных с другой программой. В зависимости от версии Python сам интерпретатор может быть реализован как программа на языке C, как набор классов Java или в каком-либо другом виде. Независимо от используемой разновидности Python ваш программный код на этом языке всегда будет выполняться этим интерпретатором.
____Когда интерпретатор Python получает команду запустить сценарий, он выполняет несколько промежуточных действий, прежде чем программный код начнёт выполняться. В частности, сценарий сначала будет скомпилирован в нечто под названием «байт-код», а затем передан механизму, известному под названием «виртуальная машина».
Компиляция в байт-код.
____Когда программист запускает программу, практически незаметно для него Python сначала компилирует исходный текст (инструкции в файле) в формат, известный под названием байт-код. Компиляция – это просто этап перевода программы, а байт-код – это низкоуровневое, платформонезависимое представление исходного текста программы. Интерпретатор Python транслирует каждую исходную инструкцию в группы инструкций байт-кода, разбивая её на отдельные составляющие. Такая трансляция в байт-код производится для повышения скорости – байт-код выполняется намного быстрее, чем исходные инструкции в текстовом файле.
____Если интерпретатор Python на компьютере обладает правом записи, он будет сохранять байт-код программы в виде файла с расширением .pyc (.pyc – это компилированный исходный файл .py). Вы будете обнаруживать эти файлы после запуска программ по соседству с файлами, содержащими исходные тексты (то есть в том же каталоге).
____Интерпретатор сохраняет байт-код для ускорения запуска программ. В следующий раз, когда вы попробуете запустить свою программу, Python загрузит файл .pyc и минует этап компиляции – при условии, что исходный текст программы не изменялся с момента последней компиляции. Чтобы определить, необходимо ли выполнять перекомпиляцию, Python автоматически сравнит время последнего изменения файла с исходным текстом и файла с байт-кодом. Если исходный текст сохранялся на диск после компиляции, при следующем его запуске интерпретатор автоматически выполнит повторную компиляцию программы.
____Если интерпретатор окажется не в состоянии записать файл с байт-кодом на диск, программа от этого не пострадает, просто байт-код будет сгенерирован в памяти и исчезнет по завершении программы. Строго говоря, байт-код сохраняется только для импортируемых файлов, но не для файла самой программы. Байт-код также никогда не сохраняется для инструкций, введенных в интерактивном режиме. Однако поскольку файлы .pyc повышают скорость запуска программы, вам может потребоваться иметь возможность сохранять их, особенно для больших программ. Кроме того, файлы с байт-кодом – это ещё один из способов распространения программ на языке Python. Интерпретатор запустит файл .pyc, даже если нет оригинальных файлов с исходными текстами.
Виртуальная машина Python (PVM).
____Как только программа будет скомпилирована в байт-код (или байт-код будет загружен из существующих файлов .pyc), он передаётся механизму под названием виртуальная машина Python (PVM). Аббревиатура PVM – это не отдельная программа, которую требуется устанавливать. Фактически PVM – это просто большой цикл, который выполняет перебор инструкций в байт-коде, одну за одной, и выполняет соответствующие им операции. PVM – это механизм времени выполнения, она всегда присутствует в составе системы Python и это тот самый программный компонент, который выполняет сценарии. Формально – это последняя составляющая того, что называют «интерпретатором Python».
Производительность.
____Программисты, имеющие опыт работы с компилирующими языками программирования, такими как C и C++, могут заметить несколько отличий в модели выполнения Python. Первое, что бросается в глаза, – это отсутствие этапа сборки, или вызова утилиты «make»: программный код может запускаться сразу же, как только будет написан. Второе отличие: байт-код не является двоичным машинным кодом (например, инструкциями для микропроцессора Intel). Байт-код – это внутреннее представление программ на языке Python.
____По этой причине программный код на языке Python не может выполняться так же быстро, как программный код на языке C или C++. Обход инструкций выполняет виртуальная машина, а не микропроцессор, и чтобы выполнить байт-код, необходима дополнительная интерпретация, инструкции которого требуют на выполнение больше времени, чем машинные инструкции микропроцессора. С другой стороны, в отличие от классических интерпретаторов, здесь присутствует дополнительный этап компиляции – интерпретатору не требуется всякий раз снова и снова анализировать инструкции исходного текста. В результате Python способен обеспечить скорость выполнения где-то между традиционными компилирующими и традиционными интерпретирующими языками программирования.
Скорость разработки.
____В модели выполнения Python отсутствуют различия между средой разработки и средой выполнения. То есть системы, которые компилируют и выполняют исходный текст, – это по сути одна и та же система. Для программистов, имеющих опыт работы с традиционными компилирующими языками, это обстоятельство может иметь некоторое значение, но в Python компилятор всегда присутствует во время выполнения и является частью механизма, выполняющего программы.
____Это существенно увеличивает скорость разработки. Не нужно всякий раз выполнять компиляцию и связывание программ прежде чем запустить их, – вы просто вводите исходный текст и запускаете его. Это также придаёт языку некоторый динамизм – вполне возможно, а нередко и удобно, когда программы на языке Python создаются и выполняются другими программами Python во время выполнения. Например, встроенные инструкции eval и exec принимают и выполняют строки, содержащие программный код на языке Python. Благодаря такой возможности Python может использоваться для настройки продуктов – программный код Python может изменяться «на лету», а пользователи могут изменять части системы, написанные на языке Python, без необходимости перекомпилировать систему целиком.
____Если смотреть с более фундаментальных позиций, то всё, что имеется в Python, работает на этапе времени выполнения – здесь полностью отсутствует этап предварительной компиляции, всё что необходимо, производится во время выполнения программы. Сюда относятся даже такие операции, как создание функций и классов и связывание модулей. Эти события в более статичных языках происходят перед выполнением, но в программах на языке Python происходят во время выполнения. В результате процесс программирования приобретает больший динамизм, чем тот, к которому привыкли некоторые программисты.
Разновидности модели выполнения.
____Внутренний поток выполнения, отражает современную стандартную реализацию интерпретатора Python, которая в действительности не является обязательным требованием самого языка Python. Вследствие этого модель выполнения склонна изменяться с течением времени. Фактически уже
существуют системы, которые несколько меняют картину. Давайте потратим несколько минут, чтобы ознакомиться с наиболее заметными изменениями.
Альтернативные реализации Python.
____Существуют три основные альтернативные реализации языка Python – CPython, Jython и IronPython, а также несколько второстепенных реализаций, таких как Stackless Python. CPython – это стандартная реализация, а все остальные создавались для специфических целей и задач. Все они реализуют один и тот же язык Python, но выполняют программы немного по-разному.
CPython.
____Оригинальная и стандартная реализация языка Python обычно называется CPython, особенно когда необходимо подчеркнуть её отличие от двух других альтернатив. Это название происходит из того факта, что реализация написана на переносимом языке ANSI C. Это тот самый Python, который вы загружаете с сайта http://www.python.org, получаете в составе дистрибутива ActivePython и который присутствует в большинстве систем Linux и Mac OS X. Если вы обнаружили у себя предварительно установленную версию Python, то более чем вероятно это будет CPython.
____Если вы не предполагаете создавать приложения на Java или для платформы .NET, возможно, вам следует отдать предпочтение стандартной реализации CPython. Поскольку это эталонная реализация языка, она, как правило, работает быстрее, устойчивее и лучше, чем альтернативные системы.
Jython.
____Интерпретатор Jython (первоначальное название – JPython) – это альтернативная реализация языка Python, основная цель которой – тесная интеграция с языком программирования Java. Реализация Jython состоит из Java-классов, которые выполняют компиляцию программного кода на языке Python в байт-код Java и затем передают полученный байт-код виртуальной машине Java (Java Virtual Machine, JVM). Программист помещает инструкции на языке Python в текстовые файлы как обычно, а система Jython подменяет на эквиваленты языка Java.
____Цель Jython состоит в том, чтобы позволить программам на языке Python управлять Java-приложениями, точно так же как CPython может управлять компонентами на языках C и C++. Эта реализация имеет бесшовную интеграцию с Java. Поскольку программный код на языке Python транслируется в байт-код Java, во время выполнения он ведёт себя точно так же, как настоящая программа на языке Java. Сценарии на языке Jython могут выступать в качестве апплетов и сервлетов, создавать графический интерфейс с использованием механизмов Java и так далее. Более того, Jython обеспечивает поддержку возможности импортировать и использовать Java-классы в программном коде Python. Тем не менее поскольку реализация Jython обеспечивает более низкую скорость выполнения и менее устойчива по сравнению с CPython, она представляет интерес скорее для разработчиков программ на языке Java, которым необходим язык сценариев в качестве интерфейса к Java-коду.
IronPython.
____Третья реализация языка Python – это IronPython. Она предназначена для обеспечения интеграции программ Python с приложениями, созданными для работы в среде Microsoft .NET Framework операционной системы Windows, а также в Mono – открытом эквиваленте для операционной системы Linux. Платформа .NET и среда выполнения языка C# предназначены для обеспечения взаимодействий между программными объектами – независимо от используемого языка программирования, в духе более ранней модели COM компании Microsoft. Реализация IronPython позволяет программам на языке Python играть роль как клиентских, так и серверных компонентов, доступных из других языков программирования .NET.
____Модель реализации IronPython очень напоминает Jython (и фактически разрабатывается одним и тем же автором) – она подменяет два этапа при выполнении на эквиваленты среды .NET. Кроме того, как и Jython, основной интерес IronPython представляет для разработчиков, которым необходима интеграция Python с компонентами .NET. Поскольку разработка ведётся компанией Microsoft, от IronPython, кроме всего прочего, можно было бы ожидать существенной оптимизации производительности. Реализация IronPython еще продолжает разрабатываться.
.
Установка Python в операционной системе Windows.
____Перед тем как начать программировать на языке Python, необходимо установить на компьютер интерпретатор Python, а также стандартную библиотеку модулей кода, поставляемую вместе с ним.
Всё это можно свободно загрузить на странице https://www.python.org/downloads/. Для пользователей операционной системы Windows существуют две версии инсталлятора: для 32-битных и 64-битных систем.
- Запустите веб-браузер, перейдите на страницу python.org/download и загрузите установщик, подходящий для вашей версии операционной системы — В моём случае, это Windows 7. И файл Windows x86-64 executable installer.
- После завершения загрузки запустите установщик, выберите режим установки для всех пользователей либо только для себя и нажмите кнопку Next (Далее) для продолжения (Я выбрал для всех, как рекомендовано).
- Теперь подтвердите предлагаемое расположение установки, в название которого будет входить имя корневого диска, слово Python и номер версии — у меня он установил в потроха системы, чему я и не противился, всё встало стандартно как и любая другая программа.
- Нажмите кнопку Next (Далее) для продолжения и убедитесь, что выбран компонент Add python.exe to Path (Добавить путь в системную переменную Path). Я за этим у себя не усмотрел, возможно оно это сделала автоматом, а может потом просто вручную добавлю.
- Нажмите Next (Далее), чтобы начать копирование файлов на ваш компьютер, а затем — Finish (Готово) для завершения процесса установки. У меня всё примерно так и было, процесс занял максимум 5 минут, я уж точно не засекал время, но не долго.
- Чтобы убедиться, что Python теперь доступен, перезагрузите компьютер, запустите командную строку (cmd.exe) и наберите команду python –V — в ответ интерпретатор Python выдаст номер установленной версии. Я не перезагружал компьютер, не могу, слишком много всего на нём крутится, ещё и инет раздаёт на всю систему, компы, фермы и т. д. Итак запускается и работает.
____Данное окошко называется Интерактивный режим.
Знакомство с интерпретатором, побалуемся...
____Что же первым делом всегда делают, ну естественно, пишут первую программу выдающую Hello world, что мы сейчас и сделаем. Напишем: print('Hello world') и нажмём Enter.
Работает !!!
____В интерактивном режиме интерпретатор можно использовать и как калькулятор. Набираем любое выражение с операцией сложения и нажимаем кнопку Enter. Интерпретатор в ответ выдаст нам сумму.
____Интерпретатор Python понимает любые арифметические выражения, поэтому можно использовать скобки для указания порядка вычисления — часть выражения, заключенная в скобки, будет вычисляться первой.
На заметку.
Интерактивный режим используется в основном для тестирования и отладки фрагментов кода.
____И используем скобочки, чтобы уже окончательно наиграться.
Внимание.
IDLE расшифровывается как Integrated DeveLopment Environment — интегрированная среда разработки. Она имеет ограниченные функции.
____Кроме того, что интерактивный режим Python полезен в качестве простейшего калькулятора, его можно использовать для создания программ. Программа на языке Python — это обычный текстовый файл, созданный с помощью простого редактора, такого как Блокнот (Notepad), и сохраненный в файле с расширением .py.
____По традиции первая программа, которую создают при изучении языка программирования, просто выводит какое-либо сообщение с приветствием. На языке Python для этого используется функция print(), сообщение для вывода этой функции указывается в скобках. Это может быть строка символов, заключенная в кавычки. Кавычки могут быть как двойными (""), так и одинарными(''), но нельзя использовать одновременно и те, и другие.
Внимание.
Не используйте текстовые процессоры для создания исходного кода программ, поскольку они добавляют дополнительное форматирование.
____ Открываем блокнот, пишем, что нибудь, в рамках правил синтаксиса и сохраняем файл с расширением .py. По общепринятым соглашениям файлы с программами на языке Python должны иметь расширение .py – с технической точки зрения, это требование должно выполняться только для «импортируемых» файлов, но большинству файлов с программами на языке Python даются имена с расширением .py для единообразия.
Далее в командной строке (Пуск - Все программы - Стандартные - Командная строка) пишем путь до нашего файла и нажимаем Enter и видим, что файл запускается и исполняется:
____До сих пор мы говорил о Python в основном как о языке программирования. Но в текущей реализации это ещё и программный пакет , который называется интерпретатором. Интерпретатор – это такой модуль, который исполняет другие программы. Когда вы пишете код на языке Python, интерпретатор Python читает вашу программу и выполняет составляющие её инструкции. По сути дела интерпретатор – это слой программной логики между вашим программным кодом и аппаратурой вашего компьютера.
____В процессе установки пакета Python на компьютер создаётся ряд программных компонентов – как минимум, интерпретатор и библиотека поддержки. В зависимости от особенностей использования интерпретатор Python может иметь вид исполняемой программы или набора библиотек, связанных с другой программой. В зависимости от версии Python сам интерпретатор может быть реализован как программа на языке C, как набор классов Java или в каком-либо другом виде. Независимо от используемой разновидности Python ваш программный код на этом языке всегда будет выполняться этим интерпретатором.
Выполнение программы.
____Когда интерпретатор Python получает команду запустить сценарий, он выполняет несколько промежуточных действий, прежде чем программный код начнёт выполняться. В частности, сценарий сначала будет скомпилирован в нечто под названием «байт-код», а затем передан механизму, известному под названием «виртуальная машина».
Компиляция в байт-код.
____Когда программист запускает программу, практически незаметно для него Python сначала компилирует исходный текст (инструкции в файле) в формат, известный под названием байт-код. Компиляция – это просто этап перевода программы, а байт-код – это низкоуровневое, платформонезависимое представление исходного текста программы. Интерпретатор Python транслирует каждую исходную инструкцию в группы инструкций байт-кода, разбивая её на отдельные составляющие. Такая трансляция в байт-код производится для повышения скорости – байт-код выполняется намного быстрее, чем исходные инструкции в текстовом файле.
____Если интерпретатор Python на компьютере обладает правом записи, он будет сохранять байт-код программы в виде файла с расширением .pyc (.pyc – это компилированный исходный файл .py). Вы будете обнаруживать эти файлы после запуска программ по соседству с файлами, содержащими исходные тексты (то есть в том же каталоге).
____Интерпретатор сохраняет байт-код для ускорения запуска программ. В следующий раз, когда вы попробуете запустить свою программу, Python загрузит файл .pyc и минует этап компиляции – при условии, что исходный текст программы не изменялся с момента последней компиляции. Чтобы определить, необходимо ли выполнять перекомпиляцию, Python автоматически сравнит время последнего изменения файла с исходным текстом и файла с байт-кодом. Если исходный текст сохранялся на диск после компиляции, при следующем его запуске интерпретатор автоматически выполнит повторную компиляцию программы.
____Если интерпретатор окажется не в состоянии записать файл с байт-кодом на диск, программа от этого не пострадает, просто байт-код будет сгенерирован в памяти и исчезнет по завершении программы. Строго говоря, байт-код сохраняется только для импортируемых файлов, но не для файла самой программы. Байт-код также никогда не сохраняется для инструкций, введенных в интерактивном режиме. Однако поскольку файлы .pyc повышают скорость запуска программы, вам может потребоваться иметь возможность сохранять их, особенно для больших программ. Кроме того, файлы с байт-кодом – это ещё один из способов распространения программ на языке Python. Интерпретатор запустит файл .pyc, даже если нет оригинальных файлов с исходными текстами.
Виртуальная машина Python (PVM).
____Как только программа будет скомпилирована в байт-код (или байт-код будет загружен из существующих файлов .pyc), он передаётся механизму под названием виртуальная машина Python (PVM). Аббревиатура PVM – это не отдельная программа, которую требуется устанавливать. Фактически PVM – это просто большой цикл, который выполняет перебор инструкций в байт-коде, одну за одной, и выполняет соответствующие им операции. PVM – это механизм времени выполнения, она всегда присутствует в составе системы Python и это тот самый программный компонент, который выполняет сценарии. Формально – это последняя составляющая того, что называют «интерпретатором Python».
Производительность.
____Программисты, имеющие опыт работы с компилирующими языками программирования, такими как C и C++, могут заметить несколько отличий в модели выполнения Python. Первое, что бросается в глаза, – это отсутствие этапа сборки, или вызова утилиты «make»: программный код может запускаться сразу же, как только будет написан. Второе отличие: байт-код не является двоичным машинным кодом (например, инструкциями для микропроцессора Intel). Байт-код – это внутреннее представление программ на языке Python.
____По этой причине программный код на языке Python не может выполняться так же быстро, как программный код на языке C или C++. Обход инструкций выполняет виртуальная машина, а не микропроцессор, и чтобы выполнить байт-код, необходима дополнительная интерпретация, инструкции которого требуют на выполнение больше времени, чем машинные инструкции микропроцессора. С другой стороны, в отличие от классических интерпретаторов, здесь присутствует дополнительный этап компиляции – интерпретатору не требуется всякий раз снова и снова анализировать инструкции исходного текста. В результате Python способен обеспечить скорость выполнения где-то между традиционными компилирующими и традиционными интерпретирующими языками программирования.
Скорость разработки.
____В модели выполнения Python отсутствуют различия между средой разработки и средой выполнения. То есть системы, которые компилируют и выполняют исходный текст, – это по сути одна и та же система. Для программистов, имеющих опыт работы с традиционными компилирующими языками, это обстоятельство может иметь некоторое значение, но в Python компилятор всегда присутствует во время выполнения и является частью механизма, выполняющего программы.
____Это существенно увеличивает скорость разработки. Не нужно всякий раз выполнять компиляцию и связывание программ прежде чем запустить их, – вы просто вводите исходный текст и запускаете его. Это также придаёт языку некоторый динамизм – вполне возможно, а нередко и удобно, когда программы на языке Python создаются и выполняются другими программами Python во время выполнения. Например, встроенные инструкции eval и exec принимают и выполняют строки, содержащие программный код на языке Python. Благодаря такой возможности Python может использоваться для настройки продуктов – программный код Python может изменяться «на лету», а пользователи могут изменять части системы, написанные на языке Python, без необходимости перекомпилировать систему целиком.
____Если смотреть с более фундаментальных позиций, то всё, что имеется в Python, работает на этапе времени выполнения – здесь полностью отсутствует этап предварительной компиляции, всё что необходимо, производится во время выполнения программы. Сюда относятся даже такие операции, как создание функций и классов и связывание модулей. Эти события в более статичных языках происходят перед выполнением, но в программах на языке Python происходят во время выполнения. В результате процесс программирования приобретает больший динамизм, чем тот, к которому привыкли некоторые программисты.
Разновидности модели выполнения.
____Внутренний поток выполнения, отражает современную стандартную реализацию интерпретатора Python, которая в действительности не является обязательным требованием самого языка Python. Вследствие этого модель выполнения склонна изменяться с течением времени. Фактически уже
существуют системы, которые несколько меняют картину. Давайте потратим несколько минут, чтобы ознакомиться с наиболее заметными изменениями.
Альтернативные реализации Python.
____Существуют три основные альтернативные реализации языка Python – CPython, Jython и IronPython, а также несколько второстепенных реализаций, таких как Stackless Python. CPython – это стандартная реализация, а все остальные создавались для специфических целей и задач. Все они реализуют один и тот же язык Python, но выполняют программы немного по-разному.
CPython.
____Оригинальная и стандартная реализация языка Python обычно называется CPython, особенно когда необходимо подчеркнуть её отличие от двух других альтернатив. Это название происходит из того факта, что реализация написана на переносимом языке ANSI C. Это тот самый Python, который вы загружаете с сайта http://www.python.org, получаете в составе дистрибутива ActivePython и который присутствует в большинстве систем Linux и Mac OS X. Если вы обнаружили у себя предварительно установленную версию Python, то более чем вероятно это будет CPython.
____Если вы не предполагаете создавать приложения на Java или для платформы .NET, возможно, вам следует отдать предпочтение стандартной реализации CPython. Поскольку это эталонная реализация языка, она, как правило, работает быстрее, устойчивее и лучше, чем альтернативные системы.
Jython.
____Интерпретатор Jython (первоначальное название – JPython) – это альтернативная реализация языка Python, основная цель которой – тесная интеграция с языком программирования Java. Реализация Jython состоит из Java-классов, которые выполняют компиляцию программного кода на языке Python в байт-код Java и затем передают полученный байт-код виртуальной машине Java (Java Virtual Machine, JVM). Программист помещает инструкции на языке Python в текстовые файлы как обычно, а система Jython подменяет на эквиваленты языка Java.
____Цель Jython состоит в том, чтобы позволить программам на языке Python управлять Java-приложениями, точно так же как CPython может управлять компонентами на языках C и C++. Эта реализация имеет бесшовную интеграцию с Java. Поскольку программный код на языке Python транслируется в байт-код Java, во время выполнения он ведёт себя точно так же, как настоящая программа на языке Java. Сценарии на языке Jython могут выступать в качестве апплетов и сервлетов, создавать графический интерфейс с использованием механизмов Java и так далее. Более того, Jython обеспечивает поддержку возможности импортировать и использовать Java-классы в программном коде Python. Тем не менее поскольку реализация Jython обеспечивает более низкую скорость выполнения и менее устойчива по сравнению с CPython, она представляет интерес скорее для разработчиков программ на языке Java, которым необходим язык сценариев в качестве интерфейса к Java-коду.
IronPython.
____Третья реализация языка Python – это IronPython. Она предназначена для обеспечения интеграции программ Python с приложениями, созданными для работы в среде Microsoft .NET Framework операционной системы Windows, а также в Mono – открытом эквиваленте для операционной системы Linux. Платформа .NET и среда выполнения языка C# предназначены для обеспечения взаимодействий между программными объектами – независимо от используемого языка программирования, в духе более ранней модели COM компании Microsoft. Реализация IronPython позволяет программам на языке Python играть роль как клиентских, так и серверных компонентов, доступных из других языков программирования .NET.
____Модель реализации IronPython очень напоминает Jython (и фактически разрабатывается одним и тем же автором) – она подменяет два этапа при выполнении на эквиваленты среды .NET. Кроме того, как и Jython, основной интерес IronPython представляет для разработчиков, которым необходима интеграция Python с компонентами .NET. Поскольку разработка ведётся компанией Microsoft, от IronPython, кроме всего прочего, можно было бы ожидать существенной оптимизации производительности. Реализация IronPython еще продолжает разрабатываться.
Jython и IronPython – это полностью независимые реализации языка Python, которые компилируют исходный программный код для различных архитектур времени выполнения. Из программ для CPython также можно получить доступ к программным компонентам Java и .NET: например, системы JPype и Python for .NET позволяют коду, исполняемому интерпретатором CPython, обращаться к компонентам Java и .NET.
.
Viktor2312- RIP
- Сообщения : 15492
Дата регистрации : 2012-08-10
Возраст : 45
Откуда : Пятигорск
Re: Начальное освоение Python, базовые принципы, синтаксис и т. д...
3
.
____Все три реализации, CPython, Jython и IronPython, реализуют язык Python похожими способами: исходный программный код компилируют в байт-код и выполняют полученный байт-код с помощью соответствующей виртуальной машины. Но кроме них существуют и другие реализации, включая динамический компилятор Psyco и транслятор Shedskin C++, которые пытаются оптимизировать основную модель выполнения. Знание этих реализаций не является обязательным на этой стадии изучения языка Python, тем не менее, краткий обзор их реализации модели выполнения поможет пролить свет на модель выполнения в целом.
Динамический компилятор Psyco.
____Система Psyco – это не другая реализация языка Python, а компонент, расширяющий модель выполнения байт-кода, что позволяет программам выполняться быстрее. Psyco – это расширение PVM, которое собирает и использует информацию о типах, чтобы транслировать части байт-кода программы в истинный двоичный машинный код, который выполняется гораздо быстрее. Для такой трансляции не требуется вносить изменения в исходный программный код или производить дополнительную компиляцию в ходе разработки.
____Грубо говоря, во время выполнения программы Psyco собирает информацию о типах объектов и затем эта информация используется для генерации высокоэффективного машинного кода, оптимизированного для объектов этого типа. После этого произведённый машинный код замещает соответствующие участки байт-кода и тем самым увеличивает скорость выполнения программы. В результате при использовании Psyco существенно уменьшается общее время выполнения программы. В идеале некоторые участки программного кода под управлением Psyco могут выполняться так же быстро, как скомпилированный код языка C.
____Поскольку эта компиляция из байт-кода производится во время выполнения программы, обычно Psyco называют динамическим (just-in-time, JIT) компилятором. Однако в действительности Psyco немного отличается от JIT- компиляторов, которые, возможно, некоторые программисты видели в языке Java. В действительности Psyco – это специализированный JIT-компилятор; он генерирует машинный код, оптимизированный для типов данных, которые фактически используются в программе. Например, если один и тот же участок программы использует различные типы данных в разное время, Psyco может генерировать различные версии машинного кода для поддержки каждой из комбинаций.
____Применение Psyco показывает существенное увеличение скорости выполнения программного кода Python. Согласно информации, которая приводится на домашней странице проекта, Psyco обеспечивает увеличение скорости «от 2 до 100 раз, обычно в 4 раза, при использовании немодифицированного интерпретатора Python, неизменного исходного текста, всего лишь за счёт использования динамически загружаемого модуля расширения на языке C». При прочих равных условиях наибольший прирост скорости наблюдается для программного кода, реализующего различные алгоритмы на чистом языке Python, – именно такой программный код обычно переносят на язык C с целью оптимизации. При использовании Psyco необходимость в таком переносе теряет свою остроту.
____До сих пор Psyco не является стандартной частью Python – его нужно загружать и устанавливать отдельно. Кроме того, он до сих пор находится на экспериментальной стадии развития, поэтому нужно будет следить за его разработкой. В действительности, Psyco всё еще можно загрузить и установить, но похоже, что большая его часть будет поглощена более новым проектом «PyPy», который представляет собой попытку переписать PVM на языке Python с целью обеспечения высокой степени оптимизации, как в Psyco.
____Пожалуй, самым большим недостатком Psyco является то обстоятельство, что в настоящее время он способен генерировать машинный код только для архитектуры Intel x86, впрочем, на этой архитектуре работают такие операционные системы, как Windows, Linux и даже Mac. За дополнительной информацией о расширении Psyco и других попытках реализации JIT-компилятора можно посетить сайт http://www.python.org. Кроме того, можно посетить домашнюю страницу проекта Psyco, которая в настоящее время размещается по адресу http://psyco.sourceforge.net.
Транслятор Shedskin C++.
____Shedskin – это еще одна система, которая реализует нетрадиционный подход к выполнению программ на языке Python. Она преобразует исходный код на языке Python в исходный код на языке C++, который затем может быть скомпилирован в машинный код. Кроме того, эта система реализует платформонезависимый подход к выполнению программного кода Python. Система Shedskin еще находится на экспериментальной стадии развития и ограничивает программы Python неявным использованием статических типов, что является ненормальным явлением для программ на языке Python, поэтому не будем углубляться в описание этой системы. Тем не менее, по предварительным результатам, у неё имеется немалый потенциал, чтобы выиграть гонку за скорость как у стандартной реализации Python, так и у расширения Psyco, и это весьма многообещающий проект. Сведения о текущем состоянии проекта можно найти в Сети.
Фиксированные двоичные файлы.
____Иногда, когда пользователи спрашивают про «настоящий» компилятор языка Python, в действительности они просто ищут способ создавать из своих программ на языке Python самостоятельные исполняемые файлы. Это необходимо скорее для упаковки и распространения программ, чем для их исполнения, но эти две стороны взаимосвязаны между собой. При помощи инструментов сторонних разработчиков, которые можно загрузить из Сети, можно превратить программы на языке Python в настоящие исполняемые файлы, которые в мире Python известны как фиксированные двоичные файлы (frozen binaries).
____Фиксированные двоичные файлы объединяют в единый файл пакета байт-код программ, PVM (интерпретатор) и файлы поддержки, необходимые программам. Существуют разные реализации такого подхода, но в конечном результате получается единственный исполняемый файл (например, файл с расширением .exe в Windows), который легко можно передать заказчику. Такую модель
можно представить, если байт-код и PVM объединить в единый компонент – фиксированный двоичный файл.
____На сегодняшний день существует три основных инструмента создания фиксированных двоичных файлов: py2exe (для Windows), PyInstaller (напоминает py2exe, но также работает в Linux и UNIX и способен производить самоустанавливающиеся исполняемые файлы) и freeze (оригинальная версия). Загружаются эти инструменты отдельно от Python, но они распространяются совершенно бесплатно. Кроме того, они постоянно развиваются, поэтому свежую информацию об этих инструментах можно найти на сайте проекта Python (http://www.python.org) или с помощью поисковых систем. Инструмент py2exe может создавать автономные программы, использующие библиотеки tkinter, PMW, wxPython и PyGTK для создания графического интерфейса; программы, использующие инструментальные средства создания игр pygame; клиентские программы win32com и многие другие.
____Фиксированные двоичные файлы – это не то же самое, что получается в результате работы настоящего компилятора, потому что они выполняют байт-код с помощью виртуальной машины. Следовательно, программы в фиксированных двоичных файлах исполняются с той же скоростью, что и обычные файлы с исходными текстами программ, разве что улучшен способ их запуска. Фиксированные двоичные файлы имеют немалый размер (они содержат в себе PVM), но по современным меркам их всё же нельзя назвать необычно большими. Так как интерпретатор Python встроен непосредственно в фиксированные двоичные файлы, его установка не является обязательным требованием для запуска программ на принимающей стороне. Более того, поскольку программный код упакован в фиксированный двоичный файл, он надёжно скрыт от получателя.
____Такая схема упаковки программ в единственный файл особенно подходит для нужд разработчиков коммерческого программного обеспечения. Например, программа с графическим интерфейсом на базе tkinter может быть упакована в исполняемый файл и распространяться как самостоятельная программа на CD или через Интернет. Конечному пользователю не нужно будет устанавливать Python (и даже знать о том, что это такое), чтобы запустить распространяемую программу.
Другие способы выполнения.
____Существуют также другие схемы выполнения программ на языке Python, преследующие узкоспециализированные цели:
Будущие возможности.
____
Средства оптимизации скорости выполнения.
____Все три реализации, CPython, Jython и IronPython, реализуют язык Python похожими способами: исходный программный код компилируют в байт-код и выполняют полученный байт-код с помощью соответствующей виртуальной машины. Но кроме них существуют и другие реализации, включая динамический компилятор Psyco и транслятор Shedskin C++, которые пытаются оптимизировать основную модель выполнения. Знание этих реализаций не является обязательным на этой стадии изучения языка Python, тем не менее, краткий обзор их реализации модели выполнения поможет пролить свет на модель выполнения в целом.
Динамический компилятор Psyco.
____Система Psyco – это не другая реализация языка Python, а компонент, расширяющий модель выполнения байт-кода, что позволяет программам выполняться быстрее. Psyco – это расширение PVM, которое собирает и использует информацию о типах, чтобы транслировать части байт-кода программы в истинный двоичный машинный код, который выполняется гораздо быстрее. Для такой трансляции не требуется вносить изменения в исходный программный код или производить дополнительную компиляцию в ходе разработки.
____Грубо говоря, во время выполнения программы Psyco собирает информацию о типах объектов и затем эта информация используется для генерации высокоэффективного машинного кода, оптимизированного для объектов этого типа. После этого произведённый машинный код замещает соответствующие участки байт-кода и тем самым увеличивает скорость выполнения программы. В результате при использовании Psyco существенно уменьшается общее время выполнения программы. В идеале некоторые участки программного кода под управлением Psyco могут выполняться так же быстро, как скомпилированный код языка C.
____Поскольку эта компиляция из байт-кода производится во время выполнения программы, обычно Psyco называют динамическим (just-in-time, JIT) компилятором. Однако в действительности Psyco немного отличается от JIT- компиляторов, которые, возможно, некоторые программисты видели в языке Java. В действительности Psyco – это специализированный JIT-компилятор; он генерирует машинный код, оптимизированный для типов данных, которые фактически используются в программе. Например, если один и тот же участок программы использует различные типы данных в разное время, Psyco может генерировать различные версии машинного кода для поддержки каждой из комбинаций.
____Применение Psyco показывает существенное увеличение скорости выполнения программного кода Python. Согласно информации, которая приводится на домашней странице проекта, Psyco обеспечивает увеличение скорости «от 2 до 100 раз, обычно в 4 раза, при использовании немодифицированного интерпретатора Python, неизменного исходного текста, всего лишь за счёт использования динамически загружаемого модуля расширения на языке C». При прочих равных условиях наибольший прирост скорости наблюдается для программного кода, реализующего различные алгоритмы на чистом языке Python, – именно такой программный код обычно переносят на язык C с целью оптимизации. При использовании Psyco необходимость в таком переносе теряет свою остроту.
____До сих пор Psyco не является стандартной частью Python – его нужно загружать и устанавливать отдельно. Кроме того, он до сих пор находится на экспериментальной стадии развития, поэтому нужно будет следить за его разработкой. В действительности, Psyco всё еще можно загрузить и установить, но похоже, что большая его часть будет поглощена более новым проектом «PyPy», который представляет собой попытку переписать PVM на языке Python с целью обеспечения высокой степени оптимизации, как в Psyco.
____Пожалуй, самым большим недостатком Psyco является то обстоятельство, что в настоящее время он способен генерировать машинный код только для архитектуры Intel x86, впрочем, на этой архитектуре работают такие операционные системы, как Windows, Linux и даже Mac. За дополнительной информацией о расширении Psyco и других попытках реализации JIT-компилятора можно посетить сайт http://www.python.org. Кроме того, можно посетить домашнюю страницу проекта Psyco, которая в настоящее время размещается по адресу http://psyco.sourceforge.net.
Транслятор Shedskin C++.
____Shedskin – это еще одна система, которая реализует нетрадиционный подход к выполнению программ на языке Python. Она преобразует исходный код на языке Python в исходный код на языке C++, который затем может быть скомпилирован в машинный код. Кроме того, эта система реализует платформонезависимый подход к выполнению программного кода Python. Система Shedskin еще находится на экспериментальной стадии развития и ограничивает программы Python неявным использованием статических типов, что является ненормальным явлением для программ на языке Python, поэтому не будем углубляться в описание этой системы. Тем не менее, по предварительным результатам, у неё имеется немалый потенциал, чтобы выиграть гонку за скорость как у стандартной реализации Python, так и у расширения Psyco, и это весьма многообещающий проект. Сведения о текущем состоянии проекта можно найти в Сети.
Фиксированные двоичные файлы.
____Иногда, когда пользователи спрашивают про «настоящий» компилятор языка Python, в действительности они просто ищут способ создавать из своих программ на языке Python самостоятельные исполняемые файлы. Это необходимо скорее для упаковки и распространения программ, чем для их исполнения, но эти две стороны взаимосвязаны между собой. При помощи инструментов сторонних разработчиков, которые можно загрузить из Сети, можно превратить программы на языке Python в настоящие исполняемые файлы, которые в мире Python известны как фиксированные двоичные файлы (frozen binaries).
____Фиксированные двоичные файлы объединяют в единый файл пакета байт-код программ, PVM (интерпретатор) и файлы поддержки, необходимые программам. Существуют разные реализации такого подхода, но в конечном результате получается единственный исполняемый файл (например, файл с расширением .exe в Windows), который легко можно передать заказчику. Такую модель
можно представить, если байт-код и PVM объединить в единый компонент – фиксированный двоичный файл.
____На сегодняшний день существует три основных инструмента создания фиксированных двоичных файлов: py2exe (для Windows), PyInstaller (напоминает py2exe, но также работает в Linux и UNIX и способен производить самоустанавливающиеся исполняемые файлы) и freeze (оригинальная версия). Загружаются эти инструменты отдельно от Python, но они распространяются совершенно бесплатно. Кроме того, они постоянно развиваются, поэтому свежую информацию об этих инструментах можно найти на сайте проекта Python (http://www.python.org) или с помощью поисковых систем. Инструмент py2exe может создавать автономные программы, использующие библиотеки tkinter, PMW, wxPython и PyGTK для создания графического интерфейса; программы, использующие инструментальные средства создания игр pygame; клиентские программы win32com и многие другие.
____Фиксированные двоичные файлы – это не то же самое, что получается в результате работы настоящего компилятора, потому что они выполняют байт-код с помощью виртуальной машины. Следовательно, программы в фиксированных двоичных файлах исполняются с той же скоростью, что и обычные файлы с исходными текстами программ, разве что улучшен способ их запуска. Фиксированные двоичные файлы имеют немалый размер (они содержат в себе PVM), но по современным меркам их всё же нельзя назвать необычно большими. Так как интерпретатор Python встроен непосредственно в фиксированные двоичные файлы, его установка не является обязательным требованием для запуска программ на принимающей стороне. Более того, поскольку программный код упакован в фиксированный двоичный файл, он надёжно скрыт от получателя.
____Такая схема упаковки программ в единственный файл особенно подходит для нужд разработчиков коммерческого программного обеспечения. Например, программа с графическим интерфейсом на базе tkinter может быть упакована в исполняемый файл и распространяться как самостоятельная программа на CD или через Интернет. Конечному пользователю не нужно будет устанавливать Python (и даже знать о том, что это такое), чтобы запустить распространяемую программу.
Другие способы выполнения.
____Существуют также другие схемы выполнения программ на языке Python, преследующие узкоспециализированные цели:
- Система Stackless Python – это разновидность стандартной реализации CPython, которая не использует стек вызовов языка C. Она упрощает перенос Python на архитектуры с небольшим объёмом стека, обеспечивает дополнительные возможности параллельной обработки данных и поощряет использование новейших инструментов языка, таких как сопрограммы.
- Система Cython (расширенная версия проекта Pyrex) – это гибридный язык, дополняющий язык Python возможностью вызывать функции на языке C и использовать объявления типов переменных, аргументов и атрибутов классов на языке C. Исходные тексты на языке Cython могут быть скомпилированы в программный код на языке C, использующий Python/C API, который в свою очередь может быть скомпилирован в машинный код. Несмотря на то, что получающийся программный код не полностью совместим со стандартным языком Python, Cython может оказаться как полезным инструментом для создания обёрток вокруг внешних библиотек на языке C, так и эффективным средством разработки расширений на C для языка Python.
Будущие возможности.
____
Viktor2312- RIP
- Сообщения : 15492
Дата регистрации : 2012-08-10
Возраст : 45
Откуда : Пятигорск
Страница 1 из 1
Права доступа к этому форуму:
Вы не можете отвечать на сообщения