Python.

Como muchos de ustedes ya sabrán, Python es un lenguaje de programación, que como muy pocos seguramente saben, tomó su nombre no de una serpiente, si no de un programa de comedia británico, pero en fin. Python fue publicado en 1991 por Guido van Rossum, inicialmente fue pensado como un simple lenguaje de scripting pero en la actualidad se ha infiltrado en el desarrollo web, la ciencia de datos, machine learning y ramas afines.

Filosofía.

La filosofía detrás de Python podría estar resumida en un documento que fue creado en 1999, ocho años después de su creación. Pueden consultar el documento en este enlace: pero les voy a decir algunos de estos principios que sí, suenan muy filosóficos:

  • Beautiful is better than ugly
  • Explicit is better than implicit
  • Simple is better than complex
  • Readability counts
  • There should be one—and preferably only one—obvious way to do it.
  • If the implementation is hard to explain, it's a bad idea.

Lo cierto es que mientras que estos principios suenan bonitos, el escribir software todavía recae en los humanos, así que estos principios no se aplican muchas veces. Y, por ejemplo, puedes encontrar que en Python es normal que encuentres más de una manera de hacer las cosas.

Características

  • Es dinámicamente tipado: Porque podemos hacer algo como esto:
a = 1
b = 'C'
c = [0.1, 0.5]

Es decir, no es necesario especificar el tipo de dato de una variable antes de declararla. Y no existe un compilador, ni el intérprete, que esté comprobando esto antes de que el programa se esté ejecutando.

También permite algo como esto:

a = 1
a = 'C'
a = [0.1, 0.5]

Es decir, cambiar por completo el tipo de dato de una variable sin que nadie diga nada. Y créanme, esto puede ser motivo de muchas confusiones, pero una vez que te acostumbras, puede llegar a ser una herramienta muy útil.

  • sin embargo, también es considerado un lenguaje fuertemente tipado (cabe recalcar que puede existir esta combinación: dinámico y fuertemente tipado a la vez). Es considerado fuertemente tipado porque el lenguaje define un conjunto de reglas (de comportamientos) bajo las cuales los tipos de dato se pueden mezclar entre ellos, y romper esas reglas generará una excepción. Toma por ejemplo el siguiente código:
a3 = "a" + 3 

por increíble que parezca, esto nos generaría un error puesto que los tipos de dato int y string no definen una forma de mezclarse, si quieres concatenar las cadenas tendrías que primero convertir el entero a cadena.

  • No existen los corchetes (o llaves): sino que los bloques de código se definen usando indentaciones, es decir un bloque if se define de la siguiente manera:
if b == 'C':
	print("b es C")
elif b == 'A':
	print("b es A")

O un código un poco más complejo se vería así:

def del_none(d):
    for key, value in list(d.items()):
        if value is None:
            del d[key]
        elif isinstance(value, str):
            d[key] = d[key].strip()
        elif isinstance(value, dict):
            del_none(value)
    return d

Ah, seguramente lo notaste, pero Python tampoco requiere que uses un ; para terminar cada instrucción, la idea es que exista una instrucción por cada línea.

  • como tal vez pudiste ver, es también un lenguaje de alto nivel: La idea es abstraer (esconder) la mayor cantidad de detalles de implementación. Es un lenguaje de alto nivel y en ocasiones es muy sencillo leer programas escritos en este lenguaje, y a mi parecer, en muchos casos como si estuvieras leyendo un libro escrito en inglés.
  • Python es también multiparadigma, puedes organizar tu código en clases, o utilizarlo como un lenguaje funcional, o puedes simplemente crear un programa que se ejecute proceduralmente... o una combinación de todo esto.
  • Altamente extensible: tiene soporte para descargar módulos o bibliotecas de repositorios de paquetes que permiten que añadirle funcionalidad a tus programas, así que es normal que cuando descargues un proyecto tengas que descargar los paquetes asociados con instrucciones como las siguientes:
pip install package-name
easy_install package-name

Desventajas

  • Considerado lento
  • A pesar de ser muy usado, hay áreas en las que no tiene mucho impacto, como el desarrollo para móviles.
  • Consume mucha memoria.
  • Puede hacer que otros lenguajes sean difíciles de trabajar, uno se acostumbra muy rápido a las bondades de Python, a mi de pronto ya se me olvida poner puntos y coma en C#