si tengo que elegir uno ese es phiton, es mas sencillo que c++ y hace todo lo que hace c++, y ademas se puede programar software para linux, windows y mac alternativamente
no creo que haga lo mismo que C++
Lo acertado habría sido decir que en
Python lo puedes hacer de manera más sencilla o reducida ya que es un lenguaje que proporciona una experiencia guiada de programación más amistosa gracias a una extensa librería de miembros (aunque no es nada comparable al gigantesco
.Net Framework, dicho sea de paso).
C++ está un paso intermedio más cerca del
low-level de lo que está el alejado
high-level de
Python, esto quiere decir que
Python proporciona mayor abstracción que
C++ y eso podría incapacitar a
Python para ciertas tareas, sin ir más lejos, para el acceso completo a la memoria y por ende su manipulación directa (los llamados
punteros);
sin embargo, no todo son ventajas en
C++, al menos para los programadores que dependemos de ciertas comodidades que solo encontraremos en lenguajes de más alto nivel, cómo por ejemplo
C#, o equitativamente hablando el
higher-level Python en tu caso.
Python
¿Puede compilarse?
No
En realidad el compañero
@Drvy está en lo cierto, pero te dió una respuesta "con trampa"
.
@
Orubatosu, si tenemos en cuenta que por "compilar" comunmente siempre nos estaremos refiriendo al procedimiento de convertir un lenguaje (el del source-code) a otro lenguaje (object-code) para construir un archivo executable, entonces llevas toda la razón,
Python no hace esto.
Lo que ocurre es que durante el proceso de "interpretación", en realidad primero el código fuente es convertido a
byte-code, es decir, el código se compila, ya que
Python y los lenguajes de scripting en general tienen un compiler "oculto" y un intérprete o máquina virtual, y el intérprete de
Python (qué por algo se llama así) se va deteniendo en cada instrucción para evaluar la siguiente y "obtener un resultado", basicamente el código se parsea, se procesan las instrucciones directamente, "al vuelo", y debido a esto, y ya que hablé anteriormente sobre el tema,
Python, al necesitar un "intérprete" de este tipo, es más lento que
C++. (he tenido que repasarme un poquito los internals de
Python, ya que para cada lenguaje puede haber pequeñas diferencias)
Por ende, podemos afirmar que un lenguaje interpretado no se puede compilar, punto y final, por que cuando nos referimos a esto nos estamos refiriendo a generar un executable que contenga instrucciones en lenguaje
machine-code/
byte-code, no nos tenemos que volver tecnicistas y entrar en todo lujo de detalles que diferencian los aspectos más internos y triviales del concepto VM/intérprete/compiler (¡ni que yo supiera los detalles a la perfección, no soy ningún experto de los aspectos más internos y fundamentales, me puedo equivocar en algo!), pero entrando en algo más de detalle, podriamos decir que un lenguaje no se puede definir cómo interpretado o compilado, ya que un lenguaje es solo un lenguaje, y un lenguaje de scripting hoy en día se puede compilar, pero esto sucede automáticamente y por fines de optimización/rendimiento, por ende, lo que no podemos hacer es compilarlo a nuestro antojo para el fin más común, generar un executable.
A lo que realmente se refiere el enlace que compartió @
Drvy, es a empacar, usando un
packer, o podemos llamarlo sencillamente un "
convertidor de script a executable", es un tipo de herramienta que lo que hace es combinar en un único archivo extraible (SFX) el
script.py, el intérprete (
py.exe), y dependencias críticas para su ejecución (
python27.dll, módulos, etc), luego, una vez que se ejecuta el archivo "compilado", el contenido empacado automáticamente se extrae a una carpeta temporal y seguidamente se inicia el intérprete (
py.exe) pasándole como argumento el script y opcionalmente argumentos adicionales de éste.
Eso no es compilar, el código fuente de
Python o del lenguaje de scripting que sea no se convirtió durante el procedimiento, sigue habiendo un archivo local
script.py que al fin y al cabo se debe "interpretar" con la ayuda del buen llamado "intérprete".
Nota: Cada "packer" puede tener una lógica diferente, claro está.
Saludos!