PowerShell vs. Python: Uma Batalha Pelas Eras

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á uma visão de cada uma dessas linguagens e entenderá como elas se comparam em recursos como sintaxe, disponibilidade em várias plataformas e muito mais.

É hora de um confronto 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 torna diferentes?
  • Quais são os melhores casos de uso para cada uma delas?
  • Como a sintaxe difere?
  • 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 se devem usar PowerShell ou Python. Este artigo também é para aqueles que já entendem uma das linguagens e gostariam de aprender sobre a outra.

Vamos lá!

Por Função Profissional

Embora você possa falar sobre os aspectos técnicos de Python e PowerShell o dia todo, uma parte importante da comparação entre as duas linguagens é determinar que tipo de função profissional se adapta melhor a cada linguagem.

Ambos o PowerShell e 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, assim, são geralmente adotadas para determinadas funções profissionais.

Aqui deve ser notado que o PowerShell (Core), que a partir da versão 6.0.0, foi disponibilizado como open source. Os tempos estão mudando.

Administradores de Sistema

Ambos o PowerShell e o Python são ótimas linguagens para aprender para administradores de sistema. Ambos são ótimas ferramentas de automação e podem economizar muito tempo para um administrador de sistema. Argumentavelmente, para administradores de sistema do Windows, o PowerShell será uma escolha melhor apenas por causa da sua integração nativa com o framework .NET.

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

Embora o Python e o PowerShell (Core) sejam ambos multiplataforma, você encontrará que a grande maioria dos cargos de trabalho por aí serão divididos entre Windows e PowerShell, e Python e Linux.

Desenvolvedores

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

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

Embora o PowerShell possa ser usado como uma linguagem de desenvolvimento, ele geralmente é mais adequado em cargos de trabalho que precisam de mais automação, como DevOps ou automação geral de administração de sistemas.

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 local quanto no Office 365.

Desde que o PowerShell tem acesso direto ao .NET Framework, está perfeitamente integrado a todos os sistemas Windows e pode ser facilmente usado 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.

Python

O Python é geralmente melhor em ambientes Linux. Devido às suas raízes profundas na comunidade Linux, você encontrará módulos em 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 até mesmo criar uma interface gráfica (GUI) usando o Windows PowerShell para tornar sua ferramenta 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.

Compreensão das Semelhanças e Diferenças na Sintaxe

Vamos analisar detalhadamente cada linguagem para compará-las.

PowerShell e Python são orientados a objetos, o que significa que ambos são construídos sobre o conceito de objetos lógicos, nos quais eles criam, manipulam e reutilizam objetos para realizar tarefas específicas.

Ambos o PowerShell e o Python reutilizam código por meio de módulos. Módulos podem ser potencialmente reutilizados mais tarde em outros programas, ou você pode importar diretamente módulos criados por outros programadores.

Ambas as linguagens têm 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 entendida pelo interpretador, para ser posteriormente alterada para um código legível por máquina, onde a execução real ocorre.

Vamos começar agora com o básico de ambas as linguagens, como comentar, declarar variáveis, condições e outros conceitos básicos, para ter uma melhor compreensão de suas semelhanças e diferenças.

Comentar

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 em PowerShell e não será executado
# Este é um comentário em Python e não será executado.

Declarar 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 forma no PowerShell, mas você precisará envolver o valor em aspas simples ou duplas.

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

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

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

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

Você pode aprender mais sobre 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 número 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 Como fazer Matemática no PowerShell no RedmondMag para obter mais informações.

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

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

Saiba mais sobre operações matemáticas em Python neste artigo útil do 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ê lida com declarações condicionais como construções if/then, você perceberá que PowerShell e Python são praticamente idênticos.

Você pode ver abaixo que há uma diferença sutil, mas muito importante, entre as duas linguagens. O PowerShell depende muito de parênteses ( ), chaves { }, e outros caracteres especiais, mas o Python usa a endentaçã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
}

Contradiga o código do PowerShell com o código Python abaixo. Você verá apenas dois-pontos para indicar o fim 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, vejamos como fica uma declaração típica de if/then em PowerShell e como 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 algumas 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 é o laço. Os laços permitem que uma linguagem repita, ou itere, sobre um pedaço de código continuamente até que uma condição seja atendida, ou por um certo número de vezes.

No PowerShell, uma declaração foreach comum seria assim.

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

No Python, um laço semelhante 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 usada pelo PowerShell e pelo Python, especialmente para os conceitos básicos e o uso fundamental das linguagens. Essas semelhanças são uma enorme 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 agora mostrar como resolver um problema comum de uma maneira um pouco diferente tanto com o PowerShell quanto com o Python. Para fazer isso, vamos ler um arquivo de texto simples com números delimitados por linha e retornar apenas uma certa faixa de números para o console.

O arquivo que vamos usar chama-se input_text.txt e os números delimitados por linha contêm uma ampla variedade de números de 1 a 6345.

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

Processando um Arquivo com PowerShell

Abaixo você verá como isso poderia ser feito 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
     )
     ## Itere 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
     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 estiver 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 manipulador de arquivo usando o método open()
File_Read = open("/PS_Vs._PY/input_text.txt")

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

## Feche o manipulador de 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(), você verá que o Python só retornará qualquer número em input_text.txt que estiver 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 ao caso.

Leitura Adicional

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