Está en la página 1de 5

Trabajo Práctico Nº1

Tema:​ Lenguajes de Programación

Fecha Inicio: ​21/03/2019 Fecha de Entrega:​ 31/03/2019

Actividades:

1) Escriba dos (2) definiciones de lenguajes de programación. Cite la bibliografía de


donde obtuvo la información de la siguiente forma:
• “Definición 1: Un lenguaje de programación es…” (ver al final del práctico la
forma de colocar las referencias).
2) Explique la diferencia entre legibilidad por parte de la máquina y legibilidad por parte
del ser humano. Cite la bibliografía de donde obtuvo la información.
3) Mencione el concepto de Abstracción. Explique la diferencia entre abstracciones
básicas, estructuradas y unitarias. Mencione un ejemplo para cada uno de ellas.
4) Explique porqué es necesario definir un Lenguaje en forma formal.
5) Mencione un ejemplo para Sintaxis y otro para Semántica. Analice y explique en qué
se parecen o diferencian.
6) Defina semántica Operacional, semántica Denotacional y semántica Axiomática. Cite
la bibliografía de donde obtuvo la información.
7) Explique la diferencia entre Compilador e Intérprete y mencione 3 lenguajes que
implementan cada una de esas formas.
8) Explique los criterios para el diseño de lenguajes de programación. Cite la
bibliografía de donde obtuvo la información.
1) Definiciones de Lenguajes de Programación:
Definición 1: Un Lenguaje de Programación es un conjunto de reglas, notaciones, símbolos
y/o caracteres que permiten a un programador poder expresar el procesamiento de datos y
sus estructuras en la computadora. ​(Historia y definición de los lenguajes de
programación, 2014)

Definición 2​: ​“Un lenguaje de programación es aquella estructura que, con una cierta base
sintáctica y semántica, imparte distintas instrucciones a un programa de computadora.”
(Definición de lenguaje de programación. 2012).

2) Diferencia entre legibilidad por parte de la máquina y legibilidad por parte de ser humano
La legibilidad por parte de la máquina para que sea legible su estructura tiene que ser simple
para una mejor traducción para la máquina y se debe tener un algoritmo para la traducción
del mismo y se agrupan en 2 clases: una de control y otra de datos, a diferencia de la
legibilidad por parte del ser humano, el lenguaje de programación es fácil de comprender
para los humanos, para ellos los lenguajes de programación tienden a parecerse a los
lenguajes naturales.

3) Concepto de Abstracción
Proceso mental a través del cual se atiende a algún atributo, característica o faceta de otras
o del conjunto en que se haya inserta
La abstracción nos permite representar y facilitar la resolución de problemas a través de los
detalles particulares como tipos de datos, estructuras de control y en la forma en que se
procesan los datos.

Diferencias entre Abstracciones Básicas, Estructuradas y Unitarias. Ejemplos.

Se consideran dos tipos de abstracciones:

● Abstracciones de datos
● Abstracciones de control
Abstracciones de Datos:
o Abstracciones básicas: Los tipos de datos primitivos abstraen la representación
interna de esos datos (enteros almacenados en complemento a 2). Las variables
abstraen una dirección de memoria mediante el uso de un nombre. ​Ejemplo:
Enteros, reales, fecha, lógico.
o Abstracciones estructuradas: Método principal para la abstracción de colecciones de
valores de datos relacionados entre sí. Es posible definir nuevas estructuras
mediante una declaración de tipos. ​Ejemplo:​ Registros o arreglos.
o Abstracciones unitarias: Encapsulado de datos y ocultación de la información (por
ejemplo: paquetes en Java), permiten su reutilización en diferentes programas.
Ejemplo:​ Registros o arreglos.
Abstracciones de Control
o Abstracciones básicas: Combinan unas cuantas instrucciones de máquina en
una sentencia abstracta más sencilla. ​Ejemplo:
x := x + 8 (asignación)
GOTO: transferencia de control a un enunciado situado en otra parte del
programa.
o Abstracciones estructuradas: Dividen al programa en grupos de
instrucciones, las cuales se pueden anidar unas dentro de otras.
(condicionales e iteradores). ​Ejemplo:
Instrucciones de selección: IF, CASE,…
Instrucciones de repetición: DO, WHILE, FOR,…
Subprogramas: funciones, procedimientos,…

o Abstracciones unitarias: Incluyen una colección de procedimientos


relacionados lógicamente que puedan ser utilizados por otras partes del
programa: reutilización. ​Ejemplo:
Paquetes, módulos, hilos y tareas.

4) Explicación
Es necesario de definir un lenguaje de forma formal porque la sintaxis de estos producen
oraciones no ambiguas, en lo que respecta al significado de sus palabras. Es decir que cada
palabra mantiene un mismo significado prescindiendo el contexto en el que se encuentre.
En el caso de un lenguaje de programación se define de forma formal porque este necesita
una descripción completa, formal, y precisa. Ya que sin una noción clara del efecto de las
construcciones del lenguaje NO se tendrá una idea precisa de qué tipo de procesamiento se
está ejecutando.
Otras razones:
-Necesidad de independencia de la máquina o de la implementación. Esto se logra con la
estandarización.
-Es necesario conocer: comportamiento del programa y su interacción
-Los requisitos de una definición formal aportan disciplina durante el diseño de un lenguaje.

5) Ejemplos de Sintaxis y Semántica.​ ​Analice y explique en qué se parecen o diferencian.

Semejanza​: Ambas propiedades; son aplicados a un lenguaje de programación.


Diferencia:​ es que la sintaxis es la forma como se editan o escriben (línea a línea) los
programas y la semántica es el significado que se la da al cuerpo de un programa,
entendidos por otros programadores e interpretados por el computador.

6) Definiciones
Semántica operacional,​ donde la ejecución del lenguaje se describe directamente (en vez de
hacerse mediante el uso de una traducción). Las semánticas operacionales tienen que ver
con la interpretación, aunque nuevamente el “lenguaje de implementación” del intérprete es
de forma general un formalismo matemático. Las semánticas operacionales pueden definir
una máquina abstracta (como la máquina SECD), y dan significado a las frases describiendo
las transiciones que ellas inducen en los estados de la máquina.
Semántica denotacional,​ por medio de las cuales cada frase en el lenguaje es interpretada
como una denotación. Tales denotaciones a menudo son objetos matemáticos que habitan
espacios matemáticos, pero no es un requerimiento que éstas deban serlo. Como una
necesidad práctica, las denotaciones se describen usando alguna forma de notación
matemática, la cual en turno puede ser formalizada como un metalenguaje denotativo.
Semántica axiomática​, a través de la cual se le da significado a las frases describiendo los
axiomas lógicos que se aplican a ellas. Las semánticas axiomáticas no hacen distinción entre
un significado de una frase y las fórmulas lógicas que la describen, su significado es
exactamente lo que se puede probar de ella en alguna lógica

7) Definiciones
U​na de las diferencias entre un compilador y un intérprete es que un compilador traduce el
código en instrucciones para ser ejecutadas por la computadora mientras que un intérprete
sólo hace una traducción intermedia necesaria para poder ejecutar el código. Además un
intérprete permite que el código sea modificado durante su ejecución, algo que un compilador
impide hasta que haya finalizado el proceso de compilado. Teniendo esto en cuenta se
puede decir que un compilador es más seguro dado que al no permitir el acceso al código
fuente se evita que el usuario altere indebidamente el funcionamiento del programa.

Ejemplos de lenguajes Compiladores: -C++, -Pascal, -Basic


Ejemplos de lenguajes Intérpretes: -JavaScript, -Ruby, -Phython

8) Principios de Diseño de Lenguajes de Programación:


Concisión notacional​: El lenguaje debe ser una ayuda al programador proporcionando un
conjunto de conceptos claro, simple y unificado. La sintaxis debe ser legible por el
programador.
Ortogonalidad​: Las diferentes características deben ser lo más independientes posible entre
ellas
Abstracción​: El lenguaje debe permitir al programador la identificación de patrones repetitivos
y automatizar tareas mecánicas, tediosas o susceptibles de cometer errores.
Seguridad​: Lo ideal es que los programas incorrectos no pertenezcan al lenguaje y sean
rechazados por el compilador
Expresividad:​ El lenguaje es expresivo cuando permite expresar con facilidad procesos o
estructuras complejos.
Extensibilidad:​ El lenguaje debe facilitar mecanismos para que el programador pueda
aumentar la capacidad expresiva del lenguaje añadiendo nuevas construcciones.
Portabilidad:​ El lenguaje debe facilitar la creación de programas que funcionen en el mayor
número de entornos computacionales.
Eficiencia​: El programador debe poder expresar algoritmos suficientemente eficientes o el
lenguaje debe incorporar técnicas de optimización de los programas escritos en él.
Eficiencia en la traducción:​ El diseño del lenguaje debe permitir fácilmente la construcción de
traductores e intérpretes que sean eficientes en uso de tiempo y memoria
Eficiencia de ejecución​: El diseño del lenguaje no debe dar lugar a que la interpretación o
ejecución de los programas traducidos conlleve un alto gasto en tiempo o memoria.
(Criterios para diseñar lenguajes de programación, 2011)
Referencias:
Referencia 1.1: Historia y definición de los lenguajes de programación,
http://www.monografias.com/trabajos99/historia-y-definicion-lenguajes-programacion/historia-
y-definicion-lenguajes-programacion.shtml​ , acceso Marzo 2019.
Referencia 1.2:Definición de lenguaje de programación,
https://definicion.de/lenguaje-de-programacion/​ ,acceso Marzo 2019.
Referencia 2: Apuntes de Teoría de los Lenguajes de Programación
htpp://www.apuntesunde.es/descargas/category/11-apuntes-de-teoria-de-los-lenguajes-de-pr
ogramacion.html?dowload=18%3Aapuntes-de-teoria-de-los-lenguajes-de-progracion​ , acceso
Marzo 2019
Referencia 6: Semántica de lenguajes de programación,
https://es.wikipedia.org/wiki/Sem%C3%A1ntica_de_lenguajes_de_programaci%C3%B3n​,
Marzo 2019.
Referencia 10: Criterios para diseñar lenguajes de programación,
http://es.scribd.com/doc/63549009/criterios-para-diseno-de-lenguajes-de-programacion#scrib
d​ , Marzo 2019.

También podría gustarte