On Sun, 2 Dec 2007, Aldrin Gonzalo Martoq Ahumada wrote: > > Discrepo. Lo que se llama "maquina" es la definicion de una > arquitectura y su set de instrucciones. Cuando se habla de "maquina > virtual", se quiere decir que ese set de instrucciones no es el mismo > que el implementado en hardware; por lo tanto si quieres ejecutar ese > set de instrucciones requeriras de un paso de traduccion. > > Un interprete es un programa que realiza la traduccion desde un set de > instrucciones o lenguaje y las ejecuta, de manera que puedas correr el > codigo en tu maquina "real". La distincion importante es que el paso > de traduccion se hace en tiempo de ejecucion; es decir, cada vez que > corras el programa tendras el costo adicional de traduccion lo que > puede traer problemas de performance o uso de recursos (memoria por > ej). Por eso la *implementacion* de la maquina virtual de java es un > interprete. >
El problema es que no es tan claro hacer la distincion, de acuerdo a tu definicion, x86(_64) es una maquina virtual, ya los procesadores modernos implementan un set de instrucciones a la RISC internamente y en el momento de ejecucion se traducen las instrucciones x86 a instrucciones nativas, algunas directamente y otras por microcodigo. Saludos, Xavoer From [EMAIL PROTECTED] Tue Dec 4 14:30:33 2007 From: [EMAIL PROTECTED] (Franco Catrin L.) Date: Tue Dec 4 14:36:48 2007 Subject: Benchmarking en distintos lenguajes In-Reply-To: <[EMAIL PROTECTED]> References: <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> Message-ID: <[EMAIL PROTECTED]> "Horst H. von Brand" <[EMAIL PROTECTED]> ha escrito: > Franco Catrin L. <[EMAIL PROTECTED]> wrote: >> "Horst H. von Brand" <[EMAIL PROTECTED]> ha escrito: >> > Java es un completo desastre. Obliga a la gente a escribir montones de >> > cosas completamente incomprensibles (de lo OOP, y heredar, e incluir >> > bibliotecas, y...) para un simple "Hola, mundo!". >> Mal ejemplo porque para un simple "Hola, mundo!" el codigo de Java (o >> C#) no es muy diferente al de C > public class HelloWorld > { > public static void main(String[] args ) > { > System.out.println( "Hello world" ); > } > } > > > Que es esa basura de "public class"? Porque el archivo se tiene que llamar > asi? Que es "public static void"? Porque "System.out"? Y la larga lista de > etc que aparecen en cuanto quieres leer algo, o definir tus propios datos. > > > #include <stdio.h> > > main() > { > printf("Hello, world!\n"); > > return 0; > } > > > Elegante. Clasico. ;-) > Veamos un simple cambio de este sencillo ejemplo. Ahora queremos pasar el nombre del "saludado" por parametro. En Java quedaria como : (sin validar) public class HelloWorld { public static void main(String[] args ) { System.out.println( "Hello " + args[0] ); } } Y en C quedaria como: #include <stdio.h> main(int argc, char *argv[]) { printf("Hello, %f\n", argv[1]); return 0; } Que es eso del argc? y el "*" ? Ya no es tan elegante ;) >> En cuanto a lenguajes, siempre le hice el quite al C, y me costo tanto >> entender su sintaxis para utilizar punteros/referencias que me salia >> mas comodo generar el .ASM para ver que diablos estaba haciendo el >> compilador. > Alo? Tierra a Saturno!? > O tuviste la desgracia de tener un /pesimo/ profesor, o leiste los textos > equivocados. El Kernighan y Ritchie "The C Programming Language" es un > clasico, con merecida razon. Libros como el "Software Tools" de Kerighan y > Plaugher (no la version en Pascal!) son escenciales para aprender a > programar bien. Y en <http://www.lysator.liu.se/c> hay harto sobre la > cultura C. Tuve un buen profesor. Esa historia es de antes de entrar a la universidad, y mi unico texto disponible en ese tiempo era la ayuda contextual del compilador. Internet era inalcanzable fuera del mundo universitario. "The C Programming Language" de K&R lo conocí mas tarde, pero lo encontré demasiado C'ista para mis gustos, a la larga alguien tiene que entender lo que uno escribe. >> En lenguajes como C# o Java simplemente se usa la >> politica de "todo es referencia" salvo los tipos básicos. > Prefiero un lenguaje en que "solo es referencia lo que dije que es > referencia"... o al menos "todo es referencia", esta mezcolanza de "es" y > "no es" solo sirve para confundir. He visto aplicaciones grandes escritas en C (en empresas), y el problema con dejar eso en manos de la voluntad del programador es que se pueden perder horas o dias porque algun pastel olvido poner un "*". En el caso de C# y Java no puedes mezclar tipos con y sin referencia, por lo tanto no existe tal mezcolanza. O es o no es, y el programador tiene que ser muy explicito cuando quiera que eso que es, deje de serlo. (boxing/unboxing). >> Al final >> igual aprendí C pero no me convence de que sea buena idea utilizarlo >> para enseñar > No es ideal, pero es bastante mejor que todas las alternativas que conozco > (salvo tal vez Scheme, pero ese va a otra parte...) >> (idem para Pascal y sus "tongos"). > Dentro de lo que es manejo de punteros, es /harto/ decente. Lo feo de > Pascal esta en la imposibilidad de escribir cosas genericas y crear > bibliotecas, y el forro que es manejar strings. Alli Modula II es lindo > (aunque un tanto rigido). Y que tal el manejo de string en C? jijiji ;) -- Franco Catrin L. http://www.tuxpan.com/fcatrin ---------------------------------------------------------------- This message was sent using IMP, the Internet Messaging Program.