Académique Documents
Professionnel Documents
Culture Documents
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.
Abstraccin de Datos
Abstraccin bsica
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 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
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.
Paradigmas de Computacin
Orientado
a Objetos
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
Lgico
Tambin
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.
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
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
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.
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
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 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.
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.
Proceso de traduccin
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
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
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
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
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.
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.
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
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
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
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.
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
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.
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.
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
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.
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
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
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.
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)
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.
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
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.
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
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
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.
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
Eficiencia en la implementacin
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
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
Debe incorporar tantas caractersticas y conceptos aceptados como estndares Ley del mnimo asombro
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