PowerShell vs. Python: Uma Batalha pelos Tempos

Qual é a melhor linguagem de programação? Você pode obter dez respostas diferentes ao perguntar a dez desenvolvedores diferentes. Neste artigo, vamos comparar duas linguagens; PowerShell e Python. Você terá um vislumbre de cada uma dessas linguagens e entenderá como elas se comparam e contrastam em recursos como sintaxe, disponibilidade em diferentes plataformas e mais.

É hora de uma luta entre PowerShell e Python!

Até o final deste artigo, você será capaz de responder a algumas perguntas comuns:

  • O que essas duas linguagens têm em comum?
  • O que as diferencia?
  • Quais são os melhores casos de uso para cada uma delas?
  • Como difere a sintaxe?
  • Que tipo de função alguém teria para aproveitar melhor uma em relação à outra?

Este artigo é para aqueles que têm pouco ou nenhum conhecimento sobre qualquer uma das linguagens e estão confusos sobre usar PowerShell ou Python. Este artigo também é para aqueles que já entendem uma das linguagens e gostariam de aprender sobre a outra.

Vamos mergulhar!

Por Função de Trabalho

Embora você possa ser capaz de falar sobre os aspectos técnicos de Python e PowerShell o dia todo, uma parte importante de comparar as duas linguagens é determinar que tipo de função de trabalho se adequa melhor a cada linguagem.

Tanto o PowerShell quanto o Python foram desenvolvidos em dois lados de uma cerca (Microsoft e a comunidade de código aberto do Linux). A sintaxe, a comunidade e, portanto, a sensação geral de ambas as linguagens são diferentes e, portanto, geralmente são adotadas para determinadas funções de trabalho.

Deve ser observado aqui que o PowerShell (Core), que na versão 6.0.0 e posterior, foi tornando-se de código aberto. Os tempos estão mudando.

Administradores de Sistema

Tanto o PowerShell quanto o Python são ótimas linguagens para os administradores de sistema aprenderem. Ambos são excelentes ferramentas de automação e podem economizar muito tempo para um administrador de sistema. Argumentavelmente, para os administradores de sistema do Windows, o PowerShell será uma escolha melhor devido à sua integração nativa com o framework .NET.

O Python, por outro lado, é ótimo para os administradores de sistema do Linux.

Embora o Python e o PowerShell (Core) sejam ambos multiplataforma, você perceberá que a grande maioria das funções de trabalho estará dividida entre o Windows e o PowerShell, e o Python e o Linux.

Desenvolvedores

Para empregos mais orientados para desenvolvedores, o Python é de longe o líder. O Python tem um amplo suporte em áreas que o PowerShell nunca tocou, como ciência de dados, análise estatística e mais. O Python às vezes parece mais uma linguagem orientada cientificamente.

O Python também executa muitos aplicativos da web do lado do servidor e outras aplicações “amigáveis para desenvolvedores”.

Embora o PowerShell possa ser usado como uma linguagem de desenvolvimento, geralmente é mais adequado para funções de trabalho que exigem mais automação, como DevOps ou automação geral de administradores de sistema.

Por Sistema Operacional

PowerShell

O PowerShell é o herói para ambientes Windows; é a melhor habilidade que você pode aproveitar para automatizar tarefas no Windows. Isso é especialmente verdadeiro quando se trata de produtos como o Active Directory e o Microsoft Exchange, tanto nas variedades locais quanto no Office 365.

Como o PowerShell tem acesso direto ao .NET Framework, está perfeitamente integrado a todos os sistemas Windows e pode ser facilmente utilizado para realizar qualquer tarefa.

No entanto, o PowerShell tem suporte ao Linux, mas, até o momento desta escrita, não é tão prevalente quanto o Python.

O Python

O Python geralmente é melhor em ambientes Linux. Devido às suas raízes profundas na comunidade Linux, você encontrará módulos Python para fazer praticamente qualquer coisa no Linux.

O Python também pode ser executado em outras plataformas, como iOS e AIX.

Por Tarefa

PowerShell

Você pode usar o PowerShell para criar uma ferramenta para administrar tarefas diárias, e você até mesmo criar uma GUI usando o Windows PowerShell para que sua ferramenta seja mais amigável ao usuário.

Python

O Python é geralmente melhor usado para tarefas “mais pesadas” como aprendizado de máquina, estatísticas, ciência de dados e aplicativos web e desktop do lado do servidor. O Python também tem um ótimo suporte para processamento de imagens.

Compreendendo as Semelhanças e Diferenças de Sintaxe Comuns

Vamos aos detalhes de cada linguagem para compará-las e contrastá-las.

O PowerShell e o Python são orientados a objetos, o que significa que ambos são construídos com base no conceito de objetos lógicos onde eles criam, manipulam e reutilizam objetos para realizar tarefas específicas.

Tanto o PowerShell quanto o Python reutilizam código por meio de módulos. Os módulos podem ser potencialmente reutilizados posteriormente em outros programas, ou você pode importar diretamente módulos criados por outros programadores.

Ambas as linguagens possuem uma grande biblioteca de módulos que você pode facilmente usar em seus scripts.

O PowerShell é uma shell de linha de comando baseada em tarefas e uma linguagem de script construída sobre o framework .NET, que aceita e retorna objetos do framework .NET, enquanto o Python é uma linguagem de programação interpretada

. O interpretador Python pega o código legível por humanos e cria outra forma de código compreendida pelo interpretador, para ser alterada posteriormente para um código legível por máquina, onde a execução real ocorre.

Agora, vamos começar com o básico de ambas as linguagens, como comentários, declaração de variáveis, condições e outros conceitos básicos, para ter uma melhor compreensão de suas semelhanças e diferenças.

Comentários

Fazer um comentário de uma única linha no PowerShell ou Python é idêntico – use o sinal de hash (#) no início da linha, como abaixo.

# Este é um comentário no PowerShell e não será executado
# Este é um comentário no Python e não será executado.

Declaração de Variáveis

Todas as variáveis no PowerShell começam com um $ seguido de um nome. Abaixo, você pode ver como uma variável é atribuída para armazenar um número inteiro.

$var = 1

Definir variáveis de string funciona da mesma maneira no PowerShell, mas você precisará envolver o valor entre aspas simples ou duplas.

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

Confira o documento sobre_Variáveis para obter mais informações sobre as variáveis do PowerShell.

No Python, as variáveis são tratadas de maneira quase idêntica, mas não é necessário que a variável comece com um $.

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

Você pode aprender mais sobre as variáveis em Python através do W3Schools e de muitos outros recursos online.

Trabalhando com Operações Matemáticas

Em PowerShell e Python, qualquer número positivo ou negativo sem decimais é considerado um inteiro. Por padrão, eles serão automaticamente atribuídos a uma variável do tipo inteiro. Operações matemáticas podem ser executadas normalmente nessas variáveis.

No PowerShell, você pode ver alguns exemplos de operações matemáticas básicas abaixo.

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

Confira a série How to do Math in PowerShell no RedmondMag para mais informações.

Da mesma forma, em Python, você pode realizar operações matemáticas básicas, como mostrado abaixo.

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

Aprenda mais sobre operações matemáticas em Python neste artigo útil no geeks2geeks.com.

Utilizando Declarações Condicionais

Declarações condicionais são importantes em qualquer linguagem de programação. Elas permitem que o desenvolvedor redirecione o fluxo do código, dependendo de uma ou mais condições. Quando você entra em declarações condicionais como construções if/then, você perceberá que PowerShell e Python são quase idênticos.

Você pode ver abaixo que há uma diferença leve, mas muito importante, entre as duas linguagens. O PowerShell depende muito de parênteses ( ), chaves { }, e outros caracteres especiais, mas o Python usa indentação.

Observe todos os parênteses e chaves abaixo no exemplo do PowerShell.

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

Contraste o código do PowerShell com o código Python abaixo. Você verá apenas dois pontos para indicar o final de declarações condicionais e espaços para indicar o código a ser executado dentro.

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

Para demonstrar, vamos ver como fica uma declaração típica de if/then em PowerShell e como ela se comporta. Quando o código abaixo é executado, você verá uma saída de 77 é maior que 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"
}

Em contraste, observe como a mesma tarefa é realizada em Python. Existem várias diferenças, incluindo operadores e comandos diferentes para exibir texto no console.

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

Laços

Outro conceito importante em linguagens de programação são os laços. Os laços permitem que uma linguagem repita, ou itere sobre, um pedaço de código continuamente até que uma condição seja satisfeita, ou por um certo número de vezes.

No PowerShell, um comando foreach comum se pareceria com o abaixo.

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

No Python, um laço similar realizando a mesma tarefa usaria um laço for como mostrado abaixo.

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

Existe uma grande semelhança na sintaxe utilizada pelo PowerShell e pelo Python, especialmente para os conceitos básicos e o uso fundamental das linguagens. Essas semelhanças são uma grande vantagem para qualquer pessoa que domine o PowerShell e queira aprender mais sobre o Python, ou vice-versa.

Resolvendo o Mesmo Problema de Forma Diferente

Vamos mostrar agora como resolver um problema comum de forma um pouco diferente tanto com o PowerShell quanto com o Python. Para isso, vamos ler um arquivo de texto simples com números delimitados por linha e retornar apenas uma determinada faixa de números para o console.

O arquivo que vamos usar chama-se input_text.txt e contém números delimitados por linha, variando de 1 a 6345.

Vamos criar uma função tanto no PowerShell quanto no Python para processar todos os números retornados do arquivo.

Processando um Arquivo com o PowerShell

Abaixo você verá como fazer isso no PowerShell.

Define a function called Get-TwoDigits
 function Get-TwoDigits {
     [CmdletBinding()]
     param(
         [Parameter()]
         $List ## Forneça um parâmetro de entrada chamado Lista representando números
     )
     ## Percorra cada número na Lista. Se o número for maior que 9 e menor
     ## do que 99, retorne esse número para o console
     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

Quando você executar Get-TwoDigits, você verá que o PowerShell só retornará qualquer número em input_text.txt que esteja entre 9 e 99.

Processando um Arquivo com Python

Agora, realizaremos os mesmos passos exatos com Python para notar as diferenças de sintaxe.

## Abra o identificador do arquivo usando o método open()
File_Read = open("/PS_Vs._PY/input_text.txt")

## Leia o arquivo e divida a grande string em um array com o método splitlines()
inputData = (File_Read.read().splitlines())

## Feche o identificador do arquivo aberto
File_Read.close()

## Defina uma função chamada two_digits com um único parâmetro chamado input_list
def two_digits (input_list):
    ## Faça um loop sobre cada número na lista. Se o número for maior que 9 e menor
    ## que 99, retorne esse número para o console
    for num in input_list:
        if (int(num) > 9) and (int(num) <= 99):
            print(num)


>>> two_digits(inputData)

Quando você executar a função two_digits(), verá que o Python só retornará qualquer número em input_text.txt que esteja entre 9 e 99.

Criar uma função em Python é quase a mesma estrutura. Lembre-se de que a indentação é vital em Python, assim como a sensibilidade a maiúsculas e minúsculas.

Leitura Adicional

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