Benchmarking en distintos lenguajes

Franco Catrin L. fcatrin en tuxpan.com
Mar Dic 4 14:30:33 CLST 2007


"Horst H. von Brand" <vonbrand en inf.utfsm.cl> ha escrito:
> Franco Catrin L. <fcatrin en tuxpan.com> wrote:
>> "Horst H. von Brand" <vonbrand en inf.utfsm.cl> 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.




Más información sobre la lista de distribución Linux