Вы находитесь на странице: 1из 7

Comparativa de Lenguajes Compilados e Interpretados

G. Espinoza, M. Jim nez, P. Ortega, C. Palacios, and J. S nchez. e a

AbstractThis paper presents a comparison between compiled languages and interpreted languages, for which we have implemented the algorithm insertion sort in the programming languages C++, C , Python and Ruby, taking into account the behavior of each one of them, the way they are compiled or interpreted, its portability and the generated les. Index Termscompiled languages, interpreted languages, algorithm of insertion, C++, C , Python, Ruby.

II. ESTADO DEL ARTE A. Int rpretes e Un int rprete es un programa que analiza y ejecuta e simult neamente un programa escrito en un lenguaje fuente. a En la Fig. 1 se presenta el esquema general de un int rprete e visto como una caja negra. Cualquier int rprete tiene dos e entradas: un programa P escrito en un lenguaje fuente LF junto con los datos de entrada; a partir de dichas entradas, mediante un proceso de interpretaci n va produciendo unos resultados o [4].

I. INTRODUCCI ON a computadora solo puede ejecutar instrucciones escritas en un lenguaje formado por secuencias de ceros y unos (c digo binario), al que normalmente se denomina lenguaje o m quina. Para ello cualquier lenguaje de programaci n a o que no sea lenguaje m quina necesitar un proceso de a a traducci n. Este proceso se lleva a cabo en los int rpretes y o e los compiladores [1]. Cualquier lenguaje de programaci n se puede traducir o mediante un int rprete construido expresamente para este e lenguaje, as que no existe un int rprete unico para todos e los lenguajes. El trabajo de un int rprete es de traducir e las instrucciones del lenguaje de programaci n al lenguaje o m quina, con el n de que la computadora pueda ejecutar a esas instrucciones [2]. Los compiladores traducen las sentencias o instrucciones del lenguaje de programaci n y las convierten en un conjunto o de instrucciones en lenguaje m quina directamente ejecutables a por la computadora. El proceso de traducci n del compilador o no se realiza simult neamente, como lo hace el int rprete, a e sino que se hace un proceso aparte [3]. El objetivo de este artculo es mostrar una comparaci n o entre lenguajes compilados e interpretados, as como las fort alezas y debilidades de cada uno de ellos y aplicarlos usando el algoritmo de ordenamiento por inserci n para observar la o manera de implementaci n del c digo. o o

Figura 1. Esquema general de un int rprete [4]. e 1) Estructura de un Int rprete: A la hora de construir un e int rprete es conveniente utilizar una Representaci n Interna e o (RI) del lenguaje fuente a analizar. De esta forma, la organizaci n interna de la mayora de los int rpretes se descompone o e en los m dulos, ver Fig. 2: o 1) Traductor a Representaci n Interna: Toma como o entrada el c digo del programa P en Lenguaje Fuente, o lo analiza y lo transforma a la representaci n interna o correspondiente a dicho programa P. 2) Representaci n Interna (P/RI): La representaci n ino o terna debe ser consistente con el programa original. Entre los tipos de representaci n interna, los arboles o sint cticos son los m s utilizados y, si las caractersticas a a del lenguaje lo permiten, pueden utilizarse estructuras de pila para una mayor eciencia. 3) Tabla de smbolos: Durante el proceso de traducci n, o es conveniente ir creando una tabla con informaci n o relativa a los smbolos que aparecen. La informaci n o a almacenar en dicha tabla de smbolos depende de la complejidad del lenguaje fuente. Se pueden almacenar etiquetas para instrucciones de salto, informaci n sobre o identicadores (nombre, tipo, lnea en la que aparecen, etc.) o cualquier otro tipo de informaci n que se necesite o en la etapa de evaluaci n. o 4) Evaluador de Representaci n Interna: A partir de o la Representaci n Interna anterior y de los datos de o

G. Espinoza, Universidad Nacional de Loja, Loja, Ecuador, gpespinozaa@unl.edu.ec M. Jim nez, Universidad Nacional de Loja, Loja, Ecuador, e mgjimenezo@unl.edu.ec P. Ortega, Universidad Nacional de Loja, Loja, Ecuador, pgortegak@unl.edu.ec C. Palacios, Universidad Nacional de Loja, Loja, Ecuador, cepalaciosm@unl.edu.ec J. S nchez, Universidad Nacional de Loja, Loja, Ecuador, a jpsanchezc@unl.edu.ec

E-mail: E-mail: E-mail: E-mail: E-mail:

entrada, se llevan a cabo las acciones indicadas para obtener los resultados. Durante el proceso de evaluaci n o es necesario contemplar la aparici n de errores. o 5) Tratamiento de errores: Durante el proceso de evaluaci n pueden aparecer diversos errores como desboro damiento de la pila, divisiones por cero, etc. que el int rprete debe contemplar. e

La raz n principal para querer usar un compilador es querer o traducir un programa de un lenguaje de alto nivel, a otro lenguaje de nivel inferior. De esta manera un programador puede dise ar un programa en un lenguaje mucho m s n a cercano a como piensa el humano, para luego compilarlo a un programa m s manejable por una computadora. a En pocas palabras un compilador es cualquier programa que toma como entrada un texto escrito en un lenguaje, llamado fuente y da como salida otro texto en un lenguaje denominado objeto tal como lo muestra la Figura 4 [7] [8].

Figura 4. Esquema de la funci n de un compilador. o 1) Estructura de un Compilador: Normalmente los compiladores est n divididos en dos partes: a FRONT END: Es la parte analiza el c digo fuente, o comprueba su validez, genera el arbol de derivaci n y o rellena los valores de las tabla de smbolos. Esta parte suele ser independiente de la plataforma o sistema para el cual se vaya a compilar. BACK END: Es la parte que genera el c digo m quina, o a especico de una plataforma, a partir de los resultados de la fase de an lisis, realizada por el Front End. a Esta divisi n permite que el mismo Back End se utilice o para generar el c digo m quina de varios lenguajes de proo a gramaci n distintos y que el mismo Front End que sirve para o analizar el c digo fuente de un lenguaje de programaci n o o concreto sirva para la generaci n de c digo maquina en varias o o plataformas distintas. El c digo que genera el Back End o normalmente no se puede ejecutar directamente, sino que necesita ser enlazado por un programa enlazador [5] [6]. III. EXPERIMENTACI ON Debido a que existe una gran variedad de lenguajes de programaci n tanto interpretados como compilados se ha o realizado la comparaci n de estos, con el n de determinar o su ecacia; para lo cual se ha considerado sus ventajas y desventajas tanto en su forma estructural como en su manera de compilaci n e interpretaci n de cada uno de ellos. o o Para efectuar la comparaci n se ha realizado un estudio o previo de los fundamentos de los lenguajes compilados C++ [12] y C [9] [10] [11], as como de los lenguajes interpretados Ruby [13] [14] y Python [15] [16]; posteriormente se ha realizado la implementaci n del algoritmo de ordenamiento o por inserci n en cada uno de los lenguajes mencionados, para o de esta manera determinar las funcionalidades que cada uno de ellos utiliza para poder programar el algoritmo planteado. El algoritmo de ordenamiento por inserci n requiere o O(n2 ) operaciones para ordenar una lista de n elementos. Inicialmente se tiene un solo elemento, que obviamente es

Figura 2. Organizaci n interna de un int rprete [5]. o e Dependiendo de la complejidad del c digo a analizar, el o int rprete puede contener m dulos similares a los de un come o pilador tradicional: An lisis l xico, Sint ctico y Sem ntico. a e a a Durante la evaluaci n, el int rprete interact a con los recursos o e u del sistema como la memoria, discos, etc. Muchos sistemas interpretados liberan al programador del manejo explcito de memoria mediante t cnicas de recolecci n de basura [5] [6]. e o B. Compiladores Un compilador es un programa que, a su vez, traduce un programa escrito en un lenguaje de programaci n a otro o lenguaje de programaci n, generando un programa equivao lente. Usualmente el segundo lenguaje es c digo m quina, o a pero tambi n puede ser simplemente texto. Este proceso de e traducci n se conoce como compilaci n la Fig. 3 muestra el o o proceso de compilaci n [4]. o

Figura 3. Esquema del proceso de compilaci n [4]. o

un conjunto ordenado. Despu s, cuando hay k elementos e ordenados de menor a mayor, se toma el elemento k+1 y se compara con todos los elementos ya ordenados, deteni ndose e cuando se encuentra un elemento menor o cuando ya no se encuentran elementos. En este punto se inserta el elemento k+1 debiendo desplazarse los dem s elementos. a En el lenguaje de programaci n C++, el algoritmo se lo o ha desarrollado utilizando el IDE Dev-C++ versi n 4.9.9.2; o donde se ha implementado un espacio denominado std, el cual cuenta con el m todo llamado insercion, el mismo que recibe e dos par metros de entrada un arreglo de tipo entero y una a variable de tipo entero la cual dene el tama o del arreglo, se n comparan los valores insertados en el arreglo y se los ordena de menor a mayor.
# i n c l u d e <i o s t r e a m > u s i n g namespace : : s t d ; v o i d i n s e r c i o n ( i n t a l e a t o r i o , i n t SIZE ) { int i , temporal , p o s i t i o n ; f o r ( i = 1 ; i < SIZE ; ++ i ) { temporal = a l e a t o r i o [ i ] ; position = i ; w h i l e ( p o s i t i o n > 0 && a l e a t o r i o [ p o s i t i o n 1] > t e m p o r a l ) { aleatorio [ position ] = aleatorio [ position 1]; p o s i t i o n ; } a l e a t o r i o [ position ] = temporal ; } } i n t main ( ) { int aleatorio ; i n t SIZE , i ; c o u t << I n g r e s e e l numero de e l e m e n t o s : ; c i n >> SIZE ; a l e a t o r i o = new i n t [ SIZE ] ; f o r ( i = 0 ; i < SIZE ; ++ i ) { c o u t << I n g r e s e e l << i << elemento : ; c i n >> a l e a t o r i o [ i ] ; } c o u t << E l a r r e g l o e s : << e n d l ; f o r ( i = 0 ; i < SIZE ; ++ i ) c o u t << a l e a t o r i o [ i ] << ; c o u t << e n d l ; c o u t << e n d l << Ordenando e l a r r e g l o p o r e l metodo de i n s e r c i o n << e n d l << e n d l ; i n s e r c i o n ( a l e a t o r i o , SIZE ) ; c o u t << E l a r r e g l o o r d e n a d o e s : << e n d l ; f o r ( i = 0 ; i < SIZE ; ++ i ) c o u t << a l e a t o r i o [ i ] << ; c o u t << e n d l ; cin . get () ; cin . get () ; return 0; }

en el cual se ha desarrollado un espacio denominado Ordenamiento por Inserci n, el mismo que contiene tres o clases denominadas Program la cual es la clase ejecutable y contiene el m todo principal; la calse Leer la misma que e consta del m todo dato() el cual convierte el par metro de e a entrada recibido en entero y llama al m todo ordenar de e e la clase Insercion Directa; este m todo recibe una variable de tipo entero y lo compara con los valores que existen en el arreglo denido en la misma clase, el cual tiene un tama o denido de diez elementos; nalmente, se compara n los elementos guardados y se los retorna ordenados de menor a mayor.

u s i n g System ; u s i n g System . C o l l e c t i o n s . G e n e r i c ; u s i n g System . T e x t ; namespace O r d e n a m i e n t o p o r I n s e r c i o n { c l a s s Program { p u b l i c s t a t i c v o i d Main ( s t r i n g [ ] a r g s ) { int x = 0; do { L e e r l e e r = new L e e r ( ) ; l e e r . dato ( ) ; Console . WriteLine ( Repitiendo . . . ) ; } w h i l e ( x == 0 ) ; C o n s o l e . ReadKey ( t r u e ) ; } } public c l a s s Leer { i n t cadena ; public int dato ( ) { cadena = Convert . ToInt32 ( Console . ReadLine ( ) ) ; I n s e r c i o n D i r e c t a o b j e t o 1 = new Insercion Directa () ; objeto1 . ordenar ( cadena ) ; return cadena ; } } public class Insercion Directa { private s t a t i c int temporal , posicion = 0; s t a t i c i n t [ ] x = new i n t [ 1 0 ] ; public int ordenar ( int entrada ) { x[ posicion ] = entrada ; p o s i c i o n ++; f o r ( i n t y = 1 ; y < p o s i c i o n ; y ++) { temporal = x [ y ] ; f o r ( i n t z = y 1 ; z >= 0 && x [ z ] > t e m p o r a l ; z) { x [ z + 1] = x [ z ] ; x [ z ] = temporal ; } } f o r ( i n t m = 0 ; m < x . L e n g t h ; m++) { Console . WriteLine ( Contenido + x [ m] ) ; } return 0; } } }

En el lenguaje de programaci n C , el algoritmo se o ha implementado usando el IDE Visual Studio 2005;

En el lenguaje de programaci n Ruby, el algoritmo se o lo ha implementado en la versi n de 1.9.3 de Ruby, este o lenguaje nos ha permitido escribir el c digo de una manera o r pida y sencilla. El algoritmo fue implementado mediante a el m todo def insertion dentro de la clase Ordenamiento e en un archivo .rb que ser ejecutado por el int rprete de Ruby. a e El unico par metro de entrada para el m todo es una a e arreglo array que contendr los n meros que se quieren a u ordenar, este arreglo es recorrido y se guardan los valores, de uno en uno iterativamente, en una variable key y se realizan las iteraciones necesarias que desplazan los elementos del arreglo hacia la derecha del elemento key si son mayores que este. Las iteraciones terminan cuando los n meros que u contiene el arreglo est n ordenados. a Finalmente se crea un objeto de la clase Ordenamiento y se hace la llamada al m todo insertion. e
c l a s s Ordenamiento def i n s e r t i o n ( array ) for j in 1 . . . array . size key = a r r a y [ j ] i = j 1 w h i l e i >= 0 and a r r a y [ i ] > key array [ i + 1] = array [ i ] i = i 1 end a r r a y [ i + 1 ] = key end puts array end end o r d e n = O r d e n a m i e n t o . new puts orden . i n s e r t i o n ([5 ,2 ,3 ,8 ,1 ,2 ,4 ,2 ,7 ,8 ,9 ,2 ,3 ,4 ,5 ,6 ,2 ,4])

que contiene el arreglo est n ordenados. a Finalmente se crea un objeto de la clase Orden y se hace la llamada al m todo insertionSort. e
c l a s s Orden : d e f i n s e r t i o n S o r t ( s e l f , numeros ) : tama = l e n ( numeros ) f o r i i n r a n g e ( tama ) : i n d i c e = numeros [ i ] a = i 1 w h i l e ( a >= 0 and numeros [ a ] > i n d i c e ) : numeros [ a + 1 ] = numeros [ a ] a = a1 numeros [ a + 1 ] = i n d i c e p r i n t ( numeros ) print gft o1= Orden ( ) numeros = [ 0 , 2 , 1 , 7 , 2 , 3 4 , 5 , 6 5 , 2 , 2 3 , 4 5 , 6 5 ] o1 . i n s e r t i o n S o r t ( numeros )

IV. CASO DE ESTUDIO Para la realizaci n del caso de estudio se ha programado o el algoritmo de ordenamiento por inserci n en los lenguajes o compilados C++ y C , y en los lenguajes interpretados Phyton y Ruby. El programa realizado en el lenguaje de programaci n C++, o necesita como entrada el n mero de elementos que contendr u a el arreglo, dependiendo de este valor se ingresa cada uno de los elementos; posteriormente, se muestra el arreglo con sus elementos sin ordenar y luego se los ordena siguiendo los par metros del algoritmo. Finalmente, se muestra en pantalla a el arreglo ordenado.

En el lenguaje de programaci n Python, el algoritmo o se lo ha implementado en la versi n de 2.6.1 de Python, o este lenguaje nos ha permitido escribir el c digo de una o manera r pida, pero hay que tener en cuenta las tabulaciones a y espaciados, que son muy importantes en este lenguaje. El algoritmo fue implementado mediante un m todo def e insertionSort dentro de la clase Orden en un archivo .py que ser ejecutado por el int rprete de Python. a e Los par metros de entrada para el m todo es una arreglo a e de enteros que contiene los n meros que se quieren ordenar y u un atributo self que permita la llamada al m todo, el tama o e n del arreglo es guardado en una variable denominada tama que permitir realizar el recorrido sobre el arreglo, seguidamente a se guardar n los valores, de uno en uno iterativamente, en a una variable denominada indice y se realizan las iteraciones necesarias que desplazan los elementos del arreglo hacia la derecha del elemento indice mientras estos sean menores a dicho elemento. Las iteraciones terminan cuando los n meros u

Fig.5. Algoritmo de Ordenamiento por Inserci n en C++. o Para el programa realizado en el lenguaje de programaci n o C , se introduce como entrada uno a uno el elemento del arreglo, dependiendo de su valor se va ordenando de acuerdo a las reglas del algoritmo y se visualiza en pantalla el elemento ingresado en el orden adecuado. Se repite el procedimiento para cada elemento que se ingrese.

V. DISCUSI ON Los lenguajes interpretados requieren de un programa auxiliar el mismo que permite la traducci n de las o instrucciones en tiempo real al lenguaje m quina, por a lo tanto, cada vez que un programa interpretado se ejecuta debe ejecutarse tambi n su interprete, mientras que los e lenguajes compilados necesitan de un compilador para la traducci n al lenguaje m quina y a esta se la hace una sola o a vez, siendo el resultado un c digo objeto entendible por la o m quina. a Cabe destacar que la principal diferencia que existe entre los lenguajes compilados e interpretados es que un lenguaje interpretado se ejecuta lnea por lnea sin ser revisado y un lenguaje compilado es aquel del que se genera un c digo o m quina para cierta arquitectura, el compilador verica que a el c digo fuente est bien escrito, y que no tenga errores para o e poder ser compilado. La utilizaci n de los lenguajes compilados permite o construir programas m s ecientes que los correspondientes a a los lenguajes interpretados. Debido a que durante la ejecuci n o de c digo compilado no es necesario realizar complejos o an lisis; un buen compilador es capaz de detectar errores y a optimizar el c digo generado. o Los lenguajes compilados a diferencia de los interpretados, transforman el programa a un programa equivalente en un c digo objeto a esto se le conoce como fase de compilaci n, o o y en un segundo paso generan los resultados a partir de los datos de entrada a esto se le conoce como fase de ejecuci n. o Mientras que los interpretes, realizan la fase de an lisis y a ejecuci n a la vez, lo cual imposibilita las optimizaciones. o Por lo tanto los sistemas interpretados suelen ser menos ecientes que los compilados. Los int rpretes son m s sencillos de implementar, esto e a facilita el estudio de la correcci n del int rprete, ya que o e proporcionan una mayor exibilidad lo que permite modicar y ampliar caractersticas del lenguaje fuente, adem s no es a necesario contener en memoria todo el c digo fuente pero mitiendo la utilizaci n en sistemas de poca memoria o en o entornos de red, facilitan la meta-propagaci n es decir un o programa puede manipular su propio c digo fuente a medida o que se ejecuta y facilitan el desarrollo r pido de prototipos por a lo que no existen etapas intermedias de compilaci n. o

Fig.6. Algoritmo de Ordenamiento por Inserci n en C . o En cuanto al programa realizado en el lenguaje de programaci n Ruby, se inserta como entrada el arreglo a ordenar o con sus respectivos elementos, luego se ordena el arreglo siguiendo las condiciones establecidas en el algoritmo. Al nal se presenta en pantalla el arreglo ordenado.

Fig.7. Algoritmo de Ordenamiento por Inserci n en Ruby. o Por ultimo en el programa realizado en el lenguaje de programaci n Phyton, se establece como entrada el arreglo o a ordenar con sus respectivos elementos, luego se ordena el arreglo siguiendo las condiciones establecidas en el algoritmo. Finalmente se presenta en pantalla el arreglo ordenado.

Fig.8. Algoritmo de Ordenamiento por Inserci n en Python. o

VI. CONCLUSIONES Al ejecutar un programa fuente con un int rprete, e simplemente se carga el programa fuente al int rprete, y e este revisa y ejecuta el programa. Un compilador revisa el programa fuente y produce un programa objeto. Los int rpretes pueden ser m s vers tiles que los e a a compiladores. Teniendo en mente que los int rpretes e son programas por si mismos, y como cualquier otro programa pueden ser creados para ejecutarse en diferentes computadoras. Un compilador sin embargo genera programas objetos para una computadora en particular. Un int rprete es generalmente la mejor opci n al momento e o de depurar ya que detectan y corrigen errores de programaci n o r pidamente. a Un programa compilado es mas r pido que un programa a interpretado, en el caso de que un compilador genere especialmente c digo eciente. o Los int rpretes son m s sencillos de implementar por lo e a que se facilita el estudio de la correcci n del int rprete, o e proporcionan una mayor exibilidad con lo que se permite modicar y ampliar caractersticas del lenguaje fuente, no es necesario contener en memoria todo el c digo fuente o permitiendo la utilizaci n en sistemas de poca memoria o en o entornos de red, y aumentan la portabilidad del lenguaje. Se compila una vez, y se puede ejecutar m ltiples veces, u en bucles, la compilaci n genera c digo equivalente al bucle, o o pero interpret ndolo se traduce tantas veces una lnea como a veces se repite el bucle, y el compilador tiene una visi n o global del programa, por lo que la informaci n de mensajes o de error es m s detallada. a Mediante la experimentaci n y el caso de estudio realizado o se ha obtenido como resultados que un compilador traduce un programa escrito en lenguaje fuente a un lenguaje objeto de bajo nivel, el cual puede ser lenguaje ensamblador o lenguaje de m quina, puede tambi n traducir primero el programa a e fuente a un c digo intermedio y luego traducir el c digo o o intermedio en un lenguaje objeto. Por otro lado, un int rprete e no produce un programa objeto, pero traduce un programa fuente a un c digo intermedio interno que se puede ejecutar o m s ecientemente, o simplemente ejecutar las sentencias del a programa directamente, es decir, que el int rprete traduce un e programa a las acciones especicadas por el programa.

REFERENCIAS
[1] De Silva Garza, A.G. and De Jesus Ania Briseno, I., Introducci n a o la Computaci n, Cengage Learning Latin America. [En linea] link: o http://books.google.com.ec/books?id=ov3E De2p6MC,consulta realizada 11-Dic-12 [2] Armend riz a Luis Miguel, Lenguajes de programaci n, o Universidad Polit cnica e de Valencia. [En linea] link: http://guimi.net/descargas/Monogracos/GLenguajes de programacion.pdf, consulta realizada 11-Dic-12 [3] Soto V squez Crist bal Andres, Lenguajes de programaci n compilados a o o y interpretados, Universidad Cat lica de Temuco. [En linea] link: o http://es.calameo.com/read/0004770648fb9c0b61f63, consulta realizada 11-Dic-12 [4] Parra Per z Luis, Comparaci n entre lenguajes compilados e e o interpretados, Universidad Cat lica de Temuco. [En linea] link: o http://es.calameo.com/read/000619412c51932a5b0ff, consulta realizada 11-Dic-12 [5] R, M.A.P., Aproximaci n a la psicologa del lenguaje, Universidad o Central de Venezuela, Consejo de Desarrollo Cientco y Humanstico. [En linea] link: http://books.google.com.ec/books?id=SROB8SXGRXgC, consulta realizada 11-Dic-12 [6] Matzumoto Y, Language basics, OReilly. ,consulta realizada 11-Dic-12 [7] Calume, R.C.G., Sentencias b sicas a usadas en la programaci n o de Computadores. [En linea] link: http://books.google.com.ec/books?id=7hGfDCFu1NAC,consulta realizada 11-Dic-12 [8] Corrales, J.D., Ayudantes Tecnicos. Opcion Informatica. Junta de Andalucia. Temario Volumen i. [En linea] link: http://books.google.com.ec/books?id=RtMtHVgfFT0C,consulta realizada 11-Dic-12 [9] G mez Vicente Miguel Angel, Mohedano Manuel Martn, Introducci n o o a C , Departamento de Inform tica y Autom tica, Universidad de a a Salamanca. [En linea] link: http://zarza.usal.es/ fgarcia/docencia/poo/0405/Trabajos/C Sharp.pdf, consulta realizada 11-Dic-12 [10] Gonz lez Seco Jos Antonio, El lenguaje de programaci n C , a e o [En linea] link: http://campus.instituto.almagro.ort.edu.ar/analista-sistemas-taller4/descargar/repositorioarchivo/30864/C sharp El lenguaje de programacion C.pdf,

consulta realizada 11-Dic-12 [11] P rez Ch vez Roger, Fern ndez Orqun Antonio, P rez Su rez e a a e a Airel, Hern ndez Le n Raudel, Programaci n Orientada a a o o Objetos con C , Universidad de Matanzas Camilo Cienfuegos, Universidad de las Ciencias Inform ticas. [En linea] link: a http://www.geocities.ws/juliotelot/LibroPOOenCSharp.pdf, consulta realizada 11-Dic-12 [12] Pozo Coronado Salvador,Curso C++,[En linea] link: http://ndpdf.net/reader/Curso-de-CPgina-1-Nacho-Cabanes.html, consulta realizada 11-Dic-12 [13] Flanagan D., The Structure and Execution of Ruby, OReilly Media. ,consulta realizada 11-Dic-12 [14] Perrotta P., Metaprogramming Ruby Program Like the Ruby Pros. ,consulta realizada 11-Dic-12 [15] Ordu a Pablo, Introducci n a Python, Universidad de Deusto. [En linea] n o link: http://paginaspersonales.deusto.es/porduna/documentacion/python/julio2007/ IntroPython.pdf, consulta realizada 11-Dic-12 [16] Arroyo Germ n, Introducci n a Python, Departamento de Lenguajes a o y Sistemas Inform ticos, Universidad de Granada. [En linea] link: a http://lsi.ugr.es/ jmantas/pc/practicas/pract2/python.pdf, consulta realizada 11-Dic-12

Gabriela Espinoza

Estudiante de la Carrera de Ingeniera en Sistemas de la Universidad Nacional de Loja, conocedora de Redes y Telecomunicaciones, Provincia de Loja, Ciudad Loja, Ecuador, 2013.

Magaly Jim nez e

Estudiante de la Carrera de Ingeniera en Sistemas de la Universidad Nacional de Loja, Conocedora de Seguridad Inform tica, Provincia de Loja, Ciudad Loja, Ecuador, 2013. a

Pablo Ortega

Estudiante de la Carrera de Ingeniera en Sistemas de la Universidad Nacional de Loja, Programador Junior en Java, Provincia de Loja, Ciudad Loja, Ecuador, 2013.

Carolina Palacios

Estudiante de la Carrera de Ingeniera en Sistemas de la Universidad Nacional de Loja, Conocedora de Redes y Mantenimiento, Provincia de Loja, Ciudad Loja, Ecuador, 2013.

Junior S nchez a

Estudiante de la Carrera de Ingeniera en Sistemas de la Universidad Nacional de Loja, Programador Junior en Java, Provincia de Loja, Ciudad Loja, Ecuador, 2013.

Вам также может понравиться