ManuelPerl escribiste:¿Es cierto que los módulos de Perl están escritos en lenguaje C?
Algunos sí. Pero puedes hacer módulos en Perl. De hecho, es lo que se suele hacer. El usar otros lenguajes como C, se dejan a cosas como por ejemplo cuando necesitas una interfaz para dialogar con alguna biblioteca externa que ya está compilada en C, o cuando necesitas acelerar una rutina, porque tienes o necesitas cumplir unos requerimientos muy altos de rendimiento. Si visitas
CPAN, verás que hay muchos módulos que solo están escritos en Perl (a eso se le llama en "puro Perl").
ManuelPerl escribiste:¿Y que luego se compilan para que el intérprete de Perl pueda utilizarlos? Si esto es así, entonces es necesario aprender C si queremos hacer módulos para Perl, ¿estoy en lo cierto?
No es necesario, pero aprender siempre es bueno. Para empezar a hacer un módulo en Perl, basta con abrir un nuevo archivo de texto, y escribir:
package Mi::Modulo; Más información en tu propio ordenador en
perldoc perlmod,
y en la Web (
traducido al español).
ManuelPerl escribiste:Cuanto más sepamos de C más potencia podemos darle a Perl, ¿es así?
Hay situaciones en las cuales la velocidad de procesamiento de C compensa el tiempo que vamos a tardar en desarrollar la subrutina en ese lenguaje. Quiero decir que, un buen programador de Perl es capaz de encontrar una solución en un determinado tiempo. Si, después, vemos que nos compensa pagar a otro programador de C unas cuántas horas más para que haga una versión de alguna parte del programa, para conseguir una aceleración, pues eso lo tiene que decidir el jefe, ya que es él el que paga esas horas extra.
Pero esto solo es necesario hacerlo en determinadas situaciones: la solución Perl ya está hecha, y funciona. Si necesitamos una solución más rápida es porque el programa Perl se queda corto en prestaciones de tiempo. Por ejemplo, dar servicio a decenas de miles de usuarios por hora en una página web de juegos.
ManuelPerl escribiste:Si esto es así me vendría muy bien porque ya conozco lo básico de C.
Lo malo es que para integrar C con Perl... puede llegar a ser algo complicado... Más información en tu propio ordenador en
perldoc perlxs,
y en la Web.
La solución más sencilla que hay es la de usar un módulo como
Inline::C. Yo ya he hecho alguna cosa así, cuando cierta rutina tardaba en ejecutarse unas cuantas horas, en Perl. La pasé a C, y el resultado salía en minutos. Pero lo hice porque había poca dificultad en pasar la rutina de Perl a C. Si veo que voy a tardar mucho tiempo, le digo al jefe que sale mucho más barato comprar un ordenador nuevo más rápido.
ManuelPerl escribiste:Una pregunta más, ¿el compilador que compila ese código C, que está en la versión de Perl que tenemos instalada?
Se puede usar cualquiera, porque se usa un C estándar. En el caso de Inline::C, se usa el que esté instalado en ese momento en el sistema. En los Unix/Linux, ejecutará
cc, que casi siempre será un alias del
gcc.
ManuelPerl escribiste:Perdonarme si hago tantas preguntas, pero es que estoy empezando y tengo que ir aclarándome.
Por dónde empezar.