From emhn at telcel.net.ve Fri Jan 25 13:13:30 2002 From: emhn at telcel.net.ve (Ernesto Hernandez-Novich) Date: Wed Aug 4 23:59:28 2004 Subject: [OFFTOPIC] Enersto..perl freak? In-Reply-To: <001501c1a4ed$bc6785b0$220ba8c0@hr.lxs> Message-ID: Complementando las opiniones de Jos? Luis que son similares a las m?as... On Thu, 24 Jan 2002, Jose Rey wrote: > From: jean hernandez > 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 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 > - 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 colocando en el cuerpo: "UNSUBSCRIBE caracas-pm-list" para desuscribirse. "INFO caracas-pm-list" para conocer las reglas de etiqueta. ------------------------------------------------------------------------