[pyar] [OT] sobre un "segundo" lenguaje...

Alejandro Santos listas en alejolp.com
Mar Mar 4 10:38:32 ART 2014


2014-03-04 2:29 GMT+01:00 Fernando Pelliccioni <fpelliccioni en gmail.com>:
>
> Realmente no conozco nada de Common-Lisp, pero que sea un lenguaje dinámico
> y tenga GC me hace creer que no es muy eficiente.
>

El GC fue inventado por la gente de LISP para resolver el problema de
las dependencias circulares[1], y muchos de los algoritmos modernos ya
sea de Java, .Net, etc, estan inspirados en este trabajo.

De todas formas no creo que por decir que "tenga GC" sea razon
suficiente para decir que no sea muy eficiente. Depende mucho de la
vara de bambu que uses para medir, porque por ejemplo tenes estos
micro benchmarks donde C++ es solo el doble de r'apido que (SBCL) LISP
y Haskell:

  http://benchmarksgame.alioth.debian.org/u64/benchmark.php?test=all&lang=sbcl&lang2=gpp&data=u64
  http://benchmarksgame.alioth.debian.org/u64/benchmark.php?test=all&lang=ghc&lang2=gpp&data=u64

Ambos con Garbage Collection.

Me gusto mucho la pregunta de Claudio Freire porque todo depende de lo
que cada uno entienda "Expresivo", porque si por expresivo queres
decir que queres usar hasta la ultima capacidad de expresion de tu
CPU, deberias estar usando ASM ya que es la unica manera de usar cada
posible optimizacion.

A mi personalmente me parece que, en general, un lenguaje de
programacion es una forma para que los programadores nos comuniquemos
ideas entre nosotros, y en menor medida como un mecanismo para
comunicarse con una computadora.

Es cierto que hay algunos problemas que se requiere eficiencia bruta y
cruda, pero otros donde no es tan importante el tiempo "wall clock" de
ejecucion sino la productividad de los programadores. Esto es asi
cuando hay que tener en cuenta la economia completa del proyecto:
?qu\'e es m\'as barato, comprar m\'as procesamiento o pagarle a mas
programadores?

Si en cambio estas trabajando en un proyecto donde estas vos por tu
cuenta entonces usa el lenguaje que mas comodo te resulte.

Aca donde trabajo usamos C++, Java y Python. C++ para codigo con
fuertes limitaciones de tiempo que corran en el datacenter (10,000
servidores), Python para programas que no importe la eficiencia de CPU
o memoria, y Java para todo lo demas.

[1] http://en.wikipedia.org/wiki/Garbage_collection_%28computer_science%29


-- 
Alejandro Santos


More information about the pyar mailing list