On Dec 3, 2007 10:59 AM, Xavier Andrade <[EMAIL PROTECTED]> wrote:
> 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.

Exactamente, ese es el punto: los procesadores x86 modernos poseen un
interprete!

Dicho de otra forma, si pudieramos compilar (traducir "offline")
directamente en el codigo "nativo" del procesador, nos ahorrariamos
varios ciclos de cpu (y tal vez transistores si dejamos esa pega
exclusivamente al ambiente); que se  gastan en el interprete (traducir
"online").


-- 
Aldrin Martoq
From [EMAIL PROTECTED]  Wed Dec  5 02:06:14 2007
From: [EMAIL PROTECTED] (Aldrin Gonzalo Martoq Ahumada)
Date: Wed Dec  5 02:15:28 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]>
Message-ID: <[EMAIL PROTECTED]>

On Dec 4, 2007 2:30 PM, Franco Catrin L. <[EMAIL PROTECTED]> wrote:
> 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] );
>     }
> }

Sigue odiando Java por su mal llamada "elegancia" (==
sobre-ingenieria). Escribo ese ejemplo en eclipse 3 europa, y ya tengo
varios warnings. El programa final "profesional" queda asi:

-------------------hello/HelloWorld.java-----
// "The use of the default package is discouraged.
package hello;

public class HelloWorld {

    // avoid using explicit string literals, declare constants instead
    // BTW, por que esto no lo hace el compilador!
    private static final String _STR_HELLO = "Hello "; //$NON-NLS-1$

    public static void main(String[] args) {
        System.out.println(_STR_HELLO + args[0]);
    }
}
-------------------

Oh perdon, el programa se cae por una (de las odiadas por mi)
"RunTimeExceptions"; es decir, los errores _mas_ tipicos comunes por
los cuales se caen los programas, en particular NullPointerException;
pero que no son revisados durante la compilacion.

$ java hello.HelloWorld
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
        at hello.HelloWorld.main(HelloWorld.java:66)

Nueva version:
---------------hello/HelloWorld.java
// "The use of the default package is discouraged.
package hello;

public class HelloWorld {
    // avoid using explicit string literals, declare constants instead
    private static final String _STR_HELLO = "Hello "; //$NON-NLS-1$

    // avoid using explicit string literals, declare constants instead
    private static final String _STR_USAGE = "Usage: java
hello.HelloWorld <your_name>"; //$NON-NLS-1$

    public static void main(String[] args) {
        if (args.length != 1) {
            System.err.println(_STR_USAGE);
            return;
        }
        System.out.println(_STR_HELLO + args[0]);
    }
}
--------------------------

Y que es eso de NON-NLS??? Ah claro, olvidaba la i18n....

---------- Ultima version, espero ------
package hello;

public class HelloWorld {
    private static final String _STR_HELLO =
Messages.getString("HelloWorld.HELLO"); //$NON-NLS-1$

    private static final String _STR_USAGE =
Messages.getString("HelloWorld.USAGE"); //$NON-NLS-1$

    public static void main(String[] args) {
        if (args.length != 1) {
            System.err.println(_STR_USAGE);
            return;
        }
        System.out.println(_STR_HELLO + args[0]);
    }

import java.util.MissingResourceException;
import java.util.ResourceBundle;

public class Messages {
    private static final String         BUNDLE_NAME     =
"hello.messages";                     //$NON-NLS-1$

    private static final ResourceBundle RESOURCE_BUNDLE =
ResourceBundle.getBundle(BUNDLE_NAME);

    private Messages() {
    }

    public static String getString(String key) {
        try {
            return RESOURCE_BUNDLE.getString(key);
        } catch (MissingResourceException e) {
            return '!' + key + '!';
        }
    }
}

---- messages.properties ----
HelloWorld.HELLO=Hello
HelloWorld.USAGE=Usage: java hello.HelloWorld <your_name>
-----------------------------------


Alguien en java llega a algo tan elaborado??? Y eso que ni siquiera
hemos llegado a J2EE....

Algun contraejemplo en otro lenguaje, anyone??? ;)


-- 
Aldrin Martoq
From [EMAIL PROTECTED]  Wed Dec  5 03:10:57 2007
From: [EMAIL PROTECTED] (Rodrigo Fuentealba)
Date: Wed Dec  5 03:20:06 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]>
Message-ID: <[EMAIL PROTECTED]>

El 5/12/07, Aldrin Gonzalo Martoq Ahumada <[EMAIL PROTECTED]> escribió:
> On Dec 4, 2007 2:30 PM, Franco Catrin L. <[EMAIL PROTECTED]> wrote:
> > 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] );
> >     }
> > }
>
> Sigue odiando Java por su mal llamada "elegancia" (==
> sobre-ingenieria). Escribo ese ejemplo en eclipse 3 europa, y ya tengo
> varios warnings. El programa final "profesional" queda asi:
>
> -------------------hello/HelloWorld.java-----
> // "The use of the default package is discouraged.
> package hello;
>
> public class HelloWorld {
>
>    // avoid using explicit string literals, declare constants instead
>    // BTW, por que esto no lo hace el compilador!
>    private static final String _STR_HELLO = "Hello "; //$NON-NLS-1$
>
>    public static void main(String[] args) {
>        System.out.println(_STR_HELLO + args[0]);
>    }
> }
> -------------------
>
> Oh perdon, el programa se cae por una (de las odiadas por mi)
> "RunTimeExceptions"; es decir, los errores _mas_ tipicos comunes por
> los cuales se caen los programas, en particular NullPointerException;
> pero que no son revisados durante la compilacion.
>
> $ java hello.HelloWorld
> Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
>        at hello.HelloWorld.main(HelloWorld.java:66)
>
> Nueva version:
> ---------------hello/HelloWorld.java
> // "The use of the default package is discouraged.
> package hello;
>
> public class HelloWorld {
>    // avoid using explicit string literals, declare constants instead
>    private static final String _STR_HELLO = "Hello "; //$NON-NLS-1$
>
>    // avoid using explicit string literals, declare constants instead
>    private static final String _STR_USAGE = "Usage: java
> hello.HelloWorld <your_name>"; //$NON-NLS-1$
>
>    public static void main(String[] args) {
>        if (args.length != 1) {
>            System.err.println(_STR_USAGE);
>            return;
>        }
>        System.out.println(_STR_HELLO + args[0]);
>    }
> }
> --------------------------
>
> Y que es eso de NON-NLS??? Ah claro, olvidaba la i18n....
>
> ---------- Ultima version, espero ------
> package hello;
>
> public class HelloWorld {
>    private static final String _STR_HELLO =
> Messages.getString("HelloWorld.HELLO"); //$NON-NLS-1$
>
>    private static final String _STR_USAGE =
> Messages.getString("HelloWorld.USAGE"); //$NON-NLS-1$
>
>    public static void main(String[] args) {
>        if (args.length != 1) {
>            System.err.println(_STR_USAGE);
>            return;
>        }
>        System.out.println(_STR_HELLO + args[0]);
>    }
>
> import java.util.MissingResourceException;
> import java.util.ResourceBundle;
>
> public class Messages {
>    private static final String         BUNDLE_NAME     =
> "hello.messages";                     //$NON-NLS-1$
>
>    private static final ResourceBundle RESOURCE_BUNDLE =
> ResourceBundle.getBundle(BUNDLE_NAME);
>
>    private Messages() {
>    }
>
>    public static String getString(String key) {
>        try {
>            return RESOURCE_BUNDLE.getString(key);
>        } catch (MissingResourceException e) {
>            return '!' + key + '!';
>        }
>    }
> }
>
> ---- messages.properties ----
> HelloWorld.HELLO=Hello
> HelloWorld.USAGE=Usage: java hello.HelloWorld <your_name>
> -----------------------------------
>
> Alguien en java llega a algo tan elaborado??? Y eso que ni siquiera
> hemos llegado a J2EE....
>
> Algun contraejemplo en otro lenguaje, anyone??? ;)

000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID.     HELLOWORLD.
000300
000400*
000500 ENVIRONMENT DIVISION.
000600 CONFIGURATION SECTION.
000700 SOURCE-COMPUTER. RM-COBOL.
000800 OBJECT-COMPUTER. RM-COBOL.
000900
001000 DATA DIVISION.
001100 FILE SECTION.
001200
100000 PROCEDURE DIVISION.
100100
100200 MAIN-LOGIC SECTION.
100300 BEGIN.
100400     DISPLAY " " LINE 1 POSITION 1 ERASE EOS.
100500     DISPLAY "Hello world!" LINE 15 POSITION 10.
100600     STOP RUN.
100700 MAIN-LOGIC-EXIT.
100800     EXIT.

Y eso que no pide tu nombre. (Sí, fue de picado...)

-- 
Rodrigo Fuentealba

Responder a