PowerShell vs. Python: una batalla eterna
¿Cuál es el mejor lenguaje de programación? Es posible que obtenga diez respuestas diferentes al preguntarle a diez desarrolladores diferentes. En este artículo, compararemos dos idiomas; PowerShell y Python. Podrá vislumbrar cada uno de estos lenguajes y comprenderá cómo se comparan y contrastan en características como la sintaxis, la disponibilidad en todas las plataformas y más.
¡Es hora de una pelea entre PowerShell y Python!
Al final de este artículo, podrá responder algunas preguntas comunes:
- ¿Qué tienen ambos idiomas en común?
- ¿Qué los hace diferentes?
- ¿Cuáles son los mejores casos de uso para cada uno de ellos?
- ¿En qué se diferencia la sintaxis?
- ¿Qué tipo de papel tendría alguien para aprovechar mejor uno sobre el otro?
Este artículo está dirigido a aquellos que tienen poco o ningún conocimiento sobre cualquiera de los lenguajes y no saben si usar PowerShell o Python. Este artículo también está dirigido a aquellos que ya entienden uno de los idiomas y les gustaría aprender sobre el otro.
¡Vamos a sumergirnos!
Por rol laboral
Aunque es posible que pueda hablar sobre los aspectos técnicos de Python y PowerShell todo el día, una parte importante al comparar los dos lenguajes es determinar qué tipo de puesto de trabajo se adapta mejor a cada lenguaje.
Tanto PowerShell como Python se desarrollaron en dos lados de una valla (Microsoft y la comunidad Linux de código abierto). La sintaxis, la comunidad y, por lo tanto, su sensación general de ambos idiomas son diferentes y, por lo tanto, generalmente se adoptan para ciertos roles laborales.
Cabe señalar aquí que PowerShell (Core), que en la versión 6.0.0 y posteriores, es de código abierto. Los tiempos están cambiando.
Administradores del sistema
Tanto PowerShell como Python son excelentes lenguajes para que los administradores de sistemas los aprendan. Ambas son excelentes herramientas de automatización y, potencialmente, pueden consumir mucho tiempo para un administrador de sistemas. Sin embargo, podría decirse que para los administradores de sistemas Windows, PowerShell será una mejor opción simplemente por su integración nativa con el marco .NET.
Python, por otro lado, es excelente para los administradores de sistemas Linux.
Aunque Python y PowerShell (Core) son multiplataforma, descubrirá que la gran mayoría de los puestos de trabajo se dividirán entre Windows y PowerShell, y Python y Linux.
Desarrolladores
Para trabajos más orientados a los desarrolladores, Python es, con diferencia, el líder. Python tiene un soporte masivo en áreas que PowerShell nunca ha tocado, como ciencia de datos, análisis estadístico y más. Python a veces se siente más como un lenguaje de orientación científica.
Python también ejecuta muchas aplicaciones web grandes del lado del servidor y otras aplicaciones "amigables para los desarrolladores".
Aunque PowerShell puede usarse como lenguaje de desarrollo, generalmente es más adecuado para roles laborales que necesitan más automatización, como DevOps o la automatización general de administradores de sistemas.
Por sistema operativo
Potencia Shell
PowerShell es el héroe de los entornos Windows; es la mejor habilidad que puede aprovechar para automatizar tareas en Windows. Esto es especialmente cierto cuando se trata de productos como Active Directory y Microsoft Exchange, tanto en versión local como en Office 365.
Dado que PowerShell tiene acceso directo a .NET Framework, está perfectamente integrado con todos los sistemas Windows y puede usarse fácilmente para realizar cualquier tarea.
Sin embargo, PowerShell es compatible con Linux pero, al momento de escribir este artículo, no es tan frecuente como Python.
Pitón
Python generalmente es mejor en entornos Linux. Debido a sus profundas raíces en la comunidad de Linux, encontrará módulos de Python para hacer casi cualquier cosa en Linux.
Python también puede ejecutarse en otras plataformas como iOS y AIX.
Por tarea
Potencia Shell
Puede usar PowerShell para crear una herramienta para administrar las tareas diarias e incluso puede crear una GUI usando Windows PowerShell para que su herramienta sea más fácil de usar.
Pitón
Python generalmente se utiliza mejor para tareas "más pesadas" como aprendizaje automático, estadísticas, ciencia de datos y aplicaciones web y de escritorio del lado del servidor. Python también tiene un gran soporte para el procesamiento de imágenes.
Comprender las diferencias y puntos en común de la sintaxis
Vayamos a los aspectos prácticos de cada idioma para compararlos y contrastarlos.
PowerShell y Python están orientados a objetos, lo que significa que ambos se basan en el concepto de objetos lógicos donde crean, manipulan y reutilizan objetos para realizar tareas específicas.
Tanto PowerShell como Python reutilizan el código mediante módulos. Los módulos se pueden reutilizar potencialmente más adelante en otros programas, o puedes importar directamente módulos creados por otros programadores.
Ambos idiomas tienen una gran biblioteca de módulos que puedes usar fácilmente en tus scripts.
PowerShell es un lenguaje de secuencias de comandos y un shell de línea de comandos basado en tareas creado sobre .NET framework que acepta y devuelve objetos de .NET framework, mientras que Python es un lenguaje de programación interpretado.
El intérprete de Python toma el código legible por humanos y crea otra forma de código que el intérprete entiende, para luego cambiarlo a un código legible por máquina donde ocurre la ejecución real.
Comencemos ahora con los conceptos básicos de ambos lenguajes, como comentar, declarar variables, condiciones y otros conceptos básicos, para tener una mejor idea de sus similitudes y diferencias.
Comentando
Hacer un comentario de una sola línea en PowerShell o Python es idéntico: use el signo de almohadilla (#) al principio de la línea, como se muestra a continuación.
# This is a powerShell comment and will not be executed# This is a Python comment and will not be executed.Declaración de variables
Todas las variables en PowerShell comienzan con $ seguido de un nombre. A continuación puede ver cómo se asigna una variable para contener un número entero.
$var = 1La definición de variables de cadena funciona de la misma manera en PowerShell, pero deberá encerrar el valor entre comillas simples o dobles.
$var2 = "string"
$var3 = 'string'Consulte el documento about_Variables para obtener más información sobre las variables de PowerShell.
En Python, las variables se tratan de forma casi idéntica, pero no requieren que la variable comience con $.
var1 = 7
var2 = "string"
var3 = 'string'Puede obtener más información sobre las variables de Python a través de W3Schools y muchos otros recursos en línea.
Trabajar con operaciones matemáticas
En PowerShell y Python, cualquier número positivo o negativo sin decimales es un número entero. Por defecto, se asignarán automáticamente a una variable de tipo entero. Las operaciones matemáticas se pueden ejecutar normalmente en estas variables.
En PowerShell, puede ver algunos ejemplos de algunas operaciones matemáticas básicas a continuación.
$int1 = 70
$int2 = 77
$int3 = -10
$int1 + $int2
$int2 - $int1
$int1 + $Int3Consulte la serie Cómo hacer matemáticas en PowerShell en RedmondMag para obtener más información.
De manera similar, en Python, puedes realizar operaciones matemáticas básicas como se muestra a continuación.
int1 = 70
int2 = 77
int3 = -10
int1 + int2
int2 - int1
int1 + int3Obtenga más información sobre las operaciones matemáticas en Python en este útil artículo de geeks2geeks.com.
Hacer uso de declaraciones condicionales
Las declaraciones condicionales son importantes para cualquier lenguaje de programación. Las declaraciones condicionales permiten al desarrollador redirigir el flujo del código, dependiendo de una o más condiciones. Cuando entre en declaraciones condicionales como construcciones si/entonces, encontrará que PowerShell y Python son casi idénticos.
Puedes ver a continuación que existe una ligera, pero muy importante, diferencia entre los dos idiomas. PowerShell depende en gran medida de paréntesis(), llaves {} y otros caracteres especiales, pero Python usa sangría.
Observe todos los paréntesis y llaves a continuación en el ejemplo de PowerShell.
if (Condition) {
Code to be executed if the condition is true
} else {
Other code to be executed if the condition is false
}Contradice el código de PowerShell con el código de Python a continuación. Solo verá dos puntos para indicar el final de las declaraciones condicionales y espacios para indicar el código a ejecutar dentro.
if condition:
Code to be executed if the condition is true
else:
Other code to be executed if the condition is falsePara demostrarlo, veamos cómo se ve y se comporta una declaración típica de PowerShell si/entonces. Cuando se ejecuta el siguiente código, verá un resultado de 77 es mayor 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"
}Por el contrario, observe cómo se realiza la misma tarea en Python. Existen bastantes diferencias, incluidos diferentes operadores y comandos para enviar texto a la consola.
if var1 > var2:
print(f"{var1} is greater than {var2}")
else:
print(f"{var1} is less than {var2}")Bucle
Otro concepto importante en los lenguajes de programación es el bucle. Los bucles permiten que un lenguaje repita o itere sobre un fragmento de código continuamente hasta que se cumpla una condición, o durante un cierto número de veces.
En PowerShell, una declaración foreach común se vería como se muestra a continuación.
foreach ($item in $list) {
Code to be executed for each item
}En Python, un bucle similar que realice la misma tarea utilizaría un bucle for como se muestra a continuación.
for item in list:
Code to be executed for each itemExiste una gran similitud en la sintaxis utilizada por PowerShell y Python, especialmente en lo básico y el uso principal de los lenguajes. Estas similitudes son una gran ventaja para cualquiera que domine PowerShell y quiera aprender más sobre Python, o viceversa.
Resolver el mismo problema de manera diferente
Ahora mostremos cómo resolver un problema común de manera un poco diferente tanto con PowerShell como con Python. Para hacer eso, leeremos un archivo de texto simple con números delimitados por líneas y solo devolveremos un cierto rango de números a la consola.
El archivo que usaremos se llama input_text.txt y los números delimitados por líneas contienen una amplia gama de números del 1 al 6345.
Crearemos una función tanto en PowerShell como en Python para procesar todos los números devueltos por el archivo.
Procesar un archivo con PowerShell
A continuación verá cómo puede hacer que esto suceda en PowerShell.
Define a function called Get-TwoDigits
function Get-TwoDigits {
[CmdletBinding()]
param(
[Parameter()]
$List ## Provide an input parameter called List representing numbers
)
## Loop over each number in List. If the number is greater than 9 and less
## then 99, return that number to the conosle
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 $inputlistCuando ejecute Get-TwoDigits, verá que PowerShell solo devolverá cualquier número en input_text.txt que esté entre 9 y 99.
Procesando un archivo con Python
Ahora, realizaremos exactamente los mismos pasos con Python para notar las diferencias de sintaxis.
## Open the file handle using the open() method
File_Read = open("/PS_Vs._PY/input_text.txt")
## Read the file and split the large string up into an array with the splitlines() method
inputData = (File_Read.read().splitlines())
## Close the open file handle
File_Read.close()
## Define a function called two_digits with a single parameter called input_list
def two_digits (input_list):
## Loop over each number in List. If the number is greater than 9 and less
## then 99, return that number to the conosle
for num in input_list:
if (int(num) > 9) and (int(num) <= 99):
print(num)
>>> two_digits(inputData)Cuando ejecuta la función two_digits(), verá que Python solo devolverá cualquier número en input_text.txt que esté entre 9 y 99.
Crear una función en Python tiene casi la misma estructura. Tenga en cuenta que la sangría es vital en Python, al igual que la distinción entre mayúsculas y minúsculas.
Otras lecturas
- Guía de PowerShell para Python por Prateek Singh

