Re: Re: Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-12-09 Por tema Patricio Morales
El día 2/12/07, Mauro A. Morales M. [EMAIL PROTECTED] escribió:

   Hace un par de meses vi un manual medio ochentero de Turbo Prolog que
   claramente estaba pensado para desarrollar aplicaciones de negocios.



Sistema experto ? Base de conocimiento ?

   No recuerdo haber visto nada relacionado con bases de datos, pero sí
   explicaban cómo crear interfaces gráficas con ventanitas y todo.  No
   se veía tan marciano como uno podría pensar; después de todo, las
   reglas de inferencia de Prolog no son tan diferentes de las funciones
   de otros lenguajes.

 Quizas para los inputs ?.

  
   A mi me tocó ver una versión de Prolog para MacOs,junto con el famoso
  programa ELIZA
  hecho con PROLOG el cual simulaba el dialogo con un psiquiatra.Vi el
 código
  fuente de este programa
  y la sintaxís y forma de programación ,realmente me sonaban a
  mandarín:totalmente distinto a lo que
  había visto en los lenguajes de  programación estructurada.

 Estas meando fuera del tiesto. El proposito de PROLOG no es un sistema
 de informacion tradicional.


Lee bien :jamas dije que PROLOG fuera un lenguaje diseñado para sistema de
Información
Tradicional.

Saludos.

Patricio Morales Fariña
Técnico en Computación
Alumno Ing. Informática (Técnicos Vespertino)
Universidad de los Lagos
045-219291- Temuco Chile
cel 78732062-
From [EMAIL PROTECTED]  Sun Dec  9 21:28:29 2007
From: [EMAIL PROTECTED] (Alvaro Herrera)
Date: Sun Dec  9 21:31:39 2007
Subject: Ocultar Passwords a produccion.
In-Reply-To: [EMAIL PROTECTED]
References: [EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
Message-ID: [EMAIL PROTECTED]

Horst H. von Brand escribió:
 Asdtaker [EMAIL PROTECTED] wrote:
  On Dec 5, 2007 2:10 PM, Alvaro Herrera [EMAIL PROTECTED] wrote:

   Las passwords necesariamente deben estar en un archivo en alguna parte.
 
  Ok, I agree.
 
 Nope. Revisa p.ej. como funciona /etc/passwd + /etc/shadow, y porque usan
 un hash criptografico.

Humm, pero el tema es donde almacenar las passwords _en el cliente_.
Dado que las necesita en un formato que sea util para darselas al
mecanismo de autentificacion, deben estar en claro, no cifradas.
/etc/{shadow,passwd} son del sistema de almacenamiento de passwords en
el _servidor_.

-- 
Alvaro Herrera http://www.amazon.com/gp/registry/DXLWNGRJD34J
El sabio habla porque tiene algo que decir;
el tonto, porque tiene que decir algo (Platon).
From [EMAIL PROTECTED]  Sun Dec  9 23:37:46 2007
From: [EMAIL PROTECTED] (Collao Castro)
Date: Mon Dec 10 00:39:28 2007
Subject: emular Sun Solaris en Ubuntu
In-Reply-To: [EMAIL PROTECTED]
Message-ID: [EMAIL PROTECTED]

La experiencia mia es con vmware usando centos y emulando un solaris 8 y 9.
No tuve problemas con nada. Lo he usado hasta en producción para parchar o
salir del paso y funciona muy bién.

Ahora, otra cosa es correr una máquina Sparc con Solaris, pero entiendo tu
situación.

Saludos.

Atte.

Juan Collao Salas
Ingeniero Ejecución Informático.

-Mensaje original-
De: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] nombre de Carlos Molina
Enviado el: viernes, 07 de diciembre de 2007 17:44
Para: linux@listas.inf.utfsm.cl
Asunto: emular Sun Solaris en Ubuntu


hace poco instale ubuntu en un pc con la intensiòn de recuperar
algunas aplicaciones que poseia en un viejo SUN.
alguno de los honorables, conoce algun emulador para esta plataforma
que corra en ubuntu?
segun san google QEMU, es una alternativa, pero me gustarìa saber de
experiencias al respecto.

desde ya, gracias.

--
Carlos Molina
Ingeniero en Informática.



Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-12-07 Por tema Mauro A. Morales M.
On Sun, 2007-12-02 at 23:07 -0300, Patricio Morales wrote:
 El día 2/12/07, Roberto Bonvallet [EMAIL PROTECTED] escribió:
 
 
  Hace un par de meses vi un manual medio ochentero de Turbo Prolog que
  claramente estaba pensado para desarrollar aplicaciones de negocios.

Sistema experto ? Base de conocimiento ?

  No recuerdo haber visto nada relacionado con bases de datos, pero sí
  explicaban cómo crear interfaces gráficas con ventanitas y todo.  No
  se veía tan marciano como uno podría pensar; después de todo, las
  reglas de inferencia de Prolog no son tan diferentes de las funciones
  de otros lenguajes.

Quizas para los inputs ?.

 
  A mi me tocó ver una versión de Prolog para MacOs,junto con el famoso
 programa ELIZA
 hecho con PROLOG el cual simulaba el dialogo con un psiquiatra.Vi el código
 fuente de este programa
 y la sintaxís y forma de programación ,realmente me sonaban a
 mandarín:totalmente distinto a lo que
 había visto en los lenguajes de  programación estructurada.

Estas meando fuera del tiesto. El proposito de PROLOG no es un sistema
de informacion tradicional.

Saludos,

-- Mauro



Re: Re: Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-12-06 Por tema Rodrigo Fuentealba
El 5/12/07, Horst H. von Brand [EMAIL PROTECTED] escribió:
 rodrigo ahumada [EMAIL PROTECTED] wrote:
  Rodrigo Fuentealba [EMAIL PROTECTED] dijo:
   rodrigo ahumada escribió:

 [...]

  No. Todo son funciones; las funciones pueden devolver un tipo de dato
  cualquiera, aunque éste sea void (nada).
  Te recomendaría algo denso relacionado con C, pero por esta clase de
  errores, ve al Aprenda C como si estuviera en Primero.

  ¿cuáles errores? ¿el no comulgar con el dogma C?


El opinar sobre un lenguaje del cual pones en evidencia que
desconoces. No digo que yo sea el gran experto. Quizás si lo
estudiaste alguna vez, deberías reclamar para que te devuelvan la
plata.

 Si no sabes C, no tienes derecho a opinar.

 [...]

  De hecho, lo que generalmente en orientación a objetos en PHP 5 se le
  llama métodos también se declara como function; es la forma del
  lenguaje de denominarla, nada más que eso.

  eso muestra que el primer lenguaje que aprendieron los creadores de PHP
  probablemente fue C.

No. De hecho, PHP nunca estuvo pensado para ser un lenguaje como lo es
ahora. Inicialmente PHP significaba Personal Home Page y era un
template manager escrito en Perl, algo más completo que lo que hace
ahora Smarty.

 En C no hay metodos. Tampoco en C++. Es terminologia propia de Smalltalk
 (donde significa algo /bien/ diferente).

Eso se llama Impronta, y explica harto este tipo de
  discusiones de que cual lenguaje es mas santo

Depende de tus parámetros de santidad.

PHP es un engendro difícil porque es más fácil de que mil monos
codificando durante mil años hagan algo que funcione en PHP; pero yo
lo uso mucho porque es un lenguaje que sirve para mi pega. Y con esto,
por mucho que me acomode, no puedo decir que es santo.
.
 Bueno, si es por eso el lenguaje mas santo para mi debiera ser FORTRAN 66
 (o algo anterior)... no es tan simple.

( OT: por aquí dijeron que el lenguaje más santo era el en SAN
Blador... creo que es hora de quitarles las bebidas alcohólicas a los
muchachos :/ ).

-- 
Rodrigo Fuentealba Cartes


Re: Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-12-05 Por tema rodrigo ahumada


- Mensaje original 
De: Rodrigo Fuentealba [EMAIL PROTECTED]
 Para: Discusion de Linux en Castellano linux@listas.inf.utfsm.cl
 Enviado: martes 4 de diciembre de 2007, 18:47:27
 Asunto: Re: Benchmarking en distintos lenguajes [ Era algo así como
 cliente en  jabber... ]

 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?

pero es un procedimiento, ni si quiera se debe pensar en devolver...

  Hmm, los procedimientos no existen, solo existen las funciones que
 no
  retornan ningun valor ;-)

 ¿que no era al revés?

 las funciones no existen, todos son procedimientos, solo que algunos
 dejan valores en registros del CPU, o en la RAM, o en ambos...

No. Todo son funciones; las funciones pueden devolver un tipo de dato
cualquiera, aunque éste sea void (nada).
Te recomendaría algo denso relacionado con C, pero por esta clase de
errores, ve al Aprenda C como si estuviera en Primero.

¿cuáles errores? ¿el no comulgar con el dogma C? 

 por algo en algunos ensambladores existe la palabra PROC y no FUNC...

Porque no estamos hablando de ensambladores, sino del lenguaje C, me
imagino que entiendes la diferencia, ¿verdad?

en realidad no se está hablando de eso, se está hablando de cuál los dos 
lenguajes (C o java) presenta menos cosas incomprensbles a un novato, supongo 
que leíste los correos anteriores...

De hecho, lo que generalmente en orientación a objetos en PHP 5 se le
llama métodos también se declara como function; es la forma del
lenguaje de denominarla, nada más que eso.

eso muestra que el primer lenguaje que aprendieron los creadores de PHP 
probablemente fue C.
Eso se llama Impronta, y explica harto este tipo de discusiones de que cual 
lenguaje es mas santo.







  Tarjeta de crédito Yahoo! de Banco Supervielle.
Solicitá tu nueva Tarjeta de crédito. De tu PC directo a tu casa. 
www.tuprimeratarjeta.com.ar 


Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-12-05 Por tema Franco Catrin L.

El mié, 05-12-2007 a las 01:06 -0300, Aldrin Gonzalo Martoq Ahumada
escribió:
 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).

Dudo que se gane mucho ya que esa traduccion se ejecuta una sola vez,
antes de ejecutar un bloque.  En una aplicación por ejemplo no es lento
ejecutar una sección secuencial de código ( O(1)) comparado con lo que
significa ejecutar un ciclo (O(n)).  En este ultimo caso, el paso de
traduccion simplemente lo convierte en O(n+1), y si tenemos casos como
O(n^2) se transforma simplemente en O(n^2 + 2)

Respecto a la compilacion, la diferencia entre compilar un programa en C
y ejecutar bytecode (Java, C#) es que el programa compilado en C queda
en un archivo estático (offline como dices), y eso impide que se puedan
hacer optimizaciones en tiempo de ejecucion.

En Mono se puede indicar el flag -aot (ahead of time) para que los
no-creyentes tengan un archivo estatico para ejecutar.

Las diferencias van por otro lado, el paper que envió Daniel Serpell es
muy iluminador, aunque aun no lo he terminado de analizar por completo.


-- 
Franco Catrin L.  TUXPAN Software S.A.
http://www.tuxpan.com/fcatrin 


Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-12-05 Por tema Marcos Ramirez

On Tue, 2007-12-04 at 23:18 -0300, Patricio Morales wrote:
 
   Ambos leguajes pecan al final. Por que @#%^[EMAIL PROTECTED] llaman 
   void a un
  procedimiento?
 
  void no es el nombre del procedimiento, sino lo que entrega y -como
  que no es obvio?!?- un procedimiento devuelve nada, si devolviera
  algo, seria una funcion.
 
  pecado? nah! belleza de las mas sublime!
 
 
 Correción: En C no manejas procedimentos como en Pascal,pero puedes hacer
 que una función se comporte como un procedimiento,vale decir que no devuelva
 nada.

Correccion: En Pascal existen procedimientos y funciones, en C sólo
existen funciones; pero puedes hacer que una funcion en C se comporte
como un procedimiento en Pascal haciendo que devuelva void, vale
decir, devuelva nada.

Saludos
-- 
Marcos Ramirez [EMAIL PROTECTED]




Re: Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-12-05 Por tema Horst H. von Brand
rodrigo ahumada [EMAIL PROTECTED] wrote:
 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?
 
  Hmm, los procedimientos no existen, solo existen las funciones que no
  retornan ningun valor ;-)

 ¿que no era al revés? 

 las funciones no existen, todos son procedimientos, solo que algunos
 dejan valores en registros del CPU, o en la RAM, o en ambos...  por algo
 en algunos ensambladores existe la palabra PROC y no FUNC...

Eso es un detalle de la arquitectura en la que tradicionalmente implementan
C, no una caracteristica propia de C.
-- 
Dr. Horst H. von Brand   User #22616 counter.li.org
Departamento de InformaticaFono: +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 17:51:12 2007
From: [EMAIL PROTECTED] (Enrique Herrera Noya)
Date: Wed Dec  5 18:15:43 2007
Subject: : Ocultar Passwords a produccion.
In-Reply-To: [EMAIL PROTECTED]
Message-ID: [EMAIL PROTECTED]


Estimados, mi ultima consulta aqui fue respecto de un cliente para jabber (y
ya vieron lo que ocurrio (y esta ocurriendo)). Finalmente, se opto por
openfire y spark como cliente, lejos las discusiones respecto a la
performance del modelo, ya esta implementado y camina /de pelos/. Gracias a
todos lo que dieron sus opiniones.

Esta vez, los molesto con otra cosa que me aflije. Tengo algunos servicios
con db (mysql, db2, sql server) y existe un gran cuestionamiento: ¿como
escondo las password (y usuarios) de las db a los programas y usuarios?. Es
decir, pe. al configurar el acceso a mysql para un servicio web (LAMP),

definiendo funcion conectar 
y eso que utilice quien programe (suponiendo php)
y lo dejas en un directorio paralelo al del sitio y accediendo al php via  alias

algo asi:

/wuebs/coneccion/conecta.php
/wuebs/sitio/config.php

en config.php tienes 
require (dominio/conecto/conecta.php)

y en apache tienes
Alias /conecto/ /wuebs/coneccion



necesariamente debo configurar en un file la passwordm user y database que
utilizare. Otro problema, y mas grande aun, en cuando tenemos aplicaciones
cliente-servidor, con archivos de configuracion en cada cliente, o bien (en
el caso sql server) odbc, en ese caso no existe manera de encriptar las
password, y al menos debe conocerla el desarrollador/analista de la
aplicacion y configurarla (digitarla) bien en el codigo (ejecutable) o en un
archivo de configuracion. Mi problema es que necesito que estas password no
sean conocidas por nadie, ni siquiera el admin del sistema (password
bipartida) y el dia de mañana poder cambiarlas de manera transparente para
los usuarios.

He hecho monos, tirado lineas y buscado en san google, pero ando medio
perdido. Espero me puedan orientar.

Mis ideas me llevan a pensar que debe haber /algo/ en medio que permita la
autenticacion, es decir:

SERVER(user, pass):**ALGO**:CLIENTE(user, _clave_)

donde clave, es una llave, un id de instalacion, la ip de mi LAN, el usuario
de dominio, etc.

De antemano, muchisimas gracias.

-- 
Saludos, LSM.
Existen 10 tipos de personas:
los que entienden binarios y los que no



Re: Re: Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-12-04 Por tema Roberto Bonvallet
El 30/11/07, Patricio Morales [EMAIL PROTECTED] escribió:
 Con lo que discrepo que exista mayor cantidad
 de código para FORTRAN que para Pascal.

Los científicos y matemáticos ocupan harto código en Fortran.  Supongo
que gran parte es código implementado cuando Fortran era el único
lenguaje disponible, y que nadie se dio la lata de reimplementar
porque el rendimiento era excelente.  Ver
http://en.wikipedia.org/wiki/Fortran#The_legacy_of_FORTRAN

Un amigo físico me pidió que lo ayudara a instalar unas extensiones
para Mathematica.  Justo cuando le estaba comentando que me parecía
bien que por fin los científicos estaban usando lenguajes de alto
nivel, el instalador me reclamó que no estaba instalado el compilador
de Fortran :)  La biblioteca estaba implementada en Fortran y se podía
enlazar desde Mathematica o C++.  Y me imagino que hay muchas más
aplicaciones cuyas funciones críticas están implementadas en Fortran,
aunque eso sea invisible para uno.

Saludos,
-- 
Roberto Bonvallet


Re: Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-12-04 Por tema Pedro GM
Horst H. von Brand escribió:
 
  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, ...
 
 El problema posterior es exorcisarlo para que pueda aplicar OOP y sea
 capaz de abordar aplicaciones reales.
 
 Y? Acaso con hacerlo escribir una funcion en una clase que lee 3 numeros y
 escribe la suma sabe OOP?
 

Lo que muchos se la creen...

 Tengo una opinion muy humilde
 y personal y es que la cantidad de desastres que se ven en OOP son porque
 a la hora de tener que usarlo, el personaje en cuestion tiene poca
 experiencia en OOP
 
 No tiene la menor idea de que se trata suele ser mas cercano a la
 verdad...
 
debido a su deformacion profesional y no es capaz de
 reconocer cuando esta cayendo en cosas como over-design/engineering.
 
 En eso cae todo mal profesional. Y, lamentablemente, la inmensa mayoria de
 los programadores debieran dedicarse a plantar papas, asi resultarian mas
 productivos para la sociedad.
 

Triste pero cierto...

  Si
 los niños aprendieran desde mechones que la mejor solución no es
 necesariamente la que se le ocurrió, y que existen patrones de diseño
 requetecontraprobados las cosas serían muy distintas.
 
 Metele en la cabezota a un mechon (o no tanto...) que lo que intenta hacer
 esta requete-recontra-hecho... metele en la cabeza al profe correspondiente
 que la gente no /escribe/ programas, /modifica/ programas, o debe trabajar
 /en el estilo/ o /con lo que trae/ el ambiente en que trabaja...
 

Ese es una de las discusiones que siempre encuentro 

En realidad la enseñanza de la programacion deberia aplicarse en ese 
sentido, uno en realidad haciendo un software a medida se toma mucho 
tiempo en I+D y la reusabilidad tiende a cero. ademas de las enormes 
pifias que puede contener ese codigo...

IMHO creo que el enfoque deberia ir por motivar a los alumnos a 
integrarse a un proyecto y ahi IN SITU aprender como es una buena 
programacion, y como es mas beneficioso tanto en conocimiento, seguridad 
y productividad el utilizar lo que otros (muchos muchos) han probado y 
archiprobado que es efectivo y eficiente y de ahi recien empezar los 
efuerzos para Ampliar o Reutilizar parte del codigo conocido para algun 
fin especifico.




 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.

Muy interesante referencia, gracias.

-- 
.:: Pedro:G:M ::.
Linux User #397462
From [EMAIL PROTECTED]  Tue Dec  4 15:35:20 2007
From: [EMAIL PROTECTED] (Leonardo Soto M.)
Date: Tue Dec  4 15:38:17 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:

[...]

 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.

Pero tuvieron la mala idea de permitir referencias nulas por todos
lados, por lo que en la práctica igual se da una mezcolanza de
referencias buenas y referencias nulas. Y se pierden horas por que
algún pastel devolvió un null donde no debía...

 O es o no es, y el programador
 tiene que ser muy explicito cuando quiera que eso que es, deje de
 serlo.  (boxing/unboxing).

Los amigos de Sun no encontraron tan cool esta parte, y ahora (Java
1.5+) el boxing/unboxing lo hace el compilador de forma implícita, por
lo que todas estas cosas son válidas

 int i = new Integer(8);
 Integer i = 8;
 map.put(foo, 8);
 int j = map.get(foo);

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


Re: Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-12-04 Por tema rodrigo ahumada


- Mensaje original 
De: Horst H. von Brand [EMAIL PROTECTED]
Para: Discusion de Linux en Castellano linux@listas.inf.utfsm.cl; Franco 
Catrin L. [EMAIL PROTECTED]
Enviado: martes 4 de diciembre de 2007, 13:24:12
Asunto: Re: Benchmarking en distintos lenguajes [ Era algo así como cliente en  
jabber... ]

[...]

 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.

 Elegante. Clasico. ;-)

 Ni tanto mas feo que la version C.


Ambos leguajes pecan al final. Por que @#%^[EMAIL PROTECTED] llaman void a 
un procedimiento?
 






  Tarjeta de crédito Yahoo! de Banco Supervielle.
Solicitá tu nueva Tarjeta de crédito. De tu PC directo a tu casa. 
www.tuprimeratarjeta.com.ar 


Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-12-04 Por tema Matias Valdenegro T.
El Martes 04 Diciembre 2007, Franco Catrin L. escribió:
 En lenguajes como C# o Java simplemente se usa la
 politica de todo es referencia salvo los tipos básicos.

En C# las clases son tipos por referencia, las Estructuras tipos por valor. 
Porque? Eficiencia :B


Re: Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-12-04 Por tema rodrigo ahumada


- Mensaje original 
De: Alvaro Herrera [EMAIL PROTECTED]
Para: Discusion de Linux en Castellano linux@listas.inf.utfsm.cl
Enviado: martes 4 de diciembre de 2007, 18:47:27
Asunto: Re: Benchmarking en distintos lenguajes [ Era algo así como cliente en  
jabber... ]

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?

 Hmm, los procedimientos no existen, solo existen las funciones que no
 retornan ningun valor ;-)

¿que no era al revés? 

las funciones no existen, todos son procedimientos, solo que algunos dejan 
valores en registros del CPU, o en la RAM, o en ambos...
por algo en algunos ensambladores existe la palabra PROC y no FUNC...


 




  Tarjeta de crédito Yahoo! de Banco Supervielle.
Solicitá tu nueva Tarjeta de crédito. De tu PC directo a tu casa. 
www.tuprimeratarjeta.com.ar 


Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-12-02 Por tema Daniel Serpell
Hola!

El Fri, Nov 30, 2007 at 07:41:10PM -0300, Alvaro Herrera escribio:
 Daniel Serpell escribió:
 
  Un ejemplo, en C++ actual:
  
   // Define caso X^N arbitrario
   template int X, int N class pow {
public: static int value(){ return powX,N-1::value() * X; } };
  
   // Define caso X^1
   template int X class powX,1 {
public: static int value(){ return X;} };
  
  Eso define una función pow, que luego se utiliza así:
  
   k = pow10,7::value();
  
  La gracia es que se le explica al compilador cómo realizar el cálculo,
  el que se realiza en tiempo de compilación y no de ejecución.
 
 Huh, no entiendo.  Que pasa si obtienes N desde el usuario?  Obviamente
 no puedes hacerlo en tiempo de compilacion ...

No, no puedes, y el compilador indicará un error. Es esa una de las
limitaciones extrañas que hacen difícil C++ :-), el compilador debe
demostrar en tiempo de compilación que N es constante.

Claro, para los que defienden esto, indican que es mejor ya que el
programador sabe si el código va a ser óptimo o no.

   Daniel.


Re: Re: Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-12-02 Por tema Patricio Morales

 No, yo me refiero a aplicaciones, ya que herramientas de desarrollo
 siempre van a haber, por ultimo un compilador/interprete a secas.

 Por ejemplo si voy a una empresa de servicios, voy a encontrar
 aplicaciones en Pascal corriendo allá?? o en la banca, retail, etc.


Por supuesto que no,ya que Pascal a secas es un lenguaje destinado a la
enseñanza de la Programación.Pero si hay empresas pequeñas que tienen sus
sistemas desarrollados en Delphi
que es el sucesor de Pascal para Windows.Por ejemplo acá en la novena
región,Espex Ingeniería
tiene su sistema comercial desarrollado en Delphi con Interbase como Base de
Datos.

Saludos.



-- 
Patricio Morales Fariña
Técnico en Computación
Alumno Ing. Informática (Técnicos Vespertino)
Universidad de los Lagos
045-219291- Temuco Chile
cel 78732062-
From [EMAIL PROTECTED]  Sun Dec  2 15:06:05 2007
From: [EMAIL PROTECTED] (Patricio Morales)
Date: Sun Dec  2 15:08:57 2007
Subject: =?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?=
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 día 2/12/07, Patricio Morales [EMAIL PROTECTED] escribió:



  No, yo me refiero a aplicaciones, ya que herramientas de desarrollo
  siempre van a haber, por ultimo un compilador/interprete a secas.
 
  Por ejemplo si voy a una empresa de servicios, voy a encontrar
  aplicaciones en Pascal corriendo allá?? o en la banca, retail, etc.



Solo como un agregado: Puedes escoger la herramienta que mejor estimes
conveniente
y esta puede ser cualquiera que te dé la posibilidad de conexión a un motor
de Datos
(Oracle,Sybase,Interbase,Db2,Postgresql,etc).Pero donde radica toda la
potencia para que tu Sistema
realice procesos complejos y de gran demanda es en este último Item donde
puedes manejar procedimientos almacenados,triggers dede el motor de Datos y
donde el software sólo se encarga de hacer las llamadas correspondientes a
estos procedimientos,y donde Oracle lleva
las de ganar  .Eso si ,se deben obviamente considerar las posibilidades
económicas de la Empresa
donde se desarrollará el Sistema ,ya que no cualquier Empresa se puede dar
el lujo de gastar
US$3 en una licencia de Oracle.
En resumen ,el Software es una cáscara,donde esta la potencia es en el Motor
de Base de Datos.

Saludos.

-- 
Patricio Morales Fariña
Técnico en Computación
Alumno Ing. Informática (Técnicos Vespertino)
Universidad de los Lagos
045-219291- Temuco Chile
cel 78732062-
From [EMAIL PROTECTED]  Sun Dec  2 15:27:00 2007
From: [EMAIL PROTECTED] (Patricio Morales)
Date: Sun Dec  2 15:29:52 2007
Subject: =?iso-8859-1?q?Re=3A_Benchmarking_en_distintos_lenguajes_=5B_Era?=
=?iso-8859-1?q?_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]
Message-ID: [EMAIL PROTECTED]

2007/11/29, Rodrigo Fuentealba [EMAIL PROTECTED]:

 2007/11/29, Franco Catrin L. [EMAIL PROTECTED]:

 Medio difícil de hacer los clásicos listados impresos en 80 líneas
 como en COBOL no más, pero se ve entrete -!
 Yo no soy tan viejito, lo más oldie que programé fue Cobol...


Programar en COBOL  es un cacho(aún hay programadores en Cobol,y uno de
ellos es
un compañero de carrera,que trabaja para una empresa de Distribución
Electrica).Me acuerdo
que cuando estudié Técnico en Programación,hacer un Simple Menú en RM
COBOL85 para DOS
me demoraba casi dos horas,en comparación con los 15 o 20 minutos que me
demoraba
en hacerlo en Pascal.Y todo el tiempo que me demoraba,era gastado en:digitar
los enormes listados de los programas, corregir los errores que arrojaba el
interprete,y en adivinar porqué arrojaba error de compilación.Eso si deben
ser muy contados los programadores en Cobol,y relativamente muy bien
cotizados
por las Empresas que requieren de sus servicios.

Saludos.




-- 
Patricio Morales Fariña
Técnico en Computación
Alumno Ing. Informática (Técnicos Vespertino)
Universidad de los Lagos
045-219291- Temuco Chile
cel 78732062-
From [EMAIL PROTECTED]  Sun Dec  2 17:07:03 2007
From: [EMAIL PROTECTED] (Aldrin Gonzalo Martoq Ahumada)
Date: Sun Dec  2 17:16:21 2007
Subject: =?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?=
In-Reply-To: [EMAIL PROTECTED]
References: [EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL 

Re: Re: Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-12-02 Por tema Patricio Morales
El día 2/12/07, Franco Catrin L. [EMAIL PROTECTED] escribió:

Creo que deberías ver la afirmación que motivó mi comentario sobre el uso o
no de determinados lenguajes.  Afirmación que tu mismo hiciste
contradiciendo lo que dices ahora.   No quiero darle muchas vueltas al
asunto, estoy totalmente de acuerdo con lo que escribiste ahora

.Saludos

-Franco

No ,no se a que te refieres ,y yo también quiero dar por cerrado este
tema.Solo afirmar que  hay  lenguajes en  los cuales es mas factible
trabajar con bases de datos que otros,y bueno que hay lenguajes que fueron
creados con propósitos especiales como PROLOG (Dudo que alguien use PROLOG
para crear  un SIA y conectarse a un motor de datos ).

Saludos


Patricio Morales Fariña
Técnico en Computación
Alumno Ing. Informática (Técnicos Vespertino)
Universidad de los Lagos
045-219291- Temuco Chile
cel 78732062-
From [EMAIL PROTECTED]  Sun Dec  2 22:39:43 2007
From: [EMAIL PROTECTED] (Patricio Morales)
Date: Sun Dec  2 22:42:35 2007
Subject: LINUX VS WINDOWS, la hora de la verdad se acerca
In-Reply-To: [EMAIL PROTECTED]
References: [EMAIL PROTECTED]
Message-ID: [EMAIL PROTECTED]

El día 2/12/07, Hugo Figueroa R. [EMAIL PROTECTED] escribió:QUE SON
TONTOS GRAVES ALGUNOS ACA

Bueno y ¿Quien Ganó el partido ?,¿los de Microsoft o los de Linux?,¿o fué
empate?

Saludos.



-- 
Patricio Morales Fariña
Técnico en Computación
Alumno Ing. Informática (Técnicos Vespertino)
Universidad de los Lagos
045-219291- Temuco Chile
cel 78732062-
From [EMAIL PROTECTED]  Sun Dec  2 21:41:22 2007
From: [EMAIL PROTECTED] (Matias Valdenegro T.)
Date: Sun Dec  2 22:46:32 2007
Subject: Desarrollo para PIC's Microchip en linux
In-Reply-To: [EMAIL PROTECTED]
References: [EMAIL PROTECTED]
[EMAIL PROTECTED]
Message-ID: [EMAIL PROTECTED]

El Domingo 02 Diciembre 2007, Alejandro Weinstein escribió:
 On Dec 2, 2007 1:48 PM, Aldrin Gonzalo Martoq Ahumada

 [EMAIL PROTECTED] wrote:
  Estimados, estoy en un miniproyecto personal que consiste en un pedal
  midi programable. Para ello, compre un microprocesador PIC18F4550 de
  Microchip (alrededor de $8.000-9.000 y un PIC16F876A de respaldo)

 Estas amarrado a los PIC por alguna razon? (aparte de que ya compraste
 los PIC y el programador :( ).

 Si puedes te recomiendo que utilizes microcontroladores AVR
 (fabricados por Atmel). Estan en el mismo nicho que los PIC, pero
 tienen, IMO, varias ventajas. Una de ellas es que existe un port de
 gcc para los AVR (avr-gcc), que funciona de pelos. En Chile puedes
 comprarlos en www.olimex.cl .

Bastante interesante, existe software para grabarlos desde Linux tambien?


Re: Re: Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-12-02 Por tema Roberto Bonvallet
El 2/12/07, Patricio Morales [EMAIL PROTECTED] escribió:
 (Dudo que alguien use PROLOG
 para crear  un SIA y conectarse a un motor de datos ).

Hace un par de meses vi un manual medio ochentero de Turbo Prolog que
claramente estaba pensado para desarrollar aplicaciones de negocios.
No recuerdo haber visto nada relacionado con bases de datos, pero sí
explicaban cómo crear interfaces gráficas con ventanitas y todo.  No
se veía tan marciano como uno podría pensar; después de todo, las
reglas de inferencia de Prolog no son tan diferentes de las funciones
de otros lenguajes.

Saludos,
-- 
Roberto Bonvallet


Re: Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-11-30 Por tema Horst H. von Brand
Ricardo Mun~oz A. [EMAIL PROTECTED] wrote:
 Horst H. von Brand wrote:
  [Corregidas algunas atribuciones (  ... ) que claramente estaban mal...]
  Patricio Morales [EMAIL PROTECTED] wrote:
  El día 28/11/07, Horst H. von Brand [EMAIL PROTECTED] escribió:
  Leonardo Soto M. [EMAIL PROTECTED] wrote:
  On Nov 27, 2007 5:12 PM, Horst H. von Brand [EMAIL PROTECTED]
  wrote:
  Rodrigo Fuentealba [EMAIL PROTECTED] wrote:

[...]

  Huh... hay una _larga_ lista de lenguajes que ni aparecen en listas de
  lenguajes. Una de las razones de Ada es que DoD usaba (para aplicaciones
  tiempo real, mas que nada) algo de 800 (!) lenguajes diferentes.

 aca hay un listado de lenguajes usados en proyectos open source:
 
 http://www.ohloh.net/languages?sort=projectscommit=Sort

Faltan ObjectiveC, FORTRAN al menos (si, hay codigo substancial escrito en
eso; probablemente bastante mas FORTRAN que Pascal). Ni que decir de
lenguajes menores (OCaml, Haskell, FORTH, ...)
-- 
Dr. Horst H. von Brand   User #22616 counter.li.org
Departamento de InformaticaFono: +56 32 2654431
Universidad Tecnica Federico Santa Maria +56 32 2654239
Casilla 110-V, Valparaiso, Chile   Fax:  +56 32 2797513
From [EMAIL PROTECTED]  Fri Nov 30 15:38:02 2007
From: [EMAIL PROTECTED] (Patricio Morales)
Date: Fri Nov 30 15:40:55 2007
Subject: =?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?=
In-Reply-To: [EMAIL PROTECTED]
References: [EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
Message-ID: [EMAIL PROTECTED]


 Faltan ObjectiveC, FORTRAN al menos (si, hay codigo substancial escrito en
 eso; probablemente bastante mas FORTRAN que Pascal). Ni que decir de
 lenguajes menores (OCaml, Haskell, FORTH, ...)


Pascal (específicamente Turbo Pascal )fue el primer lenguaje con el que
aprendí a programar (Anteriormente en muchas Instituciones de Educación
Superior tanto en Chile como en el Mundo ,era el lenguaje por excelencia que
se usaba para la enseñanza de la programación) despues aprendí a programar
en Turbo C,C,C++,Clipper,etc.Con lo que discrepo que exista mayor cantidad
de código para FORTRAN que para Pascal.

Me acuerdo que uno de los sitios que me gustaba visitar (y que aun visito)
es el servidor
garbo de la Universidad de Vaasa en Finlandia.En este servidor en la parte
de programación uno se podía descargar una buena cantidad de códigos fuente
de Pascal (archivos .pas)lecciones de Pascal,además de un montón de
Utilerías para Unix/Linux
MS-DOS y Windows.





-- 
Patricio Morales Fariña
Técnico en Computación
Alumno Ing. Informática (Técnicos Vespertino)
Universidad de los Lagos
045-219291- Temuco Chile
cel 78732062-
From [EMAIL PROTECTED]  Fri Nov 30 16:02:55 2007
From: [EMAIL PROTECTED] ([EMAIL PROTECTED])
Date: Fri Nov 30 16:05:42 2007
Subject: Alternativa xvidcap
In-Reply-To: [EMAIL PROTECTED]
References: [EMAIL PROTECTED]
[EMAIL PROTECTED]
Message-ID: [EMAIL PROTECTED]

Saludos a todos hay una buena alternativa para xvidcap, gracias



This message was sent using IMP, the Internet Messaging Program.


Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-11-30 Por tema Daniel Serpell
Hola!

El Thu, Nov 29, 2007 at 01:47:57AM -0300, Patricio Morales escribio:
 
[...]
 Hace poco tiempo leí en una revista,haciendo una comparativa entre los
 lenguajes más usados por los
 programadores,Los más usados Java,Visual Basic,Delphi,pasando por C/C++,y
 adivinen cuales son los
 menos usados

Este es un estudio bastante completo (como todos los estudios del caso,
puede tener algo de sesgo):

   http://www.tiobe.com/tpci.htm

La tabla resumen indica:
  
  Object-Oriented Languages54.8%   +3.0%
  Procedural Languages 42.0%   -4.2%
  Functional Languages  1.8%   +1.0%
  Logical Languages 1.4%   +0.1%

Claramente, la gente programa en su mayoría en lenguajes orientados a
objeto (donde se entiende esto por un lenguaje en que es natural
utilizar programación orientada a objeto), pero el porcentaje de
utilización de C es muy alto.


 [La gracia de LISP/Scheme es que (particularmente este ultimo) son
  lenguajes enormemente expresivos (mucho mas que el OOP mas refinado,
  hacetela de call-with-current-continuation algun dia de estos, o el
  truquillo de la funcion que retorna una funcion que incorpora datos que se
  dieron al construirla, o...), y la manera de programar de a deveras en
  estos lenguajes es /definirse/ uno un lenguaje ad hoc para el ambito a la
  mano, y luego aplicarlo... y en Scheme es trivial montarse la maquinaria
  OOPistica encima del lenguaje, si quieres. Claro, programar de esa forma
  es *aun* mas duro que OOP.]

Bueno, con C++0x se expandirá un poco el ámbito de la meta-programación,
haciendo un poco más fácil hacer DSL(-ibraries) en C++, yo a eso le veo
bastante futuro (ver blitz++, buscar en google por active libraries).

El problema es que la meta-programación en C++ se escribe en un lenguaje
funcional, por lo que es difícil para los novatos.

Un ejemplo, en C++ actual:

 // Define caso X^N arbitrario
 template int X, int N class pow {
  public: static int value(){ return powX,N-1::value() * X; } };

 // Define caso X^1
 template int X class powX,1 {
  public: static int value(){ return X;} };

Eso define una función pow, que luego se utiliza así:

 k = pow10,7::value();

La gracia es que se le explica al compilador cómo realizar el cálculo,
el que se realiza en tiempo de compilación y no de ejecución.

Daniel.


Re: Re: Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-11-30 Por tema Patricio Morales
Pero esas son cosas que estan muertas.  Que pasa con aplicacionesexistentes?

Franco,actualmente existen implementaciones de Pascal para Linux:Proyecto
FreePascal
y el Proyecto Lazarus:Este último posee un Ide para desarrollar programas
visuales en
Linux.
Y por último existe Kilyx:(implementación del lenguaje Delphi ) para Linux

Eso si te refieres a herramientas de programación

Saludos


-- 
Patricio Morales Fariña
Técnico en Computación
Alumno Ing. Informática (Técnicos Vespertino)
Universidad de los Lagos
045-219291- Temuco Chile
cel 78732062-
From [EMAIL PROTECTED]  Fri Nov 30 19:23:16 2007
From: [EMAIL PROTECTED] (Jorge Palma)
Date: Fri Nov 30 19:26:05 2007
Subject: Alternativa xvidcap
In-Reply-To: [EMAIL PROTECTED]
References: [EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
Message-ID: [EMAIL PROTECTED]

On Nov 30, 2007 4:02 PM,  [EMAIL PROTECTED] wrote:
 Saludos a todos hay una buena alternativa para xvidcap, gracias


 
 This message was sent using IMP, the Internet Messaging Program.



recordmydesktop

Salu2


-- 
Jorge Palma Escobar
Ingeniero de Sistemas
Red Hat Linux Certified Engineer
Certificate Nº 804005089418233


Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-11-30 Por tema Alvaro Herrera
Daniel Serpell escribió:

 Un ejemplo, en C++ actual:
 
  // Define caso X^N arbitrario
  template int X, int N class pow {
   public: static int value(){ return powX,N-1::value() * X; } };
 
  // Define caso X^1
  template int X class powX,1 {
   public: static int value(){ return X;} };
 
 Eso define una función pow, que luego se utiliza así:
 
  k = pow10,7::value();
 
 La gracia es que se le explica al compilador cómo realizar el cálculo,
 el que se realiza en tiempo de compilación y no de ejecución.

Huh, no entiendo.  Que pasa si obtienes N desde el usuario?  Obviamente
no puedes hacerlo en tiempo de compilacion ...

-- 
Alvaro Herrerahttp://www.advogato.org/person/alvherre
No hay cielo posible sin hundir nuestras raíces
 en la profundidad de la tierra(Malucha Pinto)
From [EMAIL PROTECTED]  Fri Nov 30 22:44:02 2007
From: [EMAIL PROTECTED] (jorpeav)
Date: Fri Nov 30 22:46:53 2007
Subject: Ref:RE:redes wifi
Message-ID: [EMAIL PROTECTED]

-- Encabezado original ---

De  : [EMAIL PROTECTED]
Para  : linux@listas.inf.utfsm.cl
Copia  : 
Fecha  : Sun, 25 Nov 2007 23:58:40 -0300
Asunto : RE:redes wifi

 El problema es que quieres configurarla como modo master. Lo que  
 significa que quieres que tu maquina sea AP si ya tienes el router el  
 modo de configuración es managed (administrado) busca y lee algun  
 documento sobre redes wifi no tengo ninguno a mano.
 
 
 This message was sent using IMP, the Internet Messaging Program.
 
 
 Gracias a todos por su sugerencias y comentarios 
ya tengo conexion con mi router


Re: Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-11-29 Por tema Franco Catrin L.
Horst H. von Brand escribió:
 Huh... hay una _larga_ lista de lenguajes que ni aparecen en listas de
 lenguajes. Una de las razones de Ada es que DoD usaba (para aplicaciones
 tiempo real, mas que nada) algo de 800 (!) lenguajes diferentes.

 Alguien sabe que era UPL? O se tropezo con FORTH? APL era una delicia... si
 tenias el teclado marciano del caso (y /chancha/ maquina). Oberon? Bliss
 (lindo lenguaje, ese...)? PL/1 (Urgh)? PL/360? No se si TECO califica como
 lenguaje, pero debiera... Ni que hablar de curiosidades arqueologicas
 como BCPL y B, que a los C-istas les deben sonar para algo (demas que
 hugueteando hallan compiladores para eso hoy). Hasta D hay...
   
Y no olvidemos Whitespace : http://compsoc.dur.ac.uk/whitespace/
Me hubiera servido esos dias en que no pude usar lentes de contacto ;)
--
Franco



Re: Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-11-29 Por tema Rodrigo Fuentealba
2007/11/29, Franco Catrin L. [EMAIL PROTECTED]:

 Y no olvidemos Whitespace : http://compsoc.dur.ac.uk/whitespace/
 Me hubiera servido esos dias en que no pude usar lentes de contacto ;)

Medio difícil de hacer los clásicos listados impresos en 80 líneas
como en COBOL no más, pero se ve entrete -!

Yo no soy tan viejito, lo más oldie que programé fue Cobol... (Ah,
don't forget the good old Atari BASIC)...

-- 
Rodrigo Fuentealba


Re: Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-11-27 Por tema Horst H. von Brand
Rodrigo Fuentealba [EMAIL PROTECTED] wrote:

[...]

 jajajajajaja yeah. Creo que los programadores Java se engrupen mucho
 con lo difíciles que pueden llegar a ser sus aplicaciones;

Un mal programador escribira basura sea cual sea el lenguaje que use para
ello.

alguien me
 comentó que, de hecho, el inventor de la programación orientada a
 objetos se hizo netamente con el objetivo de ganar más plata nada más.

Falso. OOP es la mejor manera conocida de organizar la solucion eficiente
de problemas grandes y complejos (como un nucleo de un sistema operativo,
un ambiente grafico, o un paquete de oficina completo; digamos unas
poquitos a muchos millones de lineas de codigo). Claro que (igual que
siempre) la parte mas dura es la de disen~ar, y como (casi) nadie se da
el trabajo de siquiera pensar la organizacion antes de programar (y, a
decir verdad, como es imposible saber cual debera ser la organizacion antes
de intentar tres formas y desechar cinco mas), los resultados estan a la
vista...
-- 
Dr. Horst H. von Brand   User #22616 counter.li.org
Departamento de InformaticaFono: +56 32 2654431
Universidad Tecnica Federico Santa Maria +56 32 2654239
Casilla 110-V, Valparaiso, Chile   Fax:  +56 32 2797513
From [EMAIL PROTECTED]  Tue Nov 27 17:31:45 2007
From: [EMAIL PROTECTED] (Horst H. von Brand)
Date: Tue Nov 27 17:34:35 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]
Message-ID: [EMAIL PROTECTED]

Alejandro Weinstein [EMAIL PROTECTED] wrote:
 On Nov 16, 2007 10:23 AM, Franco Catrin L. [EMAIL PROTECTED] wrote:
  Segun entiendo esos no son compilados reales, runcobol es un interprete,
  no una maquina virtual.

 Cual es la diferencia entre un interprete y una maquina virtual? En
 google no pude encontrar una respuesta clara. Encontre por ejemplo:

Ninguna.

Un procesador no es mas que un interprete del lenguaje de maquina del caso,
implementado en silicio, una maquina virtual es el mismo interprete pero
implementado en C (o el lenguaje du jour). Y al otro extremo, nosotros
programamos contra la maquina virtual C, que se implementa (normalmente,
incidentalmente) via gcc y otras tonteras mas. Nada impide que tal cosa (o
incluso lenguajes mucho mas complejos) se interpretara directamente

Generalmente se hace la distincion que maquina virtual interpreta un
lenguaje de bajo nivel == nivel de maquina, mientras un interprete
maneja un lenguaje de alto nivel == lenguaje de a deveras. Pero es una
distincion de grado, no cualitativa. He visto llamar interpretes a
implementaciones de lenguajes de relativamente bajo nivel, como el lenguaje
interno de Perl o la maquina virtual comunmente usada para explicar Prolog,
e incluso algo tan elemental como el threaded code popular en FORT
(basicamente, una lista de direcciones de subrutinas a llamar y pocazo
mas), y a cosas como bash e incluso un interprete de C (!). En rigor, Perl,
Ruby, Python se compilan a una representacion interna que luego se
interpreta, no son interpretes directos; los shell por otro lado (y los
BASIC de antan~o) toman el codigo fuente, lo analizan y ejecutan linea a
linea.

Por otro lado, hay implementaciones en silicio de JVM, y del interprete
interno de FORT; y por el otro lado cosas como Bochs, la divertida CPU que
desarrollaba Transmeta, y supongo recordaran las epocas en que aun no
habian AMD64 para la venta pero ya Red Hat ofrecia su distribucion para esa
maquina (desarrollada en muy buena parte sobre emuladores). Y, last but not
least, esta la mitologica MMIX, para la cual incluso hay un gcc
perfectamente funcional (parte de la distribucion oficial en fuente,
incluso). Solo que nadie se ha puesto con las lucas para realizar esa linda
arquitectura...
-- 
Dr. Horst H. von Brand   User #22616 counter.li.org
Departamento de InformaticaFono: +56 32 2654431
Universidad Tecnica Federico Santa Maria +56 32 2654239
Casilla 110-V, Valparaiso, Chile   Fax:  +56 32 2797513
From [EMAIL PROTECTED]  Tue Nov 27 16:40:09 2007
From: [EMAIL PROTECTED] (Horst H. von Brand)
Date: Tue Nov 27 17:43:28 2007
Subject: disclamers en correos
In-Reply-To: [EMAIL PROTECTED]
References: [EMAIL PROTECTED]
Message-ID: [EMAIL PROTECTED]

Victor Hugo dos Santos [EMAIL PROTECTED] wrote:
 estoy buscando en los históricos de la lista, un hilo que comentaba
 sobre los disclamers que vienen en algunos correos 

 estoy buscando, para ver se encuentro algún comentario sobre el
 valido/invalido/estúpido/ingenioso que puede ser esto para un empresa.

Mira p.ej. en http://www.sendmail.org para una discusion al
respecto. Considera que 

Re: Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-11-19 Por tema Roberto Bonvallet
El día 17/11/07, Rodrigo Fuentealba [EMAIL PROTECTED] escribió:
 Por lo visto, el personaje de psyco quiere trabajar más en PyPy que en
 Psyco itself.

 ¿Lo has probado?

No lo he probado, pero en comp.lang.python ocasionalmente hay tipos
que reportan mejoras de rendimiento bastante importantes (léase un
orden de magnitud) sólo por usar psyco en sus programas sin modificar.
 Claro que esto sólo sirve para código intensivo en cómputo.
Seguramente una aplicación web o una de escritorio no gozarían de
mejora alguna.

 ¿Cómo podríamos hacer benchmarking? (¿El clásico time  programa.sh
  time, como las guaguas, o alguien tiene una mejor idea?)

En Python se acostumbra a usar el módulo timeit para medir y comparar
tiempos de ejecución.

-- 
Roberto Bonvallet


Re: Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-11-17 Por tema Franco Catrin L.
Rodrigo Fuentealba escribió:
 El 16/11/07, Alejandro Weinstein [EMAIL PROTECTED] escribió:
   
 On Nov 16, 2007 1:16 PM, Franco Catrin L. [EMAIL PROTECTED] wrote:
 
 El segundo link casi me deja ciego ;)
   
 Perdon. Me olvide de advertir que habia que ponerse lentes oscuros.

 [sobre la diferencia entre maquina virtual e interprete]

 Aun no me queda del todo clara la diferencia. Por ejemplo, hay alguna
 diferencia de fondo entre un interprete Python ejecutando un archivo
 .pyc o .pyo (no un .py) y una maquina virtual java ejecutando
 bytecodes?
 

 Diferencia de fondo no hay mucha. Según [1], inclusive hay similitudes
 con Java y .NET:

 1.- Se compila a bytecode que es compatible entre arquitecturas (yo
 tomo un .pyc en Windows y lo paso a Linux y funciona).

 2.- Se hacen algunas optimizaciones pequeñas al código Python.

 3.- De 1.- se puede inferir que no es necesario que Python como
 intérprete deba destripar cadenas y revisar sintaxis, lo cual también
 es una optimización a la hora de interpretar y cargar el archivo.
   

Eso se hace solo una vez y se genera el .pyc.  Despues de eso actua el 
interpete del .pyc que ejecuta el codigo generado [1], pero no hay 
JIT, entonces se lee un bytecode y se ejecuta una funcion del interperte 
de python, luego se lee el siguiente bytecode y se ejecuta otra fucnion 
del interprete de python, y asi sucesivamente.  Eso es lo que se supone 
hace Python/eval.c [3]

Es no implica que el lenguaje sea necesariamente lento, solo dificulta 
las optimizaciones que se puedan realizar en tiempo de ejecucion.

 Ahora, una diferencia sustancial debe ser la manera en que Java y
 Python reservan la cantidad de memoria necesaria para su ejecución,
 pero eso ya es hilar demasiado fino y... es viernes.
   

Lo de la memoria reservada se puede cambiar en java mediante el 
parametro -Xmx, pero hay que considerar como afecta eso a la eficiencia 
del garbage collector y la fragmentacion de la memoria que pide al 
sistema operativo.  Revisar tambien otro link que di sobre GC's

La diferencia sustancial esta en la generacion de codigo nativo a partir 
del .pyc, eso es algo que python no hace, y probablemente por la 
naturaleza del lenguaje tampoco conviene hacer [4]

[1] http://alumni.media.mit.edu/~tpminka/patterns/python/
[2] http://alumni.media.mit.edu/~tpminka/patterns/python/bytecode.txt
[3] http://svn.pythonmac.org/python24/python24-fat/Python/ceval.c
[4] http://en.wikipedia.org/wiki/Dynamic_language

Saludos
--
Franco
From [EMAIL PROTECTED]  Sat Nov 17 13:53:50 2007
From: [EMAIL PROTECTED] (Roberto Bonvallet)
Date: Sat Nov 17 14:25:51 2007
Subject: =?iso-8859-1?q?Re=3A_Benchmarking_en_distintos_lenguajes_=5B_Era?=
=?iso-8859-1?q?_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]
Message-ID: [EMAIL PROTECTED]

El día 17/11/07, Franco Catrin L. [EMAIL PROTECTED] escribió:

 La diferencia sustancial esta en la generacion de codigo nativo a partir
 del .pyc, eso es algo que python no hace, y probablemente por la
 naturaleza del lenguaje tampoco conviene hacer [4]


Hay un compilador JIT para Python que, si bien no hace exactamente lo mismo
que el de Java, también trabaja optimizando en tiempo de ejecución.

http://psyco.sourceforge.net/introduction.html

PyPy, la implementación de Python en Python, también viene con un compilador
JIT:

http://codespeak.net/pypy/dist/pypy/doc/jit.html

-- 
Roberto Bonvallet
From [EMAIL PROTECTED]  Sat Nov 17 14:41:47 2007
From: [EMAIL PROTECTED] (Rodrigo Fuentealba)
Date: Sat Nov 17 14:44:34 2007
Subject: =?iso-8859-1?q?Re=3A_Benchmarking_en_distintos_lenguajes_=5B_Era?=
=?iso-8859-1?q?_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]
Message-ID: [EMAIL PROTECTED]

El 17/11/07, Roberto Bonvallet [EMAIL PROTECTED] escribió:
 El día 17/11/07, Franco Catrin L. [EMAIL PROTECTED] escribió:
 
 Hay un compilador JIT para Python que, si bien no hace exactamente lo mismo
 que el de Java, también trabaja optimizando en tiempo de ejecución.

 http://psyco.sourceforge.net/introduction.html

Por lo visto, el personaje de psyco quiere trabajar más en PyPy que en
Psyco itself.

¿Lo has probado?
¿Cómo podríamos hacer benchmarking? (¿El clásico time  programa.sh
 time, como las guaguas, o alguien tiene una mejor idea?)

 PyPy, la implementación de Python en Python, también viene con un compilador
 JIT:

 http://codespeak.net/pypy/dist/pypy/doc/jit.html

Ambas páginas me 

Re: Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-11-16 Por tema Rodrigo Fuentealba
El 16/11/07, Franco Catrin L. [EMAIL PROTECTED] escribió:
 Rodrigo Fuentealba escribió:
  Tampoco lo tiene mucho Java v/s C ya que C se
  compila directamente a código de máquina, mientras que Java requiere
  que tengas el JRE (Java Runtime Environment).

 Si y no.

 La máquina virtual de Java igual te va a compilar el código a código de
 máquina y eso es lo que va a ejecutar, se demorará la primera vez pero
 en los casos en donde importa el rendimiento (loops) sólo se hace al
 principio.  El byte-code no es código interpretado, es código de máquina
 para una máquina virtual (oh!).

O sea... es algo así como los compilados de cobol que después tenías
que ejecutarlos con runcobol...

 También puedes compilar Java a código de máquina directamente con GCJ,
 pero eso requiere que también tengas compiladas otras cosas que hasta
 hace poco estaban restringidas por Sun.  No sé cual es el escenario actual.

No es 100% portable.

 Hay algunas cosas que funcionan más rápido en Java pero no por un tema
 de compiladores, sino que por otros aspectos como por ejemplo el
 mecanismo de Garbage Collection que funciona de forma asincrona (pero no
 en paralelo).

Estuve viendo eso relacionado con Microsoft.NET; jamás se me ocurrió
aplicar eso a Java. Bueeena!

 El tema de por qué las aplicaciones en Java funcionan lento tiene varias
 causas, desde complejidad en exeso en el diseño de aplicaciones hasta el
 uso y abuso de conceptos avanzados de  Estupidez Artificial y Lógica
 Confusa ;)

jajajajajaja yeah. Creo que los programadores Java se engrupen mucho
con lo difíciles que pueden llegar a ser sus aplicaciones; alguien me
comentó que, de hecho, el inventor de la programación orientada a
objetos se hizo netamente con el objetivo de ganar más plata nada más.

-- 
Rodrigo Fuentealba


Re: Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-11-16 Por tema Franco Catrin L.
Rodrigo Fuentealba escribió:
 La máquina virtual de Java igual te va a compilar el código a código de
 máquina y eso es lo que va a ejecutar, se demorará la primera vez pero
 en los casos en donde importa el rendimiento (loops) sólo se hace al
 principio.  El byte-code no es código interpretado, es código de máquina
 para una máquina virtual (oh!).
 

 O sea... es algo así como los compilados de cobol que después tenías
 que ejecutarlos con runcobol...
   
Segun entiendo esos no son compilados reales, runcobol es un interprete, 
no una maquina virtual.
Tanto Java como .NET utilizan codigo de maquina independiente de la 
máquina, pero es código de máquina al fin (stack, registros, etc).  Es 
por eso que no es dificil aplicar JIT o incluso compilacion previa (GCJ 
en Java o -aot en Mono).

 Hay algunas cosas que funcionan más rápido en Java pero no por un tema
 de compiladores, sino que por otros aspectos como por ejemplo el
 mecanismo de Garbage Collection que funciona de forma asincrona (pero no
 en paralelo).
 

 Estuve viendo eso relacionado con Microsoft.NET; jamás se me ocurrió
 aplicar eso a Java. Bueeena!
   

Sumale eso a que cuando hay suficiente RAM puede funcionar muy bien.  
Piensa en un simple add de un puntero al pedir memoria.  Un par de 
lecturas interesantes:

http://www.ibm.com/developerworks/java/library/j-jtp11253/
http://www.ibm.com/developerworks/java/library/j-jtp09275.html

 El tema de por qué las aplicaciones en Java funcionan lento tiene varias
 causas, desde complejidad en exeso en el diseño de aplicaciones hasta el
 uso y abuso de conceptos avanzados de  Estupidez Artificial y Lógica
 Confusa ;)
 

 jajajajajaja yeah. Creo que los programadores Java se engrupen mucho
 con lo difíciles que pueden llegar a ser sus aplicaciones; alguien me
 comentó que, de hecho, el inventor de la programación orientada a
 objetos se hizo netamente con el objetivo de ganar más plata nada más.

Yo creo que eso es una leyenda urbana como una entrevista que vi por ahi 
al creador de C++ (AFAIR).
La programación orientada a objetos es de gran ayuda, incluso el kernel 
de Linux es orientado a objetos!

El problema esta cuando el nivel de abstracción te oculta lo que esta 
sucediendo por debajo, y se hacen cosas demás en forma involuntaria.  
Recuerdo que Federico Mena comentaba que muchos problemas de performance 
se habian resuelto simplemente aplicando strace para ver qué estaba 
sucediendo por debajo y ahi encontraron que en aplicaciones como 
OpenOffice (y tambien en GNOME) se abrian y procesaban archivos 
inmutables una y otra vez, en vez de una sola vez al principio.  Es 
facil tener ese problema, cuando las aplicaciones crecen y tienes una 
gran base de código te comienzas (al fin) a enfocar mas en el qué y no 
en el cómo, pero si te descuidas comienzas a mal usar lo que ya tienes.

Tambien hay casos en que la gente no sabe ni le interesa lo que sucede 
por debajo y hacen grandes desastres de aplicaciones, al final le echan 
la culpa a la complejidad del problema, al lenguaje o a la máquina, pero 
objetivamente los problemas que solucionan la mayoria de las 
aplicaciones no son complejos.


--
Franco
From [EMAIL PROTECTED]  Fri Nov 16 14:32:16 2007
From: [EMAIL PROTECTED] (Rodrigo Fuentealba)
Date: Fri Nov 16 14:35:00 2007
Subject: Carga de aplicaciones (Era Re: Jabber server  client.)
In-Reply-To: [EMAIL PROTECTED]
References: [EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
Message-ID: [EMAIL PROTECTED]

El 16/11/07, Franco Catrin L. [EMAIL PROTECTED] escribió:
 Rodrigo Fuentealba escribió:
  El 16/11/07, Franco Catrin L. [EMAIL PROTECTED] escribió:
 Hablando estrictamente en terminos de carga de aplicaciones, para que se
 pueda cargar una aplicación de escritorio se tiene que cargar gran parte
 del sistema operativo.  Cuanto demora el sistema en bootear ah?   1
 segundo? 2 segundos?

Ojalá.

 Creo que dijimos lo mismo pero con otras palabras.

Con otras palabras dijimos lo mismo, creo.

  Yep; hay que considerar que son aplicaciones complejas y que hacen uso
  extensivo de gráficas; en el caso de OpenOffice, carga todo el motor
  de diccionarios y una gran faramalla de cosas.

 Parafernalia que no es inncesaria desde el punto de vista de lo que uno
 espera de la aplicación

Volvemos a las aplicaciones con código spaghetti que construyen mucho
en Java: a veces ponen parafernalia que sí es innecesaria; las más de
las veces... y es ahí donde la mala fama pesa.

Q.- How to write a bloated application?
A.- Program it on Java.

 Si, mi mamá tambien pero si somos hermanosss!!! ;)

Chócale!

-- 
Rodrigo Fuentealba


Re: Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-11-16 Por tema Rodrigo Fuentealba
El 16/11/07, Franco Catrin L. [EMAIL PROTECTED] escribió:
 Rodrigo Fuentealba escribió:
  La máquina virtual de Java igual te va a compilar el código a código de
  máquina y eso es lo que va a ejecutar, se demorará la primera vez pero
  en los casos en donde importa el rendimiento (loops) sólo se hace al
  principio.  El byte-code no es código interpretado, es código de máquina
  para una máquina virtual (oh!).
 
  O sea... es algo así como los compilados de cobol que después tenías
  que ejecutarlos con runcobol...
 
 Segun entiendo esos no son compilados reales, runcobol es un interprete,
 no una maquina virtual.

Si a runcobol le pasas un listado de un programa COBOL no va a
funcionar. Tienes que precompilar tu archivo .cbl para generar algo
en .cob que runcobol sí entendiera, que no necesariamente es bytecode;
ahora no te podría asegurar qué tenía ese archivo .cob.

Eso obviamente estaba pensado para acelerar la ejecución de varios
listados de programas (COBOL corre en máquinas antiquísimas, y en él
se hacen programas que requieren de harta velocidad para funcionar) y
no para hacer que un mismo código sea compatible con varias versiones
de COBOL. No es lo mismo en cuanto a cómo funciona.

  jajajajajaja yeah. Creo que los programadores Java se engrupen mucho
  con lo difíciles que pueden llegar a ser sus aplicaciones; alguien me
  comentó que, de hecho, el inventor de la programación orientada a
  objetos se hizo netamente con el objetivo de ganar más plata nada más.

 Yo creo que eso es una leyenda urbana como una entrevista que vi por ahi
 al creador de C++ (AFAIR).
 La programación orientada a objetos es de gran ayuda, incluso el kernel
 de Linux es orientado a objetos!

Yep. Gran parte del buen código que he visto lo es pero en sus inicios
la orientación a objetos era considerada elitista y consume hartos
recursos.

-- 
Rodrigo Fuentealba Cartes
Desarrollador de Sistemas - Consultor UNIX - Database Administrator


Re: Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-11-16 Por tema Ricardo Mun~oz A.
Rodrigo Fuentealba wrote:
 El 15/11/07, Asdtaker [EMAIL PROTECTED] escribió:
   

[...]

 (Por cierto, estoy comenzando
 con Cake.ya antes habia probado rails, e imaginaras que estoy
 viviendo un deja vu)
 

 ¿Por qué? Cake dista un poquito de Rails... Aléjate de él (a menos que
 ya lo hayan migrado a PHP 5 y que aproveche las ventajas que tiene...
   

Asdtaker,
si te interesa Cake puedes encontrar mas informacion y ayuda en:

http://groups.google.com/group/CakePHP-es

-- 
Ricardo Mun~oz A.
Usuario Linux #182825 (counter.li.org)
From [EMAIL PROTECTED]  Fri Nov 16 15:15:04 2007
From: [EMAIL PROTECTED] (Leonardo Soto M.)
Date: Fri Nov 16 15:24:34 2007
Subject: =?utf-8?q?Re=3A_Benchmarking_en_distintos_lenguajes_=5B_Era_algo?=
=?utf-8?b?IGFzw60gY29tbyBjbGllbnRlIGVuIGphYmJlci4uLiBd?=
In-Reply-To: [EMAIL PROTECTED]
References: [EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
Message-ID: [EMAIL PROTECTED]

On Nov 16, 2007 2:23 PM, Franco Catrin L. [EMAIL PROTECTED] wrote:
 Rodrigo Fuentealba escribió:
  Hay algunas cosas que funcionan más rápido en Java pero no por un tema
  de compiladores, sino que por otros aspectos como por ejemplo el
  mecanismo de Garbage Collection que funciona de forma asincrona (pero no
  en paralelo).
 
 
  Estuve viendo eso relacionado con Microsoft.NET; jamás se me ocurrió
  aplicar eso a Java. Bueeena!
 

 Sumale eso a que cuando hay suficiente RAM puede funcionar muy bien.

Un caso práctico donde la recolección de basura podría ser mejor que
malloc()/free() es Firefox. Análisis recientes están demostrando que
la manía de Firefox por consumir RAM está más relacionada con
fragmentación de memoria que memory leaks [1]. Y ahí un recolector
de basura puede ayudar, compactando la memoria de vez en cuando.


  jajajajajaja yeah. Creo que los programadores Java se engrupen mucho
  con lo difíciles que pueden llegar a ser sus aplicaciones; alguien me
  comentó que, de hecho, el inventor de la programación orientada a
  objetos se hizo netamente con el objetivo de ganar más plata nada más.

Para nada. De hecho, el inventor del término orientación a objetos
ha dicho varias veces que lo que tenía en mente en su momento no se
parece mucho a lo que hacen la mayoría de los sistemas de orientación
a objetos hoy por hoy [2].


[1] http://www.pavlov.net/blog/archives/2007/11/memory_fragment.html
[2] http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht26Ht/doc_kay_oop_en
--
Leo Soto M.
http://blog.leosoto.com


Re: Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-11-16 Por tema Alejandro Weinstein
On Nov 16, 2007 10:23 AM, Franco Catrin L. [EMAIL PROTECTED] wrote:
 Segun entiendo esos no son compilados reales, runcobol es un interprete,
 no una maquina virtual.

Cual es la diferencia entre un interprete y una maquina virtual? En
google no pude encontrar una respuesta clara. Encontre por ejemplo:

The Java virtual machine is another term for the Java interpreter en
http://safari.oreilly.com/1565924185/ch01-18331

Cuando Java es compilado y pasado a código de bytes, un interprete
llamado maquina virtual en
http://arechiga.50megs.com/tpoo2/javah1.html

Alejandro.


Re: Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-11-16 Por tema Rodrigo Fuentealba
El 16/11/07, Alejandro Weinstein [EMAIL PROTECTED] escribió:
 On Nov 16, 2007 10:23 AM, Franco Catrin L. [EMAIL PROTECTED] wrote:
  Segun entiendo esos no son compilados reales, runcobol es un interprete,
  no una maquina virtual.

 Cual es la diferencia entre un interprete y una maquina virtual? En
 google no pude encontrar una respuesta clara. Encontre por ejemplo:

En general son casi lo mismo. Las diferencias son poquísimas en cuanto
a funcionamiento.

Un intérprete es capaz de entender un código como Hola Mundo (por
ejemplo, en PHP), a través de parsear el archivo, quitarle los
espacios necesarios en la memoria, analizar sintácticamente y luego
recién hacer un puntero a la función que ejecuta.

?php echo(Hola Mundo); ? se ejecuta así, tal como está, sin
necesidad de precompilar.

En el caso de la máquina virtual, funciona como una maquinita de
stack. Primero hay un compilador que convierte el código de:

public class holamundo
{
public static void main(String[ ] args)
{
System.out.println(Hola Mundo);
}
}

a algo que nosotros como buenos seres cuya estructura molecular está
basada en carbono no entendemos, pero en que la máquina no tiene para
qué esforzarse en destripar cadenas de caracteres, en saber si
funciona o no, simplemente pone un puntero al principio del archivo y
va leyendo y cargando las bibliotecas que requiere, enlazando en
tiempo de ejecución y hasta el final, y recogiendo basurita.

A ver si con eso me explico mejor con a qué me refería con el ejemplo
de RUNCOBOL de hace unos e-mails atrás.

-- 
Rodrigo Fuentealba


Re: Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-11-16 Por tema Xavier Andrade
On Fri, 16 Nov 2007, Franco Catrin L. wrote:

 El problema esta cuando el nivel de abstracción te oculta lo que esta 
 sucediendo por debajo, y se hacen cosas demás en forma involuntaria. 
 Recuerdo que Federico Mena comentaba que muchos problemas de performance se 
 habian resuelto simplemente aplicando strace para ver qué estaba sucediendo 
 por debajo y ahi encontraron que en aplicaciones como OpenOffice (y tambien 
 en GNOME) se abrian y procesaban archivos inmutables una y otra vez, en vez 
 de una sola vez al principio.  Es facil tener ese problema, cuando las 
 aplicaciones crecen y tienes una gran base de código te comienzas (al fin) a 
 enfocar mas en el qué y no en el cómo, pero si te descuidas comienzas a mal 
 usar lo que ya tienes.


Bueno, por ejemplo si se llama repetidamente a rutinas chicas que hacen
poco, el rendimiento se reduce en al menos un orden de magnitud en
comparacion al mismo codigo inlined.

Es decir:

for(i=0; iN; i++) a[i] = b[i] + c[i];

es muchisimo mas rapido que

for(i=0; iN; i++) a[i] = sum(b[i], c[i]);

con double sum(double a, double b){ return a + b;}. Y al final muchos
codigos OO terminan haciendo cosas por el estilo (probablemente no para este
ejemplo, claro).

Saludos,

Xavier
From [EMAIL PROTECTED]  Fri Nov 16 16:52:58 2007
From: [EMAIL PROTECTED] (Franco Catrin L.)
Date: Fri Nov 16 16:49:27 2007
Subject: =?utf-8?q?Re=3A_Benchmarking_en_distintos_lenguajes_=5B_Era_algo?=
 =?utf-8?b?IGFzw60gY29tbyBjbGllbnRlIGVuIGphYmJlci4uLiBd?=
In-Reply-To: [EMAIL PROTECTED]
References: [EMAIL PROTECTED] [EMAIL PROTECTED] [EMAIL PROTECTED] 
[EMAIL PROTECTED]
[EMAIL PROTECTED]
Message-ID: [EMAIL PROTECTED]

Leonardo Soto M. escribió:
 On Nov 16, 2007 2:23 PM, Franco Catrin L. [EMAIL PROTECTED] wrote:
   
 Rodrigo Fuentealba escribió:
 
 Hay algunas cosas que funcionan más rápido en Java pero no por un tema
 de compiladores, sino que por otros aspectos como por ejemplo el
 mecanismo de Garbage Collection que funciona de forma asincrona (pero no
 en paralelo).

 
 Estuve viendo eso relacionado con Microsoft.NET; jamás se me ocurrió
 aplicar eso a Java. Bueeena!

   
 Sumale eso a que cuando hay suficiente RAM puede funcionar muy bien.
 

 Un caso práctico donde la recolección de basura podría ser mejor que
 malloc()/free() es Firefox. Análisis recientes están demostrando que
 la manía de Firefox por consumir RAM está más relacionada con
 fragmentación de memoria que memory leaks [1]. Y ahí un recolector
 de basura puede ayudar, compactando la memoria de vez en cuando.
   
Definitivamente ayudaría. Es curioso que esto recien se venga a detectar 
(10 de nov)
Recuerdo haber visto otro análisis en donde se mostraba que las imágenes 
se mantenían en memoria aunque no fueran visibles. Existen técnicas 
conocidas para resolver eso, como las referencias debiles pero creo que 
lo patearon para firefox 3.

Saludos
--
Franco



Re: Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-11-16 Por tema Franco Catrin L.
Xavier Andrade escribió:
 On Fri, 16 Nov 2007, Franco Catrin L. wrote:

 El problema esta cuando el nivel de abstracci?n te oculta lo que esta 
 sucediendo por debajo, y se hacen cosas dem?s en forma involuntaria. 
 Recuerdo que Federico Mena comentaba que muchos problemas de 
 performance se habian resuelto simplemente aplicando strace para ver 
 qu? estaba sucediendo por debajo y ahi encontraron que en 
 aplicaciones como OpenOffice (y tambien en GNOME) se abrian y 
 procesaban archivos inmutables una y otra vez, en vez de una sola vez 
 al principio. Es facil tener ese problema, cuando las aplicaciones 
 crecen y tienes una gran base de c?digo te comienzas (al fin) a 
 enfocar mas en el qu? y no en el c?mo, pero si te descuidas comienzas 
 a mal usar lo que ya tienes.


 Bueno, por ejemplo si se llama repetidamente a rutinas chicas que hacen
 poco, el rendimiento se reduce en al menos un orden de magnitud en
 comparacion al mismo codigo inlined.

 Es decir:

 for(i=0; iN; i++) a[i] = b[i] + c[i];

 es muchisimo mas rapido que

 for(i=0; iN; i++) a[i] = sum(b[i], c[i]);

 con double sum(double a, double b){ return a + b;}. Y al final muchos
 codigos OO terminan haciendo cosas por el estilo (probablemente no 
 para este
 ejemplo, claro).
Supongo que es porque rompen el principio de localidad [1].

Yo me refería a otros casos pero igual es interesante:
La máquina virtual de Java puede aplicar inline en algunos métodos 
siempre y cuando estos métodos no sean sobreescritos, por ejemplo todos 
aquellos que sean static o final... pero... además en tiempo de 
ejecución puede deducir que un método puede ser inlined de forma 
segura, porque ya sabe que no esta sobreescrito. De esta forma el 
programador no necesita cambiar su código y es la máquina virtual quien 
se hace la astuta, lo malo es que hay programadores que declaran todo 
como public. [2]

Si no me equivoco los compiladores de C tambien son capaces de reconocer 
código que conviene dejar como inline.
Y finalmente.. los problemas de rendimiento en aplicaciones de las que 
me toca ver a mi casi siempre son debido a latencias por I/O :(

[1] http://en.wikipedia.org/wiki/Locality_of_reference
[2] http://java.sun.com/products/hotspot/docs/general/hs2.html

--
Franco


Re: Re: Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-11-16 Por tema Rodrigo Fuentealba
El 16/11/07, Xavier Andrade [EMAIL PROTECTED] escribió:

 Bueno, por ejemplo si se llama repetidamente a rutinas chicas que hacen
 poco, el rendimiento se reduce en al menos un orden de magnitud en
 comparacion al mismo codigo inlined.

 Es decir:

 for(i=0; iN; i++) a[i] = b[i] + c[i];

 es muchisimo mas rapido que

 for(i=0; iN; i++) a[i] = sum(b[i], c[i]);

Depende.

Si en C haces algo así:

#include stdio.h
#define SUM(A,B)A + B

int main(void)
{
int x = 5, y = 10, z;

z = SUM(x,y);
printf(%i\n, z);
return 0;
}

El preprocesador de C reemplaza la operatoria en tiempo de
compilación, y permite hacer cosas como esa sin pérdida de ciclos en
tiempo de ejecución.

-- 
Rodrigo Fuentealba


Re: Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-11-16 Por tema Franco Catrin L.
Alejandro Weinstein escribió:
 On Nov 16, 2007 10:23 AM, Franco Catrin L. [EMAIL PROTECTED] wrote:
   
 Segun entiendo esos no son compilados reales, runcobol es un interprete,
 no una maquina virtual.
 

 Cual es la diferencia entre un interprete y una maquina virtual? En
 google no pude encontrar una respuesta clara. Encontre por ejemplo:

 The Java virtual machine is another term for the Java interpreter en
 http://safari.oreilly.com/1565924185/ch01-18331

 Cuando Java es compilado y pasado a código de bytes, un interprete
 llamado maquina virtual en
 http://arechiga.50megs.com/tpoo2/javah1.html
   

El segundo link casi me deja ciego ;)

Aqui hay una buena definicion:

Interpreter (computing)
http://en.wikipedia.org/wiki/Interpreter_(computing)

Voy a traducir un trozo referente a Java y .NET:

JIT se refiere a la técnica donde el bytecode se compila a codigo de 
maquina nativo en tiempo de ejecución, obteniendo la alta velocidad de 
ejecución del codigo nativo con el costo de incrementar el tiempo de 
partida cuando se compila el bytecode.  Ha ganado atencion en los 
últimos años, y queda aun más difusa la distinción entre interpretes, 
interpretes de byte code y compiladores. JIT esta disponible para las 
plataformas .NET y Java.  La técnica de usar JIT tiene un par de décadas 
de antiguedad, apareciendo en lenguajes como Smalltalk en los 80.


Java bytecode: Understanding bytecode makes you a better programmer
http://www.ibm.com/developerworks/ibm/library/it-haggar_bytecode/


Y para ver en mas detalle:

A first look at the bytecodes of the Java virtual machine
http://www.javaworld.com/javaworld/jw-09-1996/jw-09-bytecodes.html

Java Bytecode Assembler Examples
http://www.cs.rpi.edu/~moorthy/Courses/compiler99/Assembler/examples.html

--
Franco


Re: Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-11-16 Por tema Franco Catrin L.
Rodrigo Fuentealba escribió:
 la máquina no tiene para
 qué esforzarse en destripar cadenas de caracteres, en saber si
 funciona o no, simplemente pone un puntero al principio del archivo y
 va leyendo y cargando las bibliotecas que requiere, enlazando en
 tiempo de ejecución y hasta el final, y recogiendo basurita.
   

Te faltó la parte en que se convierte el código de la máquina virtual a 
código de maquina nativo y es ahi en donde está la diferencia entre un 
interprete clasico y un interprete/compilador de bytecode de una maquina 
virtual.

 A ver si con eso me explico mejor con a qué me refería con el ejemplo
 de RUNCOBOL de hace unos e-mails atrás.
   
RUNCOBOL me suena a un interprete clasico no mas.  (sin JIT)

--
Franco
From [EMAIL PROTECTED]  Fri Nov 16 17:28:58 2007
From: [EMAIL PROTECTED] (Xavier Andrade)
Date: Fri Nov 16 18:12:07 2007
Subject: =?iso-8859-1?q?Re=3A_Re=3A_Benchmarking_en_distintos_lenguaje?=
 =?iso-8859-1?q?s_=5B_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]
Message-ID: [EMAIL PROTECTED]


On Fri, 16 Nov 2007, Rodrigo Fuentealba wrote:

 Depende.

 Si en C haces algo así:

 #include stdio.h
 #define SUM(A,B)A + B


Claro, pero eso no es programacion orientada al objeto ni ninguna tecnica de
programacion sofisticada. El punto es que con POO puedes llegar a tener casos
equivalentes a ese.

Saludos,

Xavier
From [EMAIL PROTECTED]  Fri Nov 16 17:21:09 2007
From: [EMAIL PROTECTED] (Marcos Ramirez)
Date: Fri Nov 16 18:14:41 2007
Subject: Benchmarking en distintos lenguajes [ Era algo
=?iso-8859-1?q?as=ED?= como cliente en jabber... ]
In-Reply-To: [EMAIL PROTECTED]
References: [EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
Message-ID: [EMAIL PROTECTED]

On Fri, 2007-11-16 at 17:19 -0300, Franco Catrin L. wrote:
 Rodrigo Fuentealba escribió:

  A ver si con eso me explico mejor con a qué me refería con el ejemplo
  de RUNCOBOL de hace unos e-mails atrás.

 RUNCOBOL me suena a un interprete clasico no mas.  (sin JIT)

Menos que eso incluso. Cobol es un lenguaje pseudocompilado y se
requiere dos pasos: rmcobol que hace el analisus sintactico/semantico y
genera el codigo objeto (.cob) que usara el run-time. RUNCOBOL solo
ejecuta este codigo objeto y no tiene capacidad de analisis mayores. 

Comparado con un lenguaje interpretado actual cobol usa archivos
intermedios (.cob) para lo que perl/php/otro hacen en memoria.

Saludos
-- 
Marcos Ramirez [EMAIL PROTECTED]




Re: Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-11-16 Por tema Rodrigo Fuentealba
El 16/11/07, Franco Catrin L. [EMAIL PROTECTED] escribió:
 Rodrigo Fuentealba escribió:
  la máquina no tiene para
  qué esforzarse en destripar cadenas de caracteres, en saber si
  funciona o no, simplemente pone un puntero al principio del archivo y
  va leyendo y cargando las bibliotecas que requiere, enlazando en
  tiempo de ejecución y hasta el final, y recogiendo basurita.
 

 Te faltó la parte en que se convierte el código de la máquina virtual a
 código de maquina nativo y es ahi en donde está la diferencia entre un
 interprete clasico y un interprete/compilador de bytecode de una maquina
 virtual.

Eso... intentar estar pendiente a la cantidad de desastres que hay
aquí en la oficina es una lata, no se puede pensar en nada bien.

  A ver si con eso me explico mejor con a qué me refería con el ejemplo
  de RUNCOBOL de hace unos e-mails atrás.
 
 RUNCOBOL me suena a un interprete clasico no mas.  (sin JIT)

Lo que interpreta no es el código que escribe el usuario, sino el
código intermedio que se genera con RMCOBOL. Es claro que no tiene JIT
ni capacidad de decisión; está pensado así para ser todo lo rápido
posible en máquinas antiguas, no para técnicas avanzadas de
programación orientada a objetos.

-- 
Rodrigo Fuentealba Cartes


Re: Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-11-16 Por tema Alejandro Weinstein
On Nov 16, 2007 1:16 PM, Franco Catrin L. [EMAIL PROTECTED] wrote:

 El segundo link casi me deja ciego ;)

Perdon. Me olvide de advertir que habia que ponerse lentes oscuros.

[sobre la diferencia entre maquina virtual e interprete]

Aun no me queda del todo clara la diferencia. Por ejemplo, hay alguna
diferencia de fondo entre un interprete Python ejecutando un archivo
.pyc o .pyo (no un .py) y una maquina virtual java ejecutando
bytecodes?

Alejandro.
From [EMAIL PROTECTED]  Fri Nov 16 18:21:14 2007
From: [EMAIL PROTECTED] (Xavier Andrade)
Date: Fri Nov 16 19:04:23 2007
Subject: =?utf-8?q?Re=3A_Benchmarking_en_distintos_lenguajes_=5B_Era_a?=
 =?utf-8?q?lgo_as=C3=AD_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]
Message-ID: [EMAIL PROTECTED]

On Fri, 16 Nov 2007, Franco Catrin L. wrote:

 Supongo que es porque rompen el principio de localidad [1].


Principalmente es el costo asociado a llamar una funcion, el paso de
argumentos, guardar registros, etc.


 Yo me refería a otros casos pero igual es interesante:
 La máquina virtual de Java puede aplicar inline en algunos métodos siempre 
 y cuando estos métodos no sean sobreescritos, por ejemplo todos aquellos que 
 sean static o final... pero... además en tiempo de ejecución puede deducir 
 que un método puede ser inlined de forma segura, porque ya sabe que no 
 esta sobreescrito. De esta forma el programador no necesita cambiar su 
 código y es la máquina virtual quien se hace la astuta, lo malo es que hay 
 programadores que declaran todo como public. [2]

 Si no me equivoco los compiladores de C tambien son capaces de reconocer 
 código que conviene dejar como inline.

El problema es que en C, a diferencia de Java, la mayoria de las veces no se
tiene el codigo que se podria hacer inline. A veces no se sabra que funcion
es hasta el momento de la ejecucion (punteros a funciones o funciones
virtuales en C++)

De hecho, algunos compiladores de C/C++ o Fortran en los niveles de
optimizacion mas agresivos (normalmente con el flag -ipa), no compilan el
codigo al generar los .o, sino que al momento de enlazar juntan todas la
fuentes haciendo un analisis completo de la ejecucion para ver que se puede
hacer inline (entre otras optimizaciones), por supuesto esto toma mucho
tiempo y consume cantidades obscenas memoria.

 Y finalmente.. los problemas de rendimiento en aplicaciones de las que me 
 toca ver a mi casi siempre son debido a latencias por I/O :(


Bueno, si. Lo que yo menciono se da mas en codigo numerico orientado al
objeto donde la optimizacion a nivel de ejecucion en el procesador cuenta.

Saludos,

Xavier
From [EMAIL PROTECTED]  Fri Nov 16 19:10:10 2007
From: [EMAIL PROTECTED] (Alvaro Herrera)
Date: Fri Nov 16 19:12:58 2007
Subject: Benchmarking =?iso-8859-1?q?en_distintos_lenguajes_?=
=?iso-8859-1?q?=5B_Era_algo_as=ED?= como cliente en jabber... ]
In-Reply-To: [EMAIL PROTECTED]
References: [EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
Message-ID: [EMAIL PROTECTED]

Rodrigo Fuentealba escribió:
 El 16/11/07, Xavier Andrade [EMAIL PROTECTED] escribió:
 
  Claro, pero eso no es programacion orientada al objeto ni ninguna tecnica de
  programacion sofisticada. El punto es que con POO puedes llegar a tener 
  casos
  equivalentes a ese.
 
 Un método en OOP es una mera función,

Solo si tu jerarquia de clases es de un solo nivel, que no es lo que se
estila.  Un sistema un poquito mas complejo requiere que en tiempo de
ejecucion se haga una busqueda del metodo invocado en una tabla de
metodos, y si no aparece entonces tienes que ir a la clase padre a ver
si esta implementado ahi, y asi hasta llegar al tope de la jerarquia de
clases.

-- 
Alvaro Herrera  http://www.amazon.com/gp/registry/5ZYLFMCVHXC
La primera ley de las demostraciones en vivo es: no trate de usar el sistema.
Escriba un guión que no toque nada para no causar daños. (Jakob Nielsen)
From [EMAIL PROTECTED]  Sat Nov 17 00:13:37 2007
From: [EMAIL PROTECTED] (Franco Catrin L.)
Date: Fri Nov 16 21:16:21 2007
Subject: =?iso-8859-1?q?Re=3A_Benchmarking_en_distintos_lenguajes_=5B_Era?=
 =?iso-8859-1?q?_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]
Message-ID: [EMAIL PROTECTED]

Alejandro Weinstein escribió:
 On Nov 16, 2007 1:16 PM, Franco Catrin L. [EMAIL PROTECTED] wrote:
   
 El segundo link casi me deja ciego ;)
 

 Perdon. Me olvide de advertir que habia que ponerse lentes oscuros.

 [sobre la diferencia entre maquina virtual e 

Re: Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-11-16 Por tema Rodrigo Fuentealba
El 16/11/07, Alejandro Weinstein [EMAIL PROTECTED] escribió:
 On Nov 16, 2007 1:16 PM, Franco Catrin L. [EMAIL PROTECTED] wrote:
 
  El segundo link casi me deja ciego ;)

 Perdon. Me olvide de advertir que habia que ponerse lentes oscuros.

 [sobre la diferencia entre maquina virtual e interprete]

 Aun no me queda del todo clara la diferencia. Por ejemplo, hay alguna
 diferencia de fondo entre un interprete Python ejecutando un archivo
 .pyc o .pyo (no un .py) y una maquina virtual java ejecutando
 bytecodes?

Diferencia de fondo no hay mucha. Según [1], inclusive hay similitudes
con Java y .NET:

1.- Se compila a bytecode que es compatible entre arquitecturas (yo
tomo un .pyc en Windows y lo paso a Linux y funciona).

2.- Se hacen algunas optimizaciones pequeñas al código Python.

3.- De 1.- se puede inferir que no es necesario que Python como
intérprete deba destripar cadenas y revisar sintaxis, lo cual también
es una optimización a la hora de interpretar y cargar el archivo.

Ahora, una diferencia sustancial debe ser la manera en que Java y
Python reservan la cantidad de memoria necesaria para su ejecución,
pero eso ya es hilar demasiado fino y... es viernes.

[1] http://www.network-theory.co.uk/docs/pytut/CompiledPythonfiles.html

-- 
Rodrigo Fuentealba


Re: Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-11-16 Por tema Rodrigo Fuentealba
El 17/11/07, Franco Catrin L. [EMAIL PROTECTED] escribió:
 Alejandro Weinstein escribió:
  On Nov 16, 2007 1:16 PM, Franco Catrin L. [EMAIL PROTECTED] wrote:
 
  El segundo link casi me deja ciego ;)
 
  [sobre la diferencia entre maquina virtual e interprete]

.java - compilador - bytecode - JIT - binario x86

 Luego tu procesador ejecuta el binario x86 generado como si hubiera sido
 hecho en C/ASM

.py - compilador - tokens - interprete de tokens - funciones del intérprete

 No hay generacion de codigo nativo, sino que el inteprete en base a los
 tokens comienza a ejecutar distintas secciones de si mismo.  Imaginate
 un gigante if o un gigante switch/case que va consumiendo tokens.

Excelente respuesta! Me quedó mucho más claro.

Yo pensaba que el bytecode de Java (CAFEBABE) se interpretaba igual
que el de Python.

Los conceptos de Java que tengo son lo que aprendí en el instituto,
que no fue mucho... de hecho tuve la mala suerte de que el profe se
iba a ir a fin de semestre así que tenía cero ganas de enseñarnos a
trabajar con Swing/AWT y con Java Server Pages :(

 Para el caso de python puedes mirar en Python/eval.c
 http://svn.pythonmac.org/python24/python24-fat/Python/ceval.c

 Para el caso de JIT hay una charla de Miguel de Icaza con ejemplos y
 todo, incluso generando bytecode a partir de Python, una de las gracias
 de Mono y .NET

¿La que dio en la UOC? Buenísima.

-- 
Rodrigo Fuentealba


Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

2007-11-15 Por tema Rodrigo Fuentealba
El 15/11/07, Asdtaker [EMAIL PROTECTED] escribió:

 Podriamos hacer una competencia y que cada uno con
 su lenguaje fabrique un hola mundo, el tiempo que demore en obtenerlo
 dara el mejor lenguaje de la historia¿?

Pruébalos con un comando time al inicio y uno al final.

  Ok, estas comparaciones no son válidas (es tan estúpido, idiota y
  chanta como decir que CakePHP es más rápido que el Assembler porque el
  Hello World carga en 1 millonésima de microsegundo, cof cof),

 cha, con esto anulas mi parrafo de arriba.jeje, te
 colocaste el parche antes de la herida

No, no es eso, he probado varios frameworks, y siempre me encuentro
con la memez de que es que corre en PHP 4, no necesita clases y es
más rápido y más para hackers, y yo soy el master de PHP y hazme
caso; Finalmente la comparación entre frameworks e inclusive entre un
lenguaje y otro no tiene nunca algo que ver con la rapidez, sino con
la eficiencia que te ofrece ese framework o lenguaje.

El hecho de que los tiempos de respuesta de las computadoras actuales
sea mínimo, y la memoria sea barata pone a los desarrolladores a
pensar en cómo hacer cosas más rápido (de ahí que entran los
Frameworks a la cancha), por lo que hay que evaluar varias cosas.
Ahora, Rails v/s PHP no tiene sentido, ya que Rails es un framework
que corre sobre Ruby. Tampoco lo tiene mucho Java v/s C ya que C se
compila directamente a código de máquina, mientras que Java requiere
que tengas el JRE (Java Runtime Environment).

 (Por cierto, estoy comenzando
 con Cake.ya antes habia probado rails, e imaginaras que estoy
 viviendo un deja vu)

¿Por qué? Cake dista un poquito de Rails... Aléjate de él (a menos que
ya lo hayan migrado a PHP 5 y que aproveche las ventajas que tiene...
PHP 4 ya nadie lo mira, y si estás desarrollando aplicaciones nuevas,
asegúrate de que cumplan con un mínimo de PHP 5.2, para que tengas
soporte por cuatro años más al menos.

  pero
  el fenómeno se repite mucho en todas las aplicaciones construidas en
  este lenguaje.

 En mi celular que ya tiene casi 2 años de antiguedad, corro juegos
 java en cuestio nde segundos, y tengo algunos que se verian bastante
 pesados incluso en un PIII.

Hay una máquina que fabrica IBM en la que Java corre filete; pero en
general en los PC's la performance es más bien penquita.

-- 
Rodrigo Fuentealba