0 calificaciones0% encontró este documento útil (0 votos)
47 vistas15 páginas
Lenguajes de Programación: Tipados y Ejecución
Este documento presenta una introducción a los paradigmas de los lenguajes de programación, resumiendo las diferencias entre lenguajes compilados e interpretados, y lenguajes tipados y no tipados. Explica que los lenguajes compilados traducen el código a máquina de forma previa, mientras que los interpretados lo hacen en tiempo de ejecución. Además, los lenguajes tipados asignan tipos fijos a las variables, mientras que los no tipados permiten cambiar los tipos en tiempo de ejecución.
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0 calificaciones0% encontró este documento útil (0 votos)
47 vistas15 páginas
Lenguajes de Programación: Tipados y Ejecución
Este documento presenta una introducción a los paradigmas de los lenguajes de programación, resumiendo las diferencias entre lenguajes compilados e interpretados, y lenguajes tipados y no tipados. Explica que los lenguajes compilados traducen el código a máquina de forma previa, mientras que los interpretados lo hacen en tiempo de ejecución. Además, los lenguajes tipados asignan tipos fijos a las variables, mientras que los no tipados permiten cambiar los tipos en tiempo de ejecución.
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
{PARADIGMAS DE LENGUAJES DE PROGRAMACIÓN}
Escuela Profesional de Informática
Facultad de Ciencias Físicas y Matemáticas
Universidad Nacional de Trujillo
Paradigmas de Lenguajes de Programación
Material académico desarrollado bajo la
modalidad asincrónica Primera Unidad UNIVERSIDAD NACIONAL DE TRUJILLO
Trabajo de Formación Investigativa
Lenguajes Compilados vs Interpretados y Lenguajes Tipados vs No tipados
Asunción Velasquez, Luis Enrique
Cárdenas Angulo, Piero Arturo
Casana Perez, Nick del Piero
Mendonza Campos, Abraham Joel
Paz Rodriguez, Anthony Estiven
Ing. Cruz Florián, Iris Áurea
Abril 30, 2023
Trujillo-Perú Presentación
Este material académico está dirigido para el docente del
curso de Paradigmas de Lenguajes de Programación correspondiente a la Escuela Profesional de Informática (EPI), perteneciente a la prestigiosa y casi bicentenaria Universidad Nacional de Trujillo; o para aquellos que estén interesados en comprender temas asociados a la asignatura en mención.
Este documento pretender ser un complemento a los temas
desarrollados en aula virtual y a la vez un medio académico a evaluar bajo una rúbrica asignada, con la finalidad de constatar el avance del alumno-docente en el presente ciclo académico.
Los autores.
Las opiniones y recomendaciones
vertidas en este documento son netamente responsabilidad de los autores y no representan necesariamente los puntos de vista del docente ni de la EPI.
Av. Juan Pablo II S/N Urb. San Andrés, Trujillo – La
Libertad Ciudad Universitaria [Link] Introducción
Durante varios años, según referencia la Universidad Nacional
Autónoma de México (2017) menciona que “los lenguajes de programación han ido evolucionado en el desarrollo de sistemas o software, con el objetivo principal de facilitar al usuario las actividades que realiza día con día”. Es por ello, el programador debe poseer los conocimientos básicos y elementales de interpretación y funcionalidad de cierta cantidad de lenguajes de programación relacionados al área en la que se desempeña.
Por otro lado, los lenguajes de programación se pueden subdividir
en el nivel de abstracción del mismo, la forma de ejecución o el paradigma que emplea cada uno de ellos.
Con respecto al nivel de abstracción, se pueden clasificar en:
1. LENGUAJES DE BAJO NIVEL En este tipo se encuentran los lenguajes máquina directamente legible para nuestro ordenador. Estos emplean un conjunto de cadenas binarias, por lo que es complicado para el programador. Debido a esta dificultad ha sido desfasado por lenguajes más parecidos al del ser humano.
Un ejemplo de estos lenguajes, es el Ensamblador, siendo el
primer lenguaje en tratar de reemplazar al lenguaje máquina.
2. LENGUAJES DE ALTO NIVEL
Este tipo de lenguaje está diseñado para ser escrito con más naturalidad para los programadores, empleando mayormente el idioma inglés. Ello, trajo la ventaja de requerir menor tiempo de dedicación para aprender a programar. Además, estos lenguajes son independientes de las computadoras y se pueden ejecutar sin modificaciones previas en las máquinas. Pero, lamentablemente, este lenguaje aun debe ser traducido a código máquina mediante un compilador o intérprete.
Actualmente, tenemos lenguajes con estas características
como: Java, JavaScript, C, C++, Python, Ruby, PHP, etc.
Adicionalmente, según la forma de ejecución, se dividen en
lenguajes compilados e interpretados. Lenguajes Compilados vs Interpretados
Lenguajes compilados: antes de que pueda ejecutar un programa
escrito en un lenguaje de este tipo, se deberá llamar a un traductor denominado compilador.
Figura 1. Diagrama de un lenguaje compilado.
Un compilador es un programa, que toma como entrada un programa
escrito en un lenguaje fuente de alto nivel y genera un programa equivalente, denominado programa objeto, escrito en un lenguaje de bajo nivel.
VENTAJAS DESVENTAJAS Mayor eficiencia en la Proceso de desarrollo más corrección de errores, debido a lento, debido a la necesidad de que la compilación puede compilar el código cada vez que detectar errores antes de la se realizan cambios y a la ejecución del programa. complejidad de la configuración para la compilación. Mayor velocidad de ejecución, Es más difícil de depurar, ya ya que el código se traduce que los errores sólo se previamente en código de detectan después de la máquina. compilación. Son útiles en programas de El código ejecutable es mayor escala y complejidad específico para una plataforma, porque el proceso de lo que significa que el mismo compilación permite la programa compilado no se puede optimización del código. ejecutar en diferentes plataformas sin ser compilado nuevamente para cada una de ellas. Lenguajes interpretados: Cada vez que se usa el programa debe invocarse a un traductor llamado intérprete que se encarga de interpretar las instrucciones del programa original (código fuente) a código máquina según van siendo utilizadas.
Figura 2. Diagrama de un lenguaje interpretado.
Un intérprete es un programa que toma como entrada un programa escrito en lenguaje fuente y lo va traduciendo y ejecutando instrucción por instrucción, una detrás de la otra, de una en una.
VENTAJAS DESVENTAJAS Facilidad de desarrollo y Menor velocidad de ejecución, depuración, ya que no requieren ya que el código se traduce en un proceso de compilación y los tiempo de ejecución y no de errores se detectan en tiempo forma previa. real. Multiplataforma, lo que Mayor consumo de recursos en significa que el mismo código términos de memoria y puede ser ejecutado en procesador. diferentes plataformas sin necesidad de compilación adicional. Mayor flexibilidad, ya que los Pueden presentar problemas de cambios en el código pueden ser seguridad en cuanto a la implementados en tiempo real protección del código fuente. sin necesidad de volver a compilar todo el programa. COMPARACIONES ENTRE LENGUAJES COMPILADOS E INTERPRETADOS:
Figura 3. Comparativa de un lenguaje compilado (C++) vs un lenguaje
interpretado (Python).
Figura 4. Comparativa de un lenguaje compilado (Rust) vs un lenguaje
interpretado (JavaScript).
Además, existe un lenguaje de tipo intermedio, siendo un punto medio entre
compilado e interpretado. Un caso particular, es el lenguaje de programación Java, compilando el código fuente a lenguaje intermedio y al final se ejecuta en una máquina virtual. Lenguajes Tipados vs No Tipados
Un lenguaje de tipificación estática o tipado, cada variable y
parámetro tiene un tipo fijo que es elegido por el programador. Mientras, en un lenguaje de tipificación dinámica o simplemente lenguaje no tipado, una variable o parámetro no tiene un tipo designado, pero puede tomar valores de diferentes tipos en tiempo de ejecución. Esto implica que la verificación de tipos de los operandos debe hacerse inmediatamente antes de realizar una operación en tiempo de corrida.
VENTAJAS DESVENTAJAS Código más expresivo ahora Al momento de programar es sí podremos saber de qué mucho más estricto y necesitas tipo espera un argumento escribir más código, lo que una función. alarga el tiempo de trabajo y Se comete menos errores, aumenta la necesidad de porque éste detecta errores verificar lo redactado más antes que llegue al usuario exhaustivamente. final. Se asume una ejecución mucho más rápida con este TIPADOS
tipado, ya que la inferencia de tipos se ha El compilador debe ejecutar hecho con anterioridad y el una disciplina de tipos lenguaje no tendrá que concreta. Es decir, se siguen comprobarlos en tiempo de unas normas concretas de ejecución. asignación de variables, Son mucho más seguros, argumentos de funciones o porque no permiten hacer valores de retorno. operaciones con variable de distintos tipos lo que es conveniente para proyectos de gran envergadura. Es muy rápido de Favorece la aparición de desarrollar. errores. Podemos operar con Presenta errores en el tiempo variables de distintos de ejecución, como el que se tipos. pierde al comparar números NO TIPADOS
Su flexibilidad ayuda a que
mezclando algunos tipados como los programas funcionen sin los strings, que no son necesidad de utilizar tanto detectables anteriormente. código. Es necesario castear de manera periódica el programa para Podemos cambiar el tipo de conseguir el resultado la variable sobre la esperado. Ello provoca que marcha. tengas que redactar más código para aumentar su seguridad. EJEMPLO DE LENGUAJE TIPADO: C++ #include<iostream>
using namespace std;
int e (int c, char d);
int main() {
cout<<"\n\n\n";
bool b = true;
cout<<"Soy b y soy un bool: "<<b;// Vemos que para declarar un variable
debemos poner que tipo de varible
//queremos ya pueda ser un int o un float o un char entre otras.
cout<<"\n";
int c = 100;
c= 100.555;
cout<<"Soy c y soy un int: "<<c;// vemos como la variable c se declaro
como un tipo entero y aunque
//yo intente cambiarle de valor a un tipo float el entero no lo
permitira
cout<<"\n";
char d = 'H';
d = false; // Si intentamos cambiar del tipo de variable que es nos va a
dar un error a la
// hora de compilar
cout<<"Soy d y soy un char: "<<d;
cout<<"\n";
int e_ = e(c,d);
cout<<"El valor de la funcion tipo int es: "<<e;// Vemos que nos da un resultado de 1 un tipo int 'c'
//Lo cual es un error
cout<<"\n";
float a = 1.5 + 'a';
cout<<"El valor de la 'a' de tipo float es: "<<a; //Vemos como se produce un error y cuando imprimimos
//por pantalla nos sale un numero pero no es 1.5 ya que lo sumamos un
char 'a'
int z = 120;
z = 'i';
cout<<"\n";
cout<<"El valor de la 'z' de tipo int es: "<<z; //Vemos aqui como el z sigue siendo un numero y no cambia
// pero como no esta bien que yo le cambie el valor a z de un entero a
un tipo char a la hora de imprimir
// me muestra un numero diferente a 120.
cout<<"\n\n";
system("pause");
int e (int c, char d) {
return c + d;
} EJEMPLO DE LENGUAJE NO TIPADO: JAVASCRIPT
let b = true;
[Link]( typeof b );
//Vemos como el programa ya asume que es un booleano.
[Link]( b );
// Podemos observar como el programa lo ejecuta
//Asimismo pasa con los otros tipos de variables
[Link]("");
let c = 100;
[Link]( typeof c ); //Tipo de variable
[Link]( c );
[Link]("");
let d = "Freedom"
[Link]( typeof d ); //Tipo de variable
[Link]( d );
[Link]("");
let e = (b,d) => b+d; // Declare una funcion tipo flecha
[Link]( typeof e ); //Tipo de variable
[Link]( e );
[Link]( typeof e(b,d));
[Link](e(b,d)); //Aqui llamo a la función para que me muestre lo que retorna
//En este ejemplo vemos como "b" era un booleano true y "c" es un string y vemos como
//Js suma estos asumiendolos que son strings y lo que retorna la funcion es un string.
[Link]("");
let a = "Hola Soy un Lenguaje de Programación no tipado, dame esos " + 5;
[Link](typeof a); //Vemos como considera a la Variable nombrada "a" como
un string cuando cuando
// le dimos a esa variable un valor de string y un numero.
[Link](a);
// Podemos observar como el programa lo ejecuta
[Link]("");//Lo puse para separar en un reglon ejemplo a ejemplo.
let z = "Soy 'z' y soy un tipo string";
[Link]( z );
[Link]( typeof z );
[Link]("Soy yo 'z' de nuevo pero ahora soy un number");
z = 10;
[Link]( z );
[Link]( typeof z ); COMPARACIONES ENTRE LENGUAJES TIPADOS Y NO TIPADOS:
Figura 5. Comparativa de un lenguaje tipado (C++) vs un lenguaje no tipado
(JavaScript).
CONCLUSIONES: Para finiquitar, aseveramos que los lenguajes de programación interpretados vs compilados se refieren a los dos métodos de lectura que tienen ambos. Los lenguajes interpretados son aquellos que convierten su lenguaje al de la máquina a medida que ejecutan el código, por lo tanto, se inician mucho más rápido. Además, el desarrollo es mucho más fácil que con un compilador, porque el proceso de depuración (es decir, la corrección de errores) se lleva a cabo igual que la traducción, línea por línea. Por otro lado, los lenguajes de programación compilados requieren un paso extra, pues deben compilar el código al lenguaje de la máquina antes de poder resolver los errores o iniciar la aplicación. Sin embargo, una vez que se ejecuta el programa, los servicios del compilador ya no son necesarios, mientras que el intérprete continúa utilizando los recursos informáticos. Además, los lenguajes de programación tipado y no tipado hacen referencia a los tipos de datos que manejan diferentes lenguajes de programación. En cuanto a la programación tipada tenemos que hacer mención en los tipos de datos que estamos inicializando; a diferencia del lenguaje no tipado, el programa asume dicho dato dependiendo de la necesidad y empleabilidad en el algoritmo. REFERENCIAS BIBLIOGRÁFICAS:
Corso C., Guzman A., Ligorria L., Marcizack M. & Tymoschuk J.
(2021) Elementos Constitutivos de Lenguajes y Paradigmas. Universidad Tecnológica Nacional de Córdoba. [Link] nidad%[Link]?sequence=1&isAllowed=y Universidad Nacional Autónoma de México (2017). Unidad de apoyo para el aprendizaje. Lenguajes de Programación. [Link] [Link]/1023/mod_resource/content/1/contenido/[Link]
Universidad de La Laguna (2013). Introducción a la Informática.