vb vs perl

28
Universidad de Panamá Facultad de informática, Electrónica y Comunicación Ingeniería en Informática II semestre Tema: Laboratorio #6 Visual Basic Vs Perl Profesor: Saúl Ardines G. Asignatura: Estructura de Lenguajes de Programación (LP) Nombre: Ian A. Herrera A. Sed. : 8-874-58

Upload: ian-a-herrera

Post on 23-Dec-2015

34 views

Category:

Documents


4 download

DESCRIPTION

Comparacion entre lo lenguajes de programacion Visual basic y Perl

TRANSCRIPT

Page 1: VB vs Perl

Universidad de Panamá

Facultad de informática, Electrónica y Comunicación

Ingeniería en Informática

II semestre

Tema: Laboratorio #6

Visual Basic

Vs

Perl

Profesor:

Saúl Ardines G.

Asignatura:

Estructura de Lenguajes de Programación (LP)

Nombre:

Ian A. Herrera A. Sed. : 8-874-58

Fecha de entrega:

Martes 11 de noviembre de 2014

Page 2: VB vs Perl

Índice Hoja de Presentación Contenido del laboratorio:

Introducción 1. Breve Reseña Histórica 2. Características del Lenguaje de Programación3. Objetos de datos

3.1 Tipos de datos primitivos3.1.1 Variables y constantes3.1.2 Tipos de datos numéricos y Tipos de datos de caracteres3.1.3 Tipos de datos booleanos

3.2 Tipos de datos estructurados3.2.1 Tipos de datos de arreglos3.2.2 Tipos de datos de registro3.2.3 Apuntadores o Punteros3.2.4 Archivo de entrada/salida

3.3 Tipos de datos definidos por el usuario4. Control de secuencia

4.1 Expresiones4.2 Enunciados

4.1.1 Enunciados de entrada y salida4.1.2 Enunciados condicionales4.1.3 Enunciados de iteración

5. Subprogramas y gestión de almacenamiento 6. Ejemplos prácticos 7. Cuadro de Comparación y Evaluación de los Lenguajes de Programación8. Evaluación 9. Bibliografía

Introducción

En este laboratorio veremos las características principales del lenguaje de programación Perl, además evaluaremos los lenguajes Visual Basic y Perl

según los Criterios de Comparación y Evaluación de los Lenguajes de Programación para poder determinar cuál de estos es el mejor lenguaje a

utilizar, aunque hay muchos más criterios que estos mencionados simplemente al usar los que se nos han facilitados es suficiente para tener un

Page 3: VB vs Perl

panorama de lo que pueden ser capases los lenguajes y así cuando se nos presente una situación en donde tendremos que elegir entre varios lenguajes

de programación para resolver algún problema o proyecto tendremos una herramienta más exacta para poder tomar decisiones con una mayor

precisión y mucho más rápido.

Reseña Histórica

Perl es un lenguaje de programación diseñado por Larry Wall. Perl toma características del lenguaje C, del lenguaje interpretado bourne shell (sh), AWK, sed, Lisp y, en un grado inferior, de muchos otros lenguajes de programación.

Larry Wall comenzó a trabajar en Perl en 1987 mientras trabajaba como programador en Unisys y anunció la versión 1.0 en el grupo de noticias comp.sources.misc el 18 de diciembre de 1987. El lenguaje se expandió rápidamente en los siguientes años. Perl 2, publicado en 1988, aportó un mejor motor de expresiones regulares. Perl 3, publicado en 1989, añadió soporte para datos binarios.

Page 4: VB vs Perl

La primera versión de PERL que llegó a ser suficientemente conocida fue la versión 4, dada a conocer al mundo por el libro del camello. Esta versión se estuvo desarrollando desde 1991 a 1993, y coincidió con la popularidad del PERL como lenguaje para programación de servidores de Internet; aunque originalmente se había diseñado como lenguaje para administración de sistemas.

La versión 5 estable no apareció hasta el 17  octubre de 1994, y ha sido tan popular que todavía se usa. Fue casi una completa reescritura del intérprete y añadió muchas nuevas características al lenguaje, incluyendo objetos, referencias, paquetes y módulos. A destacar, los módulos proveen de un mecanismo para extender el lenguaje sin modificar el intérprete. Esto permitió estabilizar su núcleo principal, además de permitir a los programadores de Perl añadirle nuevas características.

 Y  hacen a PERL tan fácil de programar, incluyendo los módulos, las facilidades para programación dirigida a objetos, referencias y mucha mejor documentación. Aparecen muchos otros libros, tales como Learning Perl.

Características del Lenguaje de Programación

Estructuralmente, Perl está basado en un estilo de bloques como los del C o AWK, y fue ampliamente adoptado por su destreza en el procesado de texto y no tener ninguna de las limitaciones de los otros lenguajes de script.

Un script, archivo de órdenes es un programa usualmente simple, que por lo regular se almacena en un archivo de texto plano. Los script son casi siempre interpretados, pero no todo programa interpretado es considerado un script. El uso habitual de los scripts es realizar diversas tareas como combinar componentes, interactuar con el sistema operativo o con el usuario.

Perl es un lenguaje de programación de propósito general originalmente desarrollado para la manipulación de texto y actualmente para un amplio rango de tareas incluyendo administración de sistemas, desarrollo web, programación de redes, desarrollo de GUI y muchas más.

Este Lenguaje ha sido creado para ser practico (fácil de usar, eficiente, completo) en lugar de bonito (pequeño, elegante, minimalista). Su mayor característica son que es

Page 5: VB vs Perl

fácil de usar, soporta programación procedural y orientada a objetos, tiene un fuerte soporte incorporado para procesamiento de texto.

Objetos de datosTipos de datos primitivosVariables y constantes

VARIABLES

Las variables almacenan el valor asignado en la memoria, para acceder a dicho valor hay que hacerlo a través del nombre con el que se declaró, en Perl los nombres de las variables empiezan por el carácter "$" y no es obligatorio declarar el tipo de datos, ni tampoco indicar explícitamente de que se trata de una variable, aunque se puede hacer mediante la palabra reservada my, las variables pueden ir cambiando su valor a lo largo de la ejecución del programa, esto quiere decir que no son constantes, una variable puede almacenar un valor y ser cambiado tras una determinada acción. 

Ejemplo:

#Variablesmy $variable = "Hola soy una variable \n";print $variable;$variable = "Hola soy una variable \n";print $variable;

CONSTANTES

Las constantes al contrario que las variables mantienen el valor constante, es decir, no pueden cambiar su valor en ningún punto de la ejecución, es útil para definir valores que no van a tener que ser sometidos a cambios, como podría ser el número pi, un importe fijo, un determinado número, ... Para declarar una constante en Perl se utilizan las palabras reservadas use constant, seguido del nombre y la asignación de su valor, como en el caso de las variables tampoco es necesario especificar el tipo de datos, ya que Perl lo interpreta atendiendo al valor asignado. 

Ejemplo:

Page 6: VB vs Perl

#Constantes use constant numero_pi => 3.14;print "Numero pi es una constante: ".numero_pi;

Tipos de datos numéricos y Tipos de datos de caracteres

Un escalar es un solo valor; puede ser un número, un string o una referencia

Una lista es una colección de escalares (una variable que almacena una lista se

llama array)

Un hash, o memoria asociativa, es un mapeo de strings a escalares; los strings se

llaman claves y los escalares valores.

Todas las variables están precedidas por un sigil, que identifica el tipo de dato que es

accedido (no el tipo de dato de la misma variable). Se puede usar el mismo nombre

para variables de diferentes tipos, sin que tengan conflictos.$var # un escalar

@var # un ''array''

%var # un ''hash''

Datos Escalares

Comienzan con el signo $y contienen datos de tipo escalar. Por escalar entendemos valores

numéricos y/o alfanuméricos. Para la asignación se usa el signo igual (=) como en la mayoría

de los lenguajes. En el caso de ser un valor alfanumérico (texto) este se escribe entre comillas.

Al final de la asignación se debe escribir ";".$n = 42;$nombre = "juan";

Perl convertirá los strings en números y viceversa dependiendo del contexto en que

sean usados.

Datos array Comienzan con el signo @ y contienen una lista de valores escalares (números y/o textos). Al

ser una lista de valores para acceder a cada de uno estos se utiliza un número que indica su

posición dentro de la lista. La numeración empieza en 0, y se coloca entre corchetes [ ]. A este

número que indica la posición de un valor dentro de la lista del arreglo se denomina índice@puntuaciones = (32, 45, 16, 5);

Datos hash

Un hash puede ser inicializado desde una lista de pares clave/valor.%favorito = (joe => 'rojo', sam => 'azul',);

Tipos de datos booleanos

Page 7: VB vs Perl

En Perl no existen tales datos, sin embargo cuando se analizan internamente si el dato contiene algún valor diferente de cero Perl lo considera como verdadero.

$fruta = '0'; #Falso$fruta = '5'; #Verdadero$fruta = "5 mangos"; #Verdadero

Tipos de datos estructuradosTipos de datos de arreglos

Arrays

Un Array en Perl es como los de C, pero con la diferencia de que van precedidos del símbolo arroba @. (Como las variables de $). La forma de acceder a ellos es mediante la indexación, contando desde cero. En Perl no nos tenemos que preocupar de reservar la memoria ni gestionarla de ninguna forma. Hay que tener en cuenta que cuando se accede a un elemento de un array, ya no se está haciendo referencia a un array sino a un dato escalar, por lo que debe ir precedido del símbolo $.

#!/usr/bin/perl

 #Declaramos la variable primer_array como un array my @primer_array;

 #asignamos unos cuatro valores al array @primer_array= (1,"dos", 3,"cuatro");

 #Añadimos un quinto de forma individual $primer_array[4]=5.5;

 #Mostramos el tercer elemento del array print "El tercero es= ".$primer_array[3]." \n";

my @array3D=([],[],[]);

 $array2D[0][0]=0;

Arrays asociativos

Un array asociativo en Perl o tabla hash (como también se le denomina) es un array donde los elementos son referenciados mediante claves en vez de una posición. Para los array asociativos se utiliza el símbolo %. Al igual que sucede con los arrays normales, cuando se accede a un elemento de un array asociativo se debe referenciar como un escalar con el símbolo $. Además la indexación por clave no se hace utilizando los corchetes, sino que se utilizan las llaves ({   }).

#asignamos valores a una tabla hash my %colorfruta;

Page 8: VB vs Perl

 $colorfruta {"verde"}="kiwi";Puntero a un Array

Se puede crear una referencia a una lista usando en lugar de ( ). Mediante esta técnica se pueden implementar arreglos multidimensionales.

my $ref_a_arreglo = [ 'a0', 'a1', 'a2' ]; print "$ref_a_arreglo->[1]\n";

my $ref_a_multi_arreglo = [ [ 'a0', 'a1', 'a2' ], [ 'b0', 'b1', 'b2', 'b3' ], [ 'c0', 'c1', 'c2' ],  ];

# Desplegar elemento (1,3) = 'b3' print "$ref_a_multi_arreglo->[1][3]\n";

Tipos de datos de registro

Variables  matrices asociadas: "hashes"(Listas) Comienzan con el signo %  y se tratan de matrices que se referencian por el par clave/valor. Como veremos a continuación los valores se introducen manteniendo una relación a pares. El primer valor es la clave o referencia del siguiente.Se pueden asociar los valores a las matrices asociadas de 2 modos:

       %dia=(Lun,"Lunes",Mar,"Martes ");       %dia=( Lun => "Lunes",                         Mar => "Martes",   );

Clase  Struct

Exporta una sola función struct(), dada una lista de elementos con nombres y tipos, la función struct() crea una clases que implementa una estructura de datos parecida a un struct

struct( CLASS_NAME => [ ELEMENT_LIST ]);struct( CLASS_NAME => { ELEMENT_LIST });struct( ELEMENT_LIST );

Ejemplo use Class::Struct;  struct( Rusage => {ru_utime => 'Timeval',  # user time used       ru_stime => 'Timeval',  # system time used});

Apuntadores o Punteros

Punteros

Page 9: VB vs Perl

Los References en Perl apuntan a una dirección de memoria donde se almacena el valor de una variable. Si bien se pueden hacer referencias a cualquier tipo de variable, la referencia en si se trata siempre como un Escalar por lo que comienzan con $.

my $scalar = 'hola'; my $scalar_ref = \$scalar; print "Scalar: $$scalar_ref\n";

Archivo de entrada/salida

Otra función necesaria cuando se realizan programas es la lectura/escritura de archivos.En Perl se maneja de la siguiente manera.En la variable $archivo1 se guarda el nombre del archivo entre comillas.$archivo1=”notas.txt”;

open(ARCHIVO1,"<",$archivo1) or die “mensaje al  usuario: $!”;

Leer archivo y asignarlo al manejador ARCHIVO1.

open(ARCHIVO2,">",$archivo2) or die “mensaje al  usuario: $!”;

Escribir en archivo utilizando el manejador ARCHIVO2.

open(FINAL,">>",$arFinal) or die “mensaje al  usuario: $!”;

Insertar al final del archivo sin borrar el contenido completo del mismo, utilizando el manejador de archivos FINAL.

Se puede utilizar la función print para escribir en los archivos.Ej: print FINAL $ar,"\n";Para recorrer el archivo y mostrarlo en pantalla se utiliza un ciclo como este:while( < ARCHIVO1 > ){print $_;}

Bases de datos

Los módulosAntes de empezar es necesario que cheques si tienes los módulos necesarios.El mejor módulo en mi opinión y en la de muchos es la de DBI, un módulo creado en lenguaje C++ por lo que está compilado. La gran ventaja que tienes este módulo, a parte de estar muy bien hecho por lo que no tiene bugs, es que es compatible con casi todos los sistemas de database, por lo que si usas este módulo para conectarte a tu database, podrás usar tu código con los más importantes sistemas de database.Ahora, parte del módulo DBI vamos a necesitar otro módulo, nada más que este depende de qué database uses, si por ejemplo usas MySQL entonces el otro módulo sería DBD::mysql, si usaras postgres entonces sería DBD::Pg y así con los otros database.Todos los módulos disponibles de DBD son:

DBD::SybaseDBD::pNET

DBD::SqlflexDBD::Solid

Page 10: VB vs Perl

DBD::mSQLDBD::mysqlDBD::UnifyDBD::OracleDBD::PgDBD::IngresDBD::IllustraDBD::CSV

DBD::DBMakerDBD::InformixDBD::OvrimosDBD::TeradataDBD::MultiplexDBD::InterBaseDBD::XBaseDBD::ODBCDBD::Adabas

y muchos másComo ves existen módulos de DBD para casi cualquier sistema de database que hay, sólo es cuestión de que instales el que quieres usar.

Control de secuenciaExpresiones

La manera de utilizar las expresiones en Perl es la siguiente:

#!/usr/bin/perl -w # elementos de la sintaxis de Perl

# llamada al módulo strictuse strict;

# declaramos la variable $fechamy $fecha;

# llamada al sistema operativo para ejecutar el programa date y asignar el resultado a $fecha con el operador =$fecha = `date`;

# estructura de control if-else para ejecutar partes del programa de forma condicional# la condición es que dentro del contenido de $fecha encontremos la subcadena# "mar" seguida de uno ó más espacios \s+ y un dígito \d # esto es una expresión regular, fácilmente identificable por / /

if($fecha =~ /mar\s+\d/){# llamada a la función print con una cadena de caracteres como parámetro # normalmente las funciones reciben parámetros separados por comas entre paréntesis

print("Estamos en Marzo, el mes de mi cumpleaños\n");}else{ # pero perl no siempre requiere los paréntesis en las llamadas a funciones

print "Todavía queda para mi cumpleaños\n";}

Enunciados

Enunciados de entrada y salidaEscribir en la salida estándar (pantalla) ya sabemos hacerlo, ahora nos interesa aprender como leer cosas desde el teclado y como escribir y leer en ficheros.

Page 11: VB vs Perl

Para leer de teclado se utiliza <STDIN>, que es un manejador de ficheros (Filehandle), que por costumbre se ponen en mayúsculas. (También existe <STDOUT> y <STDERR> para la salida estándar y la salida de errores respectivamente).Lectura de STDIN:#!/usr/bin/perl

 print "Hola. ¿Cómo te llamas?\n"; $nombre=<STDIN>;

 #le quitamos el caracter de retorno de carro chop($nombre);

 if ($nombre eq "") {   print '¿Qué pasa? ¿eres mudit@?'."\n"; } else  {  print "Hola $nombre, yo me llamo Flanagan. ¿Estudias o trabajas?\n"; }

Para escribir en la salida estándar se utiliza print como hemos visto, pero si queremos escribir en la salida de errores sería poniendo después de print el manejador de fichero de donde queremos escribir.Lectura de STDIN, escritura en STDERR y STDOUT:#!/usr/bin/perl

 print "Hola. ¿Cómo te llamas?\n"; $nombre=<STDIN>; #le quitamos el caracter de retorno de carro chop($nombre);

 if ($nombre eq "") {   print STDERR '¿Qué pasa? ¿eres mudit@?'."\n"; } else  {   print STDOUT "Hola $nombre, yo me llamo Flanagan. ¿trabajas o vives?\n";} Ya sabemos leer/escribir en un manejador de fichero (vale, que hasta ahora sólo hemos usado pantalla y teclado). Ahora vamos a ver como se haría con ficheros. Para trabajar con un fichero hay que abrirlo, escribir/leer de él y cerrarlo. Para abrir un fichero se utiliza la función open y para cerrarlo con close. El formato para abrir un fichero es open (Manejador_de_fichero, Modo_y_NombreFichero). Lo modos de abrir un fichero se muestran en la siguiente tabla.

Modo Significado

"Nombre" Abre Nombre para leer.

"<Nombre" Abre Nombre para leer. Igual que el anterior

Page 12: VB vs Perl

">Nombre" Abre Nombre para escribir. Si no existe lo crea

">>Nombre" Abre Nombre para añadir al final

"+>Nombre" Abre Nombre para lectura/escritura.

Enunciados condicionalesPerl mantiene todas las estructuras de control de flujo que pueda tener cualquier otro lenguaje, pero con la peculiaridad de que un bloque siempre debe ir entre llaves ({ }), aun cuando el bloque contenga un única sentencia.Un resumen general de las estructuras de control de flujo es: if (EXPR) BLOQUE

if (EXPR) BLOQUE else BLOQUE

if (EXPR) BLOQUE elsif (EXPR) BLOQUE else BLOQUE

SENTENCIA if (EXPR);

unless (EXPR) BLOQUE

unless (EXPR) BLOQUE else BLOQUE

unless (EXPR) BLOQUE elsif (EXPR) BLOQUE else BLOQUE

while (EXPR) BLOQUE

SENTENCIA while (EXPR);

until (EXPR) BLOQUE

SENTENCIA until (EXPR);

do BLOQUE while (EXPR);

do BLOQUE until (EXPR);

for (EXPR;EXPR;EXPR) BLOQUE

switch(EXPR){case n{BLOQUE}

SENTENCIA unless (EXPR)

Donde EXPR es una expresión, BLOQUE es una sentencia o conjunto de estas encerrado entre llaves y SENTENCIA es una sola sentencia

Enunciados de iteraciónForPerl soporta el ciclo for. La sintaxis es la siguiente:for (my $i=0; $i < $array_size; $i++ ){ # $i es el contador de control   $array[$i] = “El valor es $i”;  #imprime el valor del contador por consola.}

Whilemy $i = 0;my $maximo = 10; # por decir un maximo cualquiera.while ( $i < $maximo){   $array[$i] = “El valor es $i”;  #imprime el valor del contador por consola.    $i++;                                  # o  --> $i=$i + 1;}

ForeachEjemplo de un foreach sobre un array:foreach my $val (@array) { print "Este es el valor del array: $val"\n";}Ejemplo de un foreach sobre un hash:

Page 13: VB vs Perl

foreach my $val (keys %miHash){  # $val contiene el nombre del key del valor, no el valor real.

my $aux = $miHash{$val};print “El valor de aux es $aux.\n”;}

Subprogramas y gestión de almacenamientoFuncionesEn Perl se puede definir una función es cualquier parte, aunque lo común es hacerlo al principio del fichero. La función solo se ejecuta cuando se llama expresamente. La función se define con la palabra sub.Ejemplo: sub funcion_1 {    $a = shift;        # shift asume el array @_# @_ contiene los argumentos# que se dan al llamar la función    $y = 2 * $a;    return($y); # devuelve ese valor al que llamó la función}

La función se llama simplemente escribiendo su nombre: $x = 5; $z = funcion_1($x);   # pasa $x como único elemento de @_# por tanto, $z queda con 10.

Una función que no tiene un return explícito retorna, no obstante, el valor de la última expresión que se ha ejecutado; por tanto, la función funcion_1 anterior no necesita la sentencia return.Cuanto se llama a una función, no es obligatorio recoger el valor devuelto por ésta.Los parámetros de una función se pasan siempre por referencia; por consiguiente, si se modifica $_[1] se está cambiando el segundo parámetro usado en la expresión que llama a la función. Puede ser peligroso si no se maneja con cautela.

 sub funcion_2 { $_[0]=7;      # Modifica el primer parámetro en el llamador} $a = 5; funcion_2($a); print  $a;            # Imprime: 7

BloquesUn bloque consiste en un conjunto de expresiones dentro de llaves {}. Las funciones son bloques, pero también puede haber bloques sin la palabra sub. Una de las razones para tener bloques es la de disponer de variables locales que desaparecen cuando el bloque termina.

 $a=5;                  # variable global que nunca muere { $b=7;          # variable global que nunca muere

Page 14: VB vs Perl

         my($c)= 3;            # "my" crea una variable local que# solo existe en este bloque         funcion_3();  # $c no es visible dentro de funcion_3} print  $a;            #  imprime: 5 print  $b;             #  imprime: 7 print  $c;             #  No imprime nada: $c no existe sub funcion_3 {         print $a;      #  imprime: 5         print  $b;     #  imprime: 7         print  $c;     #  No imprime nada: $c no existe }

Cuando definimos una variable por regla general tiene un ámbito global al script, a no ser que utilicemos las funciones my o local para limitar su alcance. Su significado es muy parecido, con algún matiz:·         La función my es la más utilizada para definir variables locales. Las variables declaradas con my son visibles sólo dentro del bloque, y no desde fuera. Tampoco son visibles a las funciones que se llaman desde el bloque.·         La función local se usa para definir otras variables locales, pero a diferencia de las anteriores, si son visibles a las funciones que se llamen desde el bloque. $a = 5;        # variable global que nunca muere {local($a)=3;  # El valor 5 se guarda temporalmente# para reponerlo cuando el bloque termine         local($b)=7;  # Como $b no existia, al salir del bloque# no va a existir         funcion_4();  # En funcion_4() se puede usar $a y $b} print  $a;     #  imprime: 5 print  $b;     #  No imprime nada: $b no existe sub funcion_4 {         print  $a;     #  Imprime: 3         print  $b;     #  Imprime: 7 }

Ejemplos prácticos Perl#!/usr/bin/env perl

do{print "Lista de Artistas\n\n

1.Foo Fighters\n2.Nirvana\n3.Coheed and Cambria\n4.Salir\n\n

Seleccionar una de las opciones anteriores\n"; $opt=<STDIN>; chop($opt);

Page 15: VB vs Perl

use warnings;use feature ":5.12";

my $file1 = "foo.txt\n\n";my $file2 = "nirvana.txt\n\n";my $file3 = "coheed.txt\n\n";given($opt) { when(1) { unless(open FILE, $file1) {die "nUnable to open $file1\n\n";}while(my $line = <FILE>) {print $line;}close FILE;print "\n \n\n";system("pause");system("cls");} when(2) { unless(open FILE, $file2) {die "nUnable to open $file2\n\n";}while(my $line = <FILE>) {print $line;}close FILE;print "\n \n\n";system("pause");system("cls");} when(3) {unless(open FILE, $file3) {die "nUnable to open $file3\n\n";}while(my $line = <FILE>) {print $line;}close FILE;print "\n \n\n";system("pause");system("cls");} when(4) {system("cls"); print "\n\n\n\n\n\n\n\nBuuuuuueeeeeeennnooo Se Termino xD\n\n\n\n\n\n\n\n";} default { system("cls");print " \n\n\n\n\n\n\n\nPorfavor elige ua opcion valida UmU \n\n\n\n\n\n\n\n";system("pause");system("cls");}}}while($opt!=4);

Visual BasicPublic Class Form1

Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim fileReader As String fileReader = My.Computer.FileSystem.ReadAllText("C:\Users\Ian\Documents\Perl\foo.txt") MsgBox(fileReader) End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim fileReader As String fileReader = My.Computer.FileSystem.ReadAllText("C:\Users\Ian\Documents\Perl\nirvana.txt") MsgBox(fileReader) End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Dim fileReader As String fileReader = My.Computer.FileSystem.ReadAllText("C:\Users\Ian\Documents\Perl\coheed.txt") MsgBox(fileReader) End SubEnd Class

Cuadro de Comparación y Evaluación de los Lenguajes de Programación

Criterio Razones ( al menos deben ser 5 ) Calificación

Page 16: VB vs Perl

1. Expresividad a) Reflejar lo deseado(Utilizar un algoritmo como base)

1. Visual Basic: Lenguaje en donde la manera de plasmar un algoritmo en código es bastante parecida a la del lenguaje de programación Pascal debido a que muchos de los módulos que utiliza inician y terminan con palabras reservadas; no utiliza el “;” para terminar las sentencias y se utiliza el “:” para separar ecuaciones en una sola línea.

2. Perl: Este lenguaje plasmar un algoritmo es un poco más complicada debido al uso de los sigils, pero es menos restrictivo que otros lenguajes debido a que no hay tantos tipos de variables y que la principal que son los escalares no necesitan ser definidos.

b) Uso de programación estructurada(ciclos y condicionales):

i. Visual Basic: Sentencias de iteración: utiliza instrucciones como: While...End While, Do...Loop, For...Next, For Each...Next.Las sentencias de selección: Utiliza Instrucciones como: If...Then...Else, Select...Case, Try...Catch...Finally.

Ejemplo Iteración: While index <= 10 Debug.Write(index.ToString & " ") index += 1End WhileEjemplo selección:

If count = 0 Then message = "There are no items." ElseIf count = 1 Then message = "There is 1 item." Else message = "There are " & count & " items." End If

ii. Perl: Sentencias de iteración: utiliza instrucciones como: For, While, Foreach, Do…while, Do…until, while, until.Las sentencias de selección: Utiliza Instrucciones como: If...Else, if…elsif…else, unless, unless…elsif…else, switch

Ejemplo Iteración: while (EXPR) BLOQUEdo BLOQUE while (EXPR);Ejemplo selección:if (EXPR) BLOQUE else BLOQUE

c) Expresiones Matemáticas:

Perl4,75

Visual Basic4,90

Page 17: VB vs Perl

i. Visual Basic: X = E+Yii. Perl: $Y = 2 * $y;

2. Bien-definidoa) Sintaxis(General programas):

i. Visual Basic:Module mainModule Sub Main() MsgBox("Hello, World!") ' Display message on computer screen. End SubEnd Module

ii. Perl:#!/usr/bin/perl print "Hola. ¿Cómo te llamas?\n"; 

b) Sintaxis(en Funciones)

i. Visual Basic: Public Function calcSum(ByVal ParamArray args() As Double) As Double calcSum = 0 If args.Length <= 0 Then Exit Function For i As Integer = 0 To UBound(args, 1) calcSum += args(i) Next iEnd Function

ii. Perl: sub funcion_1 {    $a = shift;            $y = 2 * $a;    return($y); }

Perl4,70

Visual Basic 4,85

3. Tipos y estructuras de datos

a) Datos primitivos:

i. Visual Basic:

Los tipos de datos integrales con signo

Los tipos datos integrales sin signo

Tipos numéricos no integrales

SByte Byte DecimalShort UShort SingleInteger UInteger DoubleLong ULong

ii. Perl: escalar.Datos Estructurados:

i. Visual Basic: Listas, colas pilas, arboles.

Perl4,65

Visual Basic 4,70

Page 18: VB vs Perl

ii. Perl: Hash (Listas). Las listas en perl no son estructuras de datos, son posiciones en el código, determinadas por el contexto que las rodea. Básicamente las listas son estructuras que Perl utiliza para mover datos.

4. Modularidad a) Uso de funciones y procedimientos

i. Visual Basic: Visual Basic utiliza varios tipos de procedimientos:1. Subprocedimientos.2. Los procedimientos de control de eventos son

procedimientos Sub que se ejecutan en respuesta a un evento provocado por una acción del usuario o por un suceso en un programa.

3. Procedimientos de propiedad: get y set.4. Procedimientos de operador.5. Procedimientos genéricos: definen uno o

varios parámetros de tipo además de sus parámetros normales, de forma que el código de llamada puede pasar tipos de datos específicos cada vez que realiza una llamada.

ii. Visual Basic:BloquesUn bloque consiste en un conjunto de expresiones dentro de llaves {}. Las funciones son bloques, pero también puede haber bloques sin la palabra sub. Una de las razones para tener bloques es la de disponer de variables locales que desaparecen cuando el bloque termina.

 $a=5;     { $b=7; my($c)= 3;              funcion_3();# "my" crea una variable local que# solo existe en este bloque } print  $a; print  $b; print  $c;             

b) Tipos de datos definidos por el usuario

iii. Visual Basic: [Public | Protected | Friend | Protected Friend | Private] Structure structname {Dim | Public | Friend | Private} member1 As datatype1 ' ... {Dim | Public | Friend | Private} memberN As datatypeN

Perl4,75

Visual Basic4,85

Page 19: VB vs Perl

End Structure

iv. Perl: use Class::Struct;

struct( Rusage => {ru_utime => 'Timeval',  # user time used       ru_stime => 'Timeval',  # system time used});

5. Facilidades de e/s

a) Manejo de archivos simples:i. Visual Basic: Soporta acceso directo de los archivos.

ii. Perl: Maneja todo tipo de acceso para archivos.

b) Conectividad de con Bases de Datos:i. Visual Basic: utiliza Oracle, MySQL, SQL, Access,

Odbc, Genérico. ii. Perl: Gracias a la implementación de módulos se

puede conectar a todas las bases de datos existentes en el mercado.

Perl4,95

Visual Basic4,90

6.

Transportabilidad

a) Dependencia de S.O

Perl se pueden utilizar en:

1. Windows 2. Linux (u otros UNIX)3. Mac (con el compilador Xcode)

b) Visual Basic solo se puede usar en Windows.

Perl4,95

Visual Basic4,00

7. Eficienciaa) El tamaño del ejecutable y el tiempo de ejecución dependen

del compilador

b) Visual Basic gracias a su editor de código es mucho más rápido para escribir las instrucciones y le toma menos esfuerzo al programador debido a que muchas veces simplemente solo se utiliza el mouse para seleccionar los diferentes objetos y el editor va creando el código.

Language Time taken to run a simple empty loop test for 10 000 billion iterationsJava Under one secondPerl approx. 1 monthC/C++ approx. 1 monthC# approx. 1 monthAssembler approx. 1 monthFortran approx. 1 monthAda approx. 1 monthBasic (e.g. Visual Basic) approx. 1 monthYou name it approx. 1 month or greaterOther languages approx. 1 month or greaterhttp://www.javaperformancetuning.com/news/qotm028.shtml

c) En Un procesador x86 quad core

Perl4,85

Visual Basic4,80

Page 20: VB vs Perl

http://benchmarksgame.alioth.debian.org/u32q/benchmark.php?test=all&lang=fpascal&id=1&data=u32q

8. Pedagogíaa) Facilidad para aprender y enseñar

i. Visual Basic: Lenguaje fácil de entender y enseñar debido a su sintaxis.

ii. Visual Basic lenguaje utilizado para enseñar a las personas que están empezando a estudiar programación gracias a su gran bibliografía y la facilidad para entender el código.

iii. Visual Basic gracias a su editor de código permite un entendimiento más rápido y fácil.

iv. Perl: Su sintaxis y la estructura de sus programas hacen difícil el aprendizaje.

Perl4,80

Visual Basic4,90

Page 21: VB vs Perl

b) Preferencia por usuarios:

9. Generalidad Rango de aplicaciones de programación: Visual Basic: “Lenguaje de Propósito General”

Perl es un lenguaje de programación de propósito general originalmente desarrollado para la manipulación de texto y actualmente para un amplio rango de tareas incluyendo administración de sistemas, desarrollo web, programación de redes, desarrollo de GUI y muchas más.

Perl4,85

Visual Basic4,75

Promedio

Perl4,81

Visual Basic4,73

Evaluación

Page 22: VB vs Perl

Después de aplicar todos los criterios a los lenguajes de programación Perl, Visual Basic llegamos a la conclusión que Perl con una calificación de 4,81 es mejor lenguaje que Visual Basic con una calificación de 4,73. Además durante la investigación de la información para poder evaluar estos lenguajes hemos aprendido muchas cosas nuevas sobre estos lenguajes de programación

Bibliografía http://www.ccg.unam.mx/~contrera/bioinfoPerl/node103.html

http://es.wikipedia.org/wiki/Perl

http://flanagan.ugr.es/perl/datos.htm

http://informatica.blogs.uoc.edu/2011/11/23/%C2%BFel-lenguaje-de-programacion-mas-expresivo/

http://flanagan.ugr.es/perl/control.htm

http://www.tizag.com/perlT/perlif.php

http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_Perl/Estructuras_de_control

http://blog.openalfa.com/como-usar-variables-de-tipo-hash-en-perl

http://www.osmosislatina.com/lenguajes/perl/basico.htm

http://www.perlmonks.org/bare/?node_id=135509

http://perlenespanol.com/tutoriales/bases_de_datos/como_conectarte_a_tu_database.html

http://jquery-manual.blogspot.com/2013/09/variables-y-constantes-en-perl.html

http://www2.iib.uam.es/bioinfo/curso/perl/tutoriales/cicei/cap3.htm

http://www.javaperformancetuning.com/news/qotm028.shtml

http://www.perlmonks.org/?node_id=227771

http://sandbox.mc.edu/~bennet/perl/leccode/

http://friedo.com/blog/2013/07/arrays-vs-lists-in-perl

http://www6.uniovi.es/perl/tutor/cap01.htm