⇦ Ramen Development_

Python esta sobre simplificado y puede crear/ocultar problemas

Cover Image for 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

Más entradas

Cover Image for Como traduje mi portafolio con JavaScript y JSON

Como traduje mi portafolio con JavaScript y JSON

No quería complicarme demasiado en mi portafolio personal para tenerlo listo más rápido y probar algo nuevo. Así que se me ocurrió una solución sencilla utilizando únicamente JavaScript.

Ivan Orozco
Ivan Orozco
Cover Image for ¿Banderas para representar lenguajes?

¿Banderas para representar lenguajes?

¿Debería utilizar las banderas de los países con mayor población que habla ese idioma? ¿cuál es la mejor manera de diseñar las opciones para cambiar de idioma?

Ivan Orozco
Ivan Orozco
Cover Image for ¿Programar con emojis?

¿Programar con emojis?

Los emojis son realmente utiles en algunos casos, pueden añadir emociones a nuestros mensajes para que su verdadero significado no pase desapercibido, pero ¿deberiamos usarlos para programar?

Ivan Orozco
Ivan Orozco
Cover Image for La historia detrás de Easy Simple Job

La historia detrás de Easy Simple Job

La historia detrás de nuestro juego no es complicada, inspirado por un video narrando una historia en Reddit que cuenta la historia de un tipo que consigue un simple pero sospechoso trabajo en una oficina, y ciertas cosas perturbadoras suceden...

Ramen Development Team
Ramen Development Team
Cover Image for Queridos reclutadores de LinkedIn...

Queridos reclutadores de LinkedIn...

Es importante que los reclutadores se tomen el tiempo para revisar el perfil de un candidato antes de enviar una oferta de trabajo.

Ivan Orozco
Ivan Orozco
Cover Image for Autómata de analizador léxico

Autómata de analizador léxico

En este artículo aprenderás a realizar un autómata para de un analizador lexico.

Gustavo Padilla
Gustavo Padilla