«щ^шздим-^оигм&ь^щжшшш / technical science_23
УДК: 004
Бухаров Т.А., Нафикова А.Р.
Стерлитамакский филиал БашГУ Мигранова Е.А.
МАОУ «СОШ №10»
ОБЗОР ЯЗЫКА ПРОГРАММИРОВАНИЯ PYTHON И ЕГО БИБЛИОТЕК
Bukharov T A, Nafikova A.R.
Sterlitamak branch of BSU Migranova E.A.
MАEI «SES №10»
AN OVERVIEW OF THE PYTHON PROGRAMMING LANGUAGE AND ITS LIBRARIES
Аннотация
В данной статье рассматриваются возможности и краткие характеристики языка программирования Python и его библиотек. Приводится пример реализации программного кода на данном языке программирования.
Abstract This article discusses the features and brief characteristics of the Python programming language and its libraries. An example of program code implementation in this programming language is given.
Ключевые слова: Python, язык программирования, web-разработка. Key words: Python, programming language, web-development.
В настоящее время с развитием сетевых технологий, глобальная сеть Internet стала использоваться в очень многих областях нашей жизни. Все больше и больше людей пользуются интернетом, и в связи с этим появилось множество технологий, которые предоставляют возможность создания и разработки web-приложений. Одним из популярных является язык программирования «Python» на среде PyCharm.
PyCharm - это самая интеллектуальная Python IDE (Integrated Development Environment - Интегрированная среда разработки) с полным набором средств для эффективной разработки на языке Python. Выпускается в двух вариантах - бесплатная версия PyCharm Community Edition и поддерживающая больший набор возможностей PyCharm Professional Edition. PyCharm выполняет инспекцию кода «на лету», автодополнение, в том числе основываясь на информации, полученной во время исполнения кода, навигацию по коду, обеспечивает множество рефакторингов.
Приведем сравнительный анализ возможностей данных сред:
Community Edition:
1. Облегченная IDE для разработки только на Python.
2. Бесплатная, с открытым кодом, под лицензией Apache 2.
3. Понимающий контекст редактор, отладчик, рефакторинги, инспекции, интеграция с VCS.
4. Навигация по проекту, поддержка тестирования, настраиваемый UI, горячие клавиши Vim.
Professional Edition:
1. Полнофункциональная IDE для разработки на Python, в том числе для многоязычных веб-приложений с фреймворками.
2. Поддержка фреймворков Django, Flask, Google App Engine, Pyramid, web2py.
3. Поддержка языков JavaScript, CoffeeScript, TypeScript, CSS, Cython и др.
4. Удаленная разработка, Поддержка работы с БД и языка SQL.
5. Обнаружение дублирующегося кода.
6. Диаграммы UML & SQLAlchemy.
7. Python Profiler [1].
Данный язык программирования является сравнительно немолодым языком для web-разра-ботки, задуманный в 1980-ом, а реализован ближе к девяностым. Его автор, Гвидо ван Россум, хотел усовершенствовать язык «ABC» (ABC - императивный, процедурный, структурный высокоуровневый язык программирования общего назначения и IDE), который использовался для обучения, но имел ряд недостатков. В итоге, после долгой и продолжительной работы Россума получился высокоуровневый, скриптовый PL (PL - Procedural Language), благодаря чему web-разработка поднялась на новый уровень.
Python поддерживает несколько стилей программирования. Он не принуждает разработчика придерживаться определенной парадигмы. Python поддерживает объектно-ориентированное и процедурное программирование. Существует и ограниченная поддержка функционального программирования. Язык обладает чётким и последовательным синтаксисом, продуманной модульностью и масштабируемостью, благодаря чему исходный код написанных на Python программ легко читаем.
Основным лозунгом данного языка программирования является читаемость, она напрямую влияет на его распространенность в web-разра-
technical science / <<шцшмум-шу®ма1>>#3(ш7)),2(0]9
24
ботке. Создатели сделали большой упор не на мощности самого кода, а на продуктивности разработчиков, которые с ним работают. На «препроцессоре» лучше всего получается код, который может прочитать лишь его автор. Для работы в команде такой подход не подойдет.
«Python» используют многие программисты, так как он эффективен и имеет большой список преимуществ, которые характеризуют работу с этим языком программирования:
• простота языка. Его можно использовать не только как в web-разработке, но и в любой другой области, где специалисты не имеют каких-либо глубоких познаний в программировании. Сам синтаксис данного языка программирования схож с обычными математическими операциями, которые не несут в себе никаких особых сложностей;
• разнообразие реализаций. Самая известная и каноническая - это «CPython», реализация на «С». Это значит, что код, написанный на нем, полностью взаимодействует с «С», и библиотеки этого языка также можно применять для реализации. То же самое касается и языка «Java», существует и реализация на нем - «Jython». Таких примеров масса, вплоть до взаимодействия Питона с «Android» и «iOS»;
• широкое распространение. «Python» используют даже Disney. Следствием этого факта является то, что многое о нем уже известно. Как только вы сталкиваетесь с проблемой при программировании на Python, тотчас же можете обратиться за помощью интернете: скорее всего, вашу проблему уже кто-то решал. К тому же, для реализации практически любого проекта уже существуют заготовки, которые можно применить для себя;
• не требует компиляции. «Python» - интерпретируемый язык, а значит, запустить программу можно сразу после внесения изменений в ее файл. Это приводит к тому, что доработка, переработка и отладка программ происходит намного быстрее, чем во многих других языках.
Рассмотрим пример в реализации кода на Python «Текстовый редактор» (рис. 1, рис. 2), который создан в графической библиотеке Tkinter (Tkinter - это графическая библиотека, позволяющая создавать программы с оконным интерфейсом).
Эта библиотека является интерфейсом к популярному языку программирования и инструменту создания графических приложений tcl/tk. Tkinter, как и tcl/tk, является кроссплатформенной библиотекой и может быть использована в большинстве распространённых операционных систем (Windows, Linux, Mac OS X и др.).
Так как Tkinter является достаточно прозрачным интерфейсом к tcl/tk, то основным источником информации для неё являются man-страницы tcl/tk. Эти страницы имеются в любой Unix-системе (в разделе n или 3tk).
Первым делом при работе с Tkinter необходимо создать главное (корневое) окно (рис. 1), в котором размещаются остальные графические элементы - виджеты. Существует большой набор ви-джетов на все случаи жизни: для ввода текста, вывода текста, выпадающие меню и т.д. Среди ви-джетов есть кнопка, при нажатии на которую происходит заданное событие. Некоторые виджеты (фреймы) используются для группировки других виджетов внутри себя.
Также в Tkinter существует три стандартных GM (Geometry Manager - менеджер геометрии), которые управляют тремя размещениями: «Grid», «Pack» и «Place». «Grid» делит все пространство ви-джета на ячейки, количество которых определяется дочерними виджетами. Сама ячейка идентифицируется по номерам строк и столбцов, а также они объединяются, как и по горизонтали, так и по вертикали. «Pack» располагает виджеты друг за другом по той или иной стороне. Оно подойдет для более простого схемного расположения. «Place» указывает виджету на его место при помощи координат, как в абсолютных, так и относительных значения общего окна.
Понятно, что для каждого идеален тот управляющий размещениями, пользоваться которым можешь в совершенстве. Однако, если целью ставить создание наиболее адекватного кода, необходимо уметь пользоваться тремя методами и грамотно их комбинировать; но нужно знать одну вещь, что нельзя использовать два менеджера внутри одного родительского окна.
«c©yl@qyiym-j©y©mal»#3i27),2©19 / technical science 25
import tkinter
from tkinter.filedialog import asksaveasfile, askopenfile from tkinter.meaaagebox import ahowerror
FILE NAME = tkinter.NONE
def new_file():
global FILE_NAME FILE_NAME = "Untitled" text.delete('1.0rr tkinter.END)
def save_file():
data = text.get('1.0r, tkinter.END) out = open(FILE_NAME, 'w') out.write(data) out. close {)
def 3ave_as():
out = аз ks ave аз file(mode=' w', de faultexten3 i on='.txt')
data = text.get('1.0r, tkinter.END)
try:
out.write (data.rstrip()) except Exception:
ahowerror(тезaage="Ошибка при сохранении файла")
def open_file() :
global FILE_NAME
inp = askopenfile(mode="r")
if inp is None:
return FILE_NAME = inp. name
data = inp.read()
text.delete('1.0r, tkinter.END)
text.insert('1.0r, data)
Рисунок 1. Текстовый редактор.
def about_che_prograin (): root = tkinter. Tk() root.title("О программе") lab = tkinter.Label(root,
text="Txt Editor ХпВерсия 0.1 " "\n05.01.2018 \nCopyrightS2Q18 " " \riBce права защищены " "\n \пСведения об участнике проекта: " "ЧпБухаров Тимур - Разработчик " " ЧпСтерлитанак С§ БашГУ",Гont="Arial 12", ju3tify=tkinter.LEFT)
lab.pack ()
root = tkinter.Tk() root.title("Txfc Editor vfl.l") root.minsize(width=4G0, height=4Q0) root.maxsise(width=4QQ, height=4Q0)
text = tkinter .Text (root, width=400, height=4QQ) text, pack {)
menuBar = tkinter.Menu(root) fileMenu = tkinter.Menu(menuBar) fileMenul = tkinter.Menu(menuBar)
fileMenul.add_command{label="0 программе", comma nd=about_the_program) fileMenu.add_command(labe1="Новый файл", command=new_file) fileMenu.add_command(labe1="Открыть", command=open_file) fileMenu.add_command{labe1="Сохранить", command=save_file) fileMenu.add_command(labe1="Сохранить как", command=3ave_a3) fileMenu.add_aeparator()
fileMenu.add_command(labe1="Выход", command=root.quit) menuBar,add_cascade(1аЬе1="Файл", menu=fileMenu) menuBar.add_cas cade(labe1="Справка",menu=fileMenul)
root.config(menu=menuBar) root.mainloop()
Рисунок 2. Текстовый редактор
Список литературы
1. PyCharm - интеллектуальная Python IDE [Электронный ресурс]. - URL:
https://jetbrains.ru/products/pycharm/ (дата обращения: 10.02.2019).
2. Курс по библиотеке Tkinter языка Python [Электронный ресурс]. - URL:
https://ru.wikipedia.org/wiki/Python
26 _TECHNICAL SCIENCE / <<C©yL©«UM"J©UrMAL>>ffiM27)),2<0]9
УДК 65.014.12
Григорьев Д.Ю., Грубич Т.Ю.
ФГБОУ ВО «Кубанский государственный аграрный университет имени И. Т. Трубилина»
ОПЕРАЦИОННАЯ СИСТЕМА FUCHSIA: ВОЗМОЖНОСТИ И ПЕРСПЕКТИВЫ РАЗВИТИЯ
GrigorievD.Yu, Grubich T.Yu.
FSBEI HE Kuban SA U
OPERATIONAL SYSTEM FUCHSIA: OPPORTUNITIES AND DEVELOPMENT PROSPECTS
Аннотация
В данной статье рассматривается новая операционная система на рынке мобильных приложений -Fuchsia. Представлен анализ развития мобильных операционных систем по данным аналитических агентств. Проведен обзор возможностей новой операционной системы и рассмотрены перспективы ее развития на рынке мобильных приложений.
Abstract
This article discusses the new operating system in the market for mobile applications - Fuchsia. The analysis of the development of mobile operating systems according to analytical agencies. A review of the capabilities of the new operating system and the prospects for its development in the market of mobile applications.
Ключевые слова: мобильные приложения, операционная система, Android, IOS, Windows, Fuchsia.
Keywords: mobile applications, operating system, Android, IOS, Windows, Fuchsia.
Такой крупный мировой IT-гигант как Google всегда славился доминирующей, а где-то и агрессивной политикой разработки своих технологий в различных передовых сферах. Именно поэтому, помимо создания крупнейшего поисковика в мире, компания существенно преуспела на рынке мобильных устройств со своей операционной системе.
На сегодняшний день Android - самая популярная мобильная операционная система в мире. На её долю выпадает около 1,4 млрд. проданных устройств, что составляет около 85% всего рынка и это, как минимум, впечатляет. За чуть более 10 лет существования «Зеленого робота» было выпущено 9 полноценных номерных версий, преобразовавших его из скучной и однотипной, но "единой" мобильной платформы в передовую и мощную базу как для разработчиков мобильных устройств, так и для сторонних разработчиков.
Однако при всех преимуществах Android, те недостатки, которыми обладает система, а также крупные финансовые иски (в связи с использованием виртуальной Java-машины, на базе которого и работает система) и вынудили Google искать альтернативные решения на рынке мобильных гадже-тов. И оно нашлось. И имя этому решению - Fuchsia OS.
Статистика от компании NetMarketShare показывает, что падение и без того мизерной доли Windows-смартфонов происходит медленнее, чем многие думают. В январе её доля составляла 1,48%, а после февраля уже 1,41%. Это означает спад на 0,07%, что нельзя назвать большим провалом, хотя рост был бы предпочтительнее.
Компания Gartner отдаёт Windows 0,3% продаж и к 2020 году прогнозирует 0,1%, остальные уйдут на платформы Android и iOS. Это происходит и сейчас, причём уходят не только пользователи, но
и разработчики, которые не видят смысла терять время ради столь незначительной аудитории.
Сегодня рынок мобильных операционных систем поделен между тремя игроками: Apple (iOS), Google (Android) и Microsoft (Windows). Хотя доля последней операционной системы и очень мала, она всё же внушает надежды, ведь популярная раньше Blackberry уже осталась позади. Но на самом деле количество альтернативных ОС для мобильных устройств больше и каждый год они демонстрируют свои наработки на Mobile World Congress. Это Jolla (Sailfish OS), Mozilla (Firefox OS) и Canonical (Ubuntu Touch). Jolla и Canonical делают ставку на Linux-энтузиастов и гиков, Mozilla пытается зарекомендовать себя на рынках развивающихся стран и налаживает связи с операторами. Конечно, уже сейчас понятно, что ни одна из них не сможет тягаться с Apple, Google, Microsoft и на передел рынка в будущем вряд ли можно надеяться, но альтернативные операционные системы всё же нужны по одной простой причине: их большая открытость дает более широкие возможности для самых безумных экспериментов. А ведь именно такие эксперименты двигают индустрию вперед.
Впервые о новой ОС стало известно в августе 2016 года, когда СМИ сообщили о таинственной записи кодовой базы, опубликованной в GitHub, которая ясно дала понять, что Google занимается разработкой новой операционной системы под названием «Fuchsia». Несмотря на отсутствие официальных объявлений, в ходе проверки кода в записи стало известно о феноменальных кроссплат-форменных возможностях новой ОС, позволяющих ей работать как на привычных нам повседневных гаджетах (смартфоны, планшеты, смарт-часы и т.д.), так и на менее встречающихся, таких, как интеллектуальные информационные системы для автомобилей, светофоры и интерактивные доски.
<<шцшмум~^(Щугпа1>#Щ27)),2©1]9 а technical science
В отличие от Android, в основе которой лежит ядро операционной системы Linux, работающее на виртуальной Java-машине, новую ОС от Google разрабатывают с нуля, взяв в качестве основы лишь некоторые технологии Little Kernel (небольшая и быстрая операционная система, созданная для «легких» IoT девайсов) и Magenta (более многофункциональная система, используемая на устройствах помощнее). Таким образом, благодаря использованию этих двух подсистем, Fuchsia является гибридной системой, которая может работать и на IoT устройствах, и на современных ПК или телефонах.
Одним из существенных преимуществ новой операционной системы от Google, как отмечалось уже ранее, является её полная независимость от языка программирования Java, который помимо того, что способствовал созданию крупнейшей мобильной системы, навлёк, с другой стороны, кучу проблем IT-гиганту с другой американской корпорацией - Oracle.
Сам язык был разработан в 1991 году компанией Sun Microsystems, которая в свою очередь не заявляла абсолютных прав на использование Java, так как основной доход ей приносило лицензирование решений на полное соответствие всем стандартам языка. Однако после покупки Sun другой крупной компанией Oracle, ко второй перешла значительная часть активов, связанная с технологиями Java. С тех пор последовали многочисленные иски и судебные дела, в ходе которых затрагивались сразу три проблемы: нарушение авторского права (использование чужого программного кода), нарушение патентного права (часть программных наработок специалистов Sun Microsystems были запатентованы), а также требование компенсации ущерба компанией Google. Все эти внешние проблемы, безусловно, стали огромной предпосылкой к созданию новой операционной системы.
Другим достоинством новой системы является ее масштабируемость, а это, в свою очередь, даёт возможность работать в одном системе на всех используемых вами устройствах в рамках одного интерфейса с незначительными изменениями, что в разы ускоряет решение как обычных повседневных задач, так и узкоспециализированных, где работа в одной «экосистеме» устройств просто необходима.
Также стоит отметить, что разработка Fuchsia ведется на базе совершенно нового, самостоятельно написанного ядра, лишенного всех недостатков Linux, используемого в Android, а это, в свою очередь, намекает нам на огромные возможности ка-стомизации системы под каждое отдельное устройство.
Ключевой особенностью Fuchsia OS является работа в режиме многозадачности. Пользователи могут располагать на рабочем столе сразу несколько окон приложений, «склеивая» их между собой, а затем переключаясь между ними подобно тому, как мы преключаемся между вкладками в любом браузере.
Проектируя новую систему, в Google решили отказаться от привычной файловой модели, используемой во всех нынешних мобильных платформах, в пользу модели «Сущность - Агент», в основе которой лежит полное управление системой различными встроенными сервисами (агентами). Данные сервисы взаимодействуют между собой посредством генерирования и обработки любых данных (сущностей), которыми оперирует пользователь. Огромным преимуществом такой модели будет то, что она, подобно самообучающейся системе, контролируя всю активность пользователя посредством агентов, будет выдавать владельцу того или иного устройства наиболее релевантный контент.
Отдельного внимания заслуживает тесная интеграция в систему уже зарекомендовавшего себя голосового помощника Google Assistant. Именно благодаря тому, что данный ассистент является «центром управления» других агентов системы, пользователь устройства с легкостью может управлять как существующими, так и создавать новые компоненты системы посредством голосовых команд. Составить новый музыкальный плейлист, решить куда сходить пообедать или забронировать номер в вашем любимом отеле - всё это решается теперь в несколько секунд, благодаря тому, что система, посредством анализа ваших данных, досконально знает всё о вас и может самостоятельно это выполнять по соответствующей команде.
Что касается облачной технологии, то и её реализацию в компании решили вывести на новый уровень. В Fuchsia облако станет не просто местом бэкапа данных, оно превратится в связующее звено для всего. Система облачного хранения Ledger обеспечивает быструю синхронизацию между всеми вашими устройствами, работающих в одной «экосистеме», позволяя не беспокоиться за утерю ваших данных, а наоборот, оставаться вам всегда «в сети». Всё это происходит примерно так - вы заходите в свой аккаунт Google и все приложения автоматически сохраняют своё состояние на всех устройствах. Например, вы закрываете браузер Chrome на своем смартфоне, а затем запускаете его на планшете, и открытые ранее вкладки остаются именно в том состоянии, в котором вы их оставили. Стоит, конечно же отметить, что столь мощная технология переносимости будет весьма требовательной к качеству и скорости интернет-соединения. Однако с появлением сетей пятого поколения (5G) и эта проблема становится вполне решаема.
Как говорилось уже ранее, будущая операционной система от Google базируется на новом микроядре собственной разработки под названием «Zircon». Данное ядро будет играть роль «сердца» системы, распределяющего ресурсы системы между остальными системными компонентами. В качестве языка программирования в Fuchsia выступит Dart, который также является собственной разработкой Google и позиционируется как альтернатива JavaScript. Все это даёт нам понять, что новая операционная система будет максимально защищена от вмешательства извне и будет лишь отчасти
technical science / <<c@yl©qu]um~j©u®nal>>#3(i27)),2(0]9
28
доступна разработчикам для выпуска своих оболочек. Кроме того, ни одно приложение сторонних разработчиков не будет иметь доступа к ядру. Из этого следует, что при каждых новых обновлениях системы, установленные приложения не будут конфликтовать с последними, что довольно часто замечалось на той же Android.
Если говорить о распространении новой операционной системы, то здесь Google решила воспользоваться той же схемой, какой придерживалась и в Android - система будет распространяться бесплатно. Однако за счёт модульной архитектуры кода разработчики смогут вносить изменения только в тех участках, где это необходимо, без затрагивания системно важных объектов. В теории, такой принцип должен способствовать более оперативному обновлению системы разработчиками.
На данный момент известно о двух вариантах интерфейса новой системы: «Armadillo», предназначенного в основном под мобильные устройства, и «Capybara», разработанного для ПК и ноутбуков. Оба варианта разработаны на Google Flutter SDK -кросс-платформенном SDK с открытым исходным кодом, поддерживающем работу на различных операционных системах вроде Android, iOS и Fuchsia. Стоит отметить, что на данный момент Flutter - это пока единственный вариант разработки приложений под грядущую операционную систему.
Что же касается непосредственно интерфейса - он будет представлять собой некую систему карточек. Для рендеринга визуальной составляющей отвечает специальный движок на основе Vulkan под названием «Escher», который специализируется на глубине изображения и тенях. Всплывающие окна, уведомления, кнопки и прочие элементы интерфейса здесь накладываются и затеняют друг друга, словно перед вами не виртуальные объекты на экране, а реальные.
В Armadillo не будет привычного для пользователя меню и кнопок приложений, вместо них ключевую роль будет играть вертикальная лента, на которой будут расположены все установленные программы. Их порядок будет зависеть от частоты использования того или иного приложения.
УДК 65.014.12
Интерфейс Capybara больше похож на гибрид привычного Android с «карточным» дизайном.
Так же стоит отдельно отметить графически движок Scenic, который занимается прорисовкой всех слоев, теней и отражений в режиме реального времени, в отличии от всех существующих мобильных платформ, где этим занимается эмулятор.
Как заявляет сама Google, уже в ближайшие три года Fuchsia будет работать на устройствах типа Google Home, а еще через два года вполне возможно заменит Android. Совсем недавно также появилась информация, что в Fuchsia будет реализована полноценная поддержка приложений Android. При этом, запускаться они будут не в эмуляторе, как это происходит, например, в Chrome OS, а в полноценной среде исполнения Android, встроенной в Fuchsia. Однако стоит отметить, что, хотя Fuchsia в её текущем состоянии и выглядит симпатично, в плане функциональности ей предстоит пройти ещё долгий путь.
Умные устройства всё больше заполняют нашу жизнь, в то же время облегчая её. Голосовые помощники, интернет вещей, нейронные сети в задачах отображения релевантного контента - когда-то всё это было лишь необозримым будущим. Но сегодня - это реальность. Однако всё это не имеет значения без по-настоящему «умного» интерфейса системы. И похоже именно это - идеальное время для выхода нового продукта Google.
Список литературы
1. Языковые разногласия: как Oracle и Google судятся из-за Java. [Электронный ресурс]: https://www.pvsm.ru/java/197831 (дата обращения: 03.02.2019).
2. Google Fuchsia. [Электронный ресурс]: https://ru.wikipedia.org/wiki/Google_Fuchsia (дата обращения:03.02.2019).
3. Новую ОС Fuchsia от Google скомпилировали и изучили. [Электронный ресурс]: https://habr.com/ru/post/396891/ (дата обращения: 05.02.2019).
4. Расцвет фуксии. Что мы знаем о Fuchsia OS от Google? [Электронный ресурс]: https://tproger.ru/translations/google-fuchsia-os-review/ (дата обращения: 12.02.2019).
Григорьев Д.Ю., Грубич Т.Ю.
ФГБОУ ВО «Кубанский государственный аграрный университет имени И. Т. Трубилина»
ПРОФАЙЛИНГ ДАННЫХ И ВОЗМОЖНОСТИ ЯЗЫКА C++ ПРИ РЕШЕНИИ ЗАДАЧ
ПРОФАЙЛИНГА
GrigorievD.Yu, Grubich T.Yu.
FSBEI HE Kuban SA U
DATA PROFILE AND POSSIBILITY OF C ++ LANGUAGE FOR SOLVING PROFILING TASKS Аннотация
В данной статье рассматривается понятие профайлинга данных, виды профайлинга. Проведен обзор возможностей языка С++ при реализации профайлинга данных. Описаны возможности библиотеки OpenCVязыка программирования С++.