Vous êtes sur la page 1sur 55

PARADIGMAS DE PROGRAMACIN

Lic. Ronald Mora B.

Ingeniera en Sistemas de Computacin

Paradigmas de Programacin
Tema 0. Definiciones Definiciones Generales Definicin de un lenguaje Proceso de Traduccin Tema 1. Historia de los lenguajes de programacin Dcadas de programacin Futuro de la programacin La tica en la programacin Tema 2. Principios de diseo Criterios de diseo Eficiencia en la programacin Regularidad en el diseo
Lic. Ronald Mora B.

Definiciones
Definiciones tomadas de la versin en lnea del Diccionario de la Lengua Espaola vigsima segunda edicin

Paradigma

2da acepcin: Cada uno de los esquemas formales en que se organizan las palabras nominales y verbales para sus respectivas flexiones. 5ta acepcin: Elaborar programas para la resolucin de problemas mediante ordenadores. 12va acepcin: Conjunto unitario de instrucciones que permite a un ordenador realizar funciones diversas, como la resolucin de problemas. 1era acepcin: Conjunto de sonidos articulados o su representacin grfica, con que el hombre manifiesta lo que piensa o siente.
Lic. Ronald Mora B.

Programacin

Programa

Lenguaje

Lenguaje de programacin

Definicin Profesional
Kenneth C. Louden, Lenguajes de Programacin, Segunda Edicin, Pag. 3.

Un lenguaje de programacin es un sistema notacional para describir computaciones en forma legible tanto para la mquina como para el ser humano. Computacin

Cualquier proceso que pueda ser efectuado por una computadora, no solo clculos matemticos, incluye manipulacin de datos, procesamiento de texto y el almacenamiento y recuperacin de informacin. El lenguaje debe tener una estructura lo suficientemente simple para que permita una traduccin eficiente. Requiere que el lenguaje proporcione abstracciones de las acciones del computador, fciles de comprender, incluso para personas no completamente familiarizadas con los detalles inherentes a la maquina.
Lic. Ronald Mora B.

Legibilidad por parte de la maquina

Legibilidad por parte del ser humano

Abstraccin de Datos

Abstraccin bsica

Pascal C Basic Pascal C Basic

var x : integer; int x; Dim x as Integer var x : array[1..10] of integer; int x[10]; Dim x (10) as Integer

Abstraccin estructurada

Abstraccin unitaria: varia mucho de un lenguaje a otro


Encapsulado de datos Ocultamiento de informacin Ejemplos


Modulo en ML o Haskell Paquete en Ada o Java Clase en lenguajes OO


Lic. Ronald Mora B.

Abstraccin de Control

Abstraccin bsica

Asignacin

Pascal x := x + 3 C x=x+3 Implica la recuperacin de una variable (direccin de memoria); sumarle el valor de 3 y almacenarlo en una variable (direccin de memoria).

Abstraccin estructurada

Dividen un programa en grupos de instrucciones que estn anidadas dentro de pruebas que gobiernan su ejecucin. El enunciado if en muchos lenguajes, el case en Pascal o el switch en C. Los ciclos while, el for y el do en C o el loop en Ada. Los procedimientos, rutinas, funciones, etc.

Abstraccin unitaria
Lic. Ronald Mora B.

Paradigmas de Computacin

Los lenguajes de programacin, en un inicio, se basaban en el modelo de la maquina de Von Neumann

Una unidad de procesamiento central nica que, en forma secuencial, ejecuta instrucciones que operan sobre valores almacenados en la memoria. Op. Cit. Pag.
12.

Maquina de Turing

Maquina que puede ejecutar cualquier calculo conocido en una computadora Un lenguaje de programacin que tiene variables enteras y aritmticas, y que ejecute enunciados en forma secuencial, incluyendo enunciados de asignacin, seleccin (if) y ciclo Op. Cit. Pag. 12. Lic. Ronald Mora(while). B.

Lenguaje completo en Turing

Paradigmas de Computacin

Desarrollo cronolgico de los paradigmas


Imperativo
Funcional Lgico

Orientado

a Objetos

Lic. Ronald Mora B.

Imperativo

Ejecucin secuencia de las instrucciones Uso de variables en representacin de direcciones de memoria Uso de la asignacin para cambiar el valor de las variables Se conoce como lenguaje imperativo, ya que un programa esta compuesto por un conjunto de instrucciones u ordenes. Tambin conocidos como procedurales. La mayora de los lenguajes de programacin actuales son imperativos.
Lic. Ronald Mora B.

Funcional y Lgico

Funcional
Proviene

de la matemtica, basado en la nocin abstracta de una funcin.

Lgico
Tambin

proviene de la matemtica. Se basa en la lgica simblica.

Lic. Ronald Mora B.

Orientado a Objetos

Estos lenguajes han tenido mucho xito. Permiten al programador crear cdigo reusable y ampliable Opera imitando al mundo real lo cual permite, que el programador, utilice su intuicin natural, con respecto al mundo, para comprender el comportamiento de un programa y construir cdigo apropiado. Los programas tienen las mismas caractersticas de los imperativos. Se diferencian en que estn compuestos por una gran cantidad de piezas pequeas, cuya interaccin esta cuidadosamente controlada y al mismo tiempo son fcilmente cambiables. Hoy este paradigma se han convertido en un estndar, tal y como lo fue, en el pasado, el imperativo.
Lic. Ronald Mora B.

Definicin de un lenguaje

Un lenguaje de programacin necesita una descripcin completa y precisa Se debe tener claro el efecto de las construcciones del lenguaje No sabramos exactamente que esta ejecutando el computador y de los resultados que podramos esperar No podramos crear una prueba matemticamente formal, del programa La definicin formal tambin aporta disciplina durante el diseo de un lenguaje La definicin de un lenguaje se puede dividir en sintaxis y semntica
Lic. Ronald Mora B.

Sintaxis del lenguaje

Equivale a la gramtica de un lenguaje natural o idioma Es la descripcin de las maneras en que diferentes partes del lenguaje pueden ser combinadas para formar otras partes La descripcin de la sintaxis en una de las reas donde las definiciones formales han tenido aceptacin Casi todos los lenguajes tienen una sintaxis definida por medio de una gramtica libre de contexto

El if en C se puede expresar como


[else enunciado ] Mora B. Lic. Ronald

Enunciado if if (expresin) enunciado

Sintaxis del lenguaje

Estructura lxica
Equivale a la ortografa en un lenguaje natural Es la estructura de las palabras del lenguaje Las palabras del lenguaje generalmente se conocen como tokens En el ejemplo anterior if y else son los tokens Otros tokens de los lenguajes de programacin son los smbolos para operaciones como + y <= as como los smbolos especiales de puntuacin como el punto y coma (;) o el punto (.) La sintaxis solo representa la estructura superficial de un lenguaje y por lo tanto, solo una pequea parte de una definicin formal del lenguaje

Lic. Ronald Mora B.

Semntica del lenguaje


Representa el significado del lenguaje Es mucho mas compleja y difcil de describir con precisin La dificultad radica en que significado se puede definir de muchas formas diferentes Al describir el significado de una fraccin del cdigo se involucra algn tipo de descripcin de los efectos de su ejecucin No existe una manera estndar de hacer esto Peor aun, el significado de un mecanismo particular puede involucrar interacciones con otros mecanismos en el lenguaje Esto implica que una descripcin completa en todos los contextos puede llegar a ser extremadamente Lic. Ronald Mora B. compleja.

Semntica del lenguaje

La descripcin semntica del if podra ser

Un enunciado if es ejecutado, primero, evaluando su expresin, misma que debe tener tipo aritmtico o apuntador, incluyendo todos los efectos colaterales, y si se compara diferente de cero, el enunciado que sigue a la expresin es ejecutado. Si existe una parte else, y la expresin es cero, el enunciado que sigue al else es ejecutado. Op. Cit. Pag. 19.

Esta descripcin no menciona lo que ocurre sin la condicin se evala igual a cero y no existe una parte else. Sigue siendo poco habitual que se llegue a dar una definicin formal de la semntica de un lenguaje de programacin Sin embargo, se ha desarrollado varios sistemas de notacin para definiciones formales y su uso va en aumento

Semntica operacional Semntica denotacional Semntica axiomtica


Lic. Ronald Mora B.

Proceso de traduccin

Lenguaje de programacin
Cualquier

lenguaje utilizado por el programador para indicarle al computador, cualquier tarea que se deba ejecutar
basado en cdigo binario que es entendido y ejecutado, directamente por el computador simblica y mnemotcnica del lenguaje maquina de un computador
Lic. Ronald Mora B.

Lenguaje de maquina
Lenguaje

Lenguaje ensamblador
Representacin

Proceso de traduccin

Programa fuente

Programa escrito en un lenguaje de programacin


Equivalente al programa fuente escrito en lenguaje de maquina Conversin que toma un programa fuente y genera el programa objeto equivalente Se puede realizar de cuatro formas

Programa Objeto

Proceso de traduccin

Por medio de interpretes Por medio de compiladores Por medio de seudointerpretes Por medio de maquinas virtuales
Lic. Ronald Mora B.

Proceso de traduccin

Interpretes

Un interprete toma el programa fuente, instruccin por instruccin, la convierte a lenguaje de maquina y la ejecuta Un interprete se puede considerar como un simulador para una maquina cuyo lenguaje de maquina es el lenguaje que se esta traduciendo. Op. Cit. Pag. 20 Un compilador de una fase, toma el programa fuente, completo, generando un programa objeto equivalente, el cual puede ser ejecutado directamente por el computador El compilador de dos fases es de uso muy comn. En este caso el lenguaje objeto es el lenguaje ensamblador, el cual es tomado en la segunda fase, por un ensamblador y traducido y ligado a otros programas objeto, produciendo el programa objeto equivalente
Lic. Ronald Mora B.

Compiladores (de una o dos fases)

Proceso de traduccin

Seudointerpretes

Ocupan una posicin intermedia entre los interpretes y los compiladores Toman un programa fuente y lo traducen a un lenguaje intermedio el cual es interpretado posteriormente No producen un programa objeto Procesan la totalidad del programa fuente antes de comenzar la ejecucin Se toma el programa fuente y se genera un programa objeto en el lenguaje de maquina (cdigo de bytes) de una Maquina Virtual (JVM) El programa objeto es cargado en la maquina virtual y ejecutado Tiene el inconveniente de tener que crear la maquina virtual Tiene la ventaja de independizar el programa objeto de la plataforma y del sistema operativo
Lic. Ronald Mora B.

Maquina Virtual - Ejemplo mas conocido: Java

Proceso de traduccin

Independientemente de la forma, todo proceso de traduccin debe realizar:

El anlisis lxico

Un rastreador debe convertir las secuencias de caracteres en los tokens que representan entidades bsicas del lenguaje Debe determinar la estructura de la secuencia de los tokens Debe determinar los suficiente del significado de la sentencia como para permitir su ejecucin o generacin del programa objeto

Anlisis sintctico

Anlisis semntico

Estas tres fases no ocurren de manera independiente, sino que se combinan en diversas Lic. Ronald Mora B. formas

Proceso de traduccin

Propiedades estticas del lenguaje


Son aquellas que se pueden determinar antes de la ejecucin Tpicamente son el lxico y la estructura sintctica En algunos lenguajes como C y ADA tambin son estticas el tipo de datos de las variables

Propiedades dinmicas del lenguaje

Son aquellas que solo se pueden determinar durante la ejecucin

Un compilador puede trabajar solo con las propiedades estticas Los interpretes requieren de las dos Los lenguajes pueden ser diseados para resultar mas adecuado para la interpretacin o la compilacin

Entre las propiedades estticas se tengan, mas apto para la compilacin se es


Lic. Ronald Mora B.

Proceso de traduccin

Los compiladores tienden a ser mas eficientes que los interpretes Los compiladores pueden realizar varias pasadas (optimizaciones) sobre el cdigo fuente para determinar la forma mas eficiente de traducir las acciones Los interpretes no tienen esta posibilidad

Lic. Ronald Mora B.

Historia de los lenguajes de programacin Los aos 50


Aparecen las computadoras de uso general La programacin se convirti en un reto importante Fortran (FORmula TRANslator) (1954-1957)

Diseado por la John Backus para programacin cientfica y de computacin Ultima versin Fortran90 Sus compiladores siguen siendo de los mas eficientes, produciendo cdigo de muy rpida ejecucin Desarrollado por el departamento de defensa, USA Fue rpidamente adoptado por bancos y empresas Sigue siendo muy utilizado por empresas Es ignorado por la comunidad acadmica La sintaxis es complicada por la alta verbosidad de la auto documentacin
Lic. Ronald Mora B.

Cobol (Common Business-Oriented Language) (1959-1960)


Historia de los lenguajes de programacin Los aos 50

Algol60 (ALGOrithmic Language) (1958-1960)


Fue

desarrollado por un comit con el objetivo de crear un lenguaje general y expresivo para la descripcin de los algoritmos de investigacin o aplicaciones practica La mayora de los lenguajes imperativos derivan del Algol, incluyendo Pascal, C y Ada Introdujo tcnicas como los bloques de inicio-fin, declaracin del tipo de las variables, recursin y el paso de parmetros por valor Fue el primero en utilizar los formatos BackusNaur (BNF) para la definicin de la sintaxis
Lic. Ronald Mora B.

Historia de los lenguajes de programacin Los aos 50


Estos tres lenguajes se basan en la maquina de Von Neumann Al mismo tiempo se desarrollaban otros lenguajes basados en el concepto de la funcin Paradigma Funcional LISP y APL LISP (LISt Processor) (1959)

Desarrollado por John McCarthy Estada basado en las estructuras de listas generales y en la aplicacin de funciones Actualmente se sigue usando junto con sus variantes (MacLisp, FranzLisp, Scheme) en muchas aplicaciones de IA Introdujo el concepto de recoleccin de basura recuperacin automtica de memoria no utilizada Dado que no se basa en el concepto de Von Neumann no puede ser ejecutado eficientemente en las maquinas existentes Se han desarrollado arquitecturas de maquinas especficamente Lic. Ronald Mora B. diseadas para ejecutar programas LISP

Historia de los lenguajes de programacin Los aos 50

APL (A Programming Language) (1959-1960)


Diseado por K. Iverson, Universidad de Harvard Lenguaje para la programacin de clculos matemticos, particularmente los que involucran arreglos y matrices Es de tipo funcional Tiene un gran numero de operadores Su principal inconveniente es que no tiene estructuracin y utiliza una serie de smbolos griegos que requieren de una terminal especial Los programas de APL son muy difciles de leer Tuvo gran influencia sobre el lenguaje FP Desde 1990 su desarrollo continua en el lenguaje J que amplia al APL con caractersticas estructuradas y elimina los smbolos especiales

Obsrvese que estos lenguajes se desarrollaron de 1955 a 1960


Lic. Ronald Mora B.

Historia de los lenguajes de programacin Los aos 60

Los aos 60 vieron el desarrollo de cientos de lenguajes Cada uno incorporaba los intereses y preocupaciones particulares de sus creadores Muchos fueron lenguajes de propsito especial
Grficos

Comunicaciones
Generacin

de informes

La mayora ya han desaparecido Lic. Ronald Mora B.

Historia de los lenguajes de programacin Los aos 60


Los diseadores soaban en grande Un lenguaje mas general y universal y que acabara con todos los dems PL/I (1963 1964) Primer Fracaso

IBM para la familia 360 Pretenda combinar las mejores caractersticas de Fortran, Cobol y Algol Agregar manejo de concurrencia y excepciones Sin embargo los traductores resultaron dificiles de escribir, lentos, grandes y nada seguros El lenguaje era difcil de aprender y propenso a errores al escribir por el elevado numero de interacciones no previsibles entre las caractersticas Se dice que fue creado antes de tiempo, ya que algunas de sus caractersticas (concurrencia y excepciones) aun no eran bien comprendidas
Lic. Ronald Mora B.

Historia de los lenguajes de programacin Los aos 60

Algol68 Otro fracaso


Pretenda crear una estructura mas expresiva y consistente Se desarrollo una nueva terminologa con definiciones precisas para describir al lenguaje Se volvi prcticamente ilegible para la mayora

SNOBOL (StriNg Oriented symBOlic Language)


Ampliamente utilizado y ofreci contribuciones significativas y duraderas Desarrollado en los Laboratorios Bell por R. Griswold 1961-1962 Fue uno de los primeros lenguajes de procesamiento de cadenas

Lic. Ronald Mora B.

Historia de los lenguajes de programacin Los aos 60

Simula67 (1965-1967)

Desarrollado por Kristen Nygaard y Ole-Johan Dahl en el Centro Noruego de Computacin, Oslo Basado en un lenguaje anterior Simula I que inclua a Algol60 como un subconjunto Originalmente concebido para simulaciones Contribuyo especialmente a la abstraccin y al concepto del clase Se considera el primer lenguaje OO Desarrollado por Peter Landin Ha influido mas que LISP en los lenguajes funcionales modernos como ML y Haskell Se considera el primer lenguaje basado en formalismos matemticos y cuyo comportamiento quedo descrito con total precisin
Lic. Ronald Mora B.

ISWIN Un olvidado

Historia de los lenguajes de programacin Los aos 60

BASIC (Beginners All-purpose Symbolic Instruction Code) 1964


Diseado por John Kemeny y Thomas Kurtz en el Colegio Darmouth Se origino como un sistema simple para los nuevos sistemas de tiempo compartido de la poca Sufri una transicin natural, 10 aos despus, hacia las PCs Basic no es un lenguaje sino una familia de lenguajes De hecho existen dos estndares independientes emitidos por ANSI: Basic mnimo 1978 y Basic completo 1988

Elimina los nmeros de lnea Agrega control estructurado Declaraciones de variables y procedimientos
Lic. Ronald Mora B.

Historia de los lenguajes de programacin Los aos 70


Esta dcada se caracterizo por la simplicidad, la abstraccin y el estudio Despus de la confusin de los 60s los diseadores se enfocaron en la simplicidad y consistencia del diseo Niklaus Wirth

Fue riguroso en su rechazo a Algol68 Publico una replica mejorada Algol-W En 1971 describe el lenguaje Pascal

Era una refinacin de las ideas de Algol Era pequeo, simple, eficiente, y estructurado Pensado para la enseanza de la programacin Obtuvo un xito increble dentro como fuera de la academia a pesar de sus limitaciones
Lic. Ronald Mora B.

Historia de los lenguajes de programacin Los aos 70

Dennis Ritchie

1972 Disea, en los laboratorios Bell, otro derivado de Algol, el C Tiene mucho xito porque

Reduce la complejidad del sistema de tipos Reduce el entorno en tiempo de ejecucin Da un fcil acceso a la maquina, por lo cual es considerado un lenguaje de nivel intermedio contrario a los lenguajes de alto nivel Se adapta muy bien para la programacin de sistemas operativos UNIX fue escrito en C

C y Pascal comparten su simplicidad y su consistencia general de diseo


Lic. Ronald Mora B.

Historia de los lenguajes de programacin Los aos 70

CLU (1974 1977)


Diseado

por un equipo liderado por Barbara Liskov en el MIT Intenta ser una metodologa robusta para los mecanismos de abstraccin para la produccin de sistemas de software de alta calidad Incluyo abstraccin de datos, abstraccin de control y el manejo de excepciones Proporciona un constructor de iteracin, lo cual es una abstraccin de control muy general Tuvo gran influencia sobre los lenguajes de los aos 80
Lic. Ronald Mora B.

Historia de los lenguajes de programacin Los aos 80


Nuevas direcciones y la creciente importancia de la OO Esta dcada inicia con dos importantes casos que incluyen tipos de datos abstractos (TDA), Ada y Modula-2 ADA (1980)

Desarrollado por un grupo del Departamento de Defensa, USA, liderado por J. Ichbiah Incluye el concepto de paquete TDA Herramientas para la concurrencia en la programacin paralela Estaba cuidadosamente diseado y se basaba en la mejor investigacin de los 70s Lic. Ronald Mora B. Tuvo en contra su tamao, complejidad y un estricto

Historia de los lenguajes de programacin Los aos 80

Modula-2 el primo modesto de ADA


Fue diseado por Niklaus Wirth (1982) como el sucesor de Pascal Se baso en un lenguaje anterior, Modula, que se haba creado para la construccin de sistemas operativos Introduce el concepto de modulo, similar aunque mas restrictivo que el paquete de ADA Apoya limitadamente la concurrencia con el concepto de corrutina Tenia un limitado apoyo a los TDA, un sistema restrictivo de tipos de datos y no manejaba excepciones Fue un reemplazo popular de Pascal en la educacin Lic. Ronald Mora B. No fue utilizado en proyectos grandes de software

Historia de los lenguajes de programacin Los aos 80

Smalltalk (1980)
Desarrollado por Alan Kay y Dan Ingalls en el Centro de Investigacion de Palo Alto de Xerox Co. Fue desarrollado para aplicar la metodologa OO en forma totalmente consistente derivado de Simula67 Se considera el ejemplo mas puro de un lenguaje OO Incorporo algunos elementos adicionales a un lenguaje de programacin con el sistema de ventanas graficas y el uso de mouse, una completa interfaz y su aplicacin en las PCs Esto tambin limito su uso, ya que se creo para una maquina particular en un ambiente particular que no era de uso general en ese momento. Se adelanto a su tiempo

Lic. Ronald Mora B.

Historia de los lenguajes de programacin Los aos 80

C++ (1980-1984)

Desarrollado por Bjarne Stroustrup en los Laboratorios Bell Inicio como una modesta ampliacin de C y originalmente se llamo C con clases Aprovechaba la portabilidad y popularidad de C y poda ejecutarse casi en cualquier parte Desde entonces se le ha agregado muchas caractersticas y uno enorme cantidad de bibliotecas Se ha convertido en un lenguaje muy grande, difcil de implementar, difcil de comprender en su totalidad Ningn compilador cumplo con la totalidad del estndar ANSI C++ 1998 Con la popularidad que alcanzo la OO en los 80s se crearon muchos otros lenguajes Modula-3, Oberon, Eifeel, pero ninguno alcanzo la popularidad de C++
Lic. Ronald Mora B.

Historia de los lenguajes de programacin Los aos 80


En los 80s se renov tambin el inters por los lenguajes funcionales Motivado por una conferencia de John Backus donde insisti en el abandono de los lenguajes imperativos a favor de los funcionales Scheme

Se deriva de LISP aunque mas uniforme Cumple mas con el paradigma funcional Muy diferentes a los otros lenguajes funcionales Su sintaxis se relaciona mas con Pascal Tiene un mecanismo de verificacin de tipos aunque mucho mas flexible y poderoso que Pascal
Lic. Ronald Mora B.

ML (Meta Language)

Historia de los lenguajes de programacin Los aos 80

El paradigma lgico tambin tuvo su parte en los 80s Prolog Principal ejemplo practico
Aunque

se desarrollo en los 70s, en Francia por un grupo liderado por A. Colmerauer Su popularidad se incremento en los 80s En este periodo se logro una implementacin eficiente Fue seleccionado como el lenguaje principal del proyecto La Quinta Generacin en Japn Sigue utilizndose en IA y como lenguaje de prototipos Lic. Ronald Mora B.

Historia de los lenguajes de programacin Los aos 90


Consolidacin, Internet, Bibliotecas y la redaccin de macros Durante los primeros aos de los 90s pocos lenguajes aparecieron, dada los TDA y la OO de los 80s La atencin se centraba en la computacin personal y los sistemas operativos basados en ventanas La expansin de internet ocurra al mismo tiempo En 1993 aparece el primer navegador Web (Mosaic) El C++ le ganaba la guerra a los otros lenguajes OO Windows y Linux estn escritos en C++ En 1995 aparece, lo que se considera, el fenmeno mas extraordinario de la historia de los lenguajes: Lic. Ronald Mora B. Java

Historia de los lenguajes de programacin Los aos 90

Java

Originalmente desarrollado por James Gosling en Sun Microsystems Se desarrolla originalmente para programar aplicaciones para dispositivos electrnicos de alto consumo Posteriormente se revisa para aplicarlo en la Web y la Red Sun inicio una campaa publicitaria como nunca antes vista, para un lenguaje de programacin Es un lenguaje OO Relativamente simple Limpiamente diseado Desde su inicio conto con una amplia biblioteca de herramientas para ventanas, redes y concurrencia Su popularidad en los primeros 5 aos fue asombrosa Actualmente se sigue utilizando en aplicaciones para Internet, redes, aplicaciones generales e instruccin en las universidades Sun ha mantenido un fuerte control de propiedad sobre las implementaciones
Lic. Ronald Mora B.

Historia de los lenguajes de programacin Los aos 90

El problema de las Bibliotecas


Antes se consideraba de importancia secundaria, ya que no forman parte del lenguaje Algunos lenguajes como Pascal las ignoraron completamente En su lugar, los lenguajes incorporaban funciones bsicas de I/O y herramientas de servicio C inclua bibliotecas extremadamente mnimas Actualmente esta estrategia no resulta adecuada Las bibliotecas se han vuelto importantes en el xito del lenguaje Sin la API (Application Program Interface) de Java (JDK) seria simplemente un lenguaje mas C++ tiene una biblioteca estndar con muchas herramientas aunque carece del manejo de ventanas y Lic. Ronald Mora B. redes

Historia de los lenguajes de programacin Los aos 90

Lenguajes de scripts

Une entre si a las herramientas o utileras del SO, los componentes de las bibliotecas y los comandos del SO Permiten la generacin de programas completos aunque breves, con un comportamiento altamente dinmico, estructuras de datos de alto nivel y carecen de verificacin de tipos Uno de los primeros lenguajes de scripts son los procesadores de comandos o shells de UNIX (bash) Otro ejemplo es el procesador de comandos batch del DOS Ambos son limitados en su alcance y operacionalidad AWK, Perl y Tcl compensan esas limitaciones Perl permite crear los guiones CGI que dan comportamiento dinmico a las aplicaciones de servidor de Internet Tcl permite crear rpidamente interfaces graficas basadas en ventanas El Javascript sin mucha relacin con Java permite agregar dinamismo al lado del cliente en las paginas web
Lic. Ronald Mora B.

El futuro

El siglo XXI no ha mostrado la aparicin de nuevos lenguajes Se ha dado un proceso continuo de crecimiento, compresin y refinamiento de los existentes Los programadores aun requieren especificar paso a paso los algoritmos No tenemos herramientas que, definiendo los requisitos, puedan por medio de sus propios algoritmos de construccin, crear la solucin eficiente La programacin sigue siendo un profesin de actualidad Las nuevas computadoras, mas rpidas, baratas y fciles de utilizar, requieren mas y mejores programas para la resolucin de problemas Siempre y cuando la computacin permanezca tan dinmica, habr espacio para nuevos lenguajes
Lic. Ronald Mora B.

Principios de diseo

Criterios de diseo Al principio: eficiencia en la ejecucin


Las maquinas eran lentas y era esencial la velocidad de los programas La capacidad de escritura que le permite al programador expresar un calculo con claridad y correccin, de manera concisa y con rapidez era un tema secundario Los programas eran cortos, escritos por una o pocas personas. Rara vez eran revisados o actualizados, a excepcin de sus propios creadores La estructura de bloques permite expresar los algoritmos en forma mas clara y concisa, dndole una mayor capacidad de escritura al lenguaje La legibilidad que le permite al programador comprender de manera fcil y con precisin la naturaleza de los clculos Cobol mejoraba la legibilidad intentando hacer que los programas se parecieran al ingles escrito ordinario
Lic. Ronald Mora B.

Cobol y Algol dirigen su criterio hacia aspectos mas generales


Principios de diseo

Ante la complejidad de los lenguajes de los 60s una mayor capacidad de abstraccin y menor numero de reglas y restricciones se hicieron necesarias Era necesario controlar la complejidad La complejidad se reduce al hacer el lenguaje general y ortogonal Se hace nfasis entonces en la simplicidad y en la abstraccin Se hace necesario entonces mejorar la confiabilidad de los programas, aumentando la precisin lgica y matemtica de los lenguajes La mayor abstraccin se ha logrado con los lenguajes OO que aportan la capacidad de abstraccin de las tareas de programacin del mundo real A travs del tiempo el nfasis sobre diferentes metas de diseo se han venido modificando

Como respuesta a la experiencia del uso de los lenguajes anteriores Y la naturaleza de los problemas que tenia que resolver la ciencia de la computacin
Lic. Ronald Mora B.

Principios de diseo

Eficiencia

Ejecucin eficiente

Optimizacin

Eficiencia de traduccin
Traduccin rpida Confiabilidad

El programa no se comportara en forma no esperada o desastrosa

Eficiencia en la implementacin

Que tan rpido se puede escribir un traductor

Eficiencia en la programacin
Que tan rpido y fcilmente se pueden escribir programas Que tan fcil se pueden leer y entender los programas Que tan fcil se le puede hacer modificaciones a los programas Lic. Ronald Mora B.

Principios de diseo

Regularidad. Mayor regularidad implica


Pocas restricciones no usuales Menos interacciones raras entre los elementos del lenguaje Menos sorpresas en la forma en la que se comportan las caractersticas del lenguaje

Se compone de

Generalidad

Elimina casos especiales de las caractersticas del lenguaje Las caractersticas se pueden combinar en cualquier forma significativa y esa interaccin o el contexto del uso no genera restricciones o comportamientos inesperados Cosas similares deben verse de manera similar y tener significado similar y cosas diferentes deben verse de forma diferente
Lic. Ronald Mora B.

Ortogonal dad

Uniformidad

Principios de diseo

Simplicidad
Que el lenguaje sea simple, fcil de aprender, de usar y de entender Simplicidad no significa regularidad Un lenguaje simple puede resultar muy complejo de utilizar La sobre simplicidad puede hacer que un lenguaje se difcil de utilizar, carente de expresividad, legibilidad o seguridad y sujeto a demasiadas restricciones

Todo debera hacerse tan simple como sea posible, pero no mas simple. A. Einstein
Lic. Ronald Mora B.

Principios de diseo

Expresividad

Facilidad con la cual el lenguaje puede expresar procesos y estructuras complejas Algunos lenguajes son muy expresivos pero no simples Indica que debe existir algn mecanismo que permita al usuario agregar caractersticas al lenguaje

Extensibilidad

Definir nuevos tipos de datos Agregar nuevas funciones Agregar palabras claves y constructores

Capacidad de restriccin

Permite utilizar un subconjunto del lenguaje Utilizar solo las caractersticas necesarias Afecta la eficiencia
Lic. Ronald Mora B.

Principios de diseo

Consistencia ante notaciones y reglas convencionalmente aceptadas

Debe incorporar tantas caractersticas y conceptos aceptados como estndares Ley del mnimo asombro

Las cosas no deben comportarse o aparecer de manera totalmente inesperada

Precisin o claridad

Existencia de una definicin precisa del lenguaje La definicin del lenguaje debe ser independiente de una maquina particular No se puede independizar totalmente al lenguaje del computador

Independencia de la maquina

El tipo de dato real requiere de una precisin infinita pero en el computador se pueden implementar con precisin finita

Seguridad

El diseo del lenguaje evita los errores de programacin Permite que los errores sean descubiertos informados Lic. Ronald Morae B. La seguridad esta relacionada con la confiabilidad y con la precisin

Repaso

1.- Cual es la importancia del concepto de legibilidad en el mbito de los lenguajes de programacin? 2.- Cual es la importancia de la maquina de Von Neumann en el desarrollo de los lenguajes de programacin? 3.- Mencione y defina los paradigmas de programacin existentes. 4.- En el contexto de los lenguajes, que significa sintaxis y que significa semntica? 5.- Defina programa fuente, programa objeto, interprete y compilador.
Lic. Ronald Mora B.

Muchas gracias

Lic. Ronald Mora B.

Vous aimerez peut-être aussi