Lenguaje y Compiladores
Lenguaje y Compiladores
Lenguaje y Compiladores
VICERRECTORADO ACADÉMICO
COORDINACIÓN GENERAL DE ESTUDIO
INGENIERIA EN INFORMATICA
LENGUAJE Y COMPILADORES
INFORME DE INVESTIGACIÓN
Profesor: Integrantes:
Félix Márquez Marian García
Delguis Ferman
Adrian Moreno
Daniel Porras
Los primeros lenguajes de programación de alto nivel se diseñaron durante los años
1950. Desde entonces los lenguajes de programación han sido una fascinante y prolífica
área de estudio para los científicos de la computación y los ingenieros.
(acomodar)
1- Lógico
Este paradigma se basa en la fórmula "algoritmos = lógica + control" (la llamada Ecuación
Informal de Kowalski), lo que significa que un algoritmo se crea especificando
conocimiento mediante axiomas (lógica) y el problema se resuelve mediante un mecanismo
de inferencia que actúa sobre el mismo (control).
Los programas lógicos se pueden descifrar a través de dos conceptos importantes: verdad y
deducción lógica. La verdad sale si el cálculo en el programa es verdadero o no, bajo la
implementación de los símbolos del programa. La deducción lógica determina si una
cláusula lógica es una consecuencia del programa.
Esta lógica está compuesta de sintaxis y semántica. La sintaxis es el lenguaje formal que se
utiliza para expresar conceptos. Por otro lado, la semántica de las fórmulas lógicas de
primer orden indica cómo determinar el valor verdadero de cualquier fórmula.
Forma clausal
Es un subconjunto de la lógica de primer orden. Tiene una forma normalizada donde una
sentencia viene definida por un prefijo universal o cadena de cuantificadores universales, y
un conjunto libre de cuantificadores de la cláusula.
Como paso de la inferencia se eligen dos cláusulas que tengan como propiedad que una
contenga un disyuntivo X (un literal positivo) y la otra contenga un disyuntivo ¬X (un
literal negativo). Estos disyuntivos se conocen como complementarios.
A partir de estas dos cláusulas iniciales se construye una nueva cláusula resolutiva
utilizando todos los literales, excepto los complementarios.
Inteligencia artificial
La programación lógica es una metodología que es empleada para buscar que las
computadoras deduzcan, porque resulta útil para representar el conocimiento. Se utiliza la
lógica para representar el conocimiento y la inferencia para manejarlo.
2- Funcional.
Con este paradigma las funciones serán tratadas como ciudadanos de primera clase. Las
funciones podrán ser asignadas a variables además podrán ser utilizadas como entrada y
salida de otras funciones.
A las funciones que puedan tomar funciones como parámetros y devolver funciones como
resultado serán conocidas como función de orden superior.
Al trabajar con programación funcional, nos toparemos con conceptos tales cómo:
● Funciones puras: no son más que funciones, las cuales, dando el mismo input,
siempre retornan el mismo output, además de no tener efectos secundarios.
● Mutabilidad: Un objeto inmutable es aquel que no puede ser modificado una vez
haya sido creado. Podemos ver a los objeto inmutables como constantes, una vez
nosotros asignamos un valor este no podrá ser modificado.
Actualmente contamos con una gran cantidad de lenguajes en donde podemos hacer uso de
la programación funcional, por ejemplo :
● PHP
● Ruby
● Python
● Elixir
● Kotling
● Haskell
● Erlang
El comportamiento del programa es llevado a cabo por objetos, entidades que representan
elementos del problema a resolver y tienen atributos y comportamiento. La programación
orientada a objetos (Object Oriented Programming, OOP) es un modelo de programación
informática que organiza el diseño de software en torno a datos u objetos, en lugar de
funciones y lógica. Un objeto se puede definir como un campo de datos que tiene atributos
y comportamientos únicos.
El primer paso en OOP es recopilar todos los objetos que un programador desea manipular
e identificar cómo se relacionan entre sí, un ejercicio que a menudo se conoce como
modelado de datos.
Los ejemplos de un objeto pueden variar desde entidades físicas, como un ser humano que
se describe por propiedades como nombre y dirección, hasta pequeños programas
informáticos, como widgets.
Una vez que se conoce un objeto, se etiqueta con una clase de objetos que define el tipo de
datos que contiene y cualquier secuencia lógica que pueda manipularlo. Cada secuencia
lógica distinta se conoce como método. Los objetos pueden comunicarse con interfaces
bien definidas llamadas mensajes.
Principios de OOP
Abstracción. Los objetos sólo revelan mecanismos internos que son relevantes para el uso
de otros objetos, ocultando cualquier código de implementación innecesario. Este concepto
ayuda a los desarrolladores a realizar cambios y adiciones más fácilmente a lo largo del
tiempo.
Herencia. Se pueden asignar relaciones y subclases entre objetos, lo que permite a los
desarrolladores reutilizar una lógica común sin dejar de mantener una jerarquía única. Esta
propiedad de OOP obliga a un análisis de datos más completo, reduce el tiempo de
desarrollo y asegura un mayor nivel de precisión.
Polimorfismo. Los objetos pueden adoptar más de una forma según el contexto. El
programa determinará qué significado o uso es necesario para cada ejecución de ese objeto,
reduciendo la necesidad de duplicar código.
Con las líneas leídas, el shell realiza los siguientes pasos (en este
orden):
Parámetros especiales.
Lenguaje Perl:
Perl está inspirado a partir de lenguajes como C, sh, awk y sed (algunos
provenientes de los sistemas Uníx), pero está enfocado a ser más
práctico y fácil que estos últimos. Es por ello que un programador que
haya trabajado con el lenguaje C y los otros tendrá menos problemas
en entenderlo y utilizarlo rápidamente. Una diferencia fundamental de
Perl con respecto a los otros lenguajes es que no limita el tamaño de los
datos con los que trabaja, el límite lo pone la memoria que en ese
momento se encuentre disponible.
Perl es un lenguaje interpretado, en consecuencia para ejecutar un
script en Perl debemos indicarle al sistema en ese mismo instante el
interprete que vamos a utilizar para ejecutar dicha script en Perl. Esto
se puede realizar de dos formas:
#!/usr/local/bin/perl
print "¡Hola, mundo!";
Lenguaje Python:
Dentro del rango ASCII , los caracteres válidos para los identificadores
son los mismos que en Python 2.x: las letras mayúsculas y minúsculas
A hasta Z, el guión bajo _ y los dígitos 0 hasta 9, salvo el primer
carácter.
Python 3.0 introduce caracteres adicionales fuera del rango ASCII . Para
estos caracteres, la clasificación utiliza la versión de la base de datos de
caracteres Unicode incluida en el módulo unicodedata.
Los literales de bytes siempre se prefijan con 'b' o 'B'; producen una
instancia del tipo bytes en lugar del tipo str. Sólo pueden contener
caracteres ASCII; los bytes con un valor numérico de 128 o mayor
deben ser expresados con escapes.
Tanto los literales de cadena como de bytes pueden ser prefijados con
una letra 'r' o 'R'; tales cadenas se llaman raw strings y consideran las
barras inversas como caracteres literales. Como resultado, en las
cadenas literales, los escapes de '\U' y '\u' en las cadenas sin procesar
no son tratados de manera especial. Dado que los literales raw de
unicode de Python 2.x se comportan de manera diferente a los de
Python 3.x, la sintaxis de 'ur' no está soportada.
A menos que un prefijo 'r' o 'R' esté presente, las secuencias de escape
en literales de cadena y bytes se interpretan según reglas similares a
las usadas por C estándar. Las secuencias de escape reconocidas son:
Ref:
●
Plantee un problema A el cual requiere de una interfaz hombre máquina donde el
usuario dará órdenes al computador (lenguaje alto nivel), presente una propuesta de
lenguaje de programación que permita interactuar al usuario con la máquina
mediante un programa, en otras palabras, el propósito del lenguaje es permitir al
usuario dar respuesta al problema A. Es necesario que el lenguaje incorpore
estructura de control y bucles.
Partiendo del lenguaje diseñado en la pregunta anterior plantee dos casos problemas
y resuelva cada uno con un programa escrito en el lenguaje planteado.
Conclusión
1- La programación funcional nos permitirá desarrollar software mucho más legible y fácil
de testear, nos concentramos en qué estamos haciendo y no en cómo se esta haciendo.
Referencias
● https://codigofacilito.com/articulos/programacion-funcional
● https://www.lifeder.com/programacion-logica/
● Programación en SHELL ( Bash ) http://index-
of.co.uk/Programming/programacion-shell-bash.pdf
● https://ediciones.ucc.edu.co/index.php/ucc/catalog/download/158/156/868-
1?inline=1
● https://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html
● https://desarrolloweb.com/articulos/541.php Documento introductorio al
lenguaje Perl. Miguel Angel Alvarez
● Guía de referencia HTMLified Perl 5 de Rex Swain (1996) de
Johan Vromans http://www.rexswain.com/perl5.html
● Perl: la sintaxis:
http://www2.iib.uam.es/bioinfo/curso/perl/tutoriales/cicei/cap2.htm
● Tutorial de Python: https://docs.python.org/es/3/tutorial/
● Sintaxis básica para empezar con Python. escrito por Jose Maria Lopez
(2019): https://blogthinkbig.com/sintaxis-basica-aprender-python