Por qué los principiantes deberían aprender Python

De algunas de mis otras publicaciones, probablemente haya notado que soy un gran admirador de Node.js. Si bien esto es cierto, y ha sido mi lenguaje de referencia desde hace un tiempo, no...

De algunas de mis otras publicaciones, probablemente hayas notado que soy un gran admirador de Node.js. Si bien esto es cierto, y ha sido mi lenguaje de referencia desde hace un tiempo, no siempre lo recomiendo a todo el mundo.

Comenzar en programación e informática puede ser un poco desalentador. ¿Qué idioma debería elegir? ¿Qué IDE debería usar? Y lo que es más importante, ¿por qué?

En mi opinión, lo más importante que debe hacer al programar es elegir la herramienta adecuada para el trabajo. La segunda cosa más importante es elegir la herramienta con la que te sientas más cómodo. Si le dijera que debería usar C++ ya que es uno de los lenguajes más rápidos que existen, puede que no sea un buen consejo si nunca ha tenido que lidiar con la administración de memoria o escribir sus propias estructuras de datos. Probablemente tendrás problemas y tendrás una mala experiencia.

Python, por otro lado, resuelve muchos de estos problemas por ti. Funciona mucho más lento que C++, pero también es mucho más fácil de escribir. Y como principiante, probablemente no te importe qué tan rápido sea, solo quieres hacer algo genial y aprender los conceptos básicos.

Entonces, la primera decisión que debes tomar es qué idioma quieres aprender. De los cientos de idiomas que existen, ¿por qué los principiantes deberían aprender Python? Bueno, hay algunas razones...

Sintaxis simple

Parte de la filosofía central del lenguaje (resumido por [PEP 20](https://www.python.org/dev/ peps/pep-0020/), "El Zen de Python"), incluye lo siguiente:

  • Bella es mejor que fea
  • Lo simple es mejor que lo complejo
  • La legibilidad cuenta

Entonces, como puede ver, Python fue diseñado desde el principio con la simplicidad en mente. Este fue un soplo de aire fresco en el momento de su creación, ya que algunos de los lenguajes más dominantes en ese momento eran C y C ++, que no son muy fáciles de usar.

Comparemos la sintaxis de Python con C++ usando un ejemplo simple de 'Hello, World':

C++:

1
2
3
4
5
#include stdout
 
int main() {
    std::cout << "Hello, world!\n";
}

python:

1
print('Hello, world!')

Hay una gran diferencia allí, y todo lo que hicimos fue imprimir una cadena en la consola. Por si acaso, hagamos otra comparación de sintaxis, pero esta vez con PHP:

python:

1
2
3
4
x=1
while x <=5:
    print 'x is less than 5:' + str(x)
    x += 1

PHP:

1
2
3
4
5
6
7
<?php
$x=1;
while($x<=5) {
    echo "x is less than 5: $x";
    x++;
}
?>

Python realmente trata de deshacerse de la 'pelusa' y solo requiere lo que es realmente necesario, lo cual es una gran razón por la que fue diseñado para usarse sin llaves ni puntos y comas al final de la línea. Eche un vistazo a la diferencia que hace (última comparación de sintaxis, lo prometo):

python

1
2
3
4
5
6
7
def foo(x):
    if x == 0:
        bar()
        baz()
    else:
        qux(x)
        foo(x - 1)

C:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
void foo(int x)
{
    if (x == 0) {
        bar();
        baz();
    } else {
        qux(x);
        foo(x - 1);
    }
}

Realmente no estoy tratando de criticar otros idiomas aquí. Todos estos otros lenguajes mencionados son realmente geniales y tienen toneladas de usos, pero simplemente no son muy buenos para los principiantes.

Con palabras clave como is, not y with, un script de Python bien escrito casi se puede leer como en inglés simple. Esto es especialmente cierto para las condiciones de declaración if, que pueden ser difíciles de leer si son lo suficientemente grandes:

1
2
3
4
5
6
7
a = None
b = None

if a is not None and b is not None:
    print 'Foo!'
else:
    print 'Bar!'

La sentencia condicional anterior es mucho más limpia que la típica if ((a != null) && (b != null)).

Fácil de configurar y ejecutar

Muchos principiantes que intentan aprender un idioma fallan incluso antes de escribir una sola línea de código. Con algunos lenguajes, como Java, debe instalar y configurar directorios de proyectos complicados y luego compilar su código.

Con Python, todo lo que tiene que hacer para comenzar es descargar y ejecutar el instalador, y ejecutar python <tu-script>.py. No hay una estructura de directorios complicada para crear o compilar.

Aunque se está volviendo cada vez más raro en los lenguajes modernos, compilar tu código puede ser mucho más difícil de lo que piensas (aunque es un mal necesario). Solo eche un vistazo a este pequeño archivo MAKE para C:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
CC = gcc
CFLAGS  = -g -Wall

TARGET = myprog

all: $(TARGET)

$(TARGET): $(TARGET).c
    $(CC) $(CFLAGS) -o $(TARGET) $(TARGET).c

clean:
    $(RM) $(TARGET)

Y considero que esto es un makefile simple. Elegiría Python sobre esto cualquier día.

Python le permite aprender los conceptos de programación primero antes de entrar en los detalles sucios de cómo se traduce el código de alto nivel en código de nivel de máquina, que absolutamente debe aprender, pero no cuando recién comienza.

Gran biblioteca estándar

Una de las fortalezas más promocionadas de Python es su biblioteca estándar, y por una buena razón. Viene con más de 300 módulos (en la versión 3.5), que van desde un servidor HTTP mínimo (ServidorHTTPBase) hasta bases de datos ([sqlite3] (https://docs.python.org/2/library/sqlite3.html)), a bibliotecas de compresión (gzip).

La gran mayoría de las cosas que querrá hacer con Python generalmente ya están hechas en estas bibliotecas estándar. Así que puedes empezar a crear cosas geniales con poco esfuerzo, como aplicaciones con aprendizaje automático.

De vez en cuando tendré que recordarme a mí mismo mirar a través de los módulos y ver todo lo que está disponible para evitar tener que volver a escribir el código yo mismo.

Entonces, antes de salir y tratar de escribir una biblioteca de análisis de URL, primero verifique si ya existe.

Una de las mejores partes de no tener que escribir todo este código usted mismo es saber que ha sido completamente probado y libre de errores. Gran parte de este código ha existido durante un tiempo y se ha utilizado en las principales empresas (de las que hablaremos más adelante), por lo que sabe que se ha probado.

La comunidad

Una comunidad grande y activa significa dos cosas:

  • Muchas bibliotecas de terceros
  • Mucha gente para ayudarte

Podría decirse que estos puntos son algunas de las razones más importantes por las que debería usar Python, independientemente de su nivel de habilidad. Esto significa que tendrá mucha más documentación, tutoriales y código para revisar y aprender mejor el idioma.

Python se ha posicionado constantemente como uno de los mejores lenguajes de programación según varias fuentes, como Monje rojo (#4) y tiobe (#5).

Aún más importante que la popularidad del idioma es la demanda por parte de los empleadores. Puede ver en el gráfico a continuación (por [Por cierto](http://www.indeed.com/jobanalytics/jobtrends?q=ruby%2C+python%2C+php%2C+javascript%2C+groovy%2C+ erlang&l=)) que Python es el segundo lenguaje más solicitado por los empleadores, lo que significa que tiene más posibilidades de utilizar sus habilidades de programación como carrera.

Language job demand

Fácil de depurar {#fácil de depurar}

Como principiante, una de las habilidades más difíciles de dominar es la depuración. Aquí es donde realmente llegas a conocer un idioma y su funcionamiento interno. Ocasionalmente, tendrá errores fáciles que son solo errores de sintaxis, y otras veces tendrá errores realmente difíciles de encontrar que solo aparecen 1 de cada 100 veces que ejecuta su programa.

Aquí es donde realmente conocerá su depurador y los errores comunes en un idioma.

Por suerte para ti, Python tiene muy buenos informes y manejo de errores, mientras que muchos otros lenguajes no los tienen.

Por ejemplo, en C++, si algo sale mal (como eliminar la referencia de un puntero no válido, acceder a un elemento de matriz fuera de los límites, etc.), tendrá suerte si el programa falla. De esa manera, sabrá que hay un problema en algún lugar de su programa, pero probablemente no sabrá dónde (y los depuradores no siempre son sencillos para un principiante). Si no tiene suerte, el programa no fallará (o simplemente fallará en momentos aleatorios) y en su lugar le dará errores oscuros que no son muy obvios.

Lo que Python apesta en

De acuerdo, no pensé que sería correcto escribir este brillante artículo sobre Python y no hablar sobre sus desventajas. Como cualquier otro idioma, está lejos de ser perfecto, hay muchas cosas para las que no deberías usarlo.

Como he mencionado varias veces, Python es lento. Como realmente lento en comparación con lenguajes compilados como C/C++ o Go. Esto se debe a que tiene bastantes funciones que lo ralentizan, como escribir dinámicamente y recolectar basura.

Lo que esto significa para usted es que no debe usar Python puro para procesar muchos datos, sino que tendrá que agregar ganchos de C++ (de los que hablaremos otro día).

Y gracias a la recolección de basura de Python, no puedes usarla para sistemas en tiempo real. Esto se debe a que la recolección de basura hace que el código se ejecute en un período de tiempo no determinista, por lo que no sabrá si su función tardará 1 ms o 100 ms en ejecutarse. Hay demasiadas incógnitas. En su lugar, para estos programas en tiempo real normalmente tendrá que usar un lenguaje con gestión de memoria manual como C o C++.

En ese mismo sentido, dado que Python depende de tantos recursos del sistema y tiene un intérprete, normalmente (digo 'normalmente' porque hay otras opciones) solo puedes ejecutar el código de Python sobre un sistema con un sistema operativo (es decir, sin microcontroladores u otros sistemas integrados).

Conclusión

Estas son solo algunas de las razones por las que Python es ideal para principiantes. Hay tantos recursos en estos días para comenzar que será una pequeña inversión de tiempo comenzar a programar con Python.

¿Qué idioma aprendiste primero y por qué? ¡Cuéntanos en los comentarios!

Licensed under CC BY-NC-SA 4.0