FuckingFreaky escribió:Bueno, la verdad que no fue nada buena la comparaión de C con Java... iba rápido y ni pensé en la máquina de java y esas historias que sí sé que, por supuesto, hace que sea más lento.
Pero dejando a un lado las diferencias de rendimiento de interpretados, y compilados... y también ensamblador puesto que ahora no me interesa saber mucho de lenguajes que no puedan generar programas multiplataforma ¿no influye en nada el lenguaje?
Es decir... entre C y C++ (por poner dos lenaguajes compilados, aunque son "más o menos lo mismo") ¿hay diferencia para un programa similar? Haciendo todos los métodos con la misma pericia y demás...
Por lo que habéis dicho tengo todas esas aignaturas ó similares, así que guay. Los nombres a veces asustan, pero al igual que Harl, de momento, las teóricamente más difíciles son las que más me están gustando, a excepción de todas las mátemáticas... que no puedo con ellas.
En fin, toda esta rallada viene porque a mi mente vino la idea de si de alguna forma en un futuro, podremos reducir el número de lineas de un programa, de si eso influiría y si se ejecutarían más rápido los métodos... no sé, en fin, muy abstracto y muy confuso puesto que, como véis, no tengo npi de todo esto. ¿Sabéis algo sobre optimizaciones de este tipo? De cómo reducir un lenguaje para que sea más rápido programar en él y su influencia en la eficiencia...
Bueno, mis paranoias y yo, seguimos investigando...
Gracias!
Saludos.
P.D: Puta recursividad, qué invento más inútil...
Aqui ya me parece que te estas liando un poco. Hay que diferenciar muchas cosas:
- La sintaxis del lenguaje o lo que es el lenguaje propiamente dicho: Especifica como se construyen los programas. Es por ejemplo C, C++, Java.... eso no determina practicamente nada la velocidad de ejecución de un programa.
- El compilador: Es un caso particular de un traductor. Pasa de un lenguaje a codigo máquina. En el caso de C lo pasa a intrucciones en código máquina de la arquitectura que sea, en caso de java a instrucciones máquina de la máquina virtual de java. Es el que se lleva el peso de las optimizaciones que permitirán determinar la velocidad de ejecución.
- El intérprete: En algunos lenguajes existe un elemento llamado intérprete que se encarga de ejecutar un determinado código. Por ejemplo en java lo que llamamos la máquina virtual de java o en python el intérprete de python. Suelen ser lentos ya que para ejecutar el programa tienen que transformar antes desde un código propio al código máquina de la plataforma donde se esté ejecutando. Por ejemplo en python es como si tuviésemos que compilar el programa cada vez que lo queramos ejecutar.
Esto es lo más básico. Luego hay mil cosas más detrás.
Lo que dices de reducir el numero de instrucciones para aumentar la velocidad no tiene serntido (al menos estrictamente). Un programa con menos instrucciones máquina no es más rapido sino que incluso puede ser más lento. Por ejemplo un bucle que haga exactamente 1000 sumas se ejecuta más lento si está implementado como un bucle que si está implementado como 1000 instrucciones de suma consecutivas. De hecho muchos compiladores aplican esta optimización al código.
P.D. : ¡Como que puta recursividad! Si tengo que implementar ciertas cosas iterativamente me muero
P.P.D. : La burbuja es el ejemplo de anti-eficiencia pero que levante la mano el que nunca lo haya usado en un momento de apuro de "joder, no tengo tiempo para acabar esto"