Hace 8 años | Por mr_b a ibm.com
Publicado hace 8 años por mr_b a ibm.com

He estado usando Python mucho últimamente en diversos proyectos de tratamiento de datos. Python es conocido por su facilidad de uso, por lo que alguien con experiencia en programación podría usarlo de manera eficaz en pocos días. Esto suena bien, pero puede ser un problema si se programa en Python como si se programase en otro lenguaje. Déjenme darles un ejemplo basado en mi propia experiencia. He escrito código en varios lenguajes por lo que Python no debería ser un problema, ¿no? Pues caí en la trampa. Usé Python como si fuera C.

Comentarios

D

Yo soy U , es decir, ultrapolla.....

D

#6 Y al final todo es código máquina. Que el módulo esté escrito en C no significa que estés programando en C al usarlo. De hecho puedes utilizar esos módulos en Python sin saber siquiera que están programados en C.

Puedes utilizar C en el código de Python como también puedes emplear ensamblador en el código de C. Cada lenguaje tiene sus bondades y sus debilidades y, del mismo modo que aplicaciones que se solían programar en ensamblador (como por ejemplo los sistemas operativos) acabaron programándose mayoritariamente en C, aplicaciones que se solían programar en lenguajes como C (como las relativas a la minería de datos) se programan cada vez más en lenguajes como Python.

Una tarea típica de extracción, conversión y procesado de datos que puedes programar en Python en unas horas podría llevarte días en C. Por no hablar de lo que podría llevarte volver a ese mismo código meses después para implementar nuevas funcionalidades.

Que puedas realizar esas tareas rápida y limpiamente es gracias a Python, que además puedas hacerlo con alto nivel de prestaciones es gracias a los módulos de Python escritos en C.

Puedes discutir sobre la conveniencia de usar Python u otro lenguaje para determinadas aplicaciones, pero es muy difícil que llegado el caso la alternativa sea C. Son lenguajes muy diferentes con usos muy diferentes.

D

#4 ¿Y dónde se encaja en la obviedad de C y Python son lenguajes diseños para diferentes necesidades la metáfora del cepillo bonito atado a la escoba?

Nitros

#5 El cepillo bonito es Python, la escoba atada son las rutinas para llevar a cabo esos calculos sin morirte de asco (estamos hablando de varios ordenes de magnitud en cuanto a tiempo de ejecución, no es moco de pavo).

El programador en este caso se habrá tirado días y horas haciendo profilings, optimizaciones en el algoritmo y buscando alternativas. Todo para acabar recurriendo a una biblioteca que utiliza C.

Que al final tampoco está mal la cosa, consigues la escoba que te hacía falta y la sigues sujetando con el mango bonito del cepillo de dientes, pero ahí hay una inversión de horas que seguramente hagan que se te pongan los pelos de punta.

Por mi parte, creo que voy a rebajar el tono de mi comentario y retirar lo de "gilipolleces", ya que el poder utilizar un lenguaje tan cómodo como Python para realizar este tipo de cálculos es algo que no conocía y que definitivamente es una buena noticia.

Nitros

This function returns the same closests points as before for all my waypoints. Running it for all the waypoints takes 0.5 second on my laptop. This is a 300x speedup over the above code! 300x, i.e. 30,000 %. This is dramatic. The reason for that speedup is that numpy array operations are written in C. Hence, we get the best of both world: we get speed comparable to C, with the conciseness of Python.

Lectura alternativa:
- Tienes un problema, que es una habitación sucia.
- Primero intentas utilizar un cepillo de dientes (uno muy bonito) para barrer la habitación. Te das cuenta que es una mierda.
- Despues le pones un mango largo al cepillo de dientes para hacerlo más eficiente. La cosa mejora, pero sigue no sirviendo para la tarea.
- Finalmente, decides atar una escoba al mango del cepillo. Ahora tienes una escoba con un mango bonito que soluciona el problema.

Moraleja: No pierdas el tiempo con gilipolleces y utiliza la escoba directamente.

D

#2 Con ese comentario te convalidan primero de Cuñadismo.

Gracias por hacernos ver a millones de programadores que utilizamos C y Python que estamos haciendo el gilipollas...

Nitros

#3 Las escobas son para barrer suelos y los cepillos de dientes para limpiarse los dientes, que puedas utilizarlos indistintamente no quiere decir que sean óptimos. La prueba es el artículo de la noticia.

D

Suele pasar cuando alguien aprende un nuevo lenguaje de programación. Traduce las mismas estructuras que usaba en el lenguaje que ya conocía, usando la nueva sintaxis ...

Cada lenguaje tiene sus particularidades. Hay que conocerlas y usarlas.