_МЕЖДУНАРОДНЫЙ НАУЧНЫЙ ЖУРНАЛ «СИМВОЛ НАУКИ» № 04-2/2017 ISSN 2410-700Х_
УДК 004.422.81
Борсук Наталья Александровна
канд. техн. наук, доцент КФ МГТУ им. Н.Э. Баумана,
г. Калуга, РФ E-mail: [email protected] Козеева Ольга Олеговна
студент 4 курса факультета «Электроника, информатика и управление» кафедры
«Компьютерные системы и сети» КФ МГТУ им. Н.Э. Баумана г. Калуга, РФ E-mail: [email protected]
СРАВНИТЕЛЬНЫЙ АНАЛИЗ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ PYTHON И PHP
Аннотация
В данной статье содержится обзор основных возможностей языков программирования Python и PHP, их применение для решения различных задач. В качестве практической части работы приводится сравнительный анализ их быстродействия на примере выполнения программы, в коде которой используются схожие синтаксические конструкции и одинаковый набор данных на входе; также сравнивается размер исполняемых файлов программы. По результатам анализа делается вывод, позволяющий в целом оценить эффективность применения изучаемых языков и выходные данные об их свойствах, полученные в рамках поставленного эксперимента.
Ключевые слова
Языки программирования, Python, PHP, сравнительный анализ.
В настоящее время программисты не испытывают недостатка в выборе средств программирования: существует множество различных языков, как универсальных, используемых во многих сферах программирования и способных работать на нескольких аппаратных и программных платформах, так и специализированные, ориентированные на определенную область разработки, как, например, PROLOG -язык программирования высокого уровня, предназначенный для реализации систем и программ искусственного интеллекта. Существует множество различных классификаций языков программирования: по уровню семантики (языки высокого и низкого уровня), по используемым парадигмам программирования, по безопасности и по ряду других характеристик. Совокупность требований к разрабатываемой системе и определяет выбор средств ее реализации на этапе проектирования; учитываются требования к ее быстродействию, надежности, информационной безопасности.
Цель данной работы - провести сравнительный анализ свойств языков Python и PHP. Условно можно разделить эту работу на две основные части:
- теоретическая часть, содержащая краткий обзор возможностей языков программирования и сферы их применимости,
- практическая часть, содержащая данные о проведенном эксперименте с приведением кода программ, выполняющих аналогичные действия, написанных на исследуемых языках, выходные данные и их непосредственный анализ, включающий сравнительную характеристику времени выполнения программы, объем исполняемых файлов и нагрузку на память ЭВМ.
В результате по полученным данным можно сделать обобщенный вывод о характеристиках языков и степени их различия.
Одним из распространенных средств разработки является высокоуровневый язык программирования Python. Python имеет поддержку различных парадигм программирования (структурного, объектно-ориентированного функциональное и других); в нем используется динамическая типизация переменных, обеспечивается периодическое освобождение памяти от неиспользуемых объектов. Python обладает
_МЕЖДУНАРОДНЫЙ НАУЧНЫЙ ЖУРНАЛ «СИМВОЛ НАУКИ» № 04-2/2017 ISSN 2410-700Х_
достаточно лаконичным синтаксисом, с более высоким уровнем абстракции, по сравнению с PHP, и позволяет передать такое же количество информации в меньшем объеме исходного кода.
Python является языком общего назначения, поэтому может применяться практически в любой области разработки ПО (standalone, клиент-сервер, Web-приложения) и в любой предметной области. Кроме того, Python легко интегрируется с уже существующими компонентами, что позволяет внедрять Python в уже написанные приложения. [1]
Также Python обладает развитой системой модулей, как стандартных, также написанных на Python, а, следовательно, обладающих теми же преимуществами, такими как кроссплатформенность, и позволяющих реализовывать наиболее общие задачи, так и специфических, применяемых в том случае, когда необходимо решать более широкий круг задач.
В среду исполнения Python входит только интерпретатор, который одновременно является и компилятором, однако компилирует исходный код Python непосредственно в машинный код целевой платформы. Существуют три известных реализации среды исполнения для Python: CPython, Jython и Python.NET. [1]
Ввиду широкого ряда функциональных возможностей Python может использоваться в самых различных сферах; с его помощью можно осуществлять разработку web-приложений, автоматизированных информационных систем, научных вычислительных комплексов, графических пакетов.
PHP - язык программирования общего назначения, созданный преимущественно для работы над web-приложениями, для генерации HTML-страниц и работы с базами данных. PHP обладает Си-подобным синтаксисом, также является мультипарадигмальным и кроссплатформенным, ядро PHP также реализует средства для автоматического управления памятью; вся выделенная память возвращается системе после завершения работы скрипта [2].
Динамические библиотеки PHP предоставляют широкие возможности для работы с базами данных, поддерживается DBX для работы на абстрактном уровне, стандарт ODBC; осуществляется коммуникация с использованием различных протоколов (IMAP, SNMP, POP3, HTTP и другие); также PHP обеспечивает работу с сокетами, динамической графикой, криптографическими библиотеками. [3]
Наиболее широкое применение PHP находит при разработке web-приложений: подавляющее большинство сайтов и сервисов разработано именно с его помощью. Множество различных web-фреймворков и CMS-систем имеет в своей основе именно PHP.
Итак, Python и PHP в целом имеют схожие исходные характеристики. Необходимо рассмотреть их возможности при реализации конкретной задачи.
В качестве экспериментальной задачи рассматривается реализация весьма несложного и распространенного алгоритма сортировки «пузырьком». Входная последовательность содержит случайные целые числа в интервале от 0 до 1000 и формируется в отдельном PHP-скрипте, фрагмент которого представлен ниже:
for($i=0; $i<100; $i++) {
$data[$i] = rand(0,1000);
}
Затем эта же последовательность копируется в исходный код. Поэтому в листинге программы не представлено формирование входных данных, а лишь указана часть уже заполненного массива. Исходный код на языке Python: import time import math import random
# Запуск таймера......................................................
null_point = time.time()
# Алгоритм сортировки.............................................
data=[683, 996, 439, ... , 387, 968, 689]
_МЕЖДУНАРОДНЫЙ НАУЧНЫЙ ЖУРНАЛ «СИМВОЛ НАУКИ» № 04-2/2017 ISSN 2410-700Х_
for i in range(len(data)):
for j in range(len(data) - 1, i, -1): if data[j] < data[j-1]:
data[j], data[j-1] = data[j-1], data[j]
# Стоп-таймер.........................................................
print('Runtime = ', time.time() - null_point)
Исходный код на языке PHP: <?php
// Запуск таймера......................................................
$null_point = microtime(true);
// Алгоритм сортировки.............................................
$data = array (683, 996, 439, ... , 387, 968, 689);
for($i=0; $i<count($data); $i++) {
for($j=$i+1; $j<count($data); $j++) {
if($data[$i]>$data[$j]) {
$temp = $data[$j]; $data[$j] = $data[$i]; $data[$i] = $temp;
}
}
}
// Стоп-таймер ---------------------------------------------------------
echo 'Runtime = '.(microtime(true) - $null_point);
?>
В результате работы программы на выходе были получены следующие данные, представленные в Таблице 1:
Таблица 1
Выходные данные
Измеряемые параметры/Язык программирования Python PHP
Время выполнения (секунд) 0,49002504348754883 0,1380500793457
Загрузка памяти (из 4,9 ГБ) 0,2 МБ 0,3 МБ
Из Таблицы 1 видно, что по быстродействию программа, написанная на Python, уступает аналогичной на PHP в 3,5 раза, однако, загружает память в 1,5 раза меньше. Необходимо подчеркнуть, что приведенные данные носят приближенный характер ввиду возможных погрешностей измерения характеристик при использовании методов с ограниченной точностью. Тем не менее они позволяют дать общее представление о производительности кода и в соответствии с поставленными задачами и требованиями, предъявляемыми к ним, сделать выбор в сторону того или иного языка. Можно также выделить, что PHP оправданно широко используется в web-программировании, учитывая скорость выполнения его скриптов. В целом полученные результаты соответствуют известным раннее выводам о характеристиках данных языков. Список использованной литературы
1. Программирование на Python: Часть 1. Возможности языка и основы синтаксиса. URL: https://www.ibm.com/developerworks/ru/library/l-python_part_1/ (дата обращения 31.03.2017)
2. PHP at the core: Memory managament. URL: http://ua.php.net/manual/en/internals2.memory.management.php (дата обращения 31.03.2017)
3. Возможности PHP. URL: http://www.php.su/php/?can (дата обращения 31.03.2017)
© Борсук Н А., Козеева О.О., 2017 г.
_МЕЖДУНАРОДНЫЙ НАУЧНЫЙ ЖУРНАЛ «СИМВОЛ НАУКИ» № 04-2/2017 ISSN 2410-700Х_
УКД 519.873
Будников А.В., сотрудник Академия ФСО России Научный руководитель: Ходжаев И.А., к.т.н, доцент
Академия ФСО России г. Орел, Российская Федерация
ПРОГНОЗИРОВАНИЕ ТЕХНИЧЕСКОГО СОСТОЯНИЯ РАДИОЭЛЕКТРОННОЙ АППАРАТУРЫ С ИСПОЛЬЗОВАНИЕМ ПОЛИНОМИАЛЬНОЙ МОДЕЛИ И СПЛАЙН-АППРОСИМАЦИИ
Аннотация
В статье разработан алгоритм выбора оптимальной квазидетерминированной модели, пригодной для прогнозирования технического состояния радиоэлектронной аппаратуры с переменным дрейфом определяющего параметра.
Ключевые слова
Прогнозирование постепенных отказов, полиномиальные модели дрейфа параметров РЭА, сплайн-аппросимация, алгоритмы прогнозирования
В процессе эксплуатации сложные радиоэлектронные изделия, в том числе используемые в инфокоммуникациях сферы обороны и безопасности, подвержены различным внешним дестабилизирующим воздействиям. Это приводит не только к внезапным непредсказуемым отказам, но и к постепенным деградационным процессам в элементах используемой радиоэлектронной аппаратуры (РЭА) и, как следствие, к так называемым постепенным отказам [1]. Предсказать и предотвратить постепенные отказы, а следовательно, поддержать работоспособное состояние аппаратуры, повысить показатели надежности - это одна из важнейших функциональных задач при организации технической эксплуатации сферы обороны и безопасности государства. Эта задача требует научного и инженерно-технического обеспечения.
При рассмотрении моделей дрейфа параметров радиоэлектронной аппаратуры, будем основываться на следующих исходных данных и положениях (рисунок 1).
Исходные данные и условия для прогнозирования технического состояния радиоэлектронной аппаратуры
Априорные данные о значениях параметров, определяющих техническое состояние РЭА
Процесс дрейфа параметров - это инерционный процесс
Параметры процесса изменяются монотонно
Имеют место параметры с односторонним и двухсторонним изменениями значений
Рисунок 1 - Исходные данные и необходимые условия для прогнозирования технического состояния РЭА
Во-первых, нужны исходные данные об измеренных значениях параметра, определяющего техническое состояние аппаратуры за некоторый предыдущий интервал ее эксплуатации. Эти данные могут быть априорно известны по результатам опытной эксплуатации однотипной аппаратуры.
Во-вторых, процесс дрейфа параметра, пригодного для прогнозирования - это инерционный процесс, то есть должна прослеживаться определенная траектория его изменения в какомлибо направлении (временной тренд).
В-третьих, параметры процесса должны изменяться монотонно (если не учитывать случайных выбросов, которые в реальных условиях неизбежны), что свойственно именно деградационным