PowerShell против Python: битва века

Какой язык программирования лучше? Вы можете получить десять разных ответов, задав десять разных разработчиков. В этой статье мы сравним два языка: PowerShell и Python. Вы получите представление о каждом из этих языков и поймете, в чем их сходства и различия в таких функциях, как синтаксис, доступность на различных платформах и многое другое.

Пришло время провести сравнение PowerShell против Python!

К концу этой статьи вы сможете ответить на несколько общих вопросов:

  • Что общего у обоих этих языков?
  • Чем они отличаются?
  • Какие лучшие сферы применения для каждого из них?
  • В чем различие в синтаксисе?
  • Какую роль должен иметь человек, чтобы наилучшим образом использовать один из них перед другим?

Эта статья предназначена для тех, кто имеет мало или совсем не имеет знаний ни о одном из этих языков и смущен вопросом о том, использовать PowerShell или Python. Эта статья также для тех, кто уже понимает один из языков и хотел бы узнать о другом.

Давайте погрузимся в это!

По роли в работе

Хотя вы можете говорить о технических аспектах Python и PowerShell целый день, важная часть сравнения двух языков – определить, какая роль в работе больше всего подходит для каждого из них.

Как PowerShell, так и Python были разработаны на двух сторонах забора (Microsoft и сообщество открытого исходного кода Linux). Синтаксис, сообщество и, следовательно, общее впечатление от обоих языков различаются, и, таким образом, они в целом применяются в определенных ролях в работе.

Здесь следует отметить, что PowerShell (Core), начиная с версии 6.0.0, был сделан открытым исходным кодом. Времена меняются.

Администраторы систем

Как PowerShell, так и Python отлично подходят для изучения системными администраторами. Оба являются отличными средствами автоматизации и могут потенциально сэкономить много времени для системного администратора. Возможно, однако, для администраторов Windows PowerShell будет лучшим выбором только из-за его интеграции с нативным .NET-фреймворком.

С другой стороны, Python отлично подходит для системных администраторов Linux.

Хотя Python и PowerShell (Core) оба кросс-платформенны, вы обнаружите, что большинство вакансий будут разделены между Windows и PowerShell, а также Python и Linux.

Разработчики

Для более ориентированных на разработчиков задач Python является абсолютным лидером. Python имеет огромную поддержку в областях, которые PowerShell никогда не касался, таких как наука о данных, статистический анализ и многое другое. Иногда Python кажется более научно ориентированным языком.

Python также запускает множество крупных веб-приложений на стороне сервера и другие приложения “дружественные к разработчику”.

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

По операционной системе

PowerShell

PowerShell является героем для сред Windows; это лучший навык, который вы можете использовать для автоматизации задач в Windows. Это особенно верно, когда речь идет о продуктах, таких как Active Directory и Microsoft Exchange как в локальных, так и в облачных вариантах Office 365.

С тем, что PowerShell имеет прямой доступ к .NET Framework, он отлично интегрирован со всеми системами Windows и легко может использоваться для выполнения любой задачи.

Однако PowerShell поддерживает Linux, но на момент написания этого текста его поддержка далеко не так распространена, как у Python.

Python

Обычно Python лучше работает в среде Linux. Из-за глубоких корней в сообществе Linux вы найдете модули Python для выполнения практически любых задач в Linux.

Python также может работать на других платформах, таких как iOS и AIX.

По задачам

PowerShell

Вы можете использовать PowerShell для создания инструмента для выполнения повседневных задач, и вы даже можете создать графический интерфейс с использованием Windows PowerShell, чтобы сделать ваш инструмент более удобным для пользователя.

Python

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

Понимание общих черт и различий в синтаксисе

Давайте перейдем к основам каждого языка, чтобы сравнить их.

PowerShell и Python являются объектно-ориентированными, что означает, что оба они построены на концепции логических объектов, где они создают, манипулируют и повторно используют объекты для выполнения конкретных задач.

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

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

PowerShell – это командная оболочка и язык сценариев, основанный на задачах и построенный на основе .NET Framework, который принимает и возвращает объекты .NET Framework, в то время как Python – это интерпретируемый язык программирования

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

Теперь давайте начнем с основ обоих языков, таких как комментирование, объявление переменных, условия и другие основы, чтобы лучше понять их сходства и различия.

Комментирование

Создание однострочного комментария в PowerShell или Python идентично – используйте знак решетки (#) в начале строки, как показано ниже.

# Это комментарий PowerShell и не будет выполнен
# Это комментарий Python и не будет выполнен.

Объявление переменных

Все переменные в PowerShell начинаются с $, за которым следует имя. Ниже вы можете увидеть, как переменная назначается для хранения целого числа.

$var = 1

Определение строковых переменных работает так же в PowerShell, но вам нужно заключить значение в одинарные или двойные кавычки.

$var2 = "string"
$var3 = 'string'

Ознакомьтесь с документацией about_Variables для получения дополнительной информации о переменных PowerShell.

На Python переменные обрабатываются практически идентично, но не требуют, чтобы имя переменной начиналось с $.

var1 = 7
var2 = "string"
var3 = 'string'

Вы можете узнать больше о переменных Python на W3Schools и многих других онлайн-ресурсах.

Работа с математическими операциями

В PowerShell и Python любое положительное или отрицательное число без десятичных знаков является целым числом. По умолчанию они автоматически назначаются переменной типа целое число. Математические операции могут быть выполнены нормально с этими переменными.

В PowerShell вы можете увидеть некоторые примеры базовых математических операций ниже.

$int1 = 70
$int2 = 77
$int3 = -10
$int1 + $int2
$int2 - $int1
$int1 + $Int3
Python and integers

Для получения дополнительной информации ознакомьтесь с серией статей Как выполнять математические операции в PowerShell на RedmondMag.

Аналогично, в Python вы можете выполнять базовые математические операции, как показано ниже.

int1 = 70
int2 = 77
int3 = -10
int1 + int2
int2 - int1
int1 + int3
Artitmetic in Python

Узнайте больше о математических операциях в Python в этой полезной статье на сайте geeks2geeks.com.

Использование условных операторов

Условные операторы важны для любого языка программирования. Они позволяют разработчику перенаправлять поток кода в зависимости от одного или нескольких условий. Когда вы начнете работать с условными операторами типа if/then, вы увидите, что PowerShell и Python практически идентичны.

Вы можете видеть ниже, что существует небольшая, но очень важная разница между двумя языками. PowerShell сильно зависит от скобок ( ), фигурных скобок { } и других специальных символов, в то время как Python использует отступы.

Обратите внимание на все скобки и фигурные скобки в примере PowerShell ниже.

if (Condition) {
    Code to be executed if the condition is true
} else {
    Other code to be executed if the condition is false
}

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

if condition:
    Code to be executed if the condition is true
else:
    Other code to be executed if the condition is false

Чтобы продемонстрировать, давайте посмотрим, как выглядит и ведет себя типичное условное выражение if/then в PowerShell. Когда выполняется следующий код, вы увидите вывод 77 больше 70.

$var1 = 77
$var2 = 70
if ($var1 -gt $var2) {
    Write-Host -Object "$var1 is greater than $var2"
} else {
    Write-host -Object "$var1 is less than $var2"
}

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

if var1 > var2:
    print(f"{var1} is greater than {var2}")
else:
    print(f"{var1} is less than {var2}")

Циклы

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

В PowerShell общий оператор foreach выглядел бы примерно так.

foreach ($item in $list) {
	Code to be executed for each item
}

В Python аналогичный цикл, выполняющий ту же задачу, использует оператор for, как показано ниже.

for item in list:
	Code to be executed for each item

Существует большое сходство в синтаксисе, используемом в PowerShell и Python, особенно в основах и основном использовании языков. Эти сходства являются огромным преимуществом для тех, кто владеет PowerShell и хочет узнать больше о Python, или наоборот.

Решение одной и той же проблемы по-разному

Теперь давайте покажем, как решить общую проблему немного иначе с помощью PowerShell и Python. Для этого мы собираемся прочитать простой текстовый файл с числами, разделенными строками, и вывести на консоль только определенный диапазон чисел.

Файл, который мы будем использовать, называется input_text.txt, и в нем содержится широкий диапазон чисел от 1 до 6345.

Мы создадим функцию как в PowerShell, так и в Python, чтобы обработать все числа, возвращенные из файла.

Обработка файла с помощью PowerShell

Ниже вы увидите, как это можно сделать в PowerShell.

Define a function called Get-TwoDigits
 function Get-TwoDigits {
     [CmdletBinding()]
     param(
         [Parameter()]
         $List ## Предоставьте входной параметр, называемый List, представляющий числа
     )
     ## Переберите каждое число в списке. Если число больше 9 и меньше
     ## чем 99, выведите это число на консоль
     foreach($num in $List){
         if($num -gt 9 -and $num -le 99 ){
             Write-Host $num
         }
 }
 }
 Read the text file and place contents into an array called inputlist
 PS51> $inputlist = Get-Content -Path .\input_text.txt
 Call the function providing the contents of the file as the List parameter
 PS51> Get-TwoDigits -List $inputlist

Когда вы запускаете Get-TwoDigits, вы увидите, что PowerShell вернет только любое число в input_text.txt, которое находится между 9 и 99.

Обработка файла с помощью Python

Теперь мы выполним точно те же шаги с помощью Python, чтобы заметить различия в синтаксисе.

## Открыть дескриптор файла с помощью метода open()
File_Read = open("/PS_Vs._PY/input_text.txt")

## Прочитать файл и разделить большую строку на массив с помощью метода splitlines()
inputData = (File_Read.read().splitlines())

## Закрыть открытый дескриптор файла
File_Read.close()

## Определить функцию с именем two_digits с одним параметром input_list
def two_digits (input_list):
    ## Перебрать каждое число в списке. Если число больше 9 и меньше
    ## чем 99, вернуть это число в консоль
    for num in input_list:
        if (int(num) > 9) and (int(num) <= 99):
            print(num)


>>> two_digits(inputData)

Когда вы запускаете функцию two_digits(), вы увидите, что Python вернет только любое число в input_text.txt, которое находится между 9 и 99.

Создание функции в Python почти такая же структура. Имейте в виду, что отступы важны в Python, как и чувствительность к регистру.

Дополнительное чтение

Source:
https://adamtheautomator.com/powershell-vs-python/