Научная статья на тему 'БЫТЬ ИЛИ НЕ БЫТЬ. СЦЕНАРИИ'

БЫТЬ ИЛИ НЕ БЫТЬ. СЦЕНАРИИ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
131
21
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
СКРИПТЫ / СЦЕНАРИИ / PYTHON / C# / JAVA / JAVASCRIPT / CMD

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Иванова Ирина Владимировна, Бега Виталий Борисович

В статье раскрываются особенности работы с скриптовыми языками программирования, основные достоинства и недостатки. Даны рекомендации с примерами использования скриптов для решения различных задач. Предоставлено сравнение языков сценариев с традиционными языками программирования.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Иванова Ирина Владимировна, Бега Виталий Борисович

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «БЫТЬ ИЛИ НЕ БЫТЬ. СЦЕНАРИИ»

ТЕХНИЧЕСКИЕ НАУКИ

БЫТЬ ИЛИ НЕ БЫТЬ. СЦЕНАРИИ Иванова И.С.1, Бега В.Б.2

1Иванова Ирина Владимировна - кандидат педагогических наук, доцент, кафедра программного обеспечения;

2Бега Виталий Борисович - магистрант, образовательная программа: «7М06103 - Информационные технологии и роботехника», Костанайский региональный университет им. А. Байтурсынова, г. Костанай, Республика Казахстан

Аннотация: в статье раскрываются особенности работы с скриптовыми языками программирования, основные достоинства и недостатки. Даны рекомендации с примерами использования скриптов для решения различных задач. Предоставлено сравнение языков сценариев с традиционными языками программирования. Ключевые слова: скрипты, сценарии, python, c#, Java, JavaScript, cmd.

В большинстве крупных приложение требуется создавать взаимосвязи между различными программами. Для такой взаимосвязи используются скриптовые языки программирования. Скрипты — это программы, координирующие работу других программ и скриптов [1]. Скриптовые языки программирования ориентированы на повышения скорости разработки. Также скрипты используются для выполнения однотипной работы, которую выполняя вручную потребовалось бы много времени. К скриптовым языкам программирования относятся такие языки как Python, Ruby, JavaScript, Perl, GML, MEL, GDScript.

Достоинство скриптовых языков в простоте создания взаимосвязей между программами [2]. Для создания взаимосвязей между скриптами рассмотрим простой пример программы, в котором скрипт из команд cmd.exe объединит работу скриптов написанных на python и ruby. В примере игровой персонаж получает урон и исцеляется. Получение урона и лечения буду реализованы в разных скриптах, функция написана на языке python будет наносить урон нашему персонажу, а скрипт на ruby будет исцеляться героя на 50%. Урон. f1.py

from sys import argv import random

def main(): script, health = argv health = int(health)

health -= random.randrange(1, health + 1) print(health)

if_name_== "_main_":

main()

Лечение. f2.rb def main

health = ARGV[0].to_i health = health + (health * 0.5) puts health

end

main

Основной скрипт. scr.bat

@ECHO OFF CHCP 65001

ECHO Количество здоровья: SET /P health=

FOR /F "delims=" %%i IN ('python.exe f1.py %health%') DO SET health=%%i ECHO Количество здоровья после нанесения урона: %health% FOR /F "delims=" %%i IN ('ruby f2.rb %health%') DO SET health=%%i ECHO Количество здоровья после исцеления: %health%

ser. bat

Active code page: 65ЭЭ1

Количество здоровья:

200

Количество здоровья после нанесения урона: 159 Количество здоровья после исцеления: 238.5

Рис. 1. Результат «склеивания» скриптов

Как правило скриптовые языки не компилируются, а интерпретируются, но конечно же бывают исключения. Интерпретаторы, к примеру таких скриптовых языков как Perl и Python позволяют запущенному скрипту редактировать свой же файл. Так в следующих примерах на python и perl скрипт вносит изменения в свой же файл и после перезапуска выполняется уже обновленный. Пример на python f = open("exp.py", "a") cmd = input() f.write('\n' + cmd) f.close()

#-------NEW CODE------

1 f = open("exp. py", ' ■a")

2 cmd = input()

3 f.write(1\n 1 + cmd)

4 f. closeQ

5

6 #-------NFW COD F------

7 print('Hello, World,

S print(1 New line 1)

pytlhon exp.py print("Hello, World!") python exp.py print("New line') Hello, World!

Рис. 2. Редактирования скрипта на python

Рис. 3. Редактирования скрипта на perl

TestPerl.pl use feature "say";

my $file = 'TestPerl.pl'; my $cmd = <STDIN>;

open $fh, '»', $file or die "$_"; print $fh $cmd; close $fh or die "$_"; say '-—NEW LINE-—';

Существует возможность реализации редактирования или отладка скрипта прям в процессе выполнения программы и получение результатов с обновленными расчетами, не выходя и не перезапуская программу. В следующем примера написанном на C# скрипт python возможно редактировать, когда программа запущена и сразу получать результат изменений [3].

Health:1вв Damage:-35 Healing:32,5

Health:97,5

----------------s

Health:IBB

Damage:© w

Healing:0 11

Health:100

Health:100 Damage:400 Healing:74Б0В

Health:7Б000

Health:100 Damage:-2 Healing:49

Health:147

Рис. 4. Результат редактирования и выполнение скрипта python

using System;

using System.IO;

using IronPython.Hosting;

using Microsoft.Scripting.Hosting;

namespace ConsoleTestPythonScript

{

class Program {

static ScriptEngine engine; static ScriptScope scope; static dynamic fDamage; static dynamic fHealing;

static void Main(string[] args) {

engine = Python.CreateEngine(); scope = engine.CreateScope();

if (File.Exists("scr.py")) {

while (true) {

Console.Clear();

engine.ExecuteFile("scr.py", scope); fDamage = scope.GetVariable("Damage"); fHealing = scope.GetVariable("Healing");

xmport random

Hdef Damage (health):

health = float(health)

health -= random.randrange(lj int(health) + 1) return health

E] def Healing(health):

health = float(health) health += (health * 6.5) return healthl

float health = 100.0f; Console. WriteLine("Health:" + health); float resD = (float)fDamage(health); Console.WriteLine("Damage:" + (resD - health)); health = resD;

float resH = (float)fHealing(resD); Console.WriteLine("Healing:" + (resH - resD)); health = resH;

Console.WriteLine("\nHealth" + health); Console.ReadKey();

}

}

}

}

}

scr.py

import random

def Damage(health):

health = float(health)

health -= random.randrange(1, int(health) + 1)

return health

def Healing(health): health = float(health) health += (health * 0.5) return health

Скриптовые языки поддерживаются на разных платформах. Для того чтобы добавить в проект Android Studio обработку скриптов python можно уставить Chaquopy Python SDK for Android [4]. Chaquopy содержит API который позволяет без труда работать с кодом Python или Katlin. Мы можем перенести любой скрипт python и отредактировать его если нужно. Это преимущество над библиотеками. Если библиотеку отредактировать подключённую к проекту нельзя, то скрипты позволяют вносить изменения в свой код. Еще один плюс для библиотеки нужна документация что бы знать, как ей пользоваться, в скриптовых языках из-за открытого исходного кода можно разобраться самостоятельно.

Для следующего примера взять скрипт scr.py и добавлен в проект Android Studio без изменений.

Рис. 5. Результат выполнения скрипта python на android

public void OnClick(View v) {

String value = health.getText().toString(); float _health = Float.parseFloat(value);

PyObject resObj = pscr.callAttr("Damage", _health); float resDamage = Float.parseFloat(resObj.toString()); resDamage -= _health;

_health = Float.parseFloat(resObj.toString());

resObj = pscr.callAttr("Healing", _health);

float resHealing = Float.parseFloat(resObj.toString());

resHealing -= _health;

_health = Float.parseFloat(resObj.toString()); data.setText("Damage: " + resDamage + "\nHealing: " + resHealing); health.setText(String.valueOf(_health));

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

}

Существуют такие языки, которые сложно поломать. Интерпретаторы таких языков выполняют команды, ломающие традиционные языки программирования. Это может сильно усложнить отладку особенно если язык не имеет хороший EDI, а для скриптовых языков их не много.

Один из таких примеров, который может доставить много хлопот — это работа с классами в JavaScript. Index.html <html>

<head></head> <body>

<h1>Player</h1> <script>

class Player { constructor(name) { this.name = name;

}

}

player = new Player("Adam"); player.health = 200.0; player.damage = 10.0; player.healing = 50.0; document.write("Name: " + player.name, "<br>Health: ", player.health, "<br>Damage: ", player.damage, "<br>Healing: ", player.healing + "<br>");

document.write("Error! " + player.mame); player.mame = "John";

document.write("<br>Name! " + player.name); </script> </body> </html>

Результат:

Player

Name: Health: Damage: Healing: Error!

Name! Adam

Adam 200 10 50

undefined

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

Скриптовые языки широко используются в разработках игр. Так, к примеру в игровом движке Godot используется скриптовый язык программирования GDScript похожий на python, а в Game Maker Studio скриптовый язык GML (Game Maker Language) имеющий частичное сходство с такими языками как JavaScript, Pascal и С++. Скриптовые языки программирования используются в различных программах для работы с 2D и 3D графикой и звуком. В Autodesk Maya добавлены два скриптовых языка MEL (Maya Embedded Language) и Python. Для Adobe Photoshop скрипты можно писать на JavaScript.

На официальном сайте Adobe существует страница, где можно скачать документацию по написанию скриптов на AppleScript, JavaScript и VBScript для разных версий Adobe Photoshop [5]. Пример скрипта, который может сохранять слои в отдельные png изображения:

testsave.js

(function main()

{

var layers = app.activeDocument.layers;

for (i = 0; i < layers.length; i++) layers[i].visible = false;

for (i = 0; i < layers.length;i++) {

layers[i].visible = true; onSavePNG(layers [i]. name); layers[i].visible = false;

}

for (i = 0; i < layers.length; i++) layers[i].visible = true; })();

function onSavePNG(name) {

var doc = app.activeDocument;

var file = new File(doc.path + '/save_layers/' + name + '.png'); var opts = new PNGSaveOptions(); opts.quality = 10; doc.saveAs(file, opts, true);

}

it,., > savejn, v 0

y *

group_test.png

Layer O.png

Layer 1. png

Channels Paths Layers History

QKind - в a t п в •

Pass Through - Opacity! 1ЛО% v

Lcck: H / ф Ц fi Fl: 1M% ~

О "P tistjed

О Ь griup_t==t

fr □ » ■ a a

tebt_text,png

Рис. 6. Результат выполнения скрипта для Adobe Photoshop

Таким образом были разобраны ряд ключевых моментов работы с скриптовыми языками программирования такие как: основные плюсы использования; применение; комбинирование работы нескольких скриптовых языков; рассмотрены примеры подключения скриптового языка к проектам Visual Studio и Java в Android Studio; пример работы скрипта для Adobe Photoshop. Из всего изложенного можно сделать вывод, что данная использование скриптовых языков предоставляет множество возможностей, одни из них мобильность, простота, кроссплатформенность, широкий спектр применения и разнообразие скриптовых языков, скорость написания скриптов.

Список литературы

1. Орлов С.А. Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения. СПб.: Питер, 2013. 688 с.

2. Столяров А.В. Программирование: Введение в профессию. Том 1: Азы программирования. М.: МАКС Пресс, 2016. 464 с.

3. FoordM.J. IronPython in Action / C. Muirhead. Printed in the United States of America, 2009. 494 p.

4. Chaquopy Python SDK for Android. [Электронный ресурс]. Режим доступа: https://chaquo.com/chaquopy/doc/current/index.html/ (дата обращения: 19.03.2021).

5. ADOBE PHOTOSHOP SCRIPTING. [Электронный ресурс], 2021. Режим доступа: https://www.adobe.com/devnet/photoshop/scripting.html/ (дата обращения: 20.03.2021).

ФОРМИРОВАНИЕ РАДИОСИГНАЛОВ С ИСПОЛЬЗОВАНИЕМ ПРЕОБРАЗОВАНИЯ ЧАСТОТЫ С ОДНОЙ БОКОВОЙ

ПОЛОСОЙ Бойсунов Б.П.1, Короткова Л.А.2

1Бойсунов Ботир Пулат угли - студент;

2Короткова Лариса Александровна - старший преподаватель, кафедра радиотехнических устройств и систем, Ташкентский государственный технический университет им. Ислама Каримова, г. Ташкент, Республика Узбекистан

В настоящее время в цифровых радиосистемах передачи информации на сверхвысоких частотах достаточно широко применяется формирование рабочих сигналов однократным аналоговым преобразованием частоты с одной боковой полосой с помощью квадратурного модулятора [1, 2]. При этом квадратурные составляющие относительно низкочастотного сигнала цифровой части системы передачи информации преобразуются в аналоговый вид и поступают на соответствующие входы преобразователя частоты в составе квадратурного модулятора и гетеродина. Такой подход по сравнению с многократным повышающим аналоговым преобразованием частоты с фильтрацией или умножением частоты обычно имеет существенные преимущества по экономическим и массогабаритным показателям, и по качеству передаваемого сигнала [1]. Данный метод преобразования частоты подходит для формирования практически любых радиосигналов из сигналов цифровой промежуточной частоты, многоканальных радиосигналов, радиосигналов с OFDM, а также для непосредственной модуляции несущей такими видами цифровой модуляции, как однополосная, частотная и фазовая манипуляции, КАМ [1, 2].

Однако несовершенство аналогового квадратурного модулятора приводит при однополосном преобразовании частоты к высокому уровню внеполосного сигнала обусловленного остатком второй боковой полосы, обычно на уровне -30...- 40 дБ относительно полезного сигнала. Это приводит к взаимному влиянию каналов передачи информации и ухудшению качества принимаемых радиосигналов. При этом выполнение приемлемой дополнительно фильтрации остатка второй боковой полосы на выходе квадратурного модулятора не всегда возможно, в частности из-за малой расстройки по частоте относительно передаваемого полезного сигнала [1].

Рассмотрим улучшенный метод преобразования частоты с одной боковой полосой с эффективным подавлением внеполосного излучения, с использованием предварительной цифровой обработки квадратурных модулирующих колебаний.

i Надоели баннеры? Вы всегда можете отключить рекламу.