
viernes 21 de diciembre de 2007
lunes 17 de diciembre de 2007
Compilado vs Interpretado
Creo que todos sabemos que es un lenguaje compilado (C, C++, Pascal, Fortran) y que es un lenguaje interpretado (Ruby, Python, Perl, PHP). Resulta que me encuentro en el medio de un pequeño dilema. Generalmente los programadores, a la hora de desarrollar un software aplican el axioma de "Utilizar el lenguaje mas conocido por el desarrollador" para la eleccion del lenguaje de programacion. Resulta, que en mi caso, dejando de lado la modestia, ese axioma es como una maldición.
Luego de varias discusiones con mi voz interna, (a pesar de la creencia urbana los programadores si tenemos alma), he logrado reducir mi lista a dos lenguajes, C# y Python. El primero un lenguaje semi-compilado, ya que el compiler traduce el codigo fuente a un lenguaje intermedio que luego es interpretado por la maquina virtual de .Net (o Mono). Y el segundo es un lenguaje de tipado dinamico e interpretado.
Cual de ellos elegir a la hora de desarrollar este software que me han asignado? Es C# mas rapido que Python, o deberia reformular la pregunta, es .Net (c#) mas rapido que python?
Como testear esto? Fibonacci? Esta funcion en python calcula los N (limite) primeros numeros en la secuencia Fibonacci.
time:
real 0m0.023s
user 0m0.012s
sys 0m0.008s
ahora, la misma funcion en C#, compilada en Mono (linux my friends, deberian usarlo, te cambia la vida)
time:
real 0m0.114s
user 0m0.032s
sys 0m0.016s
C#(0.162) vs Python(0.043)
Obviamente este pequeño test es absolutamente trivial, pero no me impide elegir a Python :)
Saludos!
Luego de varias discusiones con mi voz interna, (a pesar de la creencia urbana los programadores si tenemos alma), he logrado reducir mi lista a dos lenguajes, C# y Python. El primero un lenguaje semi-compilado, ya que el compiler traduce el codigo fuente a un lenguaje intermedio que luego es interpretado por la maquina virtual de .Net (o Mono). Y el segundo es un lenguaje de tipado dinamico e interpretado.
Cual de ellos elegir a la hora de desarrollar este software que me han asignado? Es C# mas rapido que Python, o deberia reformular la pregunta, es .Net (c#) mas rapido que python?
Como testear esto? Fibonacci? Esta funcion en python calcula los N (limite) primeros numeros en la secuencia Fibonacci.
#!/usr/bin/python
def fibonacci(limite):
valores = []
a, b = 0,1
while valores.__len__() < limite:
valores.append(b)
a, b = b, a+b
return valores
if __name__ == "__main__":
print fibonacci(100)
time:
real 0m0.023s
user 0m0.012s
sys 0m0.008s
ahora, la misma funcion en C#, compilada en Mono (linux my friends, deberian usarlo, te cambia la vida)
using System;
using System.Collections;
namespace Fibonacci
{
class MainClass
{
public static void Main(string[] args)
{
int limite = 50;
ulong[] valores = new ulong[limite];
ulong a = 0;
ulong b = 1;
int index = 0;
while ( index < limite)
{
valores[index] = b;
a = b;
b = a + b;
index = index + 1;
}
for(int i=0;i < limite;i++)
{
Console.Write(valores[i] + " ");
}
}
}
}
time:
real 0m0.114s
user 0m0.032s
sys 0m0.016s
C#(0.162) vs Python(0.043)
Obviamente este pequeño test es absolutamente trivial, pero no me impide elegir a Python :)
Saludos!
sábado 15 de diciembre de 2007
De vuelta.
Hey! Tanto tiempo. No pude postear antes porque {poner aca excusas de siempre}. :)
Bueno, vamos a lo que importa. :)
1- Como pueden leer en VivaLinux, Canonical Ltd. acaba de liberar un software de control de versiones distribuido, Bazaar, este tipo de control de versiones es el mismo que implementara y diseñara Linus para el desarrollo del kernel y tiene como caracteristica principal que no necesita de un servidor centralizado. Bazaar esta hecho en python, que como ya habiamos mencionado en este blog, es el lenguaje de preferencia para los desarrollos de Canonical Ltd.
2- El hacker FreedomCoder me ha propuesto migrar alguna aplicacion de seguridad a python para el Nokia N800, challenge que he aceptado con gusto, me pasó este link para ir viendo el tema, si alguno de uds se anima, son bienvenidas las ideas, comentarios, aportes, etc.
3- El portal para programadores Open source CodeForge tuvo un pequeño update, lamentablemente no he podido imprimirle el tiempo que hubiera deseado, pero de apoco lo estoy armando, la lista esta funcionando y cuenta con gente muy copada con la cual intercambiar ideas.
Bueno, espero postear mas seguido este mes! :)
Saludos
Bueno, vamos a lo que importa. :)
1- Como pueden leer en VivaLinux, Canonical Ltd. acaba de liberar un software de control de versiones distribuido, Bazaar, este tipo de control de versiones es el mismo que implementara y diseñara Linus para el desarrollo del kernel y tiene como caracteristica principal que no necesita de un servidor centralizado. Bazaar esta hecho en python, que como ya habiamos mencionado en este blog, es el lenguaje de preferencia para los desarrollos de Canonical Ltd.
2- El hacker FreedomCoder me ha propuesto migrar alguna aplicacion de seguridad a python para el Nokia N800, challenge que he aceptado con gusto, me pasó este link para ir viendo el tema, si alguno de uds se anima, son bienvenidas las ideas, comentarios, aportes, etc.
3- El portal para programadores Open source CodeForge tuvo un pequeño update, lamentablemente no he podido imprimirle el tiempo que hubiera deseado, pero de apoco lo estoy armando, la lista esta funcionando y cuenta con gente muy copada con la cual intercambiar ideas.
Bueno, espero postear mas seguido este mes! :)
Saludos
Suscribirse a:
Entradas (Atom)