Rodrigo Fuentealba <[EMAIL PROTECTED]> wrote:
> 2007/12/4, rodrigo ahumada <[EMAIL PROTECTED]>:
> > Alvaro Herrera <[EMAIL PROTECTED]> dijo:
> > >rodrigo ahumada escribió:

> > >> > Ni tanto mas feo que la version C.
> > >>
> > >> Ambos leguajes pecan al final. Por que @#%^&[EMAIL PROTECTED] llaman 
> > >> "void" a un
> > >> procedimiento?

> ¿Porque no quieren devolver nada?

Para que quieres procedimientos?

> La idea (según lo que he leído) es que el pecado es hacer que la
> función main no devuelva nada (void main();), es mejor devolver el
> estado con el que terminó el programa (que si es totalmente correcto,
> es "return 0"). De esta manera, cuando los integras con otras
> aplicaciones, éstas son capaces de saber si el programa cumplió con su
> cometido.

No. El cuento es mas profundo.

El estandar de C permite implementar funciones de distinta forma segun lo
que retornen (obvio; p.ej. en i386 una funcion que retorna un double lo
retorna en un registro de punto flotante, si un int (o similar) en EAX, si
retorna un struct hace alguna brujeria a traves de un puntero; dependiendo
de la arquitectura usar mecanismos diferentes para "retorno algo" o "no
retorno nada" puede tener costos muy diferentes). A su vez, la "funcion"
main es interfaz con el ambiente en que se ejecuta el programa, que a su
vez puede tener un manejo radicalmente diferente a una funcion normal.
/Generalmente/ main se implementa igual que una funcion (y la brujeria de
conectarla con el ambiente (armarle argc, argv a lo C; obtener el valor
retornado y darlo como "resultado exito/fracaso") se hace "fuera"), y
/muchas implementaciones/ no hacen diferencia especial entre "retorna int"
y "no retorna nada".
-- 
Dr. Horst H. von Brand                   User #22616 counter.li.org
Departamento de Informatica                    Fono: +56 32 2654431
Universidad Tecnica Federico Santa Maria             +56 32 2654239
Casilla 110-V, Valparaiso, Chile               Fax:  +56 32 2797513
From [EMAIL PROTECTED]  Wed Dec  5 20:03:15 2007
From: [EMAIL PROTECTED] (Horst H. von Brand)
Date: Wed Dec  5 20:06:09 2007
Subject: =?iso-8859-1?q?Re=3A_Predominancia_de_C_=5BWas=3A_Re=3A_Re=3A?=
        =?iso-8859-1?q?_Re=3A_Re=3A_Benchmarking_en_distintos_lenguajes_?=
        =?iso-8859-1?q?=5B_Era_algo_as=ED_como_cliente_en_jabber=2E=2E=2E_?=
        =?iso-8859-1?q?=5D=5D?=
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]>

Patricio Morales <[EMAIL PROTECTED]> wrote:
> El día 4/12/07, Horst H. von Brand <[EMAIL PROTECTED]> escribió:
> > Patricio Morales <[EMAIL PROTECTED]> wrote:

[...]

> > Como que "obvio"? Hubo/hay muchos otros lenguajes, una buena coleccion de
> > sistemas operativos cada uno con su propio lenguaje "tradicional": VMS con
> > Bliss; OS/370 con su assembler, FORTRAN, COBOL y PL/1; hubo sistemas
> > interesantes escritos en LISP, Oberon, Modula II; los hay hechos en C++ e
> > incluso Java.

> > Hace no tanto, con lo que se podia contar en cualquier computador era una
> > implementacion competente de FORTRAN 60, y pocazo mas. Por algo cosas tan
> > divertidas como Ratfor...

> ¿Los proyectos de SourceForge  en que lenguaje están escritos
> principalmente?(puede que algunos estén escritos en C++)

Hoy dia los sistemas tipicos son Unixisticos ==> C o C++.

> ¿Los fuentes para una tarjeta de red por ejemplo  en Linux,en que lenguaje
> estan escritos?

El nucleo esta hecho en C, escribir un driver en Perl seria bastante
divertido...

> ¿Cual es lenguaje históricamente preferido por los "Hackers" gringos?

LISP

> ¿En que lenguage  escribió Richard Stallman principalmente su editor de
> textos GNU/emacs (bueno cabe decir que uso LISP pero sólo para las
> extensiones)?

LISP

> ¿Que lenguaje se ha usado para crrear  compiladores de otros lenguajes?

De todo... desde un compilador BASIC escrito en BASIC hasta un assembler
escrito en COBOL, pasando por preprocesadores Ratfor (+/- similar a C) en
FORTRAN 66. Y uno de los criterios para un nuevo lenguaje es "que cosa que
no sea su compilador se ha escrito en el?"

> No que da más que decir :C la lleva,debido a que es un lenguaje de alto
> nivel ,pero que permite trabajar lo mas cercano posible al nivel de la
> máquina el amplio manejo de las entradas y salidas,los tipos de datos con
> los que se puede trabajar,es algo que difícilmente se puede ver en otros
> lenguajes.

Exacto. Y C es (casi) un subconjunto de C++

> En cuanto al C++  de Stroustrup ,una vez leí por ahí ,una  entrevista que le
> hicieron al creador de este lenguaje,y en donde le consultaron el motivo de
> por que había creado el lenguaje.Tuvieron que dejar hasta ahí la entrevista
> ,dado que supuestamente Stroustrup habría confesado que solo había creado
> este lenguaje por motivos económicos,y que las  propiedades de herencia
> ,polimorfismo,no justificaban la generación en muchos casos de enormes
> tamaños,que podrían tener un tamaño óptimo si hubieran sido escritos en
> C...en definitiva ,habría creado el lenguaje sólo para darles trabajo a los
> programadores.

Creo C++ para escribir simulaciones en forma distribuida, inicialmente como
"C con clases".

Motivos economicos? Trabajaba en Bell Labs, donde su trabajo (literalmente)
consistia en hacer lo que le diera la gana.

Herencia, polimorfismo? /Muy/ utiles, si sabes como sacarles provecho (casi
nadie sabe!)

Ejecutables de enorme taman~o en C++? Programador criminalmente
incompetente, las mas de las veces.
-- 
Dr. Horst H. von Brand                   User #22616 counter.li.org
Departamento de Informatica                    Fono: +56 32 2654431
Universidad Tecnica Federico Santa Maria             +56 32 2654239
Casilla 110-V, Valparaiso, Chile               Fax:  +56 32 2797513
From [EMAIL PROTECTED]  Wed Dec  5 19:39:25 2007
From: [EMAIL PROTECTED] (Horst H. von Brand)
Date: Wed Dec  5 20:27:56 2007
Subject: =?iso-8859-1?q?Re=3A_Benchmarking_en_distintos_lenguajes_=5B_?=
        =?iso-8859-1?q?Era_algo_as=ED_como_cliente_en_jabber=2E=2E=2E_=5D?=
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]>

Pedro GM <[EMAIL PROTECTED]> wrote:
> Franco Catrin L. escribió:
> > "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 código de Java (o
> > C#) no es muy diferente al de C  [1]

> En mi experiencia personal el Hola mundo, tanto de JAVA como C son
> problematicos por que al novato que esta aprendiendo lo deja con
> muchas interrogantes o si se le explica desde el principio es confuso.

Respecto de C, exactamente que interrogantes quedan? Que explicacion
inicial es confusa?

> >>  OOP es para problemas
> >> /muy/ grandes, en otras cosas es un perfecto desperdicio. Y como el
> >> mechon
> >> promedio escribe programas de una a dos docenas de lineas, no uno o dos
> >> centenares de miles de lineas, ...

> ...  Al final
> > igual aprendí C pero no me convence de que sea buena idea utilizarlo
> > para enseñar (idem para Pascal y sus "tongos").

> Python ha tenido buen avance en esta area, su sintaxis simple aporta
> bastante a la hora de aprender.

Asi es, aunque la idea de "espacios indican anidamiento" es la idea mas
idiota nunca inventada para un lenguaje.

> Pero siempre veo que le sacan probecho a C cuando se enseñan conceptos
> basicos de estructuras de datos y ahi suelen darse los problemas
> anteriormente mencionados....

Cuales, exactamente?
-- 
Dr. Horst H. von Brand                   User #22616 counter.li.org
Departamento de Informatica                    Fono: +56 32 2654431
Universidad Tecnica Federico Santa Maria             +56 32 2654239
Casilla 110-V, Valparaiso, Chile               Fax:  +56 32 2797513
From [EMAIL PROTECTED]  Wed Dec  5 20:40:28 2007
From: [EMAIL PROTECTED] (Horst H. von Brand)
Date: Wed Dec  5 20:43:20 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]>
        <[EMAIL PROTECTED]>
Message-ID: <[EMAIL PROTECTED]>

Franco Catrin L. <[EMAIL PROTECTED]> wrote:
> "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 que es eso de andar sumando strings?

> Y en C quedaria como:
> 
> #include <stdio.h>
> 
> main(int argc, char *argv[])
> {
>       printf("Hello, %f\n", argv[1]);
                       ^^
                       %s, en todo caso
> 
>       return 0;
> }

> Que es eso del argc? y el "*" ?

Y el %s, etc.

> Ya no es tan elegante ;)

No. Pero no es tanto peor que el original.

> >> 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.

Mi mas sentido pesame. Aprender asi puede tener efectos duraderos.

> "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.

Y que tiene de no-entendible K&R? Mi problema es al reves, hace verse
trivial cosas complejas...
-- 
Dr. Horst H. von Brand                   User #22616 counter.li.org
Departamento de Informatica                    Fono: +56 32 2654431
Universidad Tecnica Federico Santa Maria             +56 32 2654239
Casilla 110-V, Valparaiso, Chile               Fax:  +56 32 2797513
From [EMAIL PROTECTED]  Wed Dec  5 21:51:56 2007
From: [EMAIL PROTECTED] (Leonardo Soto M.)
Date: Wed Dec  5 21:54:50 2007
Subject: =?utf-8?q?Re=3A_Re=3A_Re=3A_Re=3A_Benchmarking_en_distintos_leng?=
        =?utf-8?q?uajes_=5B_Era_algo_as=C3=AD_como_cliente_en_jabber=2E=2E?=
        =?utf-8?b?LiBd?=
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 5, 2007 5:54 PM, Horst H. von Brand <[EMAIL PROTECTED]> wrote:
> Aldrin Gonzalo Martoq Ahumada <[EMAIL PROTECTED]> wrote:

[...]

> > 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").
>
> Nopes. El procesador es /mucho/ mas rapido que la memoria hoy dia (por algo
> el cuento de hyperthreading, dual-core, procesadores celulares, ...). En
> parte por esa razon guatearon los RISC, y las arquitecturas nuevas son
> CISC: Claro, procesar instrucciones simples es mas rapido, pero el codigo
> es muchisimo menos denso (todas las instrucciones son "grandes", para hacer
> alguna operacion un poquitin mas compleja es media docena de instrucciones;
> lo mismo en CISC puede ser una sola, incluso de un solo byte); con el
> resultado que lo que se gana en el procesador se pierde con creces en mover
> instrucciones desde la memoria.

Aún así, el decoding de una instrucción en x86 (y x86-64) es caro. Por
esto en los últimos procesadores de esta arquitectura se está
almacenando en la caché de instrucciones el "microcode" en lugar de
las instrucciones originales.

-- 
Leo Soto M.
http://blog.leosoto.com

Responder a