Lenguajes de Programación
Errores en la programación
1. Léxicos, producidos al escribir mal un identificador, una palabra clave o un operador. 2. Sintácticos, por una expresión aritmética o paréntesis no equilibrados. 3. Semánticos, como un operador aplicado a un operando incompatible, variable declarada pero no utilizada, etc. 4. Lógicos, puede ser una llamada infinitamente recursiva.
ALGUNOS LENGUAJES ORIENTADOS A OBJETOS
Ada C++ C# VB.NET Java Python Ruby PHP
Cuales son los atributos o cualidades de un buen lenguaje?
Adecuado al problema a resolver Claridad, sencillez y unidad Ortogonalidad Naturalidad para la aplicación Apoyo para la abstracción Facilidad para verificar programas Entorno de programación Portabilidad de programación Costo de uso
Que ha influenciado en los avances de los lenguajes de programación?
Capacidad de las computadoras Aplicaciones Metodos de programacion Metodos de implementacion Estudios teóricos Estandarizacion
La solución software, debe ser implementada teniendo en cuenta los siguientes parámetros:
Claridad del algoritmo Mínimo tiempo dedicado a escribir el programa Máxima velocidad de ejecución Mínimo uso de espacio de memoria Facilidad de comprensión y mantenimiento posterior Escribir, probar y explotar en el menor tiempo Permitir su mantenimiento por otros.
El estilo sintáctico general de un lenguaje esta dado por la selección de diversos elementos sintácticos básicos. Los más destacados son:
Conjunto de caracteres Símbolos de operadores Palabras claves y palabras reservadas Palabras pregonadas ( GOTO,Se pueden omitir sin alterar el significado) Comentarios Espacios en blanco Delimitadores y corchetes Formatos de campo libre y fijos Expresiones Enunciados
Edición
Consiste en escribir el programa empleando algún lenguaje y un editor (código fuente).
Criterios generales de la sintaxis
Criterios relacionados con la facilidad humana Facilidad de Verificación Carencia de Ambigüedad
Clasificación de los lenguajes
De acuerdo con el estilo de programación: Lenguajes Declarativos (Funcionales y lógicos) Lenguajes Imperativos (Estructurados) Lenguajes Orientados a objeto
Cual es el papel de los lenguajes de programación en los procesos?
El Lenguaje de programación es el medio de comunicación entre el hombre y la máquina. Los lenguajes de programación tienen que adaptarse a la invención humana, que día a día se propone nuevos problemas a resolver por las crecientes necesidades que surgen. Los Lenguajes de Programación tienen que aumentar la expresividad para poder resolver problemas muy diversos y cada vez más complejos. Además, tienen que ofrecer cierta eficiencia en la ejecución.
Sintaxis
Es el conjunto de reglas que gobiernan la construcción o formación de sentencias (instrucciones) válidas en un lenguaje. Es el aspecto que ofrece el programa. Significa decir cómo se escriben los enunciados, declaraciones y otras construcciones de lenguaje.
Semántica
Es el conjunto de reglas que proporcionan el significado de una sentencia o instrucción del lenguaje. Es el significado que se da a las diversas construcciones sintácticas.
Semántica formal de lenguajes de Programación
Es la interpretación del significado de los enunciados y estructuras sintácticas de los LP. define algunos atributos como: ▫ El uso de declaraciones, ▫ Operaciones, ▫ Control de secuencia y ▫ Entornos de refinamiento, los cuales afectan a una variable y no siempre están determinados por reglas de sintaxis
Lenguaje de programación
Es un lenguaje formal diseñado para expresar procesos que pueden ser llevados a cabo por máquinas (computadoras).
Análisis del Problema
Esta etapa se inicia una vez que se ha comprendido la tarea que se desea que la computadora haga. Precisar los resultados esperados Identificar los datos disponibles Los Datos de Entrada Establecer el proceso Determinar cuáles son las restricciones establecidas
Analisis Semantico
La semántica corresponde al significado asociado a las estructuras formales (sintaxis) del lenguaje. • En esta etapa se comprueba la corrección semántica del programa. • Ejemplo de errores: ▫ Se declaró X antes de usarlo? ▫ Se declaró x pero no se usa? ▫ La referencia a una posición en un arreglo está dentro de sus límites?
Definición formal de la sintaxis de un lenguaje
La sintaxis especifica: ▫ Como se construyen los programas en un lenguaje. ▫ Consiste en un conjunto de reglas para construir programas válidos. ▫ Es la estructura impuesta por la sintaxis de un lenguaje, se utiliza para organizar descripciones de lenguajes y traductores.
Tipos de lenguajes
Lenguaje Maquina Lenguaje Ensamblador Lenguajes Interpretados Lenguajes Compilados Lenguajes Preprocesados
Construcción del Algoritmo
Luego de analizar detalladamente el problema hasta entenderlo completamente, se procede a diseñar un algoritmo, que lo resuelva por medio de pasos sucesivos y organizados en secuencia lógica.
¿Cuál es la ventaja de estudiar una variedad de lenguajes diferentes, que es poco probable que uno llegue a utilizar?
Mejorar la habilidad para desarrollar algoritmos eficaces (alcanzan su objetivo). Mejorar el uso del lenguaje de programación disponible. Acrecentar el propio vocabulario con construcciones útiles sobre programación. Hacer posible una mejor elección del lenguaje de programación. Facilitar el aprendizaje de un nuevo lenguaje. Facilitar el diseño de un nuevo lenguaje.
Donde se pueden usar los lenguajes?
Para crear programas que controlen el comportamiento físico y lógico de una máquina, ▫ Para expresar algoritmos con precisión, o ▫ Como modo de comunicación humana.
Análisis léxico
Primera fase de un compilador consistente en un programa que recibe como entrada el código fuente de otro programa (secuencia de caracteres) y produce una salida compuesta de tokens (palabras reservadas, identificadores, operadores, símbolos especiales, constantes - componentes léxicos) o símbolos.
Etapas de la solución de un problema
Problema Analisis Construccion del algoritmo Verificación (prueba y depuración) Documentacion
PROGRAMACIÓN FUNCIONAL
Programar en un lenguaje funcional significa construir funciones a partir de las ya existentes. • Es un paradigma de programación declarativa basado en la utilización de funciones matemáticas. • El objetivo de la programación funcional es conseguir lenguajes expresivos y matemáticamente elegantes, en los que no sea necesario bajar al nivel de la máquina para describir el proceso llevado a cabo por el programa. • Están constituidos únicamente por definiciones de funciones. Ejemplo: ▫ LISP, diseñado por McCarthy ▫ ML
LENGUAJES DE PROGRAMACIÓN ORIENTADOS A OBJETOS
Se definen los programas en términos de clases de objetos Los objetos son entidades que combinan: ▫ Estado (es decir, datos) ▫ Comportamiento (esto es, procedimientos o métodos) e ▫ Identidad (propiedad del objeto que lo diferencia del resto). La programación orientada a objetos expresa un programa como un conjunto de estos objetos, que colaboran entre ellos para realizar tareas.
Lenguajes Interpretados
Son aquellos en el que las instrucciones se traducen o interpretan una a una siendo típicamente unas 10 veces más lentos que los programas compilados. • ActionScript • ASP (hasta la versión 3) • Bash • Basic4GL (Basic para OpenGL. Permite generar ejecutables Windows completos) • BeanShell (Java en lenguaje de Scripts) • COBOL (Compilador COBOL85) • Gambas (visual basic mejorado para gnu/linux) • Inform • IO (es un lenguaje reciente -2002-) • JavaScript (todas las plataformas) • Logo (Linux, Windows y Mac)
Lenguajes Declarativos (Funcionales y lógicos)
Son aquellos en los cuales se le indica a la computadora qué es lo que se desea obtener o qué es lo que se esta buscando. Ejemplo: Obtener los nombres de todos los empleados que tengan más de 32 años. Eso se puede lograr con un lenguaje declarativo como SQL. ▫ PROLOG ▫ SQL ▫ HTML ▫ WSDL (Web Services Description Language) ▫ XML Stylesheet Language for Transformation
Lenguajes Imperativos (Estructurados)
Son aquellos en los cuales se le ordena a la computadora cómo realizar una tarea siguiendo una serie de pasos o instrucciones. Basic C C++ Java Clipper Dbase C# PHP Perl
Lenguajes compilados
Son lenguajes de alto nivel en los que las instrucciones se traducen del lenguaje utilizado a código máquina, para una ejecución rápida. ▫Fortran ▫ La familia de lenguajes de C, incluyendo C++ y Objective C ▫ Ada, Pascal (incluyendo su dialecto Delphi) ▫ Algol ▫ Java, C#
Compilación
Traduce el código fuente obtenido en la fase anterior a código máquina (obtiene el código objeto).
Linkado
Une el archivo generado en la fase dos con determinadas rutinas internas del lenguaje, obteniendo el programa ejecutable.
La computadora
a diferencia de otras herramientas que en general apoyan el esfuerzo físico de los humanos, fue inventada para facilitar el trabajo intelectual.*
Plan de Prueba o verificación del algoritmo
comprobar que el algoritmo compile y haga lo que se debe
Gramática BNF
es la técnica más común para definir la sintaxis de los lenguajes de programación. Algol 60 fue el primer lenguaje que utilizó BNF para su descripción sintáctica.
Análisis Sintáctico
se encarga de chequear el texto de entrada en base a una gramática dada. Y en caso de que el programa de entrada sea válido, suministra el árbol sintáctico que lo reconoce. Comprueba que el orden en que el analizador léxico le va entregando los tokens es válido. Si esto es así significará que la sucesión de símbolos que representan dichos tokens puede ser generada por la gramática correspondiente al lenguaje del código fuente.
Funciones del analizador sintáctico
• Aceptar lo que es válido sintácticamente y rechazar lo que no lo es. • Hacer explícito el orden jerárquico que tienen los operadores en el lenguaje de que se trate. ▫ Por ejemplo, la cadena A/B*C es interpretada como (A/B)*C en FORTRAN y como A/(B*C) en APL. • Guiar el proceso de traducción (traducción dirigida por la sintaxis).
Diagramas de sintaxis
• Alternativa gráfica a las otras notaciones. • Los rectángulos representan los símbolos no terminales y los óvalos representan los terminales. • Las flechas representan las producciones. • Se utilizan para hacer el analizador sintáctico.
Etapas de un proceso de traducción.
• Cuando programamos en lenguajes de alto nivel, lo que estamos haciendo en realidad es el código fuente de ese programa. • Este código fuente debe ser traducido a binario para que las instrucciones que contienen puedan ser entendidas y ejecutadas por la máquina. • Para esto existe un programa encargado de realizar la traducción, llamado traductor del lenguaje.
Elementos sintácticos de un Lenguaje.
• El propósito primordial de la sintaxis es proveer una notación para la comunicación entre el programador y el procesador de lenguajes de programación. • Los elementos sintácticos tienen como objetivo comunicar elementos particulares de información.
DIFERENCIA ENTRE LENGUAJES DECLARATIVOS E IMPERATIVOS
• En los lenguajes declarativos las sentencias que se utilizan lo que hacen es describir el problema que se quiere solucionar, pero no las instrucciones necesarias para solucionarlo. • Los lenguajes imperativos describen paso a paso un conjunto de instrucciones que deben ejecutarse para variar el estado un programa y hallar la solución, es decir, un algoritmo en el que se describen los pasos necesarios para solucionar un problema.
Procesadores de lenguajes
• Es un traductor cuyo lenguaje fuente es una forma ampliada de un lenguaje de alto nivel cuyo lenguaje objeto es la forma estándar del mismo lenguaje. • Es el nombre genérico que reciben todas las aplicaciones informáticas en las cuales uno de los datos fundamentales de entrada es un lenguaje. • Ejemplo: ▫ Traductores ▫ Compiladores ▫ Intérpretes ▫ Editores ▫ Encadenadores(linkers) ▫ etc
Arboles sintácticos
• Es una forma de visualizar gráficamente la estructura de una oración. • Muestra todas las relaciones relevantes en la oración sin confusión.
Facilidad de Verificación
• Fáciles de traducir a una forma ejecutable • La traducción de los programas se dificulta conforme aumenta el número de construcciones sintácticas especiales.
Gramática BNF
• La notación de Backus-Naur, también conocida por sus denominaciones inglesas Backus-Naur form (BNF). • Es una metasintaxis usada para expresar gramáticas libres de contexto: es decir, una manera formal de describir lenguajes formales.
Criterios relacionados con la facilidad humana
• Legibilidad: • Es legible si la estructura subyacente del algoritmo y los datos que el programa representa quedan de manifiesto al inspeccionar el texto del programa • Facilidad de Escritura:
Responsabilidades del analizador léxico
• Manejo de apertura y cierre de archivo, lectura de caracteres y gestión de posibles errores de apertura. • Eliminar comentarios, espacios en blanco, tabuladores y saltos de línea. • Inclusión de archivos y macros. • Contabilizar número de líneas y columnas para emitir mensajes de error.
Por generaciones:
• PrimeraGeneración ▫ Lenguajemaquina • Segunda generación ▫ Ensamblador • Tercera Generación ▫ C, Fortran, Smalltalk, Ada, C++, C#, Cobol, Delphi, Java, etc. • Cuarta generación ▫ NATURAL, PL/SQL... • Quintageneración ▫ Prolog,OPS5yMercury
Carencia de Ambigüedad
• Que tenga un significado único para cada construcción sintáctica que el programador puede escribir.
PROGRAMACIÓN LÓGICA
•La idea fundamental consiste en emplear la lógica como lenguaje de programación. • Se especifican las condiciones que satisfacen las soluciones, • Se deducen las soluciones a partir de las condiciones y el énfasis de todo está en qué problema resolver. • Se trabaja de forma descriptiva, estableciendo relaciones entre entidades, indicando no cómo, sino qué hacer. • Ejemplo: ▫ PROLOG
La sintaxis concreta
▫ Describe su representación escrita, incluyendo detalles como la colocación de las palabras clave y los signos de puntuación.
La sintaxis abstracta
▫ Identifica los componentes significativos de cada enunciado. ▫ Las descripciones de lenguajes y las implantaciones están organizadas alrededor de la sintaxis abstracta.
