Un lenguaje interpretado, juer, me recuerda los primeros tiempos del BASIC, si no es compilable ya no me gusta nada.
Un lenguaje interpretado tiene por definición que ser muuuucho más lento que uno compilado, y luego está la aplicación comercial, ¿ como vas a comercializar un producto que rueda un programa a partir del código fuente ?, eso no puede tener ningún futuro a menos que terminen sacando un compilador como ya ocurrió en su momento con el BASIC o el lenguaje del Dbase compilable con Clipper, etc...
Esos son prejuicios muy razonables. Yo también comencé con Basic y no me gusta nada. Sin embargo Python no es Basic ni tiene nada que ver.
El código Python no puede compilarse, pero sí puede crearse un archivo de Bytecode que es la traducción a binario del programa escrito. Ese Bytecode no tiene comentarios y es muy difícil saber a partir de él cómo se programó.
Es una traducción a código intermedio que luego se interpreta, al igual que se hace en Java. De forma que por esa parte no hay problema.
Además puedes hacer librerias programadas en C para extender Python. Las librerias tampoco dejan ver el código.
En cuanto a la rapidez, depende de cómo se mire. Una rutina en C puede ser hasta 10 veces más rápida que Python, pero hay ocasiones en las que no importa
1.- Muchas veces te da lo mismo que una rutina tarde 10ms o 100ms, ambas son rápidas.
2.- Si tardas 60 minutos en hacer un programa en C y 10 minutos en hacer lo mismo con Python ¿Cuál es más rápido?
Python hace cosas muy rápido y tu deberías pasar muchos meses programando lo mismo en C para ser igual de rápido. El manejo de tablas hash, manejo de cadenas (strings), programación funcional, manejo de matrices en cálculo o procesamiento de imagen, etc. Todos son ejemplos en los que conseguir más rapidez utilizando C sólo se puede conseguir después de mucho esfuerzo.
Otro ejemplo es la asignación de memoria y su liberación (la recolección de basura) que es automática en Python.
Es como comparar un autobus y un deportivo ¿Cuál es más rápido?
En principio el deportivo, pero prueba a llevar a 50 personas en un deportivo a 10 kilómetros de distancia. Cuando el deportivo va por la tercera persona, el autobús ya ha llegado.
No son comparables. Cada uno tiene un ámbito de aplicación.
Ejemplo:
Prueba a programar esto en C. Es un programa que reemplaza en todos los nombres de archivo del directorio actual el año 2012 por el año 2013
import os, re
for filename in os.listdir('.'):
newfilename = re.sub('2012', '2013', filename)
if (filename != newfilename):
os.rename(filename, newfilename)
A mí me ha llevado menos de un minuto programarlo y funciona muy rápido.
Saludos.