Python esta sobre simplificado y puede crear/ocultar problemas
Disclaimer: Este post está basado en las experiencias que he tenido de proyectos escolares usando Python 3.7 y VScode como IDE. Recuerden que esto es una opinión personal.
Python, el lenguaje de programación donde el meme de “Olvidaste el ;” no puede ser aplicado, y donde una simple tabulación y dos puntos reemplazan los corchetes. Estas son algunas de las características que Python ofrece. Después de todo, Python es un lenguaje interpretado de alto nivel. Es muy fácil de aprender y usar, y puede ayudarte a hacer o automatizar tareas con tan solo un par de líneas de código, y hacerlo en muy poco tiempo, pero también, te puede causar varios dolores de cabeza.
Primer argumento - Declaración de variables
Vamos a empezar con algo simple. Necesitas asignar algo cada vez que declaras una variable, y es correcto, todo está bien con tipo de datos primitivos, pero cuando tienes que crear un dato de una clase, no puedes tener constructores copia, si necesitas varias maneras de declarar una clase junto con sus atributos, te vas a encontrar asignando NULL o datos inválidos, y se vuelve un infierno cuando tienes muchos parámetros para esa clase. Además, en mi IDE, y gracias a que Python es interpretado, cuando una clase no está definida explícitamente en el mismo archivo
.
Example:
myChildClass = parentClass.getChildClass()
myChildClass.executeSomething()
Esto no te mostrara las funciones o parámetros que la clase tiene, y estarás programando ciegamente, y estarás rezando que tu sintaxis este correcta, al menos hasta que corras el script.
Segundo argumento - Memoria dinamica
Recientemente tuve que realizar un algoritmo donde necesitaba una variable auxiliar de una clase, que creaba una copia en cierto punto, algo fácil de hacer en otros lenguajes que crean nuevas clases, pero Python hace cosas peculiares como:
aux=var
print(var)
print(aux)
Para Python, esto es exactamente igual, lo único que hace es crear una variable diferente pero que apunta a la misma posición, por lo cual contiene la misma información en tiempo real, y la única manera que he encontrado de solucionarlo es conociendo como es el constructor, para realizar la copia:
aux=Class(var.part1(),var.part2())
Y bueno, esto solo es una parte, pero cuando hablamos de crear una lista auxiliar, es literalmente IMPOSIBLE (Al menos de estas maneras).
#First Way
list1 = list2
#Second way
for i in list2:
list1.append(i)
#Third way
list3=list2
list2=[]
list1=list3
En estas tres maneras, list1 y list2 van a ser lo mismo durante toda la duración del programa, si modificas uno, se modifica automáticamente el otro.
Tercer argumento - Todo es un objeto
Aquí solo iré directamente a un ejemplo:
Example:
class(i.getX,i.getY)
Problablemente te diste cuenta que quería llamar a las funciones, y no solamente asignar un parámetro, pues no hay “( )”. Bueno, Python no verifica eso, lo toma como un objeto y guarda su posición en vez de decirte que te faltaron los paréntesis, esto me tomo horas una vez para darme cuenta y poder arreglarlo, todo porque Python quería ayudarme en un lugar donde no necesitaba ayuda.
Extra: Es un dolor de cabeza que Python no sea compilado y no me ayude a encontrar ciertos errores, a menos a que lo corra en una terminal, cuando termina de manera inesperada, solo se cierra, sin saber que ha pasado.
Lo que yo pienso
Me gusta Python, puedes hacer muchísimas cosas con tan solo unas pocas líneas de código, pero cuando llega el momento de hacer cosas complicadas, puede ser un infierno. Quizá te ayude a descansar de otros lenguajes y sus propios problemas, pero este también crea los suyos, así que depende en que vas a hacer y que tan experto eres para usar Python para realizar el trabajo.
Cover Photo by programarya.com on ProgramarYa