Está en la página 1de 15

{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
www.unitru.edu.pe
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;

console.log( typeof b );

//Vemos como el programa ya asume que es un booleano.

console.log( b );

// Podemos observar como el programa lo ejecuta

//Asimismo pasa con los otros tipos de variables

console.log("");

let c = 100;

console.log( typeof c ); //Tipo de variable

console.log( c );

console.log("");

let d = "Freedom"

console.log( typeof d ); //Tipo de variable

console.log( d );

console.log("");

let e = (b,d) => b+d; // Declare una funcion tipo flecha

console.log( typeof e ); //Tipo de variable

console.log( e );

console.log( typeof e(b,d));


console.log(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.

console.log("");

let a = "Hola Soy un Lenguaje de Programación no tipado, dame esos " + 5;

console.log(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.

console.log(a);

// Podemos observar como el programa lo ejecuta

console.log("");//Lo puse para separar en un reglon ejemplo a ejemplo.

let z = "Soy 'z' y soy un tipo string";

console.log( z );

console.log( typeof z );

console.log("Soy yo 'z' de nuevo pero ahora soy un number");

z = 10;

console.log( z );

console.log( 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.
https://ria.utn.edu.ar/bitstream/handle/20.500.12272/5219/U
nidad%206.pdf?sequence=1&isAllowed=y
Universidad Nacional Autónoma de México (2017). Unidad de apoyo
para el aprendizaje. Lenguajes de Programación.
https://programas.cuaed.unam.mx/repositorio/moodle/pluginfi
le.php/1023/mod_resource/content/1/contenido/index.html

Universidad de La Laguna (2013). Introducción a la Informática.


https://campusvirtual.ull.es/ocw/file.php/40/temas/IIT05.pd
f

También podría gustarte