[OFFTOPIC] Enersto..perl freak?

Ernesto Hernandez-Novich emhn at telcel.net.ve
Fri Jan 25 13:13:30 CST 2002


Complementando las opiniones de José Luis que son similares a las
mías...

On Thu, 24 Jan 2002, Jose Rey wrote:
> From: jean hernandez <ean79 at hotmail.com>
> Subject: Re: [OFFTOPIC] Enersto..perl freak?
>
> > El Sr. Hernandez Novich es un Perl freak? jejeje es que todo lo que leo de
> > usted es en lenguaje Perl, porque no java,php,python,c,c++ u otro? ;)
> deseo
> > una respuesta teorica.

s/freak/Hacker/;

De acuerdo con Nathan Torkington

http://prometheus.frii.com/~gnat/yapc/2000-stages/slide36.html

me faltan los puntos 7,9 y 11... y el 10 es _obviamente_ con vim-perl.
Sin embargo tengo varios según

http://prometheus.frii.com/~gnat/yapc/2000-stages/slide44.html

y el punto 4 de

http://prometheus.frii.com/~gnat/yapc/2000-stages/slide54.html

> Perl es fácil de desarrollar, luciendose sobre todo en las tareas pequeñas
[...]

Perl permite al novato enfrentarlo como un lenguaje "tradicional" de
if, while, for, variables y arreglos... vulgar paradigma imperativo.
Pero a medida que avanzas con el lenguaje (o traes una preparación
académica acorde) comienzas a aprovechar las característas funcionales
que incluye (al estilo LISP, Scheme, con clausuras, iteradores
implícitos y lazy-evaluation, que tienen _muchos_ usos en la vida real y
en sistemas grandes, incluso en "negocios" que no parecen requerir tales
engendros). Y para los formales, se cuenta con todo lo necesario para
trabajar con programación orientada a objetos.

Es un lenguaje diseñado por un lingüísta e implementado por
especialistas en lenguajes de programación. Es libre (!Java),
es complejo (!PHP), es simple (!C++) y no es "cabeza cuadrada hazlo todo
ajustado a _éstas_ normas" (!Python), y no lo voy a utilizar para
escribir un sistema operativo, un driver, un compilador, un interpretador [1]
ni un trazador de rayos/renderer (para lo cual utilizaría C). Estos, por
supuesto son mis criterios que pueden estar en desacuerdo con los de otros,
pero en ningún caso pretendo que sean absolutos. Funcionan para mí, y
está visto que muchas cosas que funcionan para mí no funcionan para los
demás <g>

Después de programar activamente en casi una veintena de lenguajes
he reducido mi conjunto a Perl y C, resolviendo el 95% de los problemas con
Perl.

> Para rematar Perl tiene un compilador de avanzada que difumina la línea
> entre tiempo de compilación y tiempo de ejecución, que permite intervenir
> activamente en la compilación del lenguaje, esta es una característica única
> de Perl que permite incluso cambiar arbitrariamente la sintaxis del lenguaje
> y hacer módulos como Perl6::Variables que dan un adelanto de la sintaxis de
> Perl 6 a los que tienen Perl 5.  Con las nuevas características de Perl 6,
> este se podrá utilizar como un meta-lenguaje.

O las increíblemente creativas posibilidades de programar Perl en Latin
o en Esperanto. Esta _posibilidad_ no hace "mejor" a Perl, pero
si demuestra la flexibilidad técnica que tiene y que en su diseño no
privaron las odiosas consideraciones académicas de formalidad visceral
_permanente_ (i.e. strong typing, no autocasting/promoción de tipos y la
necesidad de enumerar tipos en los prototipos de funciones), ni la
pretención de que las posibilidades del lenguaje están limitadas por el
statu quo de las costumbres de los programadores.

Esto es, Perl puede ser casi tan odioso como C++, Python y Java en el
análisis sintáctico/semántico y escupir improperios por la cantidad de
barbaridades que uno pueda escribir con los codos. Y eso es bueno para
sistemas de programas donde participan muchos desarrolladores. Pero es
lamentable, medieval y sobre todo un atentado contra mi flojera que
tenga que incluir patadas de packages, colocar los espacios en blanco
adecuadamente, enlazarme a media docena de librerías y hacer mi propio
mini-analizador léxico, para hacer una estupidez similar a

perl -lane 'print "$F[8] + $F[17]\n" if $F[4] != 0'

(que, incidentalmente, toma un archivo que tiene columnas de números
separadas por uno o más espacios en blanco y para cada línea suma la
columna 8 y la 17 siempre y cuando la cuarta columna no tenga un 0;
puede que no sea útil a primera vista... pero traten de hacerlo en menos
líneas de código en cualquiera de los lenguajes sugeridos).

Como escribía José Luis, algo _tan_ fácil tiene que poderse escribir
así de rápido y compacto... si no se puede, el lenguaje no es práctico
(al menos para mis gustos y necesidades). Por cierto, se puede escribir
aún más corto, pero entonces los nativos se incomodan y lo usan de
argumento en contra <g>

> - Java consume menos memoria pero es más lento que Perl.

Y no corre igual en todas las plataformas, porque es susceptible de la
implementación particular de la "máquina virtual" y las perversiones del
sistema operativo anfitrión. La máquina virtual de Perl (que tiene una)
es la misma en Unix, Win32, MacOS, VMS y otros ports.

> - PHP se parece pero Perl es más rápido y poderoso.

Sin contar que Perl puede estar _dentro_ de Apache en una relación
varios órdenes de magnitud más estrecha que PHP. Entonces la velocidad
es obscena, y la posibilidad de controlar Apache en Perl si bien no
está al alcance de todo el mundo, está al alcance de los que necesitamos
hasta el último ciclo de CPU de rendimiento (hablo de mod_perl).

> - Python es el contendor más fuerte y tiene una sintaxis más fácil, pero
> Perl es más veloz y tiene más soporte.

vi vs. Emacs
Perl vs. Python

De Holanda me quedo con las cervezas y con Slackware.
Personalmente, ya pasé la época de lenguajes de programación que te
flagelan cuando tratas de ser expresivo... y esa es la sensación que me
causa programar en Python.

> - C/C++ son mucho más eficientes en espacio y velocidad, pero en
> aplicaciones pequeñas y/o medianas es mucho más fácil y rápido desarrollar
> en Perl.

No preocuparse por apuntadores, pero tenerlos. No preocuparse por la
reserva automática de memoria, pero tenerla. No preocuparse por enlazar
con la librería adecuada, pero tenerla. No preocuparse por la liberación
de memoria, pero tenerla. s/C|C++/perl/g

> - NINGUNO ofrece las características de avanzada que hacen de Perl un
> lenguaje perfecto para resolver 90% de los problemas.

NINGUNO ofrece libertad de expresión tanto para el novato como para el
experto.

Los novatos en "Linux" se sorprenden con la cantidad de cosas
disponibles porque lo catalogaban de "sistema operativo" usando como
patrón de comparación cosas muy inferiores. Así mismo, los novatos en
Perl no pueden comenzar a apreciar la flexibilidad que encuentran si
solamente han programado en lenguajes tradicionales imperativos del nivel
que sea, enmarcados en "entornos de programación" (Too ugly for words) y con
"desarrollo rápido de aplicaciones" (vim-perl y cerebro, eso es todo lo
que hace falta).

Toda mi explicación ha sido completamente pragmática, porque la
verdadera respuesta está en

http://prometheus.frii.com/~gnat/yapc/2000-stages/slide58.html

[1] Me vería realmente estúpido implementando un interpretador, puesto
    que ya existe Perl que acaba con _todos_ los interpretadores y puede
    ser embebido en mi aplicación.
-- 
Ernesto Hernández-Novich - Running Linux 2.4.17 i686 - Unix: Live free or die!
Trouble getting proper answers? RTFM and STFW.
Don't like my answers? Keep sending money for faster/longer ones.
Don't get it? FOAD. I mean it.
If you can't apt-get it, it isn't useful or doesn't exist.

------------------------------------------------------------------------
Enviar e-mail a <majordomo at pm.org> colocando en el cuerpo:
"UNSUBSCRIBE caracas-pm-list" para desuscribirse.
"INFO caracas-pm-list" para conocer las reglas de etiqueta.
------------------------------------------------------------------------



More information about the caracas-pm mailing list