• No se han encontrado resultados

Programación estructurada (Lenguajes de programación)

N/A
N/A
Protected

Academic year: 2021

Share "Programación estructurada (Lenguajes de programación)"

Copied!
37
0
0

Texto completo

(1)

Programaci ´on estructurada

(Lenguajes de programaci ´on)

M. en C. Sergio Luis P ´erez P ´erez

UAM CUAJIMALPA, M ´EXICO, D. F.

(2)

Lenguajes de programaci ´on

Lenguajes de programaci ´on

1 Lenguajes de programaci ´on

(3)

Lenguajes de programaci ´on Breve historia

Breve historia

1 Lenguajes de programaci ´on

Breve historia

Niveles de los lenguajes Paradigmas de programaci ´on

(4)

Lenguajes de programaci ´on Breve historia

Breve historia I

Para que la computadora entienda nuestras instrucciones debe

usarse un lenguaje espec´ıfico conocido comoc ´odigo m ´aquinao

lenguaje m ´aquinay s ´olo consiste en cadenas binarias.

Unlenguaje de programaci ´ones un lenguaje formal dise ˜nado para poder expresar procesos que pueden ser llevados a cabo por m ´aquinas como las computadoras.

Los primeros operadores de computadoras decidieron hacer traductores para reemplazar los 0 y 1 por palabras o abstracci ´on de palabras y letras provenientes del ingl ´es, lo que dio pie a los lenguajes ensambladores.

(5)

Lenguajes de programaci ´on Breve historia

Breve historia II

Ellenguaje ensambladorsigue la misma estructura del lenguaje m ´aquina, pero las letras y palabras son m ´as f ´aciles de recordar y entender que los n ´umeros.

Posteriormente aparecieron diferentes lenguajes de

programaci ´on, en particular loslenguajes de alto nivel.

En 1949, fue propuestoShort CodeporJohn Mauchly, el cual

es uno de los primeros lenguajes de programaci ´on desarrollados.

John Mauchly fue un f´ısico americano que junto conJohn Eckert

dise ˜naron laENIAC, la primer computadora de prop ´osito general.

Tambi ´en dise ˜naron laEDVAC, laBINACy laUNIVAC I, que fue la

(6)

Lenguajes de programaci ´on Breve historia

Breve historia III

La primera programadora de computadora conocida fueAda

Lovelace, hija de Anabella Milbanke Byron y Lord Byron. Anabella introdujo en las matem ´aticas a Ada quien, despu ´es de

conocer aCharles Babbage, tradujo y ampli ´o una descripci ´on de

su m ´aquina anal´ıtica.

El nombre del lenguaje de programaci ´on Ada fue escogido como homenaje a esta programadora.

En 1953,John Backussometi ´o una propuesta a sus superiores

en IBM para desarrollarFortranjunto con un equipo de varios

(7)

Lenguajes de programaci ´on Breve historia

Breve historia IV

El primer manual para Fortran apareci ´o en 1956 y el primer compilador fue entregado hasta 1957.

En 1960, se cre ´oCOBOL, otro de los primeros lenguajes de

programaci ´on.

En 1960, fue desarrolladoAPL(A Programming Language) por

Kenneth E. Iversoncuya novedad fue el uso de arreglos multidimensionales.

Entre 1958 y 1973, fueron desarrolladas diferentes versiones del

lenguajeALGOL(ALGOrithmic Language) por un grupo de

(8)

Lenguajes de programaci ´on Breve historia

Breve historia V

ALGOL es de los primeros lenguajes en manejar la

programaci ´on estructurada.

En los 60s, fue desarrolladoSimulapor los noruegosOle-Johan

DahlyKristen Nygaardel cual es el primer lenguaje de

programaci ´on desarrollado para soportar laprogramaci ´on

orientada a objetos.

En los 70s, fue desarrolladoSmalltalkporAlan Keyde Xerox, el

cual es conocido como el primer lenguaje “puro” para programaci ´on orientada a objetos.

De 1969 a 1973, fue desarrolladoCporDennis Ritchiede los

AT&T labs, el cual era un lenguaje orientado principalmente a la

(9)

Lenguajes de programaci ´on Breve historia

Breve historia VI

En 1972, fue desarrolladoPrologporAlain Colmerauer, el cual

fue el primer lenguaje de programaci ´on l ´ogica.

En 1979, fue desarrolladoC++porBjarne Stroustrupque es un

lenguaje orientado a objetos y a la programaci ´on de sistemas. C++ ha pasado por diferentes revisiones y est ´andares

introduciendo nuevas funcionalidades: C++98, C++03, C++07, C++11, C++14 y pr ´oximamente C++17.

De 1991 a 1995, fue desarrolladoJavaporJames Gosling,Mike

SheridanyPatrick Naughtonde Sun Microsystems, el cual es un lenguaje orientado a objetos dise ˜nado con un estilo similar a C++.

(10)

Lenguajes de programaci ´on Breve historia

Breve historia VII

Las principales versiones de Java son: JDK 1.0 (1996), JDK 1.1 (1997), J2SE 1.2 (1998), J2SE 1.3 (2000), J2SE 1.4 (2002), J2SE 5.0 (2004), Java SE 6 (2006), Java SE 7 (2011), Java SE 8 (2014).

JDKsignificaJava Development Kity es una implementaci ´on de

alguna plataforma como Java SE, Java EE or Java ME.

J2SEsignifica J2SEJava 2 Platform, Standard Editionque es una

plataforma para desarrollo r ´apido y seguro de aplicaciones, as´ı c ´omo de aplicaciones portables.

Java SEsignificaJava Platform, Standard Editiones una colecci ´on de plataformas de desarrollo para Java.

(11)

Lenguajes de programaci ´on Breve historia

Breve historia VIII

En 1999,Anders Hejlsbergy su equipo comenzaron el

desarrollo deC#.

Las diferentes versiones de C# van de la 1.0 de 2002 a la 5.0 de 2013.

Existen decenas de lenguajes de programaci ´on y una lista bastante amplia la puede encontrar en:

http://en.wikipedia.org/wiki/List of programming languages. Todo lenguaje de programaci ´on se compone de un conjunto de s´ımbolos (palabras reservadas, operadores, constantes), reglas sint ´acticas y sem ´anticas que definen su estructura y el significado de sus elementos y expresiones.

(12)

Lenguajes de programaci ´on Niveles de los lenguajes

Niveles de los lenguajes

1 Lenguajes de programaci ´on

Breve historia

Niveles de los lenguajes

Paradigmas de programaci ´on

(13)

Lenguajes de programaci ´on Niveles de los lenguajes

Niveles de los lenguajes I

Por su forma de abstracci ´on existen cuatro niveles de programaci ´on:

1 Lenguajes de m ´aquina. 2 Lenguajes ensambladores. 3 Lenguajes de alto nivel. 4 Lenguajes declarativos.

(14)

Lenguajes de programaci ´on Niveles de los lenguajes

Niveles de los lenguajes II

Lenguaje m ´aquina

Fue el primer lenguaje utilizado en la programaci ´on de computadoras.

Es la capa m ´as interna en los niveles de lenguaje en la computaci ´on.

El lenguaje de m ´aquina es el ´unico que entiende la computadora. Este lenguaje se expresa a trav ´es del alfabeto binario.

El lenguaje de m ´aquina es dependiente de la arquitectura de la computadora.

(15)

Lenguajes de programaci ´on Niveles de los lenguajes

Niveles de los lenguajes III

Lenguaje ensamblador

El lenguaje ensamblador es una representaci ´on simb ´olica del lenguaje de m ´aquina asociado.

Cada computadora tiene un lenguaje ensamblador propio. El lenguaje ensamblador mnem ´onicos para representar cada instrucci ´on del lenguaje de m ´aquina asociado.

Un programa ensamblador crea c ´odigo objeto traduciendo instrucciones mnem ´onicas de lenguaje ensamblador en c ´odigos de operaci ´on, y resolviendo los nombres simb ´olicos para las localizaciones de memoria y otras entidades.

(16)

Lenguajes de programaci ´on Niveles de los lenguajes

Niveles de los lenguajes IV

Lenguaje de alto nivel

Son lenguajes independientes de la computadora. Un programa escrito en lenguaje de alto nivel puede ser

ejecutado en cualquier computadora, siempre que ´esta disponga del traductor o compilador del lenguaje en cuesti ´on.

Los programas pueden ser escritos y comprendidos de una forma m ´as sencilla.

Se caracterizan por proporcionar librer´ıas de uso frecuente (entrada/salida, funciones matem ´aticas, manejo de cadenas, etc.).

(17)

Lenguajes de programaci ´on Niveles de los lenguajes

Niveles de los lenguajes V

Lenguaje declarativo

Son aquellos lenguajes en los que se indica a la computadora qu ´e es lo que se desea obtener o qu ´e es lo que se est ´a buscando. Son lenguajes de ´ordenes, donde se expresa lo que hay que hacer en lugar de c ´omo hacerlo.

En la programaci ´on declarativa las sentencias que se utilizan lo que hacen es describir el problema.

Existen diversos tipos de lenguajes declarativos: Los lenguajes l ´ogicos, como Prolog.

Los lenguajes algebraicos, como SQL. Los lenguajes funcionales, como Haskell.

(18)

Lenguajes de programaci ´on Paradigmas de programaci ´on

Paradigmas de programaci ´on

1 Lenguajes de programaci ´on

Breve historia

Niveles de los lenguajes

Paradigmas de programaci ´on

(19)

Lenguajes de programaci ´on Paradigmas de programaci ´on

Paradigmas de programaci ´on I

Unparadigma de programaci ´ones una propuesta tecnol ´ogica adoptada por una comunidad de programadores cuyo n ´ucleo central es incuestionable en cuanto a que ´unicamente trata de resolver uno o varios problemas claramente delimitados. La resoluci ´on de estos problemas debe suponer un avance significativo en al menos un par ´ametro que afecte a la ingenier´ıa de software.

El paradigma de programaci ´on m ´as utilizado es el orientado a objetos.

Un paradigma de programaci ´on representa un enfoque particular o filosof´ıa para dise ˜nar soluciones.

(20)

Lenguajes de programaci ´on Paradigmas de programaci ´on

Paradigmas de programaci ´on II

Los paradigmas m ´as comunes son: Imperativo.

Funcional. L ´ogico. Declarativo.

Orientado a objetos.

(21)

Lenguajes de programaci ´on Paradigmas de programaci ´on

Paradigmas de programaci ´on III

Imperativo

Es un paradigma que describe la programaci ´on en t ´erminos del estado del programa y sentencias que cambian dicho estado. Los programas imperativos se componen de un conjunto de instrucciones que le indican a la m ´aquina c ´omo realizar una tarea. La implementaci ´on de hardware suele ser imperativa.

Esto se debe a que el hardware de las computadoras implementa el paradigma de las M ´aquinas de Turing.

Fortran fue el primer gran lenguaje de programaci ´on imperativo. Ejemplos: BASIC, C/C++, C#, Java, Pascal, Perl, PHP, Python.

(22)

Lenguajes de programaci ´on Paradigmas de programaci ´on

Paradigmas de programaci ´on IV

Funcional

Es un paradigma de programaci ´on declarativa basado en la utilizaci ´on de funciones aritm ´eticas que no maneja datos mutables o de estado.

Enfatiza la aplicaci ´on de funciones, en contraste con el estilo de programaci ´on imperativa, que enfatiza los cambios de estado.

La programaci ´on funcional tiene sus ra´ıces en elc ´alculo lambda,

el cual es un sistema formal desarrollado en los a ˜nos 1930 para investigar la definici ´on de funci ´on y la recursi ´on.

Los lenguajes puramente funcionales han sido enfatizados en el ambiente acad ´emico m ´as que en el desarrollo de software. Ejemplos: Scheme, Objective Caml, Haskell, Mathematica y SQL.

(23)

Lenguajes de programaci ´on Paradigmas de programaci ´on

Paradigmas de programaci ´on V

L ´ogico

Es un tipo de programaci ´on declarativa.

La programaci ´on l ´ogica gira en torno al concepto de predicado, o relaci ´on entre elementos.

Se basa en la teor´ıa l ´ogica de primer orden e incorpora algunos comportamientos de orden superior como la l ´ogica difusa. Lal ´ogica de primer ordenes un sistema formal dise ˜nado para

estudiar la inferencia en loslenguajes de primer orden.

Son lenguajes formales con cuantificadores, predicados y funciones cuyos argumentos son ctes. o variables de individuo. Ejemplos: Prolog.

(24)

Lenguajes de programaci ´on Paradigmas de programaci ´on

Paradigmas de programaci ´on VI

Declarativo

Es un paradigma de programaci ´on basado en el desarrollo de programas especificando un conjunto de condiciones,

proposiciones, afirmaciones, restricciones, ecuaciones o transformaciones que describen el problema y detallan su sol. La soluci ´on es obtenida mediante mecanismos internos de control, sin especificar exactamente c ´omo encontrarla. No existen asignaciones destructivas.

Existen varios tipos de lenguajes declarativos: Los lenguajes l ´ogicos.

Los lenguajes algebraicos. Los lenguajes funcionales.

(25)

Lenguajes de programaci ´on Paradigmas de programaci ´on

Paradigmas de programaci ´on VII

Orientado a objetos

Es un paradigma que usa objetos en sus interacciones para dise ˜nar aplicaciones y programas inform ´aticos.

Se basa en t ´ecnicas como herencia, cohesi ´on, abstracci ´on, polimorfismo, acoplamiento y encapsulamiento.

Losobjetosson entidades que tienen un determinado estado, comportamiento (m ´etodo) e identidad.

Elestadose compone de datos o atributos que lo definen.

Elcomportamientoest ´a definido por los m ´etodos o mensajes a

los que sabe responder dicho objeto, es decir, las operaciones que se pueden realizar con ´el.

Laidentidades una propiedad de un objeto que lo diferencia.

(26)

Lenguajes de programaci ´on Paradigmas de programaci ´on

Paradigmas de programaci ´on VIII

Multiparadigma

Un lenguaje de programaci ´on multiparadigma es el que soporta m ´as de un paradigma de programaci ´on.

Seg ´un Bjarne Stroustrup, un lenguaje multiparadigma permite crear programas usando m ´as de un estilo de programaci ´on. El objetivo es permitir a los programadores utilizar el mejor paradigma para cada trabajo.

Un ejemplo es esOz, desarrollado en el laboratorio de

programaci ´on de sistemas en la Universidad de Saarland en Alemania por Gert Smolka y sus estudiantes en 1990.

Oz contiene una forma simple y bien hecha de la mayor´ıa de los conceptos de los principales paradigmas de programaci ´on.

(27)

Compilaci ´on de programas

Compilaci ´on de programas

1 Lenguajes de programaci ´on

(28)

Compilaci ´on de programas

Compilaci ´on de programas I

Antes de poder ejecutar un programa escrito en alg ´un lenguaje de programaci ´on, primero debe traducirse a un formato en el que la computadora pueda ejecutarlo.

Los sistemas de software que se encargan de dicha traducci ´on son los compiladores.

Uncompiladores un programaprocesador de lenguajeque traduce un programa escrito en un lenguaje de programaci ´on a otro lenguaje de programaci ´on.

El compilador genera un programa equivalente que la m ´aquina ser ´a capaz de interpretar.

(29)

Compilaci ´on de programas

Compilaci ´on de programas II

Un compilador generalmente traduce el c ´odigo fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior.

Unint ´erpretees otro tipo de procesador de lenguaje que en vez de producir un nuevo programa lo ejecuta aparentemente al instante.

Generalmente el programa producido por el compilador es mucho m ´as r ´apido que el ejecutado por un int ´erprete.

Sin embargo, el int ´erprete puede ofrecer mejores diagn ´osticos de error pues ejecuta instrucci ´on por instrucci ´on.

(30)

Compilaci ´on de programas

Compilaci ´on de programas III

La estructura de un compilador se divide en dos grandes etapas, una de an ´alisis y una de s´ıntesis.

Elan ´alisisdivide el programa fuente en componentes y define una estructura gramatical sobre ellas.

Las´ıntesisconstruye el programa destino a partir de la representaci ´on intermedia y de una tabla de s´ımbolos.

El proceso de compilaci ´on opera a trav ´es de una secuencia de fases.

(31)

Compilaci ´on de programas

Compilaci ´on de programas IV

Proceso de compilaci ´on 1 Analizador l ´exico.

2 Analizador sint ´actico.

3 Analizador sem ´antico.

4 Generador de c ´odigo intermedio.

5 Optimizador de c ´odigo independiente de la m ´aquina.

(32)

Compilaci ´on de programas

Compilaci ´on de programas V

Analizador l ´exico

Se lee el flujo de caracteres del programa y se agrupan en

secuencias significativas conocidas comolexemas.

Ellexemaes una parte de una palabra que constituye la unidad m´ınima y que es la ra´ız de esta misma con un significado l ´exico.

Para cada lexema el analizador produce como salida untokende

la forma:

<nombre-token, valor-atributo>

Por ejemplo la instrucci ´on:

a=b+c∗10

genera tres identificadores de variable, tres de operadores y uno de constante.

(33)

Compilaci ´on de programas

Compilaci ´on de programas VI

Analizador sint ´actico

Utiliza los tokens generados por el analizador l ´exico para crear una representaci ´on intermedia en forma de ´arbol que describa la estructura gramatical del flujo de los tokens.

A esto se le conoce como ´arbol sint ´actico.

En este ´arbol cada nodo intermedio suele ser una operaci ´on y los hijos de los nodos son los argumentos de la operaci ´on.

En dicho ´arbol la altura de cada nodo representa la precedencia de dicha operaci ´on dentro de una instrucci ´on.

(34)

Compilaci ´on de programas

Compilaci ´on de programas VII

Analizador sem ´antico

En esta fase se utiliza el ´arbol sint ´actico y la informaci ´on en la tabla de s´ımbolos para comprobar la consistencia sem ´antica del programa con la definici ´on del lenguaje.

Tambi ´en se lleva a cabo la comprobaci ´on de tipos de las variables. La especificaci ´on del lenguaje puede permitir ciertas

conversiones de tipo conocidas comocoerciones.

(35)

Compilaci ´on de programas

Compilaci ´on de programas VIII

Generador de c ´odigo intermedio

El compilador puede convertir el programa fuente a c ´odigo destino a trav ´es de una o varias representaciones intermedias. La representaci ´on intermedia suele ser similar al c ´odigo m ´aquina con la salvedad de que: debe ser f ´acil de producir y f ´acil de traducir a la m ´aquina destino.

Existe una forma intermedia llamadac ´odigo de tres direcciones

que genera instrucciones similares a lenguaje ensamblador es decir con tres operandos por direcci ´on.

(36)

Compilaci ´on de programas

Compilaci ´on de programas IX

Optimizador de c ´odigo independiente de la m ´aquina

En esta fase se trata de mejorar el c ´odigo intermedio.

Mejor puede significar m ´as r ´apido aunque igual pueden lograrse otros objetivos como un c ´odigo m ´as corto.

Muchos compiladores invierten gran cantidad de tiempo en esta fase.

Aquellos compiladores que gastan gran parte del tiempo en esta

(37)

Compilaci ´on de programas

Compilaci ´on de programas X

Generador de c ´odigo

Este se encarga de recibir el c ´odigo intermedio y traducirlo al lenguaje destino.

Si el lenguaje destino es el m ´aquina entonces se seleccionan registros o localidades de memoria para cada variable que utiliza el programa.

Referencias

Documento similar

Després d’un inventari pericial i de consensuar-ho amb els mateixos redactors de l’estudi, s’apunta a que la problemàtica és deguda a que en els casos on l’afectació

Polígon industrial Torrent d'en Puig. Polígonindustrial de Can

(...) la situación constitucional surgida tras la declaración del estado de emergencia es motivo de preocupación para la Comisión de Venecia. La declaración en sí misma no definió

Este libro intenta aportar al lector una mirada cuestiona- dora al ambiente que se desarrolló en las redes sociales digitales en un escenario de guerra mediática mantenido por

1. LAS GARANTÍAS CONSTITUCIONALES.—2. C) La reforma constitucional de 1994. D) Las tres etapas del amparo argentino. F) Las vías previas al amparo. H) La acción es judicial en

Como en el caso de los tipos enteros, los lenguajes suelen soportar varios tipos real, de modo que el programador pueda seleccionar aquel cuyo rango y precisi´on en el coeficiente

[r]

[r]